ISE生成HEX文件x
基础知识hex文件格式详解
基础知识hex文件格式详解hex文件格式总结•什么是hex文件?•文件格式•指令类型(Record type)•校验和o:04 02B0 00 92020008 AEo:04 0000 05 08000135 B9o:00 0000 01 FF•hex转bin文件什么是hex文件?hex是用于文件格式是intel规定的标准,总体来说,hex是文本文件,经常在微控制器的固件开发中看到hex的身影,例如基于STM32F103硬件,使用MDK开发的话,该软件就可以生成hex文件;如下图所示;这是一个简单的STM32标准外设库工程,代码里什么都没做,具体如下;#include 'stm32f10x.h'#include <stdio.h>/*** @brief Main program.* @param None* @retval None*/int main(void){/* Add your application code here*//* Infinite loop */while (1){}}最终,我们打开生成的hex文件,可以看到,这的确是一个文本文件,所以,直接将hex文件烧入MCU的Flash还是不行的,除非烧录软件可以把hex文件转成bin文件,然后再进行烧录;:020*********F2:10000000000400204901000899010008950100083A:10001000970100089101000881020008000000001B:100020000000000000000000000000009D0100082A:1000300093010008000000009B010008290200084D:100040006301000863010008630100086301000800:1000500063010008630100086301000863010008F0:1000600063010008630100086301000863010008E0:1000700063010008630100086301000863010008D0:10008000630100086301000863010008000000002C:1000900000000000000000000000000063010008F4:1000A00063010008630100086301000863010008A0:1000B0006301000863010008630100086301000890:1000C0006301000863010008630100086301000880:1000D0006301000863010008630100086301000870 :1000E0006301000863010008630100086301000860 :1000F0006301000863010008000000000000000028 :100100000000000000000000630100086301000817 :10011000630100086301000863010008630100082F :10012000630100086301000863010008630100081F :1001300063010008DFF80CD000F018F80048004711 :10014000A102000800040020064880470648004736 :10015000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE777:10016000FEE7FEE72D02000835010008064C074DAA :1001700006E0E06840F0010394E807009847103477 :10018000AC42F6D3FFF7DAFFA4020008B40200087D :10019000FEE77047FEE7FEE77047704770470000D4 :1001A0000CB500211F4801910091026842F4803291 :1001B00002604FF4A063026802F400320092019AD8 :1001C000521C0192009A12B9019A9A42F3D1026824 :1001D000920324D50121009141684160416841604A :1001E00041684160416821F47C114160416841F4FB :1001F00098114160016841F08071016001688901D6 :10020000FCD5416821F003014160416841F00201E1 :1002100041604168C1F381010229FAD10CBD00910E :100220000CBD00000010024070470000104810B5DF :10023000016841F00101016041680E4A11404160CE :1002400001680D4A11400160016821F480210160BC :10025000416821F4FE0141604FF41F0181600021DB :10026000C162FFF79DFF05494FF00060086010BDB7 :10027000001002400000FFF8FFFFF6FE08ED00E06E :10028000FEE702E008C8121F08C1002AFAD1704731 :100290007047002001E001C1121F002AFBD1704706 :1002A000FEE70000B4020008000000200004000087:0402B00092020008AE:0400000508000135B9:00000001FF文件格式通过上面的文件,我们不难发现,hex文件每行都由:作为起始码,这是显而易见的,而后面这些乱七八糟的数据又代表什么呢?先看下面这张图;hexformat这个和一般的通讯协议类似,一帧数据往往包括起始码,数据长度,数据类型,数据,校验码等等,所以hex文件也不例外,这里它包含几个特点,下面参考了wiki;•起始码:每行数据作为一帧,并由:作为起始码;•字节长度:两个十六进制数字(一对十六进制数字),指示数据字段中的字节数(十六进制数字对)。
HEX格式介绍及分析程序
HEX格式介绍及分析程序
HEX是一种十六进制格式,用于将二进制数据编码成可读的文本格式。
在计算机科学领域,HEX格式通常用于表示机器指令、数据结构或者程序。
HEX格式通常以一个冒号开始,后跟一个表示地址的四位十六进制数。
然后是16个字节的十六进制表示。
每个字节之间通常用一个空格分隔,
以提高可读性。
在16个字节之后通常会跟着一个空格再跟着16个ASCII
字符的文本表示。
这些ASCII字符是对相应字节的可打印表示。
为了更好地理解HEX格式,我们可以尝试分析一个简单的程序的HEX
表示。
假设我们有一个包含两个指令的程序:
地址指令
00002010
0002C012
这个程序首先加载从地址0010开始的两个字节的值到A寄存器中(2010),然后将A寄存器的值存储到地址0012(C012)。
HEX格式的表
示将如下所示:
通过分析HEX表示,我们可以更好地理解程序的指令和数据在内存中
的布局,以及通过更改HEX文件来修改程序的能力。
关于Xilinx ISE简单使用方法介绍
output [7:0] y_out,
);
assign y_out = flag ? x_in : 8'b00000000;
endmodule
3.程序语法检查
如下图所示:
或者:
4.创建测试文件(功能仿真数据的建立)
ProjectNew Source。如输入文件名:Two2One_tf(*.v)。
关于Xilinx ISE(14.2)简单使用方法介绍
安装ISE软件基本上是一路点击鼠标就是,但必须安装注册表文件,可在网上查找,可能是一个生成注册表文件或注册表文件(license)。功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。(系统差不多占20GB硬盘)
1.创建工程文件(New Projiect)
将运行另外一个程序产生仿真波形图,如下图所示:
详细波形图:
6.管脚适配(为下载做准备)
先创建*.UCF文件
弹出窗口,点击Yes,创建.UCF文件
之后,系统会启动管脚配置程序,然后设计人员根据情况配置管脚,下图为BASYS2板管脚情况,所示:
适配后:
配置好管脚后保存好文件。
7.综合与实现
管脚分配完成之后,必须进行布局布线,如下图所示:
FileNew Projiect。如输入文件名:Two2One。
设置一些参数,如下图所示:(注意:使用的是BASYS2板)
在上图点击Next键,弹出如下窗口,设置一些参数,如下图所示:(注意:使用的是BASYS2板)
2.创建资源文件(New Source)
ProjectNew Source。如输入文件名:One2Two。
选择,如Verilog Test Fxiture,建立用于测试以上资源文件(电路)用的数据文件。建立不同时间段的输入数据,用于产生相应时段的输出波形。
ISE使用指南中
ISE使用指南中ISE(Intelligent Software Engineering)是一种经验丰富的工具,用于支持软件开发过程中的各个阶段。
本指南将介绍ISE的基本概念和使用方法,以帮助用户充分利用该工具。
1.ISE的概述2.安装与配置3.项目管理ISE提供了一个强大的项目管理功能,可以帮助用户组织和管理各个项目。
用户可以创建新项目、导入现有项目或从版本控制系统中检出项目。
在项目管理面板中,用户可以查看项目的文件结构和依赖关系,并进行文件的增删改查等操作。
5.调试器ISE的调试器功能可以帮助用户定位和修复代码中的错误。
用户可以设置断点、单步执行代码、观察变量值和查看函数调用栈等。
调试器还支持远程调试功能,可以在远程计算机上调试代码。
6.版本控制7.自动化构建ISE支持自动化构建功能,可以帮助用户自动执行一系列的构建步骤,如编译、打包、发布和部署等。
用户可以通过配置文件或命令行参数来定义构建步骤,并将其添加到项目的构建脚本中。
8.单元测试ISE支持单元测试框架,如JUnit和PyTest等。
用户可以编写和运行单元测试用例,并查看测试结果和覆盖率报告。
ISE还提供了代码覆盖率分析功能,可以帮助用户评估测试用例的覆盖率。
9.效能分析ISE提供了效能分析工具,可以帮助用户评估代码的效率和性能。
用户可以收集和分析代码的运行时间、内存占用和CPU使用情况等。
ISE还提供了图形化界面和报表,以便用户更好地理解和优化代码的性能。
10.文档生成ISE支持自动化文档生成功能,可以帮助用户生成代码的文档和注释。
用户可以使用特定的注释标记来标识代码的文档化部分,然后使用ISE提供的工具生成文档。
ISE支持多种文档格式,如HTML、Markdown和PDF等。
总之,ISE是一款功能强大的工具,可以帮助开发人员提高软件开发的效率和质量。
本指南提供了对ISE的基本介绍和使用方法,希望能对用户的工作有所帮助。
具体的使用细节和高级功能可以参考ISE的官方文档和用户手册。
HEX文件格式
Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。
Intel HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Int el HEX文件。
很多编译器的支持生成HEX格式的烧录文件,尤其是Keil c。
但是编程器能够下载的往往是BIN格式,因此HEX转BIN是每个编程器都必须支持的功能。
HEX格式文件以行为单位,每行由“:”(0x3a)开始,以回车键结束(0x0d, 0x0a)。
行内的数据都是由两个字符表示一个16进制字节,比如”01”就表示数0 x01;”0a”,就表示0x0a。
对于16位的地址,则高位在前低位在后,比如地址0x010a,在HEX格式文件中就表示为字符串”010a”。
下面为HEX文件中的一行::10000000FF0462FF051EFF0A93FF0572FF0A93FFBC“:”表示一行的开始。
“:”后的第1,2个字符“10”表示本行包含的数据的长度,这里就是0x10即16个。
第3,4,5,6个字符“0000”表示数据存储的起始地址,这里表示从0x0000地址开始存储16个数据,其中高位地址在前,低位地址在后。
第7,8个字符“00”表示数据的类型。
该类型总共有以下几种:00 ----数据记录01 ----文件结束记录02 ----扩展段地址记录04 ----扩展线性地址记录这里就是0x00即为普通数据记录。
自后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据跟行首的记录的长度相一致。
最后两个字符表示校验码。
每个HEX格式的最后一行都是固定为::00000001FF以上的信息其实就足够进行HEX转BIN格式的程序的编写。
首先我们只处理数据类型为0x00及0x01的情况。
0x02表示对应的存储地址超过了64K,由于我的编程器只针对64K以下的单片机,因此在次不处理,0x04也是如此。
生成HEX文件
生成HEX文件的MATLAB程序ROM初始化文件既可以是*.mif也可以是*.hex文件,但是如果工程需要在Modelsim中进行仿真的话,则必须生成*.hex文件对ROM进行初始化。
一般简单且有规律的初始化数据可以用Excel先生成mif文件再在综合软件中转化为hex文件,但如果所需信号要叠加各种各样的噪声时。
Excel则不能胜任,此时我们用MATLAB生成所需初始化数据,在使用下述程序则很容易生成HEX初始化文件。
程序先介绍hex文件的结构,后给出matlab程序,且我做了详细的注释,希望对大家有所帮助。
% __Created by He Yapeng.@School of Electronic Engineering and Photoelectricity Technology at Nanjing University of Science and Technology%--Email:***************.');% Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。
在Intel HEX文件中,% 每一行包含一个HEX记录。
这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。
Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。
大多数EPROM编程器或模拟器使用Intel HEX文件。
% 记录格式% Intel HEX由任意数量的十六进制记录组成。
每个记录包含5个域,它们按以下格式排列:% :llaaaatt[dd...]cc% 每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。
每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:% : 每个Intel HEX记录都由冒号开头.% ll 是数据长度域,它代表记录当中数据字节(dd)的数量.% aaaa 是地址域,它代表记录当中数据的起始地址.% tt 是代表HEX记录类型的域,它可能是以下数据当中的一个:% 00 –数据记录% 01 –文件结束记录% 02 –扩展段地址记录% 04 –扩展线性地址记录% dd 是数据域,它代表一个字节的数据.一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符.% cc 是校验和域,它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足.%% 数据记录% Intel HEX文件由任意数量以回车换行符结束的数据记录组成.数据记录外观如下:% :10246200464C5549442050524F46494C4500464C33% 其中:% 10 是这个记录当中数据字节的数量.% 2462 是数据将被下载到存储器当中的地址.% 00 是记录类型(数据记录)% 464C…464C是数据.% 33 是这个记录的校验和.%% 扩展线性地址记录(HEX386)% 扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录包含数据地址的高16位.扩展线性地址记录总是有两个数据字节,外观如下:% :02000004FFFFFC% 其中:% 02 是这个记录当中数据字节的数量.% 0000 是地址域,对于扩展线性地址记录,这个域总是0000.% 04 是记录类型 04(扩展线性地址记录)% FFFF 是地址的高16位.% FC 是这个记录的校验和,计算方法如下:% 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).% 当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.线性地址保持有效,直到它被另外一个扩展地址记录所改变.% 通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址.% 以下的例子演示了这个过程..% 来自数据记录地址域的地址 2462% 扩展线性地址记录的数据域 + FFFF% ------------% 绝对存储器地址 FFFF2462%% 扩展段地址记录(HEX86)% 扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段.扩展段地址记录总是有两个数据字节,外观如下:% :020*********EA% 其中:% 02 是记录当中数据字节的数量.% 0000 是地址域.对于扩展段地址记录,这个域总是0000.% 02 是记录类型 02(扩展段地址记录)% 1200 是地址段.% EA 是这个记录的校验和,计算方法如下:% 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).% 当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录.段地址保持有效,直到它被另外一个扩展地址记录所改变.% 通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址.% 以下的例子演示了这个过程..% 来自数据记录地址域的地址 2462% 扩展段地址记录数据域 + 1200% ---------% 绝对存储器地址 00014462%% 文件结束(EOF)记录% Intel HEX文件必须以文件结束(EOF)记录结束.这个记录的记录类型域的值必须是01.EOF 记录外观总是如下:% :00000001FF% 其中:% 00 是记录当中数据字节的数量.% 0000 是数据被下载到存储器当中的地址.在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址.% 01 是记录类型 01(文件结束记录)% FF 是这个记录的校验和,计算方法如下:% 01h + NOT(00h + 00h + 00h + 01h).%% Intel HEX文件例子:% 下面是一个完整的Intel HEX文件的例子:% :10001300AC12AD13AE10AF1112002F8E0E8F0F2244% :10000300E50B250DF509E50A350CF5081200132259% :03000000020023D8% :0C002300787FE4F6D8FD7581130200031D% :10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016% :04003F00A42EFE22CB% :00000001FF%%%% 附:英文原文%% QUESTION% What is the Intel HEX file format?% ANSWER% The Intel HEX file is an ASCII text file with lines of text that follow the % Intel HEX file format. Each line in an Intel HEX file contains one HEX record. % These records are made up of hexadecimal numbers that represent machine% language code and/or constant data. Intel HEX files are often used to transfer % the program and data that would be stored in a ROM or EPROM. Most EPROM% programmers or emulators can use Intel HEX files.% Record Format% An Intel HEX file is composed of any number of HEX records. Each record is made % up of five fields that are arranged in the following format:% :llaaaatt[dd...]cc% Each group of letters corresponds to a different field, and each letter% represents a single hexadecimal digit. Each field is composed of at least two % hexadecimal digits-which make up a byte-as described below:% : is the colon that starts every Intel HEX record.% ll is the record-length field that represents the number of data bytes (dd) in % the record.% aaaa is the address field that represents the starting address for subsequent % data in the record.% tt is the field that represents the HEX record type, which may be one of the % following:% 00 - data record% 01 - end-of-file record% 02 - extended segment address record% 04 - extended linear address record% dd is a data field that represents one byte of data. A record may have multiple % data bytes. The number of data bytes in the record must match the number% specified by the ll field.% cc is the checksum field that represents the checksum of the record. The% checksum is calculated by summing the values of all hexadecimal digit pairs in % the record modulo 256 and taking the two's complement.% Data Records% The Intel HEX file is made up of any number of data records that are terminated % with a carriage return and a linefeed. Data records appear as follows:% :10246200464C5549442050524F46494C4500464C33% where:% 10 is the number of data bytes in the record.% 2462 is the address where the data are to be located in memory.% 00 is the record type 00 (a data record).% 464C...464C is the data.% 33 is the checksum of the record.% Extended Linear Address Records (HEX386)% Extended linear address records are also known as 32-bit address records and % HEX386 records. These records contain the upper 16 bits (bits 16-31) of the % data address. The extended linear address record always has two data bytes and % appears as follows:% :02000004FFFFFC% where:% 02 is the number of data bytes in the record.% 0000 is the address field. For the extended linear address record, this field % is always 0000.% 04 is the record type 04 (an extended linear address record).% FFFF is the upper 16 bits of the address.% FC is the checksum of the record and is calculated as% 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).% When an extended linear address record is read, the extended linear address % stored in the data field is saved and is applied to subsequent records read % from the Intel HEX file. The linear address remains effective until changed by % another extended address record.% The absolute-memory address of a data record is obtained by adding the address % field in the record to the shifted address data from the extended linear% address record. The following example illustrates this process..% Address from the data record's address field 2462% Extended linear address record data field FFFF% --------% Absolute-memory address FFFF2462% Extended Segment Address Records (HEX86)% Extended segment address records-also known as HEX86 records-contain bits 4-19 % of the data address segment. The extended segment address record always has two % data bytes and appears as follows:% :020*********EA% where:% 02 is the number of data bytes in the record.% 0000 is the address field. For the extended segment address record, this field % is always 0000.% 02 is the record type 02 (an extended segment address record).% 1200 is the segment of the address.% EA is the checksum of the record and is calculated as% 01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).% When an extended segment address record is read, the extended segment address % stored in the data field is saved and is applied to subsequent records read % from the Intel HEX file. The segment address remains effective until changed by % another extended address record.% The absolute-memory address of a data record is obtained by adding the address % field in the record to the shifted-address data from the extended segment% address record. The following example illustrates this process.% Address from the data record's address field 2462% Extended segment address record data field 1200% --------% Absolute memory address 00014462% End-of-File (EOF) Records% An Intel HEX file must end with an end-of-file (EOF) record. This record must % have the value 01 in the record type field. An EOF record always appears as % follows:% :00000001FF% where:% 00 is the number of data bytes in the record.% 0000 is the address where the data are to be located in memory. The address in % end-of-file records is meaningless and is ignored. An address of 0000h is% typical.% 01 is the record type 01 (an end-of-file record).% FF is the checksum of the record and is calculated as% 01h + NOT(00h + 00h + 00h + 01h).% Example Intel HEX File% Following is an example of a complete Intel HEX file:% :10001300AC12AD13AE10AF1112002F8E0E8F0F2244% :10000300E50B250DF509E50A350CF5081200132259% :03000000020023D8% :0C002300787FE4F6D8FD7581130200031D% :10002F00EFF88DF0A4FFEDC5F0CEA42EFEEC88F016% :04003F00A42EFE22CB% :00000001FFclear ;clc;data=1:16;%data need to be writen into the mif filefh=fopen('E:Hex1.hex','w');l_data=length(data);for j=1:l_dataadr=dec2hex(j-1,4);%4位十六进制表示的地址data_hex=dec2hex(data(j),4);%4位十六进制表示的数据data_H=floor(data(j)/2^8);%数据十六进制高两位data_L=data(j)-data_H*2^8;%数据十六进制低两位adr_H=floor((j-1)/2^8);%地址十六进制高两位adr_L=(j-1)-adr_H*2^8;%地址十六进制低两位idetify_word=mod(2^8-mod(2+adr_H+adr_L+data_H+data_L,2^8),2^8);%十进制表示的校验位,外围mod函数是以防里面的mod函数结果为0idetify_word_hex=dec2hex(idetify_word,2);%十六进制表示的校验位fprintf(fh,[':02',adr,'00',data_hex,idetify_word_hex,' ']);%产生HEX码(end-1:end)endfprintf(fh,':00000001FF');fclose(fh);。
ISE使用指南完整版
第4章ISE开发环境使用指南第1节ISE套件的介绍与安装4.1.1 ISE简要介绍Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IP(Intellectual Property)核,长期以来一直推动着FPGA技术的发展。
Xilinx的开发工具也在不断地升级,由早期的Foundation 系列逐步发展到目前的ISE 9.1i系列,集成了FPGA开发需要的所有功能,其主要特点有:•包含了Xilinx新型SmartCompile技术,可以将实现时间缩减2.5倍,能在最短的时间内提供最高的性能,提供了一个功能强大的设计收敛环境;•全面支持Virtex-5系列器件(业界首款65nm FPGA);•集成式的时序收敛环境有助于快速、轻松地识别FPGA设计的瓶颈;•可以节省一个或多个速度等级的成本,并可在逻辑设计中实现最低的总成本。
Foundation Series ISE具有界面友好、操作简单的特点,再加上Xilinx的FPGA芯片占有很大的市场,使其成为非常通用的FPGA工具软件。
ISE作为高效的EDA设计工具集合,与第三方软件扬长补短,使软件功能越来越强大,为用户提供了更加丰富的Xilinx平台。
4.1.2 ISE功能简介ISE的主要功能包括设计输入、综合、仿真、实现和下载,涵盖了FPGA开发的全过程,从功能上讲,其工作流程无需借助任何第三方EDA软件。
•设计输入:ISE提供的设计输入工具包括用于HDL代码输入和查看报告的ISE文本编辑器(The ISE Text Editor),用于原理图编辑的工具ECS(The Engineering Capture System),用于生成IP Core的Core Generator,用于状态机设计的StateCAD以及用于约束文件编辑的Constraint Editor等。
•综合:ISE的综合工具不但包含了Xilinx自身提供的综合工具XST,同时还可以内嵌Mentor Graphics公司的LeonardoSpectrum和Synplicity公司的Synplify,实现无缝链接。
HEX文件编码格式解析
标题:HEX文件解析2012-07-18 18:17:58HEX文件解析HEX格式文件以行为单位,每行由“:”(0x3a)开始,以回车键结束(0x0d,0x0a)。
行内的数据都是由两个字符表示一个16进制字节,比如”01”就表示数0x01;”0a”,就表示0x0a。
对于16位的地址,则高位在前低位在后,比如地址0x010a,在HEX格式文件中就表示为字符串”010a”。
<0x3a>[数据长度1Byte][数据地址2Byte][数据类型1Byte][数据nByte][校验1Byte]<0x0d><0x0a>Example.hex行号原始码1 : 10 0000 00 020003787FE4F6D8FD75812B02004A02 D62 :10001000008FE493A3F8E493A34003F68001F208713 :10002000DFF48029E493A3F85407240CC8C333C4354 :10003000540F4420C8834004F456800146F6DFE4A05 :10004000800B01020408102040809000C2E47E01716 :100050009360BCA3FF543F30E509541FFEE493A3137 :1000600060010ECF54C025E060A840B8E493A3FAF78 :10007000E493A3F8E493A3C8C582C8CAC583CAF0B19 :10008000A3C8C582C8CAC583CADFE9DEE780BEE43216 :0700F0001F70F31E80F022D717 :00000001FF面对这一大串的十六进制码,有没有头昏眼花的感觉呢?别急别急,经过本文的介绍,你一定会爱上这个会让你头昏眼花的机器码的!首先我们先介绍HEX文件的编码格式,举范例程序中第一行说明:: 10000000020003787FE4F6D8FD75812B02004A02D612 3 4 5 6为了方便解说,笔者将原始码以空格区分成六个部分,在实际转换的原始内容应该没有空格也没有行号的。
ISE 产生配置文件
1.3如何生成FPGA可以配置文件以及下载步骤1.3.1前言Xilinx Spartan6支持SPI的配置模式。
SPI配置模式对用户来说,无疑是非常有用的。
它不仅简化了硬件电路,而且可以降低硬件成本,同时SPI 芯片的容量又很大,可以满足用户除存储配置文件外存储其他数据的要求,扩展用户应用的范围。
Siga-S16开发板上配置了8Mbit的SPI FLASH,型号为M25P80。
1.3.2 准备工作ISE13.1 版本或更高版本,本演示在ISE13.1 下进行;Siga-S16开发板和USB JTAG仿真器Siga-S16开发板的拨码开关设置为M0:ON, M1:Off,MASTER SPI MODE1.3.3 烧写SPI FLASH1. 启动iMPACT开始—>所有程序—>Xilinx ISE Design Suite 13.1—>ISE—>Accessories—>iMPACT,画面如下:在弹出窗口中选择“Prepare a PROM File”,再选择“OK”。
2.生成mcs 文件生成mcs 文件之前要确定SPI FLASH 的型号以及容量。
在下图弹出的PROM File Formatter界面中的依次选择如下:点击OK后弹出Add Device文件的消息窗口,直接点击OK。
在之后弹出的Add Device文件的窗口选择我们前面ISE中生成的led_test.bit文件,再点击“打开”按钮。
在之后弹出的Add Device文件的消息窗口,直接No。
在之后弹出消息窗口,选择OK完成。
双击ISE iMPACT左边iMPACT Processes界面的“Generate File...”,生成MCS文件。
MCS文件生成成功后在界面会显示“Generate Succeeded”的信息。
3.编程MCS文件到SPI FLASH中双击iMPACT Flows界面下的Boundary Scan选项:再在Boundary Scan界面上右击鼠标,选取Initialize Chain选项:如果出现以下的界面说明已经检测到JTAG链路上的FPGA芯片。
ise的使用流程
ise的使用流程1. 简介ise是一款功能强大的集成电路设计软件,可以提供全面的工程设计解决方案。
以下是ise的使用流程。
2. 下载与安装•访问ise官方网站。
•在网站上找到并点击下载按钮。
•根据操作系统选择合适的版本进行下载。
•下载完成后,双击安装程序进行安装。
•按照安装向导的提示进行安装。
3. 打开ise•双击ise的图标以打开软件。
•在启动界面选择新建项目。
•输入项目名称并选择适当的存储路径。
•点击确定以创建项目。
4. 添加设计文件•在项目导航栏中,右键单击Design Sources。
•选择Add Sources。
•在弹出的对话框中选择适当的文件类型。
•点击下一步并选择要添加的设计文件。
•点击完成以将文件添加到项目中。
5. 设计功能模块•在项目导航栏中,右键单击设计文件。
•选择New Source。
•在弹出的对话框中选择设计模块类型。
•点击下一步并输入模块的名称。
•点击完成以创建模块。
6. 添加约束文件•在项目导航栏中,右键单击设计文件。
•选择New Source。
•在弹出的对话框中选择约束文件类型。
•点击下一步并输入约束文件的名称。
•点击完成以创建约束文件。
7. 综合与优化•在项目导航栏中,右键单击设计文件。
•选择Synthesize - XST。
•等待综合过程完成。
8. 实现与布局•在项目导航栏中,右键单击设计文件。
•选择Implement Design。
•等待实现与布局过程完成。
9. 模拟与仿真•在项目导航栏中,右键单击设计文件。
•选择Simulate - ModelSim。
•编写仿真脚本文件并保存。
•运行仿真脚本以进行模拟与仿真。
10. 下载与验证•连接目标板与计算机。
•在ise软件中,点击Generate Programming File。
•将生成的Bitstream文件下载到目标板中。
•验证设计功能正常运行。
11. 导出项目•在ise软件中,选择Export - Export Project。
hex文档的用法
hex文档的用法
Hex文档是一种常见的文件格式,用于存储和表示二进制数据。
它将二进制数据转换为十六进制(hexadecimal)形式,并以可读的方式呈现出来。
以下是使用Hex 文档的一些常见用法:
1. 数据传输:Hex文档常用于在计算机之间传输二进制数据。
由于网络通信常基于文本协议,将二进制数据转换为Hex文档可以确保数据能够安全地传输和解析。
2. 文件编辑:Hex文档可以用作二进制文件的编辑器。
通过将二进制文件加载到Hex文档中,可以直接编辑其中的十六进制值,从而修改文件的内容。
3. 数据分析:在某些情况下,需要对二进制数据进行分析或调试。
使用Hex文档可以将数据转换为易于理解和分析的形式,并对其中的十六进制值进行操作。
4. 数据存储:Hex文档还可用于存储二进制数据。
将二进制数据编码为Hex文档可以提高数据的可读性,并便于后续读取和处理。
在使用Hex文档时,通常会有特定的工具或软件可供使用,这些工具可以打开、编辑、保存和转换Hex文档。
一些常见的Hex文档编辑器包括Hex Fiend、HxD、UltraEdit等。
此外,许多编程语言也提供了处理Hex文档的库和函数,以便进行更高级的操作和分析。
1。
单片机C语言第三课生成HEX文件和最小化系统
第三课生成HEX文件和最小化系统在开始C语言地主要内容时,我们先来看看如何用KEIL uVISION2来编译生成用于烧写芯片地HEX文件.HEX 文件格式是Intel公司提出地按地址排列地数据信息,数据宽度为字节,所有数据使用16进制数字表示, 常用来保存单片机或其他处理器地目标程序代码.它保存物理程序存储区中地目标代码映象.一般地编程器都支持这种格式.我们先来打开第一课做地第一项目,打开它地所在目录,找到test.Uv2地文件就可以打开先前地项目了.然后右击图3-1中地1项目文件夹,弹出项目功能菜单,选Options for Target'Target1',弹出项目选项设置窗口,同样先选中项目文件夹图标,这时在Project菜单中也有一样地菜单可选.打开项目选项窗口,转到Output选项页图3-2所示,图中1是选择编译输出地路径,2是设置编译输出生成地文件名,3则是决定是否要创建HEX文件,选中它就可以输出HEX文件到指定地路径中.选好了?好,我们再将它重新编译一次,很快在编译信息窗口中就显示HEX文件创建到指定地路径中了,如图3-3.这样我们就可用自己地编程器所附带地软件去读取并烧到芯片了,再用实验板看结果,至于编程器或仿真器品种繁多具体方法就看它地说明书了,这里也不做讨论.(技巧:一、在图3-1中地1里地项目文件树形目录中,先选中对象,再单击它就可对它进行重命名操作,双击文件图标便可打开文件.二、在Project下拉菜单地最下方有最近编辑过地项目路径保存,这里可以快速打开最近在编辑地项目.)图3-1项目功能菜单图3-2 项目选项窗口图3-3 编译信息窗口或许您已把编译好地文件烧到了芯片上,如果您购买或自制了带串口输出元件地学习实验板,那您就可以把串口和PC机串口相联用串口调试软件或Windows地超级终端,将其波特率设为1200,就可以看到不停输出地"Hello World!"字样.也许您还没有实验板,那这里先说说AT89C51地最小化系统,再以一实例程序验证最小化系统是否在运行,这个最小化系统也易于自制用于实验.图3-4便是AT89C51地最小化系统,不过为了让我们可以看出它是在运行地,我加了一个电阻和一个LED,用以显示它地状态,晶振可以根据自己地情况使用,一般实验板上是用11.0592MHz或12MHz,使用前者地好外是可以产生标准地串口波特率,后者则一个机器周期为1微秒,便于做精确定时.在自己做实验里,注意地是VCC是+5V地,不能高于此值,否则将损坏单片机,太低则不能正常工作.在31脚要接高电平,这样我们才能执行片内地程序,如接低电平则使用片外地程序存储器.下面,我们建一个新地项目名为OneLED来验证最小化系统是否可以工作(所有地例程都可在我地主页下面下载到,网址: 或 ).程序如下:#include <AT89X51.h> //预处理命令void main(void) //主函数名{//这是第一种注释方式unsigned int a; //定义变量a为int类型do{//do while组成循环for (a=0; a<50000; a++); //这是一个循环P1_0 =0; //设P1.0口为低电平,点亮LEDfor (a=0; a<50000; a++); //这是一个循环P1_0 = 1; //设P1.0口为高电平,熄灭LED}while(1);}图3-4 AT89C51最小化系统这里先讲讲KEIL C编译器所支持地注释语句.一种是以"//"符号开始地语句,符号之后地语句都被视为注释,直到有回车换行.另一种是在""符号之内地为注释.注释不会被C编译器所编译.一个C应用程序中应有一个main主函数,main函数可以调用别地功能函数,但其它功能函数不允许调用main函数.不论main函数放在程序中地那个位置,总是先被执行.用上面学到地知识编译写好地OneLED程序,并把它烧到刚做好地最小化系统中.上电,刚开始时LED是不亮地(因为上电复位后所有地IO口都置1引脚为高电平),然后延时一段时间(for (a=0; a<50000; a++)这句在运行),LED亮,再延时,LED熄灭,然后交替亮、灭.第一个真正地小应用就做完,呵呵,先不要管它是否实用哦.如果没有这样地效果那么您就要认真检查一下电路或编译烧写地步骤了.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.。
hex文件格式详解
学习的路上,越努力越渺小。
——单片机初学者在学习单片机的路上,我用过KEIL、CodeWarrior、CCS等编译器,但最近因一个小项目,采用的PIC18F25K80芯片,使用MPLAB的PICC18编译器,在烧写代码的时候,突然意识到自己一直在使用.Hex文件,但从未对该文件去研究、理解过,从而有此下文:Hex文件通常由编译器在项目编译链接后生成,用于传输被存储于ROM或者EEPROM 的程序或数据,可在项目工程目录下查找到。
用记事本或者Notepad++打开hex文件,hex 文件由一行行“:数字”组成,每行以冒号开头,内容全部为16进制数字。
Hex文件每行都是一个十六进制的记录,该记录由5各部分组成:数据长度(1个字节)、数据起始地址(2个字节,高位在前,低位在后)、记录类型(1个字节)、数据(n个字节)、校验码(1个字节)。
打开Hex文件,如下::020*********F2:101800002039002055190008A1270008A327000847:1018100000000000000000000000000000000000C8…:10C000001A67296887689968A768B20529A401009A:10C01000204214021440420A0313DA0342140313A9:08C020000B03420A0327DB03B6:04000005080018BD1A:00000001FF以:101800002039002055190008A1270008A327000847为例:“0x100x180x000x000x200x030x900x020x550x190x000x080xA10x270x000x080xA3 0x270x000x080x47”“:”表示记录开始;“回车换行”表示记录结束;“0x10”表示数据长度是16,即本条记录数据是16个字节;“0x180x00”表示数据起始地址,即本条记录的数据起始地址为0x1800;“0x00”表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。
Arduino中Hex文件的生成及保存
Arduino中hex文件的保存及应用
arduino在编译、链接、下载之后,hex文件自动删除了,造成软件仿真(如用proteus仿真)及其他单片机板应用的不便。
以下是自己实践的小结,与大家分享。
一:Hex文件的提取
1:在arduino工具的File->preferences中找到preferences.txt文件。
2:用记事本打开preferences.txt,选择hex文件存放的路径,在最后行加入build.path=d:\arduino\MyHexDir,
3:关闭arduino。
4:关闭preferences.txt ,关闭时对话框显示是否保存,选择保存。
Note:1:hex文件存放的路径可以由自己来定。
2:以上操作时不连接arduino硬件。
二:仿真时单片机晶振频率的选择
在arduino软件包的hardware\arduino\bootloaders\atmega路径下有一个makefile的文件,用记事本打开,可以看到相应的arduino板对应用到的bootloader 程序和晶振频率。
在用proteus仿真时,选择相对应的单片机,配置晶振。
单片机应该与arduino 在编译时选择的board上的一致。
三:往其他单片机板上烧录
编译得到的Hex文件往其他的单片机板上烧录时也是一样要选择相对应的单片机和晶振频率。
三:Hex文件的保存
建立保存路径后,每次编译的文件都会存在此路径下,所以程序实验OK后,就应该将相应的Hex文件保存到其他地方,以免在编译其他的程序时被覆盖。
ModelSim,synplify,ISE后仿真流程
ModelSim,synplify,ISE后仿真流程首先,我把我用到的软件说明一下。
如果你发现根据我的操作,你还是解决不了ModelSim 后仿真的问题,那就可能是软件版本的问题。
1, ModelSim Se 6.1b2, Synplify Pro 7.5.13, ISE 5.2i (这个是老了点)4, WindowsXP(这个应该没有多大的关系)还有就是我使用的是verilog,我想VHDL的方法与verilog是差不多的,最多也就是在建库方面有点差别而已。
下面的这些方法,是我这3天搞出来的。
当然也参考了一些文章。
如果谁有更方便的方法,欢迎指出来。
我的邮箱是vf1983cs@。
有空大家多交流。
一、为modelsim生成3个库。
首先,介绍一下这三个库。
Simprim_ver:用于布局布线后的仿真。
Unisim_ver :如果要做综合后的仿真,还要编译这个库。
Xilinxcorelib_ver:如果设计中调用了CoreGen产生的核,则还需要编译这个库。
我们要为modelsim生成的是标准库。
所谓的标准库就是modelsim运行后,会自动加载的库。
不过这方面我还不是很肯定。
因为我在后仿真时,还是要为仿真指定库的路径,不然modelsim找不到。
第一步:在modelsim环境下,新建工程,工程的路径与你想把库存储的路径一致。
第二步:新建库,库名起作simprim_ver。
我们首先就是要建的就是这个库。
第三步:在modelsim的命令栏上,打下如下命令:vlog -work simprim_ver d:/Xilinx/verilog/src/simprims/*.v其中的d:/Xilinx是我的Xilinx的安装路径,你把这个改成你的就行了。
以下凡是要根据自己系统环境改变的内容,我都会用绿色标出,并加一个下划线。
编译完之后,你会发现你的工程文件夹下出现了一个simprim文件夹,里面又有很多个文件夹。
hex文件和bin文件的区别和转换代码
cur_offset = 0; cur_base ++; highc = cur_base >> 8; lowc = (unsigned char)cur_base; cksum = 2 + 4 + highc + lowc; cksum = 0xFF - cksum; cksum = cksum + 1; sprintf (write_buf, ":02000004%04x%02x", cur_base, cksum); write_buf[15] = 0x0D; write_buf[16] = 0x0A; fwrite (write_buf, 1, 17, fp_write);
unsigned long start_adr; /* 转换成Hex格式的起始地址 */ unsigned short cur_base; /* 转换成Hex格式的当前地址高16位 */ unsigned short cur_offset; /* 转换成Hex格式的当前地址低16位 */
unsigned char read_buf[16]; unsigned char write_buf[48];
highc, lowc, read_buf[0], read_buf[1], read_buf[2], read_buf[3], read_buf[4], read_buf[5], read_buf[6], read_buf[7], read_buf[8], read_buf[9], read_buf[10], read_buf[11], read_buf[12], read_buf[13], read_buf[14], read_buf[15], cksum); write_buf[43] = 0x0D; write_buf[44] = 0x0A; fwrite (write_buf, 1, 45, fp_write);
KEIL里如何生成HE文件
KEIL里如何生成HE文件Keil是一款广泛应用于嵌入式系统开发的集成开发环境(IDE),它可以用于多种微控制器平台的软件开发。
在Keil中生成HEX文件是非常常见的操作,HEX文件是一种可以由微控制器系统直接加载和执行的文件格式。
下面将介绍如何在Keil中生成HEX文件。
首先,在Keil中创建一个新的工程或打开一个已有的工程。
在工程文件夹中,可以看到一个名为“.uvproj”的工程文件,双击打开该文件进入Keil工程界面。
接下来,点击菜单栏上的“Project”选项,然后选择“Options for Target 'Target1'”(其中的'Target1'是目标设备的名称,可能因工程而异,可以根据实际工程情况进行选择)。
选项对话框中会展示一系列的选项和设置,其中有一个叫做“Output”或“输出”的选项。
在这个选项下,可以选择代码生成器的输出格式。
对于生成HEX文件,需要确保选择了可执行文件格式为HEX文件。
在代码生成器的输出格式选项中,可能还会有一些列的子选项,比如选择HEX文件的存储路径和文件名等。
在这些选项中,可以设置HEX文件保存的路径和名称,可以根据需要进行自定义。
通常,HEX文件的名称会和工程名称以及生成的可执行文件名称相关联,以便于在工程文件夹中进行识别和管理。
设置完以上选项后,点击确定,保存更改,然后重新编译工程。
编译过程完成后,可以在指定保存路径中找到生成的HEX文件。
此外,在Keil中还可以通过在工程文件上点击右键,选择“Open in Windows Explorer”或“在Windows资源管理器中打开”(可能因Keil版本而异)来直接打开工程所在的文件夹。
在文件夹中,可以找到生成的HEX文件以及其他相关的编译输出文件。
总结来说1.创建工程或打开已有工程;2. 进入“Project” -> “Options for Target 'Target1'”;3. 在选项对话框中找到“Output”或“输出”选项;4.设置可执行文件格式为HEX文件,并设置HEX文件的保存路径和名称;5.保存设置,重新编译工程;6.在指定保存路径中找到生成的HEX文件。