PX4飞控bootloader编译

2023-05-16

   以前在使用pix4中,bootloader是在出厂的时候默认烧写好的,我们直接可以通过USB更新固件,但是要做二次开发过程中,我们需要编译代码并进行烧写,我们以前用的编译命令是默认v2的命令,也没有问题,但是最近更新到了1.8.0的版本,据说从1.7.0的版本做了一些更改,主要是flash的问题,1.8.0版本编译过程中用v2的命令,会提示flash分配小的问题,这个主要是按照自己飞控的硬件,主要是明确知道单片机的flash大小,v2命令是flash在1m以内的,v3是1到2m的,所以根据自己的硬件。我的单片机flash是2m的,所以选择用v3的命令。

   我们查看了v3的固件本身编译就达到1.6m,所以在烧写过程中有一些问题,我用force的命令强制试一下,结果烧写了好几次只有一次成功了,所以我怀疑应该是bootloader太老旧不支持,果断在github上找了最新的固件,进行编译,但中途遇到了麻烦。经过摸索,也算是顺利的编译了。下面是编译过程。

1,下载固件

首先创建一个仓库,这个操作和下载px原生代码一样,不做详细介绍,下面只给出github下载地址:

git clone https://github.com/PX4/Bootloader.git

等我们下载到自己的仓库,我们需要进行更新子模块,这一步走了太多的弯路。希望以后引以为戒。

按照具体步骤接下来直接make就可以,但是,但是,但是碰到了比较恶心的事,就是下载的里面的libopencm3这个支持单片机的io库里面没有相应的文件,我们需要在github上去clone相应的文件,还好,找了好久,在编译过程中程序出现了提示才完成的。

ubmodule 'libopencm3' (https://github.com/libopencm3/libopencm3.git) registered for path 'libopencm3'

lib/kinetis/NXP_Kinetis_Bootloader_2_0_0' (https://github.com/PX4-Works/NXP_Kinetis_Bootloader_2_0_0.git) registered for path 'lib/kinetis/NXP_Kinetis_Bootloader_2_0_0'

这是提示的,我们按照里面提示的git地址clone就可以了。
https://github.com/libopencm3/libopencm3.git

https://github.com/PX4-Works/NXP_Kinetis_Bootloader_2_0_0.git

得到相应的子模块后直接按照上面的路径clone到路径下。完成更新。

最后进行更新一下:

git submodule update --init --recursive

接下来我们直接make即可,等编译完后后面在build中会有很多版本的bootloader生成,去寻找我们需要的即可!

编译后的一张图直接送上:

我们 进入我们用到的px4fmuv3_bl查看一下:

看到相应的文件,我们拷贝出来直接用就可以。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4飞控bootloader编译 的相关文章

  • PX4飞控的PPM接收机

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • 步骤八:PX4使用cartographer与move_base进行自主建图导航

    首先老样子硬件如下 飞控 HOLYBRO PIXHAWK V4 PX4 机载电脑 jetson nano b01 激光雷达 思岚a2 前提 你已经完成了cartographer建图部分 能够正常输出map话题 前言 由于要参加中国机器人大赛
  • PX4之常用函数解读

    PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff0c PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的
  • Bootrom概述

    1 Bootrom 是指on chip bootrom 在CPU芯片内部 内嵌有小的boot程序 bootloader 类似于PC机主板上的BIOS的存储区域 2 Bootloader怎么得到 如果对开发板有些改动 还能使用开发板的boot
  • 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记

    1 bootloader到kernel启动总逻辑流程图 ARM架构中 EL0 EL1是必须实现 EL2 EL3是选配 ELx跟层级对应关系 EL0 app EL1 Linux kernel lk EL2 hypervisor 虚拟化 EL3
  • uboot启动流程分析

    FS4412 SOC的启动过程 在图中有 Cortax A9 其是芯片核心 也就是中央处理器 CPU Internal Rom 是一个只读存储器 里面存储了代码 总大小为64K 它的功能是用于读写pin脚 其作用是用来告诉系统从何处去读取u
  • 操作系统中的加载程序如何工作? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我知道加载程序是一个将程序加载到主内存的程序 那么 这实际上是如何运作的呢 到底发生了什么 实际上 当加载程序加载程序时 会在 PCB 中创建一个条目 并将程序放入作业池中 程序
  • 当引导加载程序写入循环设备上的文件系统时,Linux 无法识别该文件系统

    我目前正在 x86 NASM 程序集中编写一个引导加载程序 旨在从 FAT16 文件系统加载内核 R BIN 并跳转到它 我一直在将引导加载程序写入使用安装的空白映像sudo losetup loop21 image img 我会使用写图像
  • 加载引导加载程序的第二阶段

    我正在尝试为 x86 机器创建一个小型操作系统 并开始为相当小的引导加载程序编写代码 我创建的引导加载程序非常简单 它从位于主引导记录后面的扇区加载一个小的第二引导加载程序 并跳转到该代码 主引导记录中的引导加载程序代码似乎运行良好 当它尝
  • 在 x86 程序集中制作鼠标处理程序

    我正在 NASM 程序集中编写操作系统 但在制作鼠标处理程序 指向设备 BIOS 接口处理程序 时遇到问题 我尝试在互联网上搜索如何做到这一点 但没有成功 这是设置的代码 call checkPS2 PS2 routines jc NOMO
  • Sparkfun Edge 引导加载程序问题

    今天终于到了 Sparkfun 板边板 遵循这个写得很好的指南 https codelabs developers google com codelabs sparkfun tensorflow 3 https codelabs devel
  • UEFI引导加载程序

    我正在考虑开发一个简单的 首先 UEFI 引导加载程序来加载 ELF 映像 并且想知道是否有人有一个很好的切入点 可以进入任何现有项目 或者我可以用来开始使用的示例 另外 我想知道是否有人有让虚拟机运行 EFI 应用程序的经验 我已经设置了
  • 将 NASM 和 64 位 C 代码编译并链接到引导加载程序中 [重复]

    这个问题在这里已经有答案了 我制作了一个非常简单的一级引导加载程序 它执行两个主要操作 从 16 位实模式切换到 64 位长模式 并从硬盘读取接下来的几个用于启动基本内核的扇区 对于基本内核 我尝试用 C 而不是汇编编写代码 对此我有一些疑
  • NASM:磁盘读取超时

    尝试从磁盘 从同一文件 读取数据 将另外 2 个 512 字节扇区加载到内存中 磁盘读取功能如下 read DH sectors to ES BX from drive DL disk read push dx push bx Tried
  • 引导扇区编程中的无限跳转有什么用

    我正在读一本关于如何构建操作系统的书 我浏览了这段代码 所有代码所做的就是打印 hello 但我想了解更多关于无限跳转的信息 mov ah 0x0e mov al H int 0x10 mov al e int 0x10 mov al l
  • 使用 int 13h 读取的扇区数量多于磁道上的扇区数量

    顺序是什么int 13h with ah 02h会读19部门起始于 C H S 0 0 1 提供了 2 个磁头 每磁道 18 个扇区 每面 80 个磁道的 软盘 磁盘几何结构 或者 更一般地说 当它到达磁道 0 的末尾 磁头 0 时会发生什
  • 编写一个简单的Bootloader HelloWorld - 错误函数打印字符串

    我尝试创建一个简单的引导加载程序来打印 hello world 当我调用一个仅打印 hello world 的函数时 我可以做到这一点 但是当我调用一个函数来打印特定字符串时 什么也没有发生 为此 我使用两个文件 第一个是 boot ld
  • 使用BIOS int 13h访问不同磁头的扇区

    我的磁盘每磁道有 63 个扇区 根据我的观察 我假设 我想使用 int 13h 读取 16 位引导加载程序上的扇区 例如 如果我想读取扇区号 63 我将执行以下操作 mov dl 0x80 Drive number mov dh 0 Thi
  • ARM 的启动过程是怎样的?

    我们知道 对于X86架构 按下电源按钮后 机器开始执行0xFFFFFFF0处的代码 然后开始执行BIOS中的代码以进行硬件初始化 BIOS 执行后 它使用引导加载程序将操作系统映像加载到内存中 最后 操作系统代码开始运行 对于ARM架构 使
  • MikeOS 引导加载程序中的堆栈段

    我不明白这段代码 mov ax 07C0h Set up 4K of stack space above buffer add ax 544 8k buffer 512 paragraphs 32 paragraphs loader cli

随机推荐

  • 解决Sphinx下reStructuredText中英文混合换行导致生成的HTML多出空格

    问题起因 比如reStructuredText源文件里的这段文字 xff1a 除某些病毒的基因由RNA xff08 核糖核酸 xff09 构成以外 xff0c 多数生物的基因由DNA xff08 脱氧核糖核酸 xff09 构成 xff0c
  • pptv电话面试

    1 8种基本数据类型 2 String是基本数据类型吗 3 try return 1 catch return 2 finally return3 4 线程池 5 spring实现原理 6 s
  • Python利用Moivepy给视频添加背景音乐源代码

    usr bin env python span class token property coding span span class token punctuation span utf 8 span class token string
  • 串口参数详解:波特率,数据位,停止位,奇偶校验位

    串口通讯 9600波特率 数据格式是8 N 1 请问一秒可以传输多少个字节的数据 xff1f 9600 xff0c n 8 1 实际上 xff0c 在发送一个字节的时候 xff0c 除了需要发送8BIT数据外 xff0c 还需要发送1bit
  • apt-get update更新失败问题

    本文借鉴自https blog csdn net weixin 43976343 article details 86326215 遇到错误 Err 1 http mirrors aliyun com ubuntu xenial InRel
  • 知识管理——学习篇

    你的知识需要管理 田志刚 2009年11月 现在 xff0c 根据本书的理念 xff0c 你的使命不仅仅是获取该书的知识 xff08 获取什么 xff1f 他的前瞻性思考判断 xff0c 人家10年前有这种知识管理预见和意识 xff01 作
  • 文件权限_前进的火车_新浪博客

    1 文件权限简介 linux文件权限有9个 xff0c 三组表示 xff0c owner group others 每组又包含r xff0c w xff0c x三种状态 2 根据数字修改权限 r xff0c w xff0c x三种权限通过数
  • python实现爬取网页将特定信息存入excel

    python爬虫爬取网页将特定信息存入excel 背景 1 最近遇到一个需要进行数据分析的项目 xff0c 主要是将网页上需要的信息 xff0c 进行归拢 xff0c 分析 当信息量少的时候 xff0c 采用复制粘贴 excel分析还比较快
  • ESP32实验-自建web服务器配网01

    目标 通过esp32自建web服务器实现配网 具体来说 xff1a 1 esp32上电 xff0c 手机 电脑 平板连上esp32的wifi 2 用浏览器访问esp32的网址esp32默认是192 168 4 1 3 在web页面中输入需要
  • ESP实验02-读取DS1307&eerom34c32

    1 模块介绍 本实验主要用到两个模块 esp32 tinyRTC 模块的图片如下所示 xff1a esp32模块型号为ESP32Devkitc v4 xff0c 是启明云端官方的开发板 与乐鑫官方的完全一致 xff0c 引脚顺序 xff0c
  • stm32f407 RTC不更新问题排查

    1 问题 在做stm32f407rtc实验时 xff0c 代码是用cubemx生成的 xff0c 通过串口打印出时间值 xff0c 1s打印一次 但是结果与料想中的不一致 发现打印出来的值一直不更新 按下复位键 xff0c 后时间会更新一次
  • GD32 can发送报no mailbox 故障

    1 问题描述 在使用GD32can通信时 xff0c 发现如果can线断开了 xff0c 再把can线连上 xff0c 用can分析仪监测不到总线数据 xff0c 调试后发现can发送没有成功 xff0c 通过串口打印出错误 xff0c 显
  • windows配置c语言编译系统-wingw gcc cmake

    前言 笔者在做嵌入式mcu编程的时候 xff0c 有时候想要验证一下部分代码的功能 xff0c 需要先编译成bin文件 xff0c 然后烧录到mcu内执行 每次编译烧录运行耗时较久 于是想到是不是可以在电脑上配置一个c的编译环境 xff0c
  • MacOS Python安装which is required to install pyproject.toml-based projects解决办法

    问题 使用pip安装的时候 xff0c 很多时候报错 xff1a which is required to install pyproject toml based project 使用pip instll pyproject toml无法
  • 自动以版本号命名keil生成的bin文件

    0 前言 在做项目中一直遇到一个小问题 一直也没管 xff0c 最近花了点时间处理了 xff0c 效果还不错 问题是这样的 xff1a 每次编译后的生成的bin文件需要给客户 xff0c 烧录到设备里进行更新 每次生成的bin文件都是固定的
  • protobuf编码格式解析

    示例 假如定义一个如下的protobuf类型 message Person span class token punctuation span required string user name span class token opera
  • 初探STM32掉电复位PDR

    STM32F407 144脚封装的第143脚PDR xff0c 一直没有关注过 xff0c 板子上是直接对其悬空处理 xff0c 悬空到底对系统有没有什么影响 xff0c 查看了STM32F4系列的技术手册也没有发祥有相关说明 只是说明了P
  • keil中自定义输出信息到编译窗口

    写程序的过程中 xff0c 会有不少的条件编译命令 xff0c 但是条件编译过多会导致忘记了定义那些条件 xff0c 排查起来也非常麻烦 xff0c 有没有什么好的方法来查找是否是否有该定义呢 xff1f 答案是有的 xff1a 那就 wa
  • STM32F4 FPU简单设置

    第一步 xff1a 在stm32f4xx h中定义宏 FPU PRESENT FPU USED span class hljs preprocessor span class hljs keyword define span CM4 REV
  • PX4飞控bootloader编译

    以前在使用pix4中 xff0c bootloader是在出厂的时候默认烧写好的 xff0c 我们直接可以通过USB更新固件 xff0c 但是要做二次开发过程中 xff0c 我们需要编译代码并进行烧写 xff0c 我们以前用的编译命令是默认