summaryrefslogtreecommitdiff
path: root/bsp/at91sam9260/drivers
diff options
context:
space:
mode:
authorweety <[email protected]>2017-10-19 23:46:17 +0800
committerweety <[email protected]>2017-10-19 23:46:17 +0800
commit6085f6826d9c19a9d0c7f3feafbd0a5996d7ec2e (patch)
tree81a3b52510aaa627cb24b83cdefe991893d9d909 /bsp/at91sam9260/drivers
parente448ecc6ad805109480ecc191f0e2d786216a297 (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.c6
-rw-r--r--bsp/at91sam9260/drivers/board.c28
-rw-r--r--bsp/at91sam9260/drivers/macb.c8
-rw-r--r--bsp/at91sam9260/drivers/macb.h2
-rw-r--r--bsp/at91sam9260/drivers/usart.c6
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)
{