NuttX 启动流程
生活随笔
收集整理的這篇文章主要介紹了
NuttX 启动流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(嵌入式 實時操作系統 rtos nuttx 7.1 stm32 源代碼分析)
[ruby]?view plain?copy __start--?????????????????????????????????#處理器執行的第一條指令?? ????????|?? ????????v?? ???stm32_clockconfig()------??????????????#初始化時鐘?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????rcc_reset()??????????????#復位rcc?? ?????????????????stm32_stdclockconfig()???#初始化標準時鐘?? ?????????????????rcc_enableperipherals()??#使能外設時鐘?? ???????????????????????????|?? ????????--------------------?? ????????|?? ????????v?? ???stm32_fpuconfig()??????????????????????#配置fpu,shenzhou/nsh未調用?? ???stm32_lowsetup()???????????????????????#基本初始化串口,之后可以使用up_lowputc()?? ???stm32_gpioinit()???????????????????????#初始化gpio,只是調用stm32_gpioremap()設置重映射?? ???up_earlyserialinit()???????????????????#初始化串口,之后可以使用up_putc()?? ???stm32_boardinitialize()--??????????????#板級初始化?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????stm32_spiinitialize()????#初始化spi,只是調用stm32_configgpio()設置gpio?? ?????????????????stm32_usbinitialize()????#初始化usb,只是調用stm32_configgpio()設置gpio?? ?????????????????board_led_initialize()???#初始化led,只是調用stm32_configgpio()設置gpio?? ???????????????????????????|?? ????????--------------------?? ????????|?? ????????v?? ???os_start()---------------??????????????#初始化操作系統?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????dq_init()????????????????#初始化各種狀態的任務列表(置為null)?? ?????????????????g_pidhash[i]=????????????#初始化唯一可以確定的元素--進程ID?? ?????????????????g_pidhash[PIDHASH(0)]=???#分配空閑任務的進程ID為0?? ?????????????????g_idletcb=???????????????#初始化空閑任務的任務控制塊?? ?????????????????sem_initialize()--???????#初始化信號量?? ??????????????????????????????????|?? ??????????????????????????????????v?? ???????????????????????dq_init()??????????#將信號量隊列置為null?? ???????????????????????sem_initholders()??#初始化持有者結構以支持優先級繼承,shenzhou/nsh未調用?? ??????????????????????????????????|?? ???????????????????????????--------?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????up_allocate_heap()???????#分配用戶模式的堆(設置堆的起點和大小)?? ?????????????????kumm_initialize()????????#初始化用戶模式的堆?? ?????????????????up_allocate_kheap()??????#分配內核模式的堆,shenzhou/nsh未調用?? ?????????????????kmm_initialize()?????????#初始化內核模式的堆,shenzhou/nsh未調用?? ?????????????????task_initialize()????????#初始化任務數據結構,shenzhou/nsh未調用?? ?????????????????irq_initialize()?????????#將所有中斷向量都指向同一個異常中斷處理程序?? ?????????????????wd_initialize()??????????#初始化看門狗數據結構?? ?????????????????clock_initialize()???????#初始化rtc?? ?????????????????timer_initialize()???????#配置POSIX定時器?? ?????????????????sig_initialize()?????????#初始化信號?? ?????????????????mq_initialize()??????????#初始化命名消息隊列?? ?????????????????pthread_initialize()?????#初始化線程特定的數據,空函數?? ?????????????????fs_initialize()---???????#初始化文件系統?? ??????????????????????????????????|?? ??????????????????????????????????v?? ???????????????????????sem_init()?????????#初始化節點信號量為1?? ???????????????????????files_initialize()?#初始化文件數組,空函數?? ??????????????????????????????????|?? ???????????????????????????--------?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????net_initialize()--???????#初始化網絡?? ??????????????????????????????????|?? ??????????????????????????????????v?? ???????????????????????uip_initialize()???#初始化uIP層?? ???????????????????????net_initroute()????#初始化路由表,shenzhou/nsh未調用?? ???????????????????????netdev_seminit()???#初始化網絡設備信號量?? ???????????????????????arptimer_init()????#初始化ARP定時器?? ??????????????????????????????????|?? ???????????????????????????--------?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????up_initialize()---???????#處理器特定的初始化?? ??????????????????????????????????|?? ??????????????????????????????????v?? ???????????????????????up_calibratedelay()#校準定時器?? ???????????????????????up_addregion()?????#增加額外的內存段?? ???????????????????????up_irqinitialize()?#設置中斷優先級,關聯硬件異常處理函數?? ???????????????????????up_pminitialize()??#初始化電源管理,shenzhou/nsh未調用?? ???????????????????????up_dmainitialize()?#初始化DMA,shenzhou/nsh未調用?? ???????????????????????up_timerinit()?????#初始化定時器中斷?? ???????????????????????devnull_register()?#注冊/dev/null?? ???????????????????????devzero_register()?#注冊/dev/zero,shenzhou/nsh未調用?? ???????????????????????up_serialinit()????#注冊串口控制臺/dev/console和串口/dev/ttyS0?? ???????????????????????up_rnginitialize()?#初始化并注冊隨機數生成器,shenzhou/nsh未調用?? ???????????????????????up_netinitialize()?#初始化網絡,是arch/arm/src/chip/stm32_eth.c中的?? ???????????????????????up_usbinitialize()?#初始化usb驅動,shenzhou/nsh未調用?? ???????????????????????board_led_on()?????#打開中斷使能led,但很快會被其它地方的led操作改變狀態?? ??????????????????????????????????|?? ???????????????????????????--------?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????lib_initialize()?????????#初始化c庫,空函數?? ?????????????????group_allocate()?????????#分配空閑組?? ?????????????????group_setupidlefiles()???#在空閑任務上創建stdout、stderr、stdin?? ?????????????????group_initialize()???????#完全初始化空閑組?? ?????????????????os_bringup()------???????#創建初始任務?? ??????????????????????????????????|?? ??????????????????????????????????v?? ???????????????????????KEKERNEL_THREAD()??#啟動內核工作者線程?? ???????????????????????board_initialize()?#最后一刻的板級初始化,shenzhou/nsh未調用?? ???????????????????????TASK_CREATE()??????#啟動默認應用程序?? ??????????????????????????????????|?? ???????????????????????????--------?? ???????????????????????????|?? ???????????????????????????v?? ?????????????????for?up_idle()????????????#空閑任務循環?? ???????????????????????????|?? ????????--------------------?? ????????|?? ????????v?? ???for(;;)????????????????????????????????#不應該到達這里??
NuttX 啟動流程
轉載請注明出處: http://blog.csdn.net/zhumaill/article/details/23261543[ruby]?view plain?copy
總結
以上是生活随笔為你收集整理的NuttX 启动流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: px4原生源码学习四--Nuttx 实时
- 下一篇: PX4/Pixhawk---uORB深入