1:把.out文件转换成sciprog格式的文件,由于在bootloader里面,用户接受电调程序的缓冲区buffer(L0 SARAM)长度只有0x1000,当用户程序块大于此长度时,要将程序分段,所以这里用perl写了个out2sciprog.exe程序,该程序首先会把.out转换成.hex文件,再将.hex按如下格式分段:
{addr1}{length1}{block1}
{addr2}{length2}{block2}
...
{addr_n}{length_n}{block_n}
00000000 {Entry Addr}
分段后,每块程序为一行,长度不超过0x1000。分段后的程序文件以.sciprog为后缀。
具体做法是:将生成的.out文件和out2sciprog.exe放在电脑同一路径下,然后打开windows的命令窗口,然后在命令窗口输入out2sciprog.exe usercode.out,其中usercode是电调程序的名字,然后就会生成usercode.sciprog,如下图所示:
生成的sciprog文件格式如下图所示,
生成sciprog格式的文件之后还要对文件的格式进行调整,要把每一段之间的空格删掉,删掉之后如下图所示,
然后把修改好格式之后的sciprog文件放到内存卡中。
2:使用命令进行升级,在Ubuntu中打开终端,输入命令sudo minicom打开终端,然后在超级终端中输入命令esc_up start命令开始升级过程,屏幕上一次会打印出相应的提示信息,等待一段时间,待nuttxshell的命令行打印出ESC firmware update finish.......时,说明升级完成。
3:查看升级是否成功:升级完成之后可以用命令esc_up test命令查看升级是否成功,输入esc_up test命令后,如果打印出set motor x,motor version is 0xxxxx,speed ki is 0xxxx,reset motor x说明电调x升级成功,如果打印出set motor x,esc_up: register read error, motor x info read error,说明电调x升级失败。