diff options
| author | weety <[email protected]> | 2017-10-19 23:46:17 +0800 |
|---|---|---|
| committer | weety <[email protected]> | 2017-10-19 23:46:17 +0800 |
| commit | 6085f6826d9c19a9d0c7f3feafbd0a5996d7ec2e (patch) | |
| tree | 81a3b52510aaa627cb24b83cdefe991893d9d909 /bsp/at91sam9260/drivers | |
| parent | e448ecc6ad805109480ecc191f0e2d786216a297 (diff) | |
[bsp][at91sam9260] Fix the problem of the finsh function failure by using component initialization.
Diffstat (limited to 'bsp/at91sam9260/drivers')
| -rw-r--r-- | bsp/at91sam9260/drivers/at91_i2c_gpio.c | 6 | ||||
| -rw-r--r-- | bsp/at91sam9260/drivers/board.c | 28 | ||||
| -rw-r--r-- | bsp/at91sam9260/drivers/macb.c | 8 | ||||
| -rw-r--r-- | bsp/at91sam9260/drivers/macb.h | 2 | ||||
| -rw-r--r-- | bsp/at91sam9260/drivers/usart.c | 6 |
5 files changed, 38 insertions, 12 deletions
diff --git a/bsp/at91sam9260/drivers/at91_i2c_gpio.c b/bsp/at91sam9260/drivers/at91_i2c_gpio.c index c83c36218d..1c11f4ad79 100644 --- a/bsp/at91sam9260/drivers/at91_i2c_gpio.c +++ b/bsp/at91sam9260/drivers/at91_i2c_gpio.c @@ -104,7 +104,7 @@ static const struct rt_i2c_bit_ops bit_ops = { 100 }; -rt_err_t at91_i2c_init(void) +int at91_i2c_init(void) { struct rt_i2c_bus_device *bus; @@ -123,8 +123,8 @@ rt_err_t at91_i2c_init(void) rt_i2c_bit_add_bus(bus, "i2c0"); - return RT_EOK; + return 0; } - +INIT_DEVICE_EXPORT(at91_i2c_init); diff --git a/bsp/at91sam9260/drivers/board.c b/bsp/at91sam9260/drivers/board.c index 4b2e0caa28..c45a2e6b2b 100644 --- a/bsp/at91sam9260/drivers/board.c +++ b/bsp/at91sam9260/drivers/board.c @@ -32,6 +32,18 @@ * @addtogroup at91sam9260 */ /*@{*/ +#if defined(__CC_ARM) +extern int Image$$ER_ZI$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$ER_ZI$$ZI$$Limit) +#elif (defined (__GNUC__)) +extern unsigned char __bss_end__; +#define HEAP_BEGIN (&__bss_end__) +#elif (defined (__ICCARM__)) +#pragma section=".noinit" +#define HEAP_BEGIN (__section_end(".noinit")) +#endif + +#define HEAP_END (0x24000000) extern void rt_hw_interrupt_init(void); extern void rt_hw_clock_init(void); @@ -150,15 +162,21 @@ void rt_hw_board_init() /* initialize the system clock */ rt_hw_clock_init(); - /* initialize uart */ - rt_hw_uart_init(); + /* initialize early device */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif +#ifdef RT_USING_CONSOLE rt_console_set_device(RT_CONSOLE_DEVICE_NAME); - - - +#endif /* initialize timer0 */ rt_hw_timer_init(); +/* initialize board */ +#ifdef RT_USING_HEAP + rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); +#endif + } /*@}*/ diff --git a/bsp/at91sam9260/drivers/macb.c b/bsp/at91sam9260/drivers/macb.c index be665e09c2..fd1f508d3c 100644 --- a/bsp/at91sam9260/drivers/macb.c +++ b/bsp/at91sam9260/drivers/macb.c @@ -866,7 +866,7 @@ err1: return -RT_ENOMEM; } -void rt_hw_macb_init() +int rt_hw_macb_init(void) { rt_err_t ret; at91_sys_write(AT91_PMC + AT91_PMC_PCER, 1 << AT91SAM9260_ID_EMAC); //enable macb clock @@ -903,5 +903,9 @@ void rt_hw_macb_init() rt_sem_init(&macb_device.mdio_bus_lock, "mdio_bus_lock", 1, RT_IPC_FLAG_FIFO); eth_device_init(&(macb_device.parent), "e0"); - + + return 0; } + +INIT_DEVICE_EXPORT(rt_hw_macb_init); + diff --git a/bsp/at91sam9260/drivers/macb.h b/bsp/at91sam9260/drivers/macb.h index 4e579e427a..9df2883534 100644 --- a/bsp/at91sam9260/drivers/macb.h +++ b/bsp/at91sam9260/drivers/macb.h @@ -340,7 +340,7 @@ struct dma_desc { #define MACB_TX_USED_OFFSET 31 #define MACB_TX_USED_SIZE 1 -extern void rt_hw_macb_init(); +extern int rt_hw_macb_init(); #endif /* _MACB_H */ diff --git a/bsp/at91sam9260/drivers/usart.c b/bsp/at91sam9260/drivers/usart.c index c47d378cb8..fb91393b3c 100644 --- a/bsp/at91sam9260/drivers/usart.c +++ b/bsp/at91sam9260/drivers/usart.c @@ -326,7 +326,7 @@ void at91_usart_gpio_init(void) /** * This function will handle init uart */ -void rt_hw_uart_init(void) +int rt_hw_uart_init(void) { at91_usart_gpio_init(); @@ -422,8 +422,12 @@ void rt_hw_uart_init(void) (void *)&(serial3.parent), "UART3"); rt_hw_interrupt_umask(uart3.irq); #endif + + return 0; } +INIT_BOARD_EXPORT(rt_hw_uart_init); + #ifdef RT_USING_DBGU void rt_dbgu_isr(void) { |
