自己结合网络上的资源总结的内容,有不对的地方请及时指出,有侵权的请指出!
QQ:4862879
Pixhawk硬件使用STM32的芯片,
Cortex M3的内核有三种启动方式,其分别是:
A.通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;Cortex-M3单片机有一个管理中断向量表的寄存器,叫做向量表偏移量寄存器(VTOR)(地址:0xE000_ED08)。具体可以看看截图:
1)初始化堆栈指针 .initial_sp_value = &_stack,2.入口函数:ENTRY(reset_handler)
2)硬件错误为阻塞 .hard_fault = hard_fault_handler,
3)中断控制器 .irq = { IRQ_HANDLERS }
4)系统的复位入口函数 .reset = reset_handler,
1)定义数据段 .data和.bss3.main函数:main(void)
2)pre_main()(开启协处理器)
3)main() //分为main_f1.c和main_f4.c
1)board_init()(开发板的初始化)二.Nuttx系统的启动
2)bootloader()(nuttx系统的设置)
3)jump_to_app()(测试引导nuttx系统)
1)定义堆栈的大小2.入口函数是ENTRY(__start)
2)定义STM32的中断向量表
3)入口函数是ENTRY(__start)
1)stm32的配置和初始化3.系统入口函数os_start()
2)nuttx系统的入口函数os_start() //\Firmware\NuttX\nuttx\sched\os_start.c启动Nuttx系统
1)nuttx系统的初始化4.系统的启动进程os_bringup()
2)nuttx系统的启动进程os_bringup()
1)创建内核进程
2)创建用户进程
a.创建init进程(main_t)CONFIG_USER_ENTRYPOINT5.IO板系统进程入口函数:user_start(没有使用根文件系统)
IO板 : CONFIG_USER_ENTRYPOINT =user_start
Fmu板:CONFIG_USER_ENTRYPOINT = nsh_main
6.fmu板系统进程入口函数:nsh_main(根文件系统binfs)