|
51 ××r arm 都生成HEX文件和BIN文件
但惟有430独创,剑走偏锋!
HEX文件有太多的冗余了,所以不便于远程升级等操作,因为你得去掉这些枝节和冗余!
BIN文件又太赤裸了,只有机器码无任何冗余,这对远程升级时程序拷贝是很有利的,但最无利是BIN文件很难打开直接观察,笔者估计计算机里的EXE文件相HEX以便重定位 BIN文件可能像COM类文件!
最好打开的文件是什么?WORD文件,JPQ××××××,都不是!再笔者的看来是TXT文件(声明笔者对微机是超级菜鸟不对算信口雌黄)
430剑指TXT
其文件格式 @1100
4303 4200。。。。。。。机器码(其实是34333033 20 34323030)
@FFFE
1100
Q
@后面是地址索引 Q是结束符
所以430格式很好读,不需要专门软件打开,移植拷贝都特别容易(TXT文本的特点)
搂主你光要指令就拷贝走4303.。。。。。机器码部分出来,就相当于BIN文件了
如果把地址用上@1100 @FFFE 就相当于HEX文件了!
以下全是笔者用单片机思维感悟出来的,微机高手请别笑话!
一个文件之所以能显示(还能看懂),笔者估计是因为文件是按ASC码保存的,ASC就有很多的冗余,例如空格20H无效00H 回车0DH 30 30才表示0X00,这就个格式转换和去掉冗余问题,笔者在做和计算机接口和"把计算机的当单片机的显示器"的时候,经常要遇到这样的问题
例如 20 20 20 30 20 30 39 20 38 在我们眼里看见的是00 98,但你把它拷贝出来却是前面的,如果你希望写片或者远程升级你希望你的单片机去做BCD码冗余去除和反变换工作吗?笔者是这样原始操作的,把指令码拷贝出来,此时还是ASC码,我把它放到串口调试助手上去,命令串口助手按16进制转换发送,就自动去掉冗余了,但有一个前提切忌切忌,如果你不是0 1.2.3.。。。。F 16个字符的组合,16进制转换器将拒绝执行,所以你不能拷贝Q @等非法字符
这里再补充一句,笔者自己的远程升级程序已经做出来了,笔者验证程序很短小顽存性很好,但太低级,就跟上面一样,程序内核做的很好,我缺了一腿,就是那位编C++的朋友,用一个按钮帮我去掉上面的Q把@后面的数除以128产生页号(包号),然后把程序进行分割,分割成128个字节一页的数据包,不够128的可填充单字RET指令(51填0是NOP )分割完后,还帮助加文件头,我用的是0E7 7EH 包号,可做成开放式由用户填充,再补上包号,幁尾校验(校验可做出多选项)产生一个和主文件同名但以包号为后缀的文件系列,最后调用串口精灵,就好了,最好串口精灵也自己写,更好的操作,系统还具有资源冲突(我肯定要用串口资源)检测机制和防用户程序占用片上BOOT功能就太完美了,以上工作笔者都是手工在做,普及性不强,正寻求合作呢! |
|