- 13
- 0
- 约5.7千字
- 约 9页
- 2021-08-08 发布于北京
- 举报
第四章 Pixhawk PX4FMU和PX4IO最底层启动过程分析
4.1、PX4IO 与PX4FMU
PX4IO(STM32F100):为PIXHAWK中专用于处理输入输出的部分,输入为支持的各类遥控器(PPM,SPKT/DSM,SBUS),输出为电调的PWM驱动信号,它与PX4FMU(STM32F427)通过串口进行通信。
PX4FMU :各种传感器数据读取、姿态解算、PWM控制量的计算、与PX4IO通信。
PX4IO与PX4FMU一样,在大的软件架构上分为Bootloader,OS和APP三个部分,OS 为Nuttx,如下图
4.2、Nuttx
代码位置:
PX4NuttX/nuttx/arch/arm/src/stm32 /stm32_start.c
__start-- #处理器执行的第一条指令(px4使用的是stm32,入口在stm32_start.c中)
↓
↓
stm32_clockconfig() #初始化时钟
↓
↓
rcc_reset() #复位rcc
stm32_stdclockconfig() #初始化标准时钟
rcc_enableperipherals() #使能外设时钟
stm32_fpuconfig() #配置fpu
↓
↓
stm32_lowsetup() #基本初始化串口,之后可以使用up_lowputc()
stm32_gpioinit() #初始化gpio,只是调用stm32_gpioremap()设置重映射
up_earlyserialinit() #初始化串口,之后可以使用up_putc()
stm32_boardinitialize() #板级初始化
↓
↓
stm32_spiinitialize() #初始化spi,只是调用stm32_configgpio()设置gpio
stm32_usbinitialize() #初始化usb,只是调用stm32_configgpio()设置gpio
up_ledinit(); #初始化led,只是调用stm32_configgpio()设置gpio
↓
在stm32_start.c文件中会看到这么一句话:
os_start() #初始化操作系统
↓
↓
dq_init() #初始化各种状态的任务列表(置为null)
g_pidhash[i]= #初始化唯一可以确定的元素--进程ID
g_pidhash[PIDHASH(0)]= #分配空闲任务的进程ID为0
g_idletcb= #初始化空闲任务的任务控制块
sem_initialize()-- #初始化信号量
↓
↓
dq_init() #将信号量队列置为null
sem_initholders() #初始化持有者结构以支持优先级继承
↓
↓
↓
up_allocate_heap() #分配用户模式的堆(设置堆的起点和大小)
kumm_initialize() #初始化用户模式的堆
up_allocate_kheap() #分配内核模式的堆
kmm_ini
您可能关注的文档
最近下载
- 专题03 《声现象》压轴培优题型训练【十二大题型】(解析版)2023-2024学年八年级上册《物理》培优专题训练(人教版).docx VIP
- (正式版)DB15∕T 3202-2023 《高纬度多年冻土区公路工程地质勘察技术规范》.docx VIP
- 制茶学第五章黑茶.ppt
- 2025年山东省春季高考英语试卷试题真题(含答案) .pdf VIP
- 专题01 声现象(讲义)中考物理一轮复习(解析版).docx VIP
- 抖音新创作者规则学习考试抖音达人违规免处罚考试答案.docx VIP
- 早产临床防治指南(2024版).pptx VIP
- 马原23版 课后答案【31页】.docx VIP
- 甘肃驾照科目一题目及答案.docx VIP
- 食物与相关食物相克.doc VIP
原创力文档

文档评论(0)