Читайте также:
|
|
typedef struct __RegUart{
uint CR[VUART];//командный регистр
uint SR[VUART];//статус регистр
uint MR[VUART];//регистр масок прерываний
}_RegUart;
Рис.1.8.2. Расположение в памяти структуры данных для обработки запросов чтения – записи данных с UARTa |
На рис.1.8.3 показано расположение структуры данных _RegUart в памяти.
Рис.1.8.3. Расположение в памяти структуры данных для работы с регистрами контроллера UARTa |
Структура данных для буфера чтения/записи данных i-го UARTa.
typedef struct __DataQUART{
uint data;//данные
}_DataQUART;
typedef struct __QUART{
DataQUART DQ;
struct __QUART *pnext; //указатель на следующий элемент буфера чтения/записи данных i-го UARTa.
}_QUART;
#define SZ_QUART (sizeof(_QUART)/sizeof(char)) //размер структуры QUART в байтах
typedef struct __MQUART{
uint NUart; //номер UARTa
QUART *RQWM; //Указатель на маркер записи циклической очереди приема данных
QUART *RQRM; //Указатель на маркер чтения циклической очереди приема данных
QUART *TQWM; //указатель на маркер записи циклической очереди передачи данных
QUART *TQRM; //указатель на маркер чтения циклической очереди передачи данных
uint r;
uiint attr;
}_MQUART;
На рисунке 1.8.4 показано расположение структуры данных_MQUART в памяти.
Рисунок 1.8.4. Расположение в памяти структуры данных для буфера чтения/записи данных i-го UARTa |
#define SZ_IRQUART (sizeof(_IrqUART)/sizeof(char))
//размер структуры
//_IrqUART в байтах
#define SZ_UARTINFO (sizeof(_UARTInfo)/sizeof(char))
//размер структуры
//_UARTInfo в байтах
#define SZ_REGUART (sizeof(_RegUart)/sizeof(char))
//размер структуры
//_RegUart в байтах
#define SZ_MQUART (sizeof(_MQUART)/sizeof(char))
//размер структуры
//_MQUART в байтах
#define ADDR_CONT_UARTDRV_L1 (p35mem + 4)//адрес, по которому хранится контект драйвера UARTA
//p35mem резервирование 35 страницы памяти для работы драйвера UARTa 1-го уровня
#define PIRQUART (p35mem+16)
//адрес ячейки памяти, где хранится структура IrqUART
#define PUARTINFO (PIRQUART + SZ_IRQUART))
//адрес ячейки памяти, где хранится структура _UARTInfo
#define PREGUART (PUARTINFO + SZ_UARTINFO * VUART))
//адрес ячейки памяти где хранится структура _RegUart
#define PMQUART (PREGUART+SZ_REGUART + 4)// адрес ячейки памяти, где хранится структура _MQUART
#define MEMQUART (PMQUART+SZ_MQUART*VUART+ 4) //область памяти для хранения данных буферов чтения/записи UARTов
#define VRS_422 6 // интерфейсов RS-422
#define VRS_485 4 // интерфейса RS-485
Дата добавления: 2015-12-08; просмотров: 56 | Нарушение авторских прав