Mercurial > flash_v2
diff packages/hal/powerpc/ec555/current/src/hal_diag.c @ 1397:9c818dd5d9fa
Updates for EC555 targets - from Bob Koninckx
| author | gthomas |
|---|---|
| date | Mon, 24 Nov 2003 14:28:13 +0000 |
| parents | d2c90368aeef |
| children |
line wrap: on
line diff
--- a/packages/hal/powerpc/ec555/current/src/hal_diag.c +++ b/packages/hal/powerpc/ec555/current/src/hal_diag.c @@ -146,12 +146,12 @@ cyg_hal_plf_comms_init(void) //----------------------------------------------------------------------------- typedef struct { - cyg_uint16* base; - cyg_int32 msec_timeout; - int siu_vector; - int imb3_vector; - unsigned int level; - int baud_rate; + cyg_uint16* base; // Base address of the register set + cyg_int32 msec_timeout; // How long do we wait + int imb3_vector; // The vector on the IMB3. No need to worry + // about SIU levels or vectors, that's the + // responsibility of the application + int baud_rate; } channel_data_t; //----------------------------------------------------------------------------- @@ -163,49 +163,50 @@ init_serial_channel(const channel_data_t switch(__ch_data->baud_rate) { - case 300: + case 300: br = CYG_DEV_SERIAL_RS232_SCxBR_300; - break; - case 600: + break; + case 600: br = CYG_DEV_SERIAL_RS232_SCxBR_600; - break; - case 1200: + break; + case 1200: br = CYG_DEV_SERIAL_RS232_SCxBR_1200; - break; - case 2400: + break; + case 2400: br = CYG_DEV_SERIAL_RS232_SCxBR_2400; - break; - case 4800: + break; + case 4800: br = CYG_DEV_SERIAL_RS232_SCxBR_4800; - break; - case 9600: + break; + case 9600: br = CYG_DEV_SERIAL_RS232_SCxBR_9600; - break; - case 14400: + break; + case 14400: br = CYG_DEV_SERIAL_RS232_SCxBR_14400; - break; - case 19200: + break; + case 19200: br = CYG_DEV_SERIAL_RS232_SCxBR_19200; - break; - case 28800: + break; + case 28800: br = CYG_DEV_SERIAL_RS232_SCxBR_28800; - break; - case 38400: + break; + case 38400: br = CYG_DEV_SERIAL_RS232_SCxBR_38400; - break; - case 57600: + break; + case 57600: br = CYG_DEV_SERIAL_RS232_SCxBR_57600; - break; - case 115200: + break; + case 115200: br = CYG_DEV_SERIAL_RS232_SCxBR_115200; - break; - default: - // Use the default if something unknown is requested + break; + default: + // Use the default if something unknown is requested br = CYG_DEV_SERIAL_RS232_SCxBR_38400; - break; + break; } - // 8-1-No parity + // 8-1-No parity, enable transmitter and receiver, leave interrupts + // as they are HAL_WRITE_UINT16(base+CYG_DEV_SERIAL_RS232_SCCR1, (SCCR1_TE | SCCR1_RE)); // Set baud rate @@ -271,16 +272,12 @@ cyg_hal_plf_serial_putc(void* __ch_data, // flash .... static channel_data_t channels[2] = { { (cyg_uint16*)CYG_DEV_SERIAL_BASE_A, - 1000, - CYGNUM_HAL_INTERRUPT_SIU_LVL0, + 1000, CYGNUM_HAL_INTERRUPT_IMB3_SCI0_RX, - 0, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD }, { (cyg_uint16*)CYG_DEV_SERIAL_BASE_B, 1000, - CYGNUM_HAL_INTERRUPT_SIU_LVL0, CYGNUM_HAL_INTERRUPT_IMB3_SCI1_RX, - 0, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD } }; @@ -342,31 +339,31 @@ cyg_hal_plf_serial_control(void *__ch_da ret = chan->baud_rate; break; case __COMMCTL_SETBAUD: - { - va_list ap; - va_start(ap, __func); + { + va_list ap; + va_start(ap, __func); - ret = chan->baud_rate; - chan->baud_rate = va_arg(ap, cyg_int32); - init_serial_channel(chan); + ret = chan->baud_rate; + chan->baud_rate = va_arg(ap, cyg_int32); + init_serial_channel(chan); - va_end(ap); - } - break; + va_end(ap); + } + break; case __COMMCTL_IRQ_ENABLE: - HAL_INTERRUPT_SET_LEVEL(chan->imb3_vector, chan->level); - HAL_INTERRUPT_UNMASK(chan->imb3_vector); - HAL_INTERRUPT_UNMASK(chan->siu_vector); + // Just enable the interrupt on the IMB3. The debugged application is + // must make sure that the interrupt is properly decoded + HAL_INTERRUPT_UNMASK(chan->imb3_vector); irq_state = 1; break; case __COMMCTL_IRQ_DISABLE: + // Same remark as above ret = irq_state; irq_state = 0; HAL_INTERRUPT_MASK(chan->imb3_vector); - HAL_INTERRUPT_MASK(chan->siu_vector); break; case __COMMCTL_DBG_ISR_VECTOR: - ret = chan->siu_vector; + ret = chan->imb3_vector; break; case __COMMCTL_SET_TIMEOUT: { @@ -378,7 +375,7 @@ cyg_hal_plf_serial_control(void *__ch_da va_end(ap); } - break; + break; default: break; } @@ -412,8 +409,8 @@ cyg_hal_plf_serial_isr(void *__ch_data, if(cyg_hal_is_break(&c, 1)) *__ctrlc = 1; - HAL_INTERRUPT_ACKNOWLEDGE(((channel_data_t *)__ch_data)->imb3_vector); - res = CYG_ISR_HANDLED; + HAL_INTERRUPT_ACKNOWLEDGE(((channel_data_t *)__ch_data)->imb3_vector); + res = CYG_ISR_HANDLED; } CYGARC_HAL_RESTORE_GP();
