* This function will initialize hardware board */
| 101 | * This function will initialize hardware board |
| 102 | */ |
| 103 | void rt_hw_board_init(void) |
| 104 | { |
| 105 | /* bsp debug */ |
| 106 | FCpu_SpinLockInit(); |
| 107 | Ft_GenericTimer_Init(0, RT_NULL); |
| 108 | Ft_vsprintfRegister((vsprintf_p)rt_vsprintf); |
| 109 | Ft_assertSetCallBack((Ft_assertCallback)AssertCallback); |
| 110 | |
| 111 | /* interrupt init */ |
| 112 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + 0, 0); |
| 113 | |
| 114 | #if RT_CPUS_NR == 2 |
| 115 | Ft_printf("arm_gic_redist_address_set is 2 \r\n"); |
| 116 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + (2U << 16), 1); |
| 117 | #elif RT_CPUS_NR == 3 |
| 118 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + (2U << 16), 1); |
| 119 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + 2 * (2U << 16), 2); |
| 120 | #elif RT_CPUS_NR == 4 |
| 121 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + (2U << 16), 1); |
| 122 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + 2 * (2U << 16), 2); |
| 123 | arm_gic_redist_address_set(0, FT_GICV3_RD_BASEADDRESS + 3 * (2U << 16), 3); |
| 124 | #endif |
| 125 | |
| 126 | rt_hw_interrupt_init(); |
| 127 | |
| 128 | rt_components_board_init(); |
| 129 | rt_console_set_device(RT_CONSOLE_DEVICE_NAME); |
| 130 | |
| 131 | /* 初始化内存池 */ |
| 132 | #ifdef RT_USING_HEAP |
| 133 | rt_system_heap_init(HEAP_BEGIN, HEAP_END); |
| 134 | #endif |
| 135 | |
| 136 | #ifdef RT_USING_SMP |
| 137 | /* install IPI handle */ |
| 138 | rt_hw_interrupt_set_priority(RT_SCHEDULE_IPI, 16); |
| 139 | rt_hw_ipi_handler_install(RT_SCHEDULE_IPI, rt_scheduler_ipi_handler); |
| 140 | rt_hw_interrupt_umask(RT_SCHEDULE_IPI); |
| 141 | #endif |
| 142 | } |
| 143 | |
| 144 | static void ft_reset(void) |
| 145 | { |
nothing calls this directly
no test coverage detected