var_arch.h
来自「eCos操作系统源码」· C头文件 代码 · 共 375 行 · 第 1/2 页
H
375 行
// S_ISR Interrupt Status Register 00000000H#define S_ISR_TM0IS (1<<0) // TIMER CH0 interrupt.#define S_ISR_TM1IS (1<<1) // TIMER CH1 interrupt.#define S_ISR_UARTIS (1<<2) // UART interrupt.#define S_ISR_EXTIS (1<<3) // External Interrupt.#define S_ISR_WUIS (1<<4) // Wakeup Interrupt.// S_IMR Interrupt Mask Register 00000000H// see S_ISR; write a 1 to unmask, 0 to mask.// S_NSR NMI Status Register 00000000H// S_NMR NMI Mask Register 00000000H// S_VER Version Register 00000301H// --------- GPIO ---------// S_GIOER GPIO Output Enable Register 00000000H// S_GOPR GPIO Output (Write) Register 00000000H// S_GIPR GPIO Input (Read) Register 00000000H// 16-bit regsiters that do the utterly obvious thing.// --------- reset ---------// S_WRCR Warm Reset Control Register 00000000H#define S_WRCR_USBWR (1<<0) // Warm Reset request for USB Controller#define S_WRCR_MACWR (1<<1) // Warm Reset request for Ethernet Controller#define S_WRCR_UARTWR (1<<4) // Warm Reset request for UART// S_WRSR Warm Reset Status Register 00000000H// See S_WRCR; 1 <=> Ready, 0 <=> performing warm reset.// --------- power control of USB/ETH peripherals ---------// S_PWCR Power Control Register 00000000H// S_PWSR Power Control Status Register 00000000H// --------- bus timouts ---------// ITCNTR IBUS Timeout Timer Control Register 00000000H// ITSETR IBUS Timeout Timer Set Register 80000000H// --------- UART ---------// UARTRBR UART, Receiver Buffer Register [DLAB=0,READ]// UARTTHR UART, Transmitter Holding Register [DLAB=0,WRITE]// UARTDLL UART, Divisor Latch LSB Register [DLAB=1]// The external (18.432MHz) clock is not present. See S_GMR_UCSEL.// See also UARTDLM below. So we use the internal 50MHz clock.//#define UARTCLOCK (18432000)#define UARTCLOCK (50 * 1000 * 1000)#define UARTDLL_VAL( _baud_ ) ((UARTCLOCK / 16) / (_baud_) )// UARTIER UART, Interrupt Enable Register [DLAB=0]#define UARTIER_ERBFI (1<<0) // UART Receive data Buffer Full Interrupt#define UARTIER_ERBEI (1<<1) // UART Transmitter Buffer empty Interrupt#define UARTIER_ERBLI (1<<2) // UART Line status Interrupts#define UARTIER_ERBMI (1<<3) // UART Modem status Interrupts// UARTDLM UART, Divisor Latch MSB Register [DLAB=1]#define UARTDLM_ANY_BAUD (0)#define UARTDLM_VAL( _baud_ ) (UARTDLL_VAL( _baud_ ) >> 8)// UARTIIR UART, Interrupt ID Register [READ]#define UARTIIR_INTPENDL (1<<0) // No Pending interrupts// mask to give one of:#define UARTIIR_UIID_MASK (7<<1) // Indicates the priority level of pending interrupt.#define UARTIIR_RXERROR (3<<1) // Receiver Line Error#define UARTIIR_RXD_AVAIL (2<<1) // Received data available#define UARTIIR_CHAR_TO (6<<1) // Character timeout#define UARTIIR_TX_EMPTY (1<<1) // Transmitter Register Empty#define UARTIIR_MODEM (0<<1) // Modem Status: CTS_L, DSR_L or DCD_L// UARTFCR UART, FIFO control Register [WRITE]// ...is not supported. But nontheless it appears necessary to write it.#define UARTFCR_16550_MODE (6) // and clear the FIFOs.// UARTLCR UART, Line control Register// Word length#define UARTLCR_8 (0x03)#define UARTLCR_7 (0x02)// Stop bits#define UARTLCR_STB1 (0x00)#define UARTLCR_STB2 (0x04)// Parity#define UARTLCR_NOP (0x00)#define UARTLCR_EP (0x18)#define UARTLCR_OP (0x08)// Just predefine the pattern for 8-N-1...#define UARTLCR_8N1 (0x03)// Divisor latch access bit; or this with one of the above.#define UARTLCR_DLAB (0x80)// UARTMCR UART, Modem Control Register#define UARTMCR_DTR (1<<0) // Data Terminal Ready.#define UARTMCR_RTS (1<<1) // Request To Send.// UARTLSR UART, Line status Register#define UARTLSR_DR (1<<0) // Receive-Data Ready.#define UARTLSR_OE (1<<1) // Receive-Data Overrun Error.#define UARTLSR_PE (1<<2) // Receive-Data Parity Error.#define UARTLSR_FE (1<<3) // Receive-Data Framing Error.#define UARTLSR_BI (1<<4) // Break Interrupt.#define UARTLSR_THRE (1<<5) // Transmitter Holding Register Empty.#define UARTLSR_TEMT (1<<6) // Transmitter Empty.#define UARTLSR_RFERR (1<<7) // Receiver FIFO Error.// UARTMSR UART, Modem Status Register#define UARTMSR_DCTS (1<<0) // Delta Clear To Send.#define UARTMSR_DDSR (1<<1) // Delta Data Set Ready.#define UARTMSR_TERI (1<<2) // Trailing Edge Ring Indicato#define UARTMSR_DDCD (1<<3) // Delta Data Carrier Detect.#define UARTMSR_CTS (1<<4) // Clear To Send.#define UARTMSR_DSR (1<<5) // Data Set Ready.#define UARTMSR_RI (1<<6) // Ring Indicator.#define UARTMSR_DCD (1<<7) // Data Carrier Detect.// UARTSCR UART, Scratch Register unknown// --------- watchdog aka dead man's switch ---------// DSUCNTR DSU Control Register 00000000H// DSUSETR DSU Dead Time Set Register 80000000H// DSUCLRR DSU Clear Register 00000000H// DSUTIMR DSU Elapsed Time Register 00000000H// --------- additional timers ---------// TMMR Timer Mode Register 00000000H// TM0CSR Timer CH0 Count Set Register 00000000H// TM1CSR Timer CH1 Count Set Register 00000000H// TM0CCR Timer CH0 Current Count Register FFFFFFFFH// TM1CCR Timer CH1 Current Count Register FFFFFFFFH// --------- serial eeprom ---------// ECCR EEPROM Command Control Register 00000000H// ERDR EEPROM Read Data Register 80000000H// MACAR1 MAC Address Register 1 00000000H// MACAR2 MAC Address Register 2 00000000H// MACAR3 MAC Address Register 3 00000000H// --------- memory control ---------// RMMDR Boot ROM Mode Register 00000000H// RMATR Boot ROM Access Timing Register 00000000H#define RMMDR_FLASH_WRITE_ENABLE (0x100)#define RMMDR_28F640 (0)#define RMMDR_28F320 (0)#define RMMDR_29LV160_120 (3) // sic. from customer doc#define RMMDR_29LV160_90 (3) // even though "3" is a reserved value#define RMMDR_29LV160_70 (3) // maybe it means "1".#define RMATR_28F640 (5)#define RMATR_28F320 (4)#define RMATR_29LV160_120 (5)#define RMATR_29LV160_90 (4)#define RMATR_29LV160_70 (3)// SDMDR SDRAM Mode Register 00000330H// SDTSR SDRAM Type Selection Register 00000000H// SDPTR SDRAM Precharge Timing Register 00000142H// SDRMR SDRAM Refresh Mode Register 00000200H// SDRCR SDRAM Refresh Timer Count Register 00000200H#if 1// initial settings from customer doc.#define SDMDR_INIT (0x230) // 230 from the hardware, 330 from doc#define SDTSR_INIT (0x180 | 0x20 | 0x1) #define SDPTR_INIT (0x111) #define SDRMR_INIT (0x600) #else// optimized setting "don't be used before qualification"#define SDMDR_INIT (0x120) #define SDTSR_INIT (0x180 | 0x20 | 0x1) #define SDPTR_INIT (0x100) #define SDRMR_INIT (0x600) #endif// These are used for decoding SEGV types.// MBCR Memory Bus Control Register 00000000H// MESR Memory Error Status Register 00000000H// MEAR Memory Error Address Register 00000000H// --------------------------------------------------------------------------#endif // CYGONCE_HAL_VAR_ARCH_H// End of var_arch.h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?