启动阶段:M0核心启动:BL808处理器的启动从M0核心开始,这是处理器的主核心。系统启动从ld文件的entry指向的start函数开始,该函数主要使用汇编完成RISCV启动相关的寄存器配置,为C语言运行创建最基本的环境。初始化函数调用:在__start函数中,会调用C文件中的初始化函数,如SystemInit、start_load和System...
在M0核心启动后,main()函数作为应用程序入口,执行board_init()函数完成初始化工作。接着,M0核心通过向IPC_SYNC_FLAG寄存器写入值启动D0和LP核心。D0核心在start.S中启动,使用RV64GC架构的C906,配置MMU。SystemInit()函数在system_bl808.c文件中完成硬件初始化,并进入一个while循环等待M0核心启动...
uint32_t current_rms ; SystemInit();//系统初始化 SysTick_Init(); SysTick_Config(36000); initio(); initdat(); uart1_init1(4800); BL0942_Init(); while(1) { Date_Read++; if(Date_Read>1000) { BL0942_ReadRegister1(0xAA); del(600); printf("电压:%0.1f",voltage_AC_IN); print...
SystemInit() 函数位于 soc/bl808/startup/m0 的 system_bl808.c 中 voidSystemInit(void){uint32_ti=0;/* CPU Prefetching barrier */Tzc_Sec_PSRAMA_Access_Set_Not_Lock(0,0x0,64*1024*1024,0);Tzc_Sec_PSRAMB_Access_Set_Not_Lock(0,0x0,64*1024*1024,0);pmp_init();/* enable mstatus ...
通过调用rt_application_init()来动态创建main主线程,在线程函数main_thread_entry()调用main(),从而进入用户主函数。不过此时线程并没有启动,而是根据优先级插入到了线程就绪优先队列指定位置,等到调度器启动后才会真正运行主线程。 2.2.5 调度器启动 通过调用rt_system_scheduler_start()启动调度器,main线程、idle线...