C/C++编程-功能实践-bootloader

19 篇文章 2 订阅
2 篇文章 0 订阅

简述

Bootloader和OTA有紧密关系。

  1. flash:很小 ; ram:很小(或者没有);
    直接升级烧写,不能做到
  2. flash:小或者大; ram:足够大;
    把前版本APP拷贝到RAM中运行,然后通过网络接收新版本APP,将新版本APP,写入到flash。可以完成升级。
    1. 需要大RAM
    2. 断电,RAM丢失变成砖
  3. 引入bootloafer (有开源代码:SWUpdate)

检验升级标志位
4. Linux中的bootloader
各种大型系统的升级

编写最简单的BootLoader

MDK生成反汇编文件和bin文件

在user选项中
生成bin文件
fromelf –bin –output=xxxx.bin xxxx\xxxx.axf
其中–bin是制定输出文件格式是bin格式,
–output=xxxx.bin指定输出文件名,
xxxx\xxxx.axf 是指定路径下的指定axf文件,此文件作为输入文件,是keil编译后产生的

生成反汇编文件
fromelf –text -a -c –output=xxxx.txt xxxx\xxxx.axf
其中–text是指定输出文件格式为text格式,
-a Prints the global and static data addresses (including addresses for structure and union contents). This option can only be used on files containing debug information. Use the -select option to output a subset of the data addresses.
-c Disassembles code
–output=xxxx.txt 指定输出文件名,
xxxx\xxxx.axf 是指定路径下的指定axf文件,此文件作为输入文件,是keil编译后产生的;

想要了解更多那就看fromelf userguide吧!

关于MDK的编译环境信息

map文件
bin文件
hex文件
反汇编文件
.o文件
.elf文件

然后这些除了bin或者hex是最后的编译二进制文件以为,其他的信息输出文件,不是真正的编译过程。在编译过程种,数据的具体值信息,编译器不作信息输出,只有通过真正的编译过程文件查看,比如二进制文件、.o文件。

查看二进制文件,需要用专用的编辑器(segger studio),因为它需要对arm内核进行地址偏移,比如0x08000000


查看.o文件,可在linux下通过命令查询

objdump -h xxxx.o
打印主要段的信息

objdump -x xxxx.o
打印更多的详细信息

objdump -s xxx.o
将所有段的内容以16进制方式打印出来

objdump -d xxx.o 或者-S
将所有包含指令的段反汇编
objdump -t xxx.o
查看所有的符号以及他们所在段
readelf -h xxx.o
查看.o文件的文件头详细信息
readelf -S xxx.o
显示.o文件中的所有段,即查看段表
size xxx.o
查看.o文件中各个段所占大小
nm xxx.o
查看.o文件中所有的符号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值