(5)(5.6) 将固件加载到带有外部闪存的主板上

news/2024/4/15 14:10:52

文章目录

5.5 替代方法

5.5.1 下载并安装Zadig(仅适用于Windows)

5.5.2 下载ArduPilot固件

5.5.3 将ArduPilot上传至主板

5.6 将固件加载到带有外部闪存的主板上

5.6.1 使用SSBL加载固件

5.6.2 安装ArduPilot引导程序


5.5 替代方法

5.5.1 下载并安装Zadig(仅适用于Windows)

下载并运行 Zadig(在"Download"下面搜索"Zadig 2.3"),允许使用 USB 访问电路板。

从选项菜单中选择"List all devices"选项。

从下拉菜单中选择"STM32 BOOTLOADER",然后按"Replace Driver"按钮。

可选地,你可能希望检查该板作为一个 USB 端口是否可见:

  • 按住板子上的 DFU 按钮,插入 USB 线(连接到你的 PC 上);
  • 打开 windows 设备管理器,在"通用串行总线设备"下查找"STM32 BOOTLOADER",以确认该板处于 DFU 模式。

5.5.2 下载ArduPilot固件

从 firmware.ardupilot.org 下载你的主板的 ArduPilot 固件。通常你可以通过以下方式找到合适的固件:

  • 打开  firmware.ardupilot.org;
  • 选择点击你的飞行器类型的链接(如 Plane、Copter、Rover、Sub 或 Antenna Tracker);
  • 选择"测试版"或"稳定版";
  • 寻找名称与自动驾驶仪最接近的目录;
  • 下载"arduXXX_with_bl.hex"文件,点击它。它通常会被保存在你的下载文件夹中。

5.5.3 将ArduPilot上传至主板

下载、安装并运行 Betaflight 配置器(Betaflight Configurator)。

  • 在屏幕的左侧选择"Firmware Flasher";
  • 从右上方选择 DFU
  • 从右下方按下"加载固件[本地]",并选择你上面下载的 arduXXX_with_bl.hex 文件;
  • 按下"Flash Firmware",几分钟后,固件应该被加载。

你现在可以重新启动电路板,并与你喜欢的地面站(Mission PlannerQGC 等)连接(connect with your favourite ground station),未来的固件上传也应该可以使用 Pixhawk 电路板的正常方法。

5.6 将固件加载到带有外部闪存的主板上

最近的一些板子,最明显的是来自 Seriously Pro RacingSeriously Pro Racing - Home)的板子,使用了具有少量内部闪存的 MCU,但外部连接的闪存芯片大得多。这些板子需要额外的步骤来加载 ArduPilot 固件。通常情况下,某种引导程序驻留在内部闪存上,然后主固件驻留在外部闪存上。

5.6.1 使用SSBL加载固件

SPRacing 系列的板子在内部闪存上预装了一个专有的引导程序,需要使用第二阶段的引导程序来加载进一步的固件。有几个选择来加载这些板子的固件,但无论你选择哪一种,你都需要使用 SSBL 来初始化 ArduPilot。请按照GitHub - spracing/ssbl: Second-Stage Bootloader for the H7 series flight controllers. Allows booting of PX4 or other firmware directly from external flash using memory mapped QuadSPI."安装"说明,以便将 SSBL 加载到你的电路板上。一旦 SSBL 加载完毕,请按照 PX4 的说明将 ArduPilot 加载到板子上GitHub - spracing/ssbl: Second-Stage Bootloader for the H7 series flight controllers. Allows booting of PX4 or other firmware directly from external flash using memory mapped QuadSPI.,但不要使用 PX4 固件,请使用 arducopter.bin 固件镜像。以下是步骤的总结:

  • 下载Releases · spracing/ssbl · GitHub,并按照GitHub - spracing/ssbl: Second-Stage Bootloader for the H7 series flight controllers. Allows booting of PX4 or other firmware directly from external flash using memory mapped QuadSPI.,将 SSBL 安装到外部闪存中;
  • 下载最新的 ArduPilot 外部闪存二进制文件,例如https://firmware.ardupilot.org/Copter/latest/SPRacingH7/arducopter.bin;
  • 使用 dd 将二进制文件填充到 2MB

dd if=/dev/zero ibs=1k count=2048 of=AP_2MB.bin

dd conv=notrunc if=arducopter.bin of=AP_2MB.bin

  • 把板子放入 SSBL dfu 模式--关闭电源,按住 BIND(不是 BOOT),打开电源 --LED 快速闪烁,释放 BINDLED 缓慢闪烁 --DFU 模式启用;
  • 使用以下方法烧录二进制文件;

dfu-util -D AP_2MB.bin -s 0x90100000:0x200000

  • 验证闪存。下面的 dfu-util 命令将闪存的内容复制到电脑上,diff 命令将告诉你这些内容是相同还是不同。如果 diff 没有说文件是相同的,请不要试图飞,重试;

dfu-util -U AP_2MB-VERIFY.bin -s 0x90100000:0x200000

diff -sb AP_2MB.bin AP_2MB-VERIFY.bin

  • 关机,安装 SD 卡(注意:你必须安装 SD 卡,没有 SD 卡,固件将无法启动),开机;
  • 使用任务规划器正常配置电路板。

在这一点上,你应该有工作的固件在板上。如果你想加载新的固件,你将需要再次遵循步骤 2-7 (你不能使用 Mission Planner 来加载固件)。如果你确定你永远不会想在电路板上加载 betaflight,那么你可以安装 ArduPilot 引导程序。

5.6.2 安装ArduPilot引导程序

Warning

安装 ArduPilot 引导程序是一个单向的操作。在这一步之后,你不能把板子恢复到出厂配置或加载 betaflight - 你必须把板子送回 Seriously Pro,重新刷上出厂固件,假设这是有可能的话。

如果你确定你只想在板子上使用 ArduPilot,那么烧录 ardupilot bootloader 可以使后续的升级更加简单。

  • 你最初必须在电路板上安装一个工作版本的 ArduPilot - 按照上面的步骤;
  • 你现在必须解除内部闪存的复制保护。这是一个破坏性的操作,需要完全擦除闪存。ArduPilot 提供了支持,使之变得简单。设置 BRD_OPTIONS = 16
  • 关掉电源,再接通板子的电源。板子不会出现启动,但闪存扇区正在被擦除。等待几秒钟,然后关闭板子的电源;
  • 按住启动按钮(这次不绑定启动),打开飞行控制器电源。这将使电路板处于 dfu 模式;
  • 下载 ArduPilot 引导程序,例如:https://github.com/ArduPilot/ardupilot/blob/master/Tools/bootloaders/SPRacingH7_bl.bin;
  • 通过 dfu 安装引导程序:

dfu-util -a 0 --dfuse-address 0x08000000 -D SPRacingH7_bl.bin

  • 重新启动电路板;
  • 现在你可以使用你喜欢的工具来上传 ArduPilot 固件。

http://www.ppmy.cn/news/1008968.html

相关文章

探索国产嵌入式Python解决方案的方法(开源)

大家好,今天我们要介绍一款适用于单片机的嵌入式Python开源项目 -- PikaPython。 第一:嵌入式Python的发展趋势 在嵌入式领域软硬件的发展趋势中,硬件的成本日益降低,性能逐渐提升。这种趋势使得Python在芯片上的运行难度已经大大…

【海拥工具】分享200+个关于AI的网站

给大家分享一个学习、摸鱼必备网站,我的好友海拥✘(全网粉丝近20万,CSDN 内容合伙人,全栈领域优质创作者,华为云享专家,阿里云专家博主,InfoQ、蓝桥云课签约作者,HDZ核心组成员&…

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值(default)1.3 列描述(comment)1.4 zerofill1.5 主键(primary ke…

Statefulset 实战 3

上一部分我们说到如何使用 Statefulset 部署有状态的应用,Statefulset 可以做到部署的 每一个 pod 能够独立的拥有一个持久卷声明和持久卷 之前我们 用 Statefulset 和 ReplicaSet 对比,自然他们是有相似之处和不同之处,不同之处前面的文章已…

宝塔面板Mysql数据库无法启动(已解决)

1、错误排查 Mysql 无法正常启动直接使用官方提供的脚本检查出错 wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.shwget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh 打印出…

阿里云官方关于数据安全保护的声明

“阿里云监控用户的数据流量?”“真的假的?”随着近日早晨 朱峰肥鹅旅行 对阿里云的一条朋友圈截图传遍了整个IT圈。 对于网络上的各种传播,以下是阿里云的官方答复,原文如下: 关于数据安全保护的声明 今天有客户反映…

无涯教程-Perl - if...elsif...else语句函数

if 语句后可以跟可选的 elsif ... else 语句,这对于使用单个if ... elsif语句测试各种条件非常有用。 if...elsif...else - 语法 Perl编程语言中的 if ... elsif...else语句的语法是- if(boolean_expression 1) {# Executes when the boolean expression 1 is tr…

三、PWM呼吸灯

1. 什么是呼吸灯 如下图中的蓝色LED灯,不再是亮灭交替,而是慢慢亮慢慢灭,这就是呼吸灯 生活中常见 2. 怎样实现? 答:用PWM

Cocos Creator 3.8 LTS 今日发布!

Cocos Creator 3.8 带来了什么? Cocos Creator 已迭代了 9 年,其成熟稳定的可视化编辑器,使开发者的生产效率能够得到极大的提升。 但这不仅是一个拼生产速度的时代,光有生产效率还不够。 作为一款移动端优先的跨平台引擎&#xf…

vue-plugin-hiprint 详细使用说明

vue-plugin-hiprint 是一个 Vue.js 插件,用于在 Vue.js 应用中方便地使用 HiPrint 打印插件。HiPrint 是一个基于 Web 的打印插件,可以实现高度自定义的打印功能。 整体代码说明 以下是 vue-plugin-hiprint 的详细使用说明: 安装插件&#…

微信小程序中的分包使用介绍

一、分包的好处 可以优化小程序首次启动的下载时间 在多团队共同开发时可以更好的解耦协作 主包:放置默认启动页面/TabBar 页面,公共资源/JS 脚本 分包:根据开发者的配置进行划分 限制:所有分包大小不超过 20M,单…

AssetBundleBrowser导入报错解决方案

第一次导入AssetBundleBrowser遇到报错有 Assets\Scenes\AssetBundles-Browser-master\AssetBundles-Browser-master\Tests\Editor\ABModelTests.cs(13,7): error CS0246: The type or namespace name Boo could not be found (are you missing a using directive or an assem…

《GPU并行计算与CUDA编程》笔记

第一个GPU程序 #include <stdio.h>__global__ void square(float* d_out,float* d_in){int idx threadIdx.x;float f d_in[idx];d_out[idx] f * f; }int main(int argc,char** argv){const int ARRAY_SIZE 8;const int ARRAY_BYTES ARRAY_SIZE * sizeof(float);// …

YOLOv5引入FasterNet主干网络,目标检测速度提升明显

目录 一、背景介绍1.1 目标检测算法简介1.2 YOLOv5简介及发展历程 二、主干网络选择的重要性2.1 主干网络在目标检测中的作用2.2 YOLOv5使用的默认主干网络 三、FasterNet简介与原理解析3.1 FasterNet概述3.2 FasterNet的网络结构3.2.1 基础网络模块3.2.2 快速特征融合模块3.2.…

宝塔Linux面板升级“获取更新包失败”怎么解决?

宝塔Linux面板执行升级命令后失败&#xff0c;提示“获取更新包失败&#xff0c;请稍后更新或联系宝塔运维”如何解决&#xff1f;新手站长分享宝塔面板升级失败的解决方法&#xff1a; 宝塔面板升级失败解决方法 1、使用root账户登录到你的云服务器上&#xff0c;宝塔Linux面…

Flink开发环境准备: centos-jdk8

linux-jdk8 - Flink开发环境准备 一、基本介绍二、环境准备1.1 JDK环境1.2 开发工具1.3 Maven环境 三、flink下载安装配置3.1 Flink下载3.2 flink本地模式安装 - linux3.3 常用配置3.4 日志的查看和配置 四、单机 Standalone 的方式运行 Flink 一、基本介绍 Flink底层源码是基于…

【Python】基础:OpenCV库基本应用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍OpenCV库基本应用。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&…

【Vue3项目实战】vue3项目配置页面切换过渡动画

文章目录 一、先看效果二、全量代码三、注意事项虽然Vue3支持 template 下存在多个根节点&#xff0c;但是 transition 过渡动画并不支持&#xff0c;要实现过渡动画的页面&#xff0c;都需要有一个根标签包裹页面内容&#xff0c;否则就会报如下警告: 四、相关文章友链本专栏记…

Nuxtjs实现服务端渲染和静态化站点

本文将介绍如何使用Nuxtjs对vue项目进行ssr和静态化处理。 Nuxtjs简单介绍 首先&#xff0c;我们简单了解下Nuxtjs框架&#xff0c;Nuxt.js是一个基于Vue的通用框架&#xff0c;主要用于解决Vue项目的服务端渲染(SSR)。 它本质上是一个Vue框架&#xff0c;增加一层node服务&a…

<C/C++>日期和时间的使用(time相关函数大全)

1、函数详解及示例 1- time_t time(time_t *time); 1&#xff09;功能&#xff1a;获取或设置系统时间。 2&#xff09;参数&#xff1a;若给定参数&#xff0c;则将当前时间保存到该参数中&#xff1b;若不给定参数&#xff0c;参数填NULL。 3&#xff09;返回值&#xff1…
最新文章