0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通用脚本的写法以及命令行的写法

痞子衡嵌入式 来源:痞子衡嵌入式 作者:痞子衡嵌入式 2022-07-14 17:09 次阅读

1. 背景

2. 准备工作

2.1 硬件准备

2.2 软件准备

3. PE工具脚本语法介绍

4. 操作实例

4.1 通用脚本的写法

4.2 命令行的写法

4.3 批处理文件的写法

5. 总结:

6. 免责声明:

1. 背景

前段时间,内部同事讨论到使用Umultilink去批量烧录的可能性,想起曾经做过类似的尝试,并被客户批量生产所采用。想来也是一个经济实惠的操作,此处总结下,方便有需求的用户加以应用和扩展。

USB Multilink Universal 是PEmicro的一款简单易用的调试和编程工具,允许通过USB接口NXP多种处理器进行通信,包括S08、S12、ColdFire、MPC55xx/56xx、Kinetis以及S32K等多款MCU,同时其也支持ST、CypressMicrochip、Nordic、Renesas等MCU厂商,甚至还支持国产的芯片公司如GD、Auto chips、MindMotion灵动微、Zhixin等。Multilink的速度和可靠性非常适合产品开发阶段,可以与市场上NXP主流的工具链无缝衔接,如CodeWarrior、S32DS、MCUXPresso、IAR、Keil、Cosmic和Mentor Graphics等,价格相对比较便宜(最常用的Multilink FX官网报价199刀),目前在市场上保有量很高。

而在量产阶段,PEmicro也提供了一套工具叫做Cyclone Programmers,提供编程Image的板载存储、为目标提供电源,而且可以通过 PC 进行控制,也可以脱机烧写。在配置完成后产线工作人员只需要按一个启动按钮即可完成程序的烧录。当然Cyclone 编程器也支持开发过程中用作调试器,并受到许多 IDE 的支持,但是鉴于其999刀的价格用来调试程序有点杀鸡用牛刀的意思,所以大都是作为量产工具使用。

那么问题来了, 买不起999刀Cyclone Programmers,能否使用199刀Multilink作为量产工具呢?答案当然是可以的,而且还是无需打开GUI界面悄无声息的那种。本文的目标就是让大家不用拼夕夕,不用京冬冬,更不用淘宝宝,便可立省600美刀(最高立省800美刀),省钱的操作就是这么的朴素无华,却熠熠生辉。

2. 准备工作

2.1 硬件准备

USB Multilink Universal、USB Multilink Universal FX 或者Multilink ACP,相信老Freescale的用户对前面两个不会陌生,最后一个倒是有些默认,简单的来说它是一个cost down版本,只支持ARM Cortex-M 内核产品的烧录。

2.2 软件准备

Umultilink 驱动:USB Multilink Resources Install

序列号生成工具(Optional):Serialize Utility

Flash/EEPROM编程软件:PROG Flash Programming Software

要指出的是第3个软件不是完全免费的,如下图,对于DSC和NEXUS内核是免费的,妥妥立省800刀,而对于S08、S12、PowerPC5xx/8xx、Kinetis、LPC及S32K等ARM内核的MCU都是需要额外收费的,价格是统一的199刀,这也就是前文为何说立省600刀的原因。

Note: Flash/EEPROM编程软件 LICENSE是和Umultilink的HW序列号绑定的,也就意味着不能一个软件license不能同时用在多个Umultilink上。如果需要多个License,PE官网按照Quantity是有折扣的,譬如说10个License,价格降到139美刀了;

f6c816d4-034f-11ed-ba43-dac502259ad0.png

其实对于PROG-HL-ARM版本还是很划算,它涵盖了市场上不同MCU厂家的大部分ARM内核处理器,如NXP、ST、Microchip、Nordic、Renesas等,甚至还有国产的芯片公司如Auto chips、MindMotion灵动微、Zhixin等,可以说是一个License在手,各家MCU编程功能我有,秒变Cyclone,如下截图是已经支持的厂商列表。回想当初,曾几何时,PEmicro的工具基本是Freescale芯片专属,现如今支持的厂商越来越多,可见如今不仅MCU市场卷,工具市场也很卷啊。

f6e42874-034f-11ed-ba43-dac502259ad0.png

除此之外,该版本甚至还支持对外部SPI nor Flash的编程,对于如IMXRT系列这类没有内部Flash,需要外挂Nor Flash的芯片来说也是支持的,已经支持的比较常用的vendor包括华邦Winbond、Microchip、ISSI、Microchip、旺宏MXIC、Adesto等,以部分ISSI SPI Nor Flash的支持为例如下图2。

f6f63618-034f-11ed-ba43-dac502259ad0.png

当然,鉴于不同Norflash厂家的Feature,譬如是否支持SFDP,是否支持8线,是否支持DDR,是否需要Byte Swap,QE位位置的差异等,其算法完全无缝支持市场上所有的Nor Flash型号也不现实(笔者在里面吃过不少苦头,心累),所以PEmicro也承诺可以帮用户去做定制,而且是免费的,甚至可以提供源代码让客户自己修改。

f70b4cc4-034f-11ed-ba43-dac502259ad0.png

3. PE工具脚本语法介绍

在安装完以上软件后,下一步就可以开始去编写自动化烧录的控制脚本程序了,在此之前还是需要了解下P&E工具脚本语法,本章节期望对关键信息点能够简明扼要的进行介绍,需要进一步扩展应用的可以参考PROGXXX_User_Manual。

P&E常用的调试工具包括Umultilink、Cyclone等, 但其脚本语法总体类似,如下以DSC内核的MWCT1003为例做一介绍,其语法格式如下:

CPROGDSC[?][filename][/PARAMn=s][v][reset_delayn][bdm_speedn][hideapp][Interface=x][port=y][showports][-usebyteaddr][/logfilelogfilename]示例:
CPROGDSC:ENGINE.CFGINTERFACE=USBMULTILINKPORT=PE5650030//烧录DSC内核器件
CPROGARM:ENGINE.CFGINTERFACE=USBMULTILINKPORT=PE5650030//烧录ARM内核器件

可以看到其包含很多参数,对应每个参数的含义如下:

[filename]-- 包含编程命令的配置脚本;default = prog.cfg,一个简单的配置脚本的写法如下。该脚本对于以前使用过999美刀的Cyclone或者Cyclone FX的用户或许不会陌生,其和Cyclone GUI配置界面的操作步骤完全一样。

f720c32e-034f-11ed-ba43-dac502259ad0.png

[/PARAMn=s]-- 指定命令行参数,用于替代可执行脚本.CFG中的特殊标号,譬如说芯片的型号,S19文件的位置,以及.CFG脚本中需要执行的BM(Blank Check)/EM(Erase Flash)/VM(Verify)等步骤;

[v]-- 指示编程器在programming 或者verify之前不需要检查S19文件的地址范围,这个选项可以加快用户编程速度,该选项不建议打开;

[reset_delay n]-- 指定在Reset MCU后多长时间去查看芯片是否进入background debug,单位是ms。这个参数主要是用在外部有类似UM803/UM805等的延时复位芯片的场合,编程器需要等待这些延时复位芯片完全释放才能尝试去编程,否则会出错;

[bdm_speed n]-- 指定BDM shift clock speed速度, 计算公式: USB Multilink (includes Universal): (1000000/(N+1)) Hz

[INTERFACE=x]-- X 可以是USBMULTILINK/CYCLONE/PARALLEL 三个参数中的一个,其中PARALLEL 并口下载很陈旧,很少再用到,对于本文来说UMULTILINK 就选择USBMULTILINK;

[PORT=y]-- y代表USBx,此处的x =1,2,3... 主要用于同时连接Cyclone, Tracelink, 或者 Multilink的场景,如果只连接其中一种硬件,就只有USB1。举例来说,如果PC端只连接一种debug硬件,配置可以是: INTERFACE=USBMULTILINK PORT=USB1

[showports]-- 用于显示PC端已连接的Debug端口,会保存在ports.txt并存储在CPROG文件目录中;

[?]-- 用于暂停命令行执行,并显示编程结果,使用时需要把该选项作为第一个参数;

[hideapp]-- 指定是否显示命令行窗口,通常在调试阶段建议打开,方便查看错误信息,量产时无需打开;

[-usebyteaddr]-- 指定S19文件时字节对齐还是word对齐,通常默认word对齐方式 ;

[/logfile logfilename]-- 打开log输出,使能该选项后可以把调试过程中执行的命令以及错误信息全部打印到名称为logfilename的文件中,方便分析改进;

4. 操作实例

通过脚本命令控制Umultilink作为量产工具在实现上有两种思路:一种是把所有对芯片的Selection、Reset、Flash algorithm selection、erase、blank check、待烧录S19文件的选择都手动添加到.CFG脚本中,另外一种是使用一套通用的带默认参数的.CFG脚本,然后在执行命令时传入参数。

显然第二种方式更加灵活,用户可以直接在命令行中灵活替换通用脚本中的参数,从而支持更多的芯片型号,选择烧写算法以及指定烧录文件位置,避免重复造轮子的工作。除此之外,第一种方式还一个缺点是CFG脚本中只支持绝对路径,不支持相对路径,更换电脑或者目录都可能导致原有的配置无法工作,所以第二种方法是比较建议的,下文就以第二种方法进行讲解。

4.1 通用脚本的写法

:DEVICE /PARAM1;Select target device to program
RE ;Reset the MCU
CM /PARAM2;Choose Flash Module
EM ;Erase the module
BM ;Blank Check the module
SS /PARAM3 ;Specify the S19 to use
PM ;Program the module with the S19
/PARAM4 ;Verify the module again

4.2 命令行的写法

一个完整的示例如下,具体每个参数的含义可以参考上面的表述,只能说”很显然“()

C:PEMICROCPROGDSC INTERFACE=CYCLONE PORT=USB1 BDM_SPEED 1 C:PROJECTGENERIC.CFG /PARAM1=MWCT1013A /PARAM2=C:PEMICROfreescale_mwct1013a_1x16x144k_all.dsp “/PARAM3=C:PEMICROEXAMPLE FILESTEST.S19” /PARAM4=VM

Note:1. 以上整个command是连续的,每个参数之间只有空格,不能有行break; 2. 如果其中参数有空格,需要引号引起来,例如 “/PARAM3=C:PEMICROEXAMPLE FILESTEST.S19"

4.3 批处理文件的写法

对于产线来说,如果每次敲入命令行是比较繁琐的,所以可以保存成.bat批处理文件,这样就可以被产线自动化测试的FCT站直接调用,悄无声息的完成烧录和验证的流程。

如下批处理文件的写法,其中errorlevel是USBMULTILINK的返回值,用于判断命令行是否正确执行;

C:PEMicroPROGDSCcprogdsc.exe INTERFACE=USBMULTILINK PORT=USB1 D:YU_CustomerXXXGENERIC.CFG /PARAM1=MWCT1013A /PARAM2=C:PEMicroPROGDSCAlgorithmsfreescale_mwct1013a_1x16x144k_all.dsp /PARAM3=D:YU_CustomerXXXTEST.elf.S /PARAM4=VMif errorlevel 1 goto bad
goto good
:bad
ECHO BAD BAD BAD BAD BAD BAD BAD BAD
ECHO %errorlevel%
:good
ECHO done
pause

完成以上步骤后,在电脑端可以直接执行双击第三步的.bat文件即可实现对目标板的烧录,整个过程都是在后台自动执行的(前提是在命令行中配置了hideapp选项),可以很方便的集成到自动化生产线的FCT站中。当然,考虑到程序烧录的健壮性,建议额外加入一些错误处理机制,如4.3章节中的批处理文件,就会对errorlevel返回值进行判断。如下是上面脚本出错时的执行结果(没有使能hideapp选项),可以看到会有出错的提示信息。

f72ecf96-034f-11ed-ba43-dac502259ad0.png

5. 总结:

上文讲解了Multilink作为量产工具所需要做的准备工作,支持的器件,P&E工具脚本语法,并结合一个具体实例介绍了通用脚本的写法、命令行的写法以及批处理文件的写法,方便有需要的用户以Multilink作为量产工具,实现低成本的量产工具。除去离线烧录和加密存储之外,Cyclone能实现的基本功能U-Multilink大都能够实现,真正的实现低成本。当然,如果不差钱,Cyclone还是优先推荐,毕竟其支持加密文件存储这点还是很强大的,可以把binary文件生成加密的SAP格式,防止知识产权被非法窃取。

原文标题:如何巧用U-Multilink作为量产工具最高立省800刀

文章出处:【微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    456

    文章

    50919

    浏览量

    424534
  • 文件存储
    +关注

    关注

    0

    文章

    16

    浏览量

    10622
  • 脚本
    +关注

    关注

    1

    文章

    391

    浏览量

    14888
  • 调试程序
    +关注

    关注

    0

    文章

    10

    浏览量

    2114

原文标题:如何巧用U-Multilink作为量产工具最高立省800刀

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    图形用户界面与命令行接口的比较

    在计算机科学和信息技术领域,用户与计算机交互的方式主要分为两种:图形用户界面(GUI)和命令行接口(CLI)。这两种界面各有优势和局限性,适用于不同的场景和用户需求。 1. 定义与基本特征 图形用户
    的头像 发表于 11-12 14:38 407次阅读

    Mobaxterm 的命令行使用方法

    的远程桌面协议(如RDP和VNC),以及文件传输协议(如FTP和SFTP)。本文将详细介绍如何使用Mobaxterm的命令行功能。 2. 安装 Mobaxterm 在开始之前,确保你已经安装
    的头像 发表于 11-11 09:08 1541次阅读

    APM32F411板的python+pyocd命令行操作

    前段时间学习了一下如何使用pyocd配合APM32F411VCTINY板在命令行下给它进行各种骚操作,在使用一段时间后就想着:pyocd是基于python的,那是不是也可以使用python脚本+pyocd使用起来呢?
    的头像 发表于 10-18 16:21 327次阅读
    APM32F411板的python+pyocd<b class='flag-5'>命令行</b>操作

    使用idf4.3在命令行打开menuconfig,如何才能开启lwip配置界面?

    请问使用idf4.3在命令行打开menuconfig,如何才能开启lwip配置界面。
    发表于 06-21 06:08

    请问CY8CKIT-005-A是否支持命令行编程?

    我使用 minipro4 SWD 和 MTB-programmer 5.0 对 MCU 编程,在批量生产中,我们希望使用脚本编程,它是否支持命令行编程?
    发表于 06-03 06:19

    鸿蒙ArkUI-X跨平台开发:【命令行工具(ACE Tools)】

    ACE Tools是一套为ArkUI-X项目跨平台应用开发者提供的命令行工具,支持在Windows/Ubuntu/macOS平台运行,用于构建OpenHarmony/HarmonyOS、Android和iOS平台的应用程序,其功能包括开发环境检查,新建项目,编译打包,安装调试等。
    的头像 发表于 05-21 17:39 1852次阅读
    鸿蒙ArkUI-X跨平台开发:【<b class='flag-5'>命令行</b>工具(ACE Tools)】

    请问handle的写法

    遇到一行代码 YDLidar *laser = lidarCreate(); //Create a handle to this Lidar. 请问这行代码是什么意思,句柄的写法怎么是这样的呀
    发表于 05-18 10:42

    高效云端管理的秘诀——华为云命令行工具 KooCLI

    发现了云上命令行工具,我的云端管理效率从此得到了质的飞跃。 我从华为云官方产品帮助文档中了解了 KooCLI 工具,文档中介绍的便捷操作和高效管理让我心动不已,于是,我开启了我的体验。通过简单的命令行输入,我能够快速完成
    的头像 发表于 05-10 00:25 709次阅读
    高效云端管理的秘诀——华为云<b class='flag-5'>命令行</b>工具 KooCLI

    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

    除小型系统外,Hi3516DV300开发板还支持标准系统。此章节简要介绍如何使用命令行在Hi3516DV300开发板上进行标准系统的开发。
    的头像 发表于 05-08 09:26 901次阅读
    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(<b class='flag-5'>命令行</b>方式)】

    STM8 flash loader命令行调用错误的原因?

    [td]我目前在用flash loader的命令行,编写自己的上位机软件来升级程序,但是在用命令行调用的时候一直出错,有人能帮忙分析下吗? 我编写的bat文件
    发表于 05-06 07:23

    HarmonyOS开发:【基于命令行(安装库和工具集)】

    使用命令行进行设备开发时,可以通过以下步骤安装编译OpenHarmony需要的库和工具。
    的头像 发表于 04-25 21:03 437次阅读
    HarmonyOS开发:【基于<b class='flag-5'>命令行</b>(安装库和工具集)】

    香港vps的centos如何切换命令行和桌面?

    要在CentOS上切换命令行和桌面环境,您可以通过以下步骤进行: 1、安装桌面环境:如果您的CentOS VPS上还没有安装图形桌面环境,您需要安装一个。一般来说,常用的桌面环境有GNOME、KDE
    的头像 发表于 04-10 17:41 674次阅读

    STM32G070RB使用jlink命令行下载无法识别芯片怎么解决?

    STM32G070RB 使用jlink命令行下载无法识别芯片,想手动添加芯片,请问哪里可以下载驱动.elf文件 或者有什么方法能够实现jlink命令行下载
    发表于 04-02 06:15

    tasking的命令行控制中如何生成makefiles文件?

    tasking的命令行控制中如何生成makefiles文件?
    发表于 02-06 07:56

    在Linux上如何通过命令行来更改日期和时间?

    在Linux上如何通过命令行来更改日期和时间? 在Linux上,我们可以使用命令行工具来更改日期和时间。操作系统中有一个专门的命令被称为“date”命令,它允许我们更改系统的当前日期和
    的头像 发表于 01-16 17:10 2870次阅读