用matlab生成HEX文件
来源:互联网 发布:看门狗卡顿优化补丁 编辑:程序博客网 时间:2024/06/13 01:06
首先,说明一下Intel HEX文件的格式
(可以参见wiki:http://en.wikipedia.org/wiki/Intel_HEX)
:10010000214601360121470136007EFE09D2190140:100110002146017EB7C20001FF5F16002148011988:10012000194E79234623965778239EDA3F01B2CAA7:100130003F0156702B5E712B722B732146013421C7:00000001FF每一行代表对一个数据的描述,最后一行是结束。
可以看到每一条数据有6个颜色,每个颜色表示数据的一个区域:
表示开始码,固定为:
数据部分的字节数,数据部分两个16进制数代表一个字节
地址,固定4个16进制数,可见,可描述的数据是有限的
数据类型:00表示数据,01表示结尾,,,,
数据
校验,检验的方式是把前面的数据除了开始码部分的按每两个16进制一个字节进行相加,加大结果保留一个字节,并取反码。
知道了结果就用matlab编个程序吧:(参考:http://bbs.ednchina.com/BLOG_ARTICLE_2087845.HTM)
clear all;clc;
%描述一个16位位宽的数据
y=0:63;
N = length(y); %%数据的长度,即存储器深度。
word_len = 16; %%每个单元的占据的位数,需自己设定。
len = ceil(word_len/8); %%转换成字节数。
y_quan =fi(y,1,word_len,0); %%该函数详细见Matlab帮助
fid=fopen('dat.hex','w');%打开文件
temp1=fi(256,0,9,0);
word_len = fi(len,0,8,0); %%即前面所说的”nn”
for i=1:N
addr = fi(i-1,0,16,0); %%即前面所说的”aaaa”
%%下面计算校验和
temp=word_len+bitsliceget(addr,16,9)+bitsliceget(addr,8,1);
temp=temp+bitsliceget(y_quan(i),16,9)+bitsliceget(y_quan(i),8,1);
temp=bitsliceget(temp,8,1); %%取低8位,即相当于取模256
temp=temp1-temp;%%上面两步是取其补码,如果字长是n位,大小%%为a,则其补码为2^n-a;
temp=bitsliceget(temp,8,1); %%重新取低8位,这里需要明白%Matlab中fi构造的定点数性质
fprintf(fid,strcat(':',hex(word_len),hex(addr),'00',hex(bitsliceget(y_quan(i),16,9)),hex(bitsliceget(y_quan(i),8,1)),hex(temp),'\n'));
end
fprintf(fid,':00000001ff');
fclose(fid); %%关闭文件
补充说明一下:
a = fi(v,s,w,f) 这个函数返回的是v的定点表示,s表示是否是有符合的,w表示字长,f表示小数点后的字长。
- 用matlab生成HEX文件
- 用MATLAB生成Quartus II下ROM初始化文件(MIF,HEX)
- TI生成hex文件方法
- IAR 生成hex 文件配置
- 利用KEIL生成hex文件
- 将.hex文件导入到Matlab中
- 用MATLAB生成mif文件
- 用MATLAB生成MIF文件
- 5509A hex文件生成命令
- IAR for AVR设置生成HEX文件
- 在STVD中如何生成hex文件
- CC2530 zstack 2.5.1 生成hex文件
- IAR FOR MSP430生成HEX文件方法
- IAR 中 CC2530工程生成.hex文件
- IAR中如何生成hex文件?
- STM8 IAR环境生成hex文件
- DSP生成hex文件、生成bin文件方法
- keil4生成的hex文件为空--proteus加载的hex文件不能运行
- 嵌入式系统中看门狗的使用
- 解决chromium对诺顿Norton安全插件不支持的兼容性问题
- jetspeed的一些问题
- mysql 语句case when
- linux下的PDF阅读软件
- 用matlab生成HEX文件
- android 悬浮窗 1
- window.parent与window.opener的区别
- android 悬浮窗 2
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- eip寄存器 介绍
- 详解大端模式和小端模式
- android 悬浮窗 3
- @SuppressLint