多旋翼无人机二次开发E360开发:最底层启动过程分析多旋翼无人机二次开发(现代职业)2E360开发4最底层启动过程分析.docxVIP

  • 13
  • 0
  • 约5.7千字
  • 约 9页
  • 2021-08-08 发布于北京
  • 举报

多旋翼无人机二次开发E360开发:最底层启动过程分析多旋翼无人机二次开发(现代职业)2E360开发4最底层启动过程分析.docx

第四章 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

文档评论(0)

1亿VIP精品文档

相关文档