1.開機後要跑幾個task:Syscomp_config.c (MCU\config\src)
sys_comp_config_tbl是一個task的initial table,裡面define了許多task的XXXX_create function名稱,例如nvram_create、mmi_create、l4_create。
透過載入這個table,執行各個task的「建立」(應該是有生出task的意思存在),接著各個task再有自己的main,再去做其初始化的動作、handler這一類的。
2.以l4_create function為例,function內容如下:(MCU\ps\l4\src\L4_create.c)
kal_bool l4_create(comptask_handler_struct **handle) { static const comptask_handler_struct l4_handler_info = { layer4_task_main, /* task entry function */ layer4_init, /* task initialization function */ NULL, /* task configuration function */ l4_reset, /* task reset handler */ NULL, /* task termination handler */ }; *handle = (comptask_handler_struct *)&l4_handler_info; return KAL_TRUE; }
在l4_create()裡面,建立了一個資料型態為comptask_handler_struct的變數l4_handler_info,
裡面指定了一個task的對應行為function。
layer4_task_main()是layer 4的main function,裡面跑著一個while (1)的 infinite loop,來處理各種的message,透過process_ilm(),再去執行對應message 的main。