NXOS 启动流程
在设备开机后,处理器会跳到一个地址去执行代码,一般都是固定的,然后再从这些固定代码跳转到程序员自己编写的程序。程序员自己写的程序就是裸机,rtos或者操作系统。
在nxos中,不同的平台会有不同的执行地址,所以我们需要指定内核程序的入口地址,在链接的时候指定一个标签 _Start
,当执行到这个地方的时候,内核就开始运行了。
内核执行路径
-> _Start
-> NX_Main (内核的主函数)
-> NX_SMP_Preload
-> NX_HalPlatformInit (平台初始化, 不能使用内核的功能: 平台开发者实现)
-> ShowLogVersion
-> ... 内核功能初始化 ...
-> NX_CallsInit (初始化调用)
-> NX_HalPlatformStage2 (平台初始化二阶段,可以使用内核的功能: 平台开发者实现)
-> NX_SMP_Main (SMP初始化)
-> NX_SchedToFirstThread (调度第一个线程)
-> NX_HalPlatformMain (平台的主函数,什么都可以使用: 平台开发者实现)