用matlab生成HEX文件

首先,说明一下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表示小数点后的字长。





  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 MATLAB 代码生成 HEX 文件,可以使用 MATLAB Coder 工具箱。以下是一些简单的步骤: 1. 在 MATLAB 中打开要转换为 HEX 文件MATLAB 代码。 2. 使用 MATLAB Coder 工具箱将 MATLAB 代码转换为 C 代码。可以使用以下命令: ``` codegen myFunction -args arg1 arg2 ... ``` 其中,myFunction 是要转换的 MATLAB 函数的名称,arg1、arg2 等是函数的输入参数。 3. 在 MATLAB Coder 工具箱中设置代码生成器选项,以便生成 HEX 文件。例如,可以使用以下命令: ``` cfg = coder.config('lib'); cfg.GenerateCodeOnly = true; cfg.PostCodeGenCommand = 'makehex'; codegen myFunction -args arg1 arg2 ... -config cfg ``` 其中,'lib' 表示要生成的库类型,GenerateCodeOnly = true 表示只生成 C 代码,PostCodeGenCommand = 'makehex' 表示在生成 C 代码后运行名为 makehex 的脚本。 4. 创建名为 makehex 的脚本,并在其中使用 HEX 文件生成器将 C 代码转换为 HEX 文件。例如,可以使用以下命令: ``` mex -O -outdir ..\..\bin -output myFunction myFunction.c makehex ..\..\bin\myFunction.hex ..\..\bin\myFunction.mexw64 ``` 其中,mex 命令用于将 C 代码编译为 MEX 文件,-O 表示使用优化选项,-outdir 表示将生成的 MEX 文件放在 bin 目录中,-output 表示生成的 MEX 文件的名称。makehex 命令用于将 MEX 文件转换为 HEX 文件。 5. 运行 makehex 脚本,生成 HEX 文件。可以使用以下命令: ``` makehex ``` 此时,将在 bin 目录中生成名为 myFunction.hexHEX 文件。 注意:以上步骤仅供参考,具体步骤可能因 MATLAB 版本、操作系统等因素而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值