博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四轴飞行器Bootloader和固件的更新
阅读量:4488 次
发布时间:2019-06-08

本文共 1495 字,大约阅读时间需要 4 分钟。

在四轴飞行器中,为了方便用户后期对飞行器进行固件升级,一般都采用了Bootloader技术。所谓Bootloader就是指单片机启动后首先运行的一段代码,它的最主要功能就是用于检查用户是否要更新飞控固件。如果是,则进入飞控固件更新进程,如果否,则直接运行当前的飞控固件。此外,有的Bootloader里面也包含进了一些基本的硬件检测功能,如果硬件检测失败,就不进入飞控功能。通常,Bootloader都要配合飞行器的上位机软件来使用。

下面以圆点博士小四轴飞行器为例进一步对Bootloader进行说明。在圆点博士小四轴飞行器的上位机软件中,提供了飞行器和遥控器的固件更新功能。这样用户不需要借助其它单片机下载工具,就可以非常方便地通过上位机来直接更新飞行器和遥控器的固件。圆点博士小四轴飞行器提供了飞行器和遥控器的固件源代码,当用户重新编译并更新这些固件的时候,需要注意以下这个问题:

1,圆点博士小四轴飞行器上位机的固件更新只支持后缀为bin的数据文件,所以用户要把其它格式的固件(比如hex)转换成bin格式的文件。对于keil编译器,软件已经自带该功能,用户只需要根据下图进行设置即可。

keil4开发环境:

bootloader_bin

 

keil5开发环境:

 

在需要生成.bin文件时勾选Run#1选项就好了。

 

 

由于Keil默认会生成后缀为axf的固件,fromelf这个命令就是把axf固件转换成bin固件的意思。它的形式是: fromelf.exe -bin -o 目标路径 源路径。

2,同时,我们要设置程序的起始地址,使得这些重新编译后的固件能够配合Bootloader来工作。下图是Keil软件设置程序起始地址的设置界面:

bootloader_size

对于圆点博士小四轴遥控器,由于采用的是STM32F103C8型号的芯片,它的ROM容量是64K,RAM容量是20K,所以ROM的大小转换成16进制就是0x10000,RAM的大小转换成16进制就是0x5000。由于STM32的程序开始地址是0x8000000,然后Bootloader占用了0x8000的空间,所以ROM的起始设置为0x8008000,而RAM的开始地址保持为0x20000000。

对于圆点博士小四轴飞行器,由于采用的是STM32F103RC型号的芯片,它的ROM容量是256K,RAM容量是48K,所以ROM的大小转换成16进制就是0x40000,RAM的大小转换成16进制就是0xC000。同样地,由于STM32的程序开始地址是0x8000000,然后Bootloader占用了0x8000的空间,所以ROM的起始设置为0x8008000,而RAM的开始地址保持为0x20000000。

3,在上一步中,我们在编译器上修改了程序起始地址,我们同样要在代码里面做些修改,使得编译后的固件能正常工作。圆点博士小四轴飞行器使用的是STM32单片机,所以需要在固件源代码里面main函数的开始位置加入下列代码,把程序的中断向量的开始位置和代码的起始位置对齐。该代码的意思是把STM32单片机的中断向量起始地址从0x8000000的位置向后偏移0x8000的大小,变成0x8008000。

NVIC_SetVectorTable(NVIC_VectTab_FLASH,(u32)0x8000);

经过这三个步骤,用户自行编写的代码就可以通过圆点博士小四轴飞行器上位机下载到飞行器和遥控器,并正常使用了。 

 

该文章出自圆点博士无人机www.bspilot.com

转载于:https://www.cnblogs.com/xiao-yong/p/8933391.html

你可能感兴趣的文章
CI Weekly #21 | iOS 持续集成快速入门指南
查看>>
Jquery获取输入框属性file,ajax传输后端,下载图片
查看>>
深入浅出Visual_C动态链接库(Dll)编程(宋宝华)----整理(word)
查看>>
docker运行环境安装-后续步骤(二)
查看>>
Python学习——02-Python基础——【3集合与函数】
查看>>
NPOI导出excel表格应用
查看>>
tensorflow从入门到放弃-0
查看>>
解锁scott用户
查看>>
多态的理解
查看>>
AspNet Core 发布到Linux系统和发布IIS 注意项
查看>>
Windows添加.NET Framework 3.0 NetFx3 失败 - 状态为:0x800f0950
查看>>
隐藏显示终端的光标(shell echo,linux c printf)
查看>>
SQL Server 存储过程
查看>>
JSP 标准标签库(JSTL)(JSP Standard Tag Library)
查看>>
导入项目遇到的问题: Some projects cannot be imported because they already exist in the workspace....
查看>>
华为:字符集合
查看>>
用Okhttp框架登录之后的Cookie设置到webView中(转)
查看>>
Java_Activiti5_菜鸟也来学Activiti5工作流_之入门简单例子(一)
查看>>
设计模式(一)工厂模式Factory(创建型)
查看>>
linux中安装软件的集中方法
查看>>