本文以Arm Cortex-M為例,介紹了在IAR Embedded Workbench中微控制器(MCU)的啟動過程。在MCU復位后,程序計數器(PC)會指向相應的復位向量,并開始執(zhí)行啟動代碼(startup code)。如果MCU支持浮點單元(FPU),則在啟動過程中,首先會調用__iar_init_vfp來初始化FPU,然后繼續(xù)執(zhí)行__iar_program_start。接著,__iar_program_start會調用__cmain函數。在__cmain中,會先調用__low_level_init函數,然后調用__iar_data_init3來進行全局和靜態(tài)變量的初始化。在__iar_data_init3中,首先會調用__iar_zero_init3來初始化初始值為0的全局和靜態(tài)變量,隨后會調用__iar_copy_init3來初始化初始值為非0的全局和靜態(tài)變量。最終,在啟動過程的最后階段,會通過調用__call_main來跳轉到main函數,從而開始執(zhí)行主程序。