# EMW307x系列模组固件烧录方法

本文适用于:EMW3070/5070/3071/3072/3076/3075,等EMW307x、EMW507x系列模组。

可以通过多种方法对模组中使用的MX1270主控的Flash进行编程,烧录特定功能的固件。

各种烧录方法的应用场景和限制条件如下:

方法

接口

通信引脚

进入烧录模式

准备工作

P10

P14

P15

P16

P12

仿真调试器

SWD

P4P5

-

-

-

-

-

开发环境和JTAG调试器

Bootloader模式

UART0/UART1

P0P1或 P2,P3

0

0

0

0

0

Flash预烧Bootloader

BAT烧录系统

SWD

P4P5

-

-

-

-

-

BAT烧录系统

脱机烧录器

Flash SPI

P0P1P2P3

1

0

0

1

-

脱机烧录器

注:P10P14P15P16上电默认低电平,P12上电默认高电平

各个烧录方法的应用场景如下:

  • 仿真调试器:在模组的开发调试阶段烧录
  • Bootloader模式:模组焊接到产品上后,对模块进行二次烧录。通常用于用户产品的开发调试阶段。
  • BAT烧录系统:在模组或者产品的生产线上对模组进行二次烧录,并可用于烧录设备的唯一ID
  • 脱机烧录器:模组生产阶段批量烧录单一固件。

综上,在开发阶段,建议使用仿真调试器或者Bootloader模式进行烧录。在生产阶段,建议使用BAT烧录系统进行烧录。在用户主板上,建议引出P4P5作为测试烧录点,方便开发和生产。

#用仿真调试器烧录

使用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后,会从UART0UART1上打印菜单,并且监控这两个串口,任意一个串口输入烧录命令,都可通过该串口传输烧录数据。串口终端软件使用SecurtCRT的烧录步骤如下:

  1. 使用串口线连接到模组的P0(UART0_TX)、P1(UART0_RX)或者P2(UART1_TX)、P3(UART1_RX)。PC上通常使用USB转串口设备来进行中转。在SecurtCRT上设置串口参数:波特率921600,8个数据位,无奇偶校验,1个停止位。

Bootloader模式连接示意图

SecurtCRT上的串口设置

  1. 参考模组数据手册将模组进入Bootloader模式(P10P14P15P16接地或悬空,并将P12接地后上电即可)。如果正确进入Bootloader模式,SecurtCRT上会打印以下信息:
MX1270 bootloader v1.1.0 built by SnowYang at Jun 28 2019 10:19:16
 - input "help" for more information.
  1. 在SecurtCRT上输入write命令,并通过Ymodem协议(点击Transfer->Send Ymodem)发送固件。0xA000是应用程序的起始地址。
$ write 0xA000
  1. 等待传输完成即可。
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连接。

烧录步骤如下:

  1. 用USB线给MXFlasher供电,MXFlasher启动。屏幕显示烧录器配置信息。按下MXFlasher上的按键,屏幕上显示“放入模组”。

MXFlasher启动并进入烧录模式

  1. 正确连接MXFlasher和模组。如果使用MXKit-Core-307x核心板,只需要用10芯的连接烧录接口即可。

  2. 屏幕上会显示进度条和“烧录中”,LED灯开始闪烁。等待烧录完成。

    • 烧录完成,屏幕显示“成功”,LED灯显示绿色。
    • 如果出现错误,屏幕显示“失败”,LED灯显示红色。

MXFlasher烧录过程中的LCD显示

  1. 连接下一个模组,即可自动启动下一次烧录。

#MXFlash的设置

通过以下步骤,设置MXFlasher进入设置模式

  1. MXFlasher通过USB数据线连接到PC后,等待MXFlasher启动,屏幕显示烧录器配置信息。

  2. 长按MXFlasher上的按钮,直到LED灯显示红色,同事屏幕上显示“齿轮”图案

  3. 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地址上:

  1. 把固件"at_cmd@mx1280.all.bin"拷贝到优盘中。
  2. 打开 config.txt,修改为如下内容并保存。
{
     "platform": "mx1270",
     "filename": "at_cmd@mx1280.all.bin",
     "address": "0x00",
}
  1. 配置完成后,设置MXFlasher进入烧录模式

    1. 按一下MXFlasher上的按键,烧录器进入烧录模式,同时显示器上会显示当前的配置信息,LED灯熄灭。
    2. 按下MXFlasher上的按键,屏幕上显示“放入模组”。
    3. 按照图 14所示连接待烧录模组后,烧录自动启动。屏幕显示“烧录中”,完成后显示“成功”
    4. 连接下一个模组,即可自动启动下一次烧录。

#通过BAT烧录系统烧录

BATMXCHIP推出的面向工厂批量烧录的生产工具,不仅可以实现固件烧录,还可以为每一个模组烧录唯一ID,如云服务验证码,安全密钥,证书,令牌等。BAT系统采用服务器客户端架构。在服务器上可以批量导入固件和ID,创建生产任务,对生产系统进行统一管理。客户端从服务器上同步生产任务,一台客户端可以同时对4个模组进行烧录。客户端还可以和上料机,机械臂等自动化系统对接,实现全自动化生产。

BAT系统的使用方法,请参阅BAT系统相关的使用文档。EMW307x模组通过SWD接口和BAT系统交互。以下是BAT系统的应用框图:

BAT烧录系统

#文档变更记录

版本

修改内容

修改时间

V1.0

初版

2022.6.23

End.