# EMW307x系列模组固件烧录方法
本文适用于:EMW3070/5070/3071/3072/3076/3075,等EMW307x、EMW507x系列模组。
可以通过多种方法对模组中使用的MX1270主控的Flash进行编程,烧录特定功能的固件。
各种烧录方法的应用场景和限制条件如下:
方法 | 接口 | 通信引脚 | 进入烧录模式 | 准备工作 | ||||
P10 | P14 | P15 | P16 | P12 | ||||
仿真调试器 | SWD | P4,P5 | - | - | - | - | - | 开发环境和JTAG调试器 |
Bootloader模式 | UART0/UART1 | P0,P1或 P2,P3 | 0 | 0 | 0 | 0 | 0 | Flash预烧Bootloader |
BAT烧录系统 | SWD | P4,P5 | - | - | - | - | - | BAT烧录系统 |
脱机烧录器 | Flash SPI | P0,P1,P2,P3 | 1 | 0 | 0 | 1 | - | 脱机烧录器 |
注:P10、P14、P15、P16上电默认低电平,P12上电默认高电平
各个烧录方法的应用场景如下:
- 仿真调试器:在模组的开发调试阶段烧录
- Bootloader模式:模组焊接到产品上后,对模块进行二次烧录。通常用于用户产品的开发调试阶段。
- BAT烧录系统:在模组或者产品的生产线上对模组进行二次烧录,并可用于烧录设备的唯一ID。
- 脱机烧录器:模组生产阶段批量烧录单一固件。
综上,在开发阶段,建议使用仿真调试器或者Bootloader模式进行烧录。在生产阶段,建议使用BAT烧录系统进行烧录。在用户主板上,建议引出P4和P5作为测试烧录点,方便开发和生产。
#用仿真调试器烧录
使用MXOS系统开发模组固件时,可以通过开发环境MiCoder中的编译命令直接将生成的固件烧录到模组中。MiCoder开发环境搭建请参阅相关文档。硬件仿真器通常选择JLink,连接方法如下所示:
在编译命令中添加download参数,即可下载当前编译的固件。由于需要安装开发环境,所以不适用于模组批量工厂烧录。
例如,编译Helloworld应用程序,执行命令:
mxos make helloworld@mx1270 download
命令运行结果如下:
Making config file for first time processing components: helloworld mx1270 MXOS …… Downloading applcation, size: 443512 bytes... #################################################################################################################################################################################################################### 100% 433 KiB 8.0 KiB/s 18 s Build complete Making .gdbinit Making .openocd_cfg
如果模组中预烧的Bootloader被破坏,只需在命令中增加total参数即可重新烧录Bootloader。
mxos make helloworld@mx1270 total download
#用串口烧录
处理器进入Bootloader后,会从UART0和UART1上打印菜单,并且监控这两个串口,任意一个串口输入烧录命令,都可通过该串口传输烧录数据。串口终端软件使用SecurtCRT的烧录步骤如下:
- 使用串口线连接到模组的P0(UART0_TX)、P1(UART0_RX)或者P2(UART1_TX)、P3(UART1_RX)。PC上通常使用USB转串口设备来进行中转。在SecurtCRT上设置串口参数:波特率921600,8个数据位,无奇偶校验,1个停止位。
Bootloader模式连接示意图
SecurtCRT上的串口设置
- 参考模组数据手册将模组进入Bootloader模式(P10、P14、P15、P16接地或悬空,并将P12接地后上电即可)。如果正确进入Bootloader模式,SecurtCRT上会打印以下信息:
MX1270 bootloader v1.1.0 built by SnowYang at Jun 28 2019 10:19:16 - input "help" for more information.
- 在SecurtCRT上输入write命令,并通过Ymodem协议(点击Transfer->Send Ymodem)发送固件。0xA000是应用程序的起始地址。
$ write 0xA000
- 等待传输完成即可。
Waiting for the file to be sent ... (press 'a' to abort) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Starting ymodem transfer. Press Ctrl+C to cancel. Transferring /Users/william/Develop/mxos-program/mxos-demos/build/helloworld@mx1270/binary/helloworld@mx1270.bin... 100% 433 KB 9 KB/sec 00:00:48 0 Errors Programming Completed Successfully!
Bootloader支持的命令清单:
命令 | 描述 |
help | 显示bootloader支持的命令清单 |
read [address] [length] | 读取并且通过Ymodem协议输出Flash中的数据。[address]是数据在Flash中的地址偏移,[length]是读取的数据长度 |
write [address] | 通过Ymodem协议向Flash的[address]偏移地址上写入数据 |
erase [address] [length] | 擦除Flash上从[address]开始,长度是[length]的空间 |
boot [address] | 引导Flash中的[address]上存储的固件 |
reboot | 重新启动系统 |
dump [address] [length] | 读取并显示芯片存储空间中从[address]开始,[length]长度的内容,通常用于获取外设寄存器,RAM中存储的内容。如需读取Flash中的内容,注意Flash的起始地址是0x10000000。 |
version | 获取bootloader的版本 |
注:[address]指向Flash的内部地址,从0x0地址开始。
#通过脱机烧录器烧录
脱机编程器(型号:MXFlasher)是一个简单易用的烧录工具,烧录的固件保存在编程器的内助存储器中,只要和模组连接正确,即可自动启动烧录。不需要复杂的安装过程,适用于工厂批量烧录模组。
MXFlasher烧录器
#硬件连接和烧录
使用MXFlasher的烧录的硬件连接方法如下图所示,MXFlasher使用USB供电,并且可以给模组供电。
MXFlasher硬件连接示意图
所有MXKit-Core-307x核心板都引出烧录接口,可以直接和MXFlasher连接。
烧录步骤如下:
用USB线给MXFlasher供电,MXFlasher启动。屏幕显示烧录器配置信息。按下MXFlasher上的按键,屏幕上显示“放入模组”。
- HW:烧录的目标处理器,务必确认是“MX1270”。否则,无法正确烧录,请参阅“MXFlasher的设置 (opens new window)”重新配置。
- SW:烧录的固件名称,可以参阅“MXFlasher的设置”重新配置
- SZ:烧录的固件大小
- AD:烧录的目标地址,可以参阅“MXFlasher的设置 (opens new window)”重新配置
MXFlasher启动并进入烧录模式
正确连接MXFlasher和模组。如果使用MXKit-Core-307x核心板,只需要用10芯的连接烧录接口即可。
屏幕上会显示进度条和“烧录中”,LED灯开始闪烁。等待烧录完成。
- 烧录完成,屏幕显示“成功”,LED灯显示绿色。
- 如果出现错误,屏幕显示“失败”,LED灯显示红色。
MXFlasher烧录过程中的LCD显示
- 连接下一个模组,即可自动启动下一次烧录。
#MXFlash的设置
通过以下步骤,设置MXFlasher进入设置模式
将MXFlasher通过USB数据线连接到PC后,等待MXFlasher启动,屏幕显示烧录器配置信息。
长按MXFlasher上的按钮,直到LED灯显示红色,同事屏幕上显示“齿轮”图案
PC上可以看到一个名称为“MXCHIP”的优盘插入,优盘中包含以下文件:
- README.TXT:简单的使用说明书
- 各种bin文件:待烧录的固件
- config.txt:烧录器配置文件,文件内容如下:
/** * platform:配置的烧录目标芯片型号,设置成mx1270 * filename:烧录的二进制文件名称,同时该文件必须保存在优盘中 * address:烧录的起始地址 */ { "platform": "mx1270", "filename": "all.bin", "address": "0x00", }
<span class="ne-text"> </span>
配置示例:将名为at_cmd@mx1280.all.bin的二进制文件,烧录到地址Flash 的0x00地址上:
- 把固件"at_cmd@mx1280.all.bin"拷贝到优盘中。
- 打开 config.txt,修改为如下内容并保存。
{ "platform": "mx1270", "filename": "at_cmd@mx1280.all.bin", "address": "0x00", }
配置完成后,设置MXFlasher进入烧录模式
- 按一下MXFlasher上的按键,烧录器进入烧录模式,同时显示器上会显示当前的配置信息,LED灯熄灭。
- 按下MXFlasher上的按键,屏幕上显示“放入模组”。
- 按照图 14所示连接待烧录模组后,烧录自动启动。屏幕显示“烧录中”,完成后显示“成功”
- 连接下一个模组,即可自动启动下一次烧录。
#通过BAT烧录系统烧录
BAT是MXCHIP推出的面向工厂批量烧录的生产工具,不仅可以实现固件烧录,还可以为每一个模组烧录唯一ID,如云服务验证码,安全密钥,证书,令牌等。BAT系统采用服务器客户端架构。在服务器上可以批量导入固件和ID,创建生产任务,对生产系统进行统一管理。客户端从服务器上同步生产任务,一台客户端可以同时对4个模组进行烧录。客户端还可以和上料机,机械臂等自动化系统对接,实现全自动化生产。
BAT系统的使用方法,请参阅BAT系统相关的使用文档。EMW307x模组通过SWD接口和BAT系统交互。以下是BAT系统的应用框图:
BAT烧录系统
#文档变更记录
版本 | 修改内容 | 修改时间 |
V1.0 | 初版 | 2022.6.23 |
End.