microbit/micropython文档:有关hex文件格式的信息

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

microbit/micropython文档:有关hex文件格式的信息

#1

帖子 shaoziyang »

原帖作者:imhori 于2018年9月5日

来源(Github Issue #548开启中):https://github.com/bbcmicrobit/m ... uecomment-418626393 MicroPython的作者Damien

下面是.hex文件的简短说明。

常规内存地址布局 (以十六进制显示):

代码: 全选

0x00000000: 固件
0x100010c0: UICR 数据, 28 bytes
0x0003e000: 附加的脚本 (可选)
创建hex文件的步骤:
  • yotta 生成源代码并创建一个只带固件的裸hex文件 (上面第一部分)
  • tools/adduicr.py 将 UICR 添加到裸hex (上面第二部分);将输出置于build/firmware.hex内;这送出作为官方固件
  • 用户可以选择使用tools/makecombinedhex.py的附加脚本 (或其他方式)

UICR 格式 (存储为little endian的所有内容):
  • 4-byte 整数magic值为 0x17eeb07c
  • 4-byte 整数值为 0xffffffff
  • 4-byte 整数值为 10 (以log 基底为 2 的flash page 为 1024 bytes 大小 )
  • 2-byte 整数值为 0 (固件的起始页)
  • 2-byte 存储固件使用的page数的整数
  • 4-byte 整数值为 0xffffffff
  • 4-byte 固件中具有版本字符串地址的整数
  • 4-byte 整数值为 0

附加的脚本格式:
  • 2 bytes "MP"
  • 2-byte little endian 接在4 byte header后面附加脚本的长度 (以bytes为单位) 整数
  • 脚本 bytes

译注:UICR(User information configuration registers)是nrf51822保存用户特殊设置的非易失存储寄存器(Non-volatile memory),UICR只有通过全片擦除后才能重新写入,不能单独擦除。
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章