搜档网
当前位置:搜档网 › 使用j-link烧hex格式程序

使用j-link烧hex格式程序

使用j-link烧hex格式程序
使用j-link烧hex格式程序

1,首先用keil软件打开原程序,编译后,在\uVision3\Obj文件夹中生成hex格式文件2,打开“j-link Arm”

3,在j-link Arm文件中打开hex数据文件

4,在“target”菜单中选择“program”即将程序下载到主板。

若是要讲主板程序上传到电脑,则在“target”菜单中选择“read back”“entire chip”

Keil软件,j-link下载参数设置

1,project菜单,options for target ‘##’

2,“debug”菜单,选择“setting”

3,其自动获取信息

IntelHEX格式简介

什么是Intel HEX格式? Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 记录格式 一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式. :llaaaatt[dd...]cc 每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述. :冒号是每一条Intel HEX记录的开始 ll 是这条记录的长度域,他表示数据(dd)的字节数目. aaaa 是地址域,他表示数据的起始地址 <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址, 对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址> tt 这个域表示这条HEX记录的类型,他有可能是下面这几种类型 00 ----数据记录 01 ----文件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录 dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以 查看ll域的说明 cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对 <不包括本效验字和冒号> 所表示的十六进制数字 <一对字母表示一个十六进制数,这样的一个十六进制数为一个字节>

都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc. <例如: :0300000002005E9D cc=0x01+NOT((0x03+0x00+0x00+0x00+0x02+0x00+0x5E)%0x100)=0x01+0x 9C=0x9D C语言描述: UCHAR cc; cc=(UCHAR)~(0x03+0x00+0x00+0x00+0x02+0x00+0x5E); cc++; > 数据记录 Intel HEX文件由若干个数据记录组成,一个数据记录以一个回车和一个换行结束 <回车为0x0d换行为0x0a> 比如下面的一条数据记录 :10246200464C5549442050524F46494C4500464C33 10 是此行记录数据的字节数目 2462 是数据在内存<将要烧写的eprom地址>中的起始地址 00 是记录类型00(是一个数据记录) 464C 到464C 是数据 33 是此行记录的效验和 扩展线性地址记录(HEX386) 扩展线性地址记录也可称为32位地址记录和HEX386记录,这个纪录包含高16(16-31位)位数据地址,这种扩展的线性记录总是有两个字节数据,像下面这样: :02000004FFFFFC 02 是记录的数据字节数目 0000 是地址域这在扩展地址记录中总是0000 04 是记录类型04(扩展地址记录) FFFF 是高16位地址 FC 是记录效验和,计算方法如下: 01h + NOT(02h + 00h + 00h + 04h + FFh + FFh) 当一个扩展线性地址记录被读到后,扩展线性地址记录的数据区域将被保存 并应用到后面从Intel HEX文件中读出的记录,这个扩展线性记录一直有效, 直到读到下一个扩展线性记录.

HEX格式

HEX文件格式学习笔记 为了编写一个可以按照自己的要求进行ISP的程序,大概学习了一下HEX文件格式。把学习笔记写出来,以为重新巩固所学习内容。 HEX文件以行为单位。每行以字符‘:’ (0x3a)开头,以回车换行符 0x0d, 0x0a为结束。每行开始和结束之间的所有内容,都是以字符形式 表现的。例如数据如果是 0x1A ,那么转换到HEX格式的行里面就是0x31 0x41。如果数据是16bit的,例如地址,则先显示高位,后显示底位。例如 0x1234,转换成HEX格式文件后变成 0x31 0x32 0x33 0x34,显示出来以后就是1234。将数据部分内容每2个字符看做一个HEX数据,例如: :020*********FA , 我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xFA 第一个 0x02 为数据长度。 紧跟着后面的0x00 0x00 为地址。 再后面的0x04为数据类型,类型共分一下几类: '00' Data Record '01' End of File Record '02' Extended Segment Address Record '03' Start Segment Address Record '04' Extended Linear Address Record '05' Start Linear Address Record 然后,接着0x04后面的两个 0x00 0x00就是数据。最后一个0xFA 是校验码。 HEX文件的每一行都是这样的格式:

在例如: :1000000018F09FE518F09FE518F09FE518F09FE5C0 安装上面的数据行格式分析如下: 每行中的数据并不是一定有的,第二个直接的数据长度为0,那么这行就没有数据。 由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存更大数据地址数据,就有了Extended Linear Address Record。如果这行的数据类型是0x04,那么,这行的数据就是随后数据的基地址。例如: :020*********F6 :1000000018F09FE518F09FE518F09FE518F09FE5C0 :1000100018F09FE5805F20B9F0FF1FE518F09FE51D 第一行,是Extended Linear Address Record,里面的基地址是0x0004,第二行是Data Record,里面的地址值是0x0000。那么数据18F09FE518F09FE518F09FE518F09FE5要写入FLASH中的地址为 (0x0004 << 16) | 0x0000,也就是写入FLASH的0x40000这个地址。同样,第三行的数据的写入地址为0x40010。当一个HEX文件的数据超过64k的时候,文件中就会出现多个Extended Linear Address Record。 End of File Record 行是每一个HEX文件的最后一行。例如: :00000001FF

keil工程文件的建立以及简单代码的编写

KEIL工程的建立以及简单程序的编写下载   相关软件及硬件实验平台 单片机系统设计主要包括硬件设计和软件设计,对于单片机初者来说主要在于软件的学习,也就是程序设计,等大家程序这块掌握得差不多了,再去结合具体的项目学习做硬件,最终掌握单片机系统设计的方法。而在进行软件学习的时候需要用到单片机实验板进行实验验证,实验板建议直接购买,当然如果电子技术基础好的话,自己做板也是可以的。这次教程开发程序所用到的软件为keil uVision2 下面分别介绍这keil uVision2和 实验板的使用方法,在程序编写完成后需把程序烧写到单片机中,我们是用ISP在线下载工具,这里一并进行介绍。 为了便于大家学习,这里我们写一个以1602液晶为显示器件的可显示时、分、秒的电子时钟程序为例介绍整体程序从编辑、编译到下载的全过程。(具休程序已事先写好并经正常调试无误,后面课程会具体介绍,这里暂不作讲解) 在正式的写程序之前,需进行keil uVision2软件的安装和实验板驱动程序的安装,相关的软件及驱动程序请大家直接在实验室网站下载中心进行下载,这里给出下载地址。keil uVision2软件件及安装方法、实验板驱动程序及安装方法。 安装安成后,即可按下面的步骤进行。 1、KEIL软件的使用及工程文件的建立 51单片机程序设计所用到的开发软件主要是keil uVision,它是由德国Keil Software公司开发的,2005 年Keil公司被ARM公司收购,并于2009年发布了keil uVision4,这个版本的软件支持ARM系列的芯片,如现目前流行的STM32等芯片 ,我们这里使用的是uVision2版本。 (1)、打开KEIL软件 双击keil快捷方式图标(软件安装好后,一般在桌面上会有快捷方式,双击即可),出现启动界面如图1,紧接着出现编辑界面如图2。 图1 启动keil软件时的界面

Hex文件格式说明文档

Hex File Reference The postlocator is responsible for generating the hex file needed for the ROM flow. It can also be used by emulator and simulator for testing purposes. Due to the data structure of Intel hex files, it is not possible to handle virtual and physical addresses as data structures within the same file nor virtual addresses for multiple levels. Therefore, SLE 79 specific information is provided within comment lines. Such information are comments to be is played in the ROM generator GUI, date and time of creation, segment descriptors, virtual addresses and so on. Note: The Intel hex file is an ASCII text file with lines of text that follow the Intel hex file format. Each data 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 program and data to be stored in ROM or NVM. 1.1 Hex File Structure The SLE 70 hex file is divided into three parts which have to occur in the described order: ? Comment part containing the following information: –As first line “; TYPE=SLE70_MASK_IHEX” as identifier for the SLE 70 hex file format. – Five sections in arbitrary order - COMMENT (optional) - INFO - MEMORY_ADDRESSES - CONFIG - DESCRIPTOR – The keywords inside these sections may contain - Letters “a –z” and ”A –Z” (not case sensitive) - Digits “0 –9” but not as first character - “-” or “_” but not as the first character -Leading and trailing spaces are ignored ? Data part which data lines (records) start always with a colon “:”. The only comments allowed in this part are the definitions of the virtual addresses “V_ADDR = 0x...”. These comments are allowed at the beginning of a line and define the virtual address for the following data lines until another definition of the virtual address. The virtual address must contain the level information in the upper byte. The offset

Hex码定义

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

Intel Hex文件格式说明

Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 记录格式 一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式. :llaaaatt[dd...]cc 每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述. :冒号是每一条Intel HEX记录的开始 ll 是这条记录的长度域,他表示数据(dd)的字节数目. aaaa 是地址域,他表示数据的起始地址 <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址, 对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址> tt 这个域表示这条HEX记录的类型,他有可能是下面这几种类型 00 ----数据记录 01 ----文件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录 dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以 查看ll域的说明 cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对 <不包括本效验字和冒号> 所表示的十六进制数字 <一对字母表示一个十六进制数,这样的一个十六进制数为一个字节> 都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc. <例如: :0300000002005E9D cc=0x01+NOT((0x03+0x00+0x00+0x00+0x02+0x00+0x5E)%0x100)=0x01+0x9C=0x9D C语言描述: UCHAR cc;

KEIL中HEX文件TO BIN文件

Intel HEX to BINARY File Converter Utility [资料来源KEIL官网] This utility program creates a BINARY file from an Intel HEX file. You can use BINARY files with most EPROM programmers and you can easily use them for CRC or checksum calculations. Options for this utility program are listed below: Syntax: HEX2BIN [/option] hexfile [binfile] hexfile is the Intel HEX input file binfile is the binary file to create option may be any of the following /Ln Binary file length /Pn Pad data for binary file /On Address offset (to add to HEX records) /M Merge data into existing BIN file /Q Quiet mode (no statistics are displayed) /X Don't process ext. segment/linear address records /? This help text

Note: This utility program is a DOS application. It requires 8.3 naming convention for file names and paths and it does not run on Windows 7 64Bit. However, you can execute it in the XP mode (Virtual PC) of Windows 7.

生成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:lwkj0920@https://www.sodocs.net/doc/d417999431.html,. '); % 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为模进行以下补足. %

如何使用KeilC51创建一个工程文件

如何使用KeilC51创建一个工程文件 建立一个项目: 点击工程菜单中选择弹出的下拉式菜单中的新建工程...,接着弹出一个标准Windows 文件对话窗口,在"文件名"中输入您的第一个程序项目名称,这里我们用"test",这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行。"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目 。 这时会弹出让你选择单片机型号的对话框,我们选择A TMEL---A T89C51

然后点击Target 1前面的“+”,出现Source Group 1,选中右键点选“增加文件到组Source Group 1” 这时选择文件类型为Asm 源文件,再选中001.asm文件,再按添加,在随后出现的提示框中按“确定” 仿真器采用Mon51协议,在使用之前应必须对软件项目进行如下设置: 1、单击工程菜单,再在下拉菜单中单击"目标target 1属性" 在下图中,单击"Target"输入仿真器的工作频率(11.0592MHz)

2、在调试菜单中点选"Keil Monitor-51 Driver",即选择了STC89C516RD硬件仿真器。 3、单击“R外围设备”选Target Setup设置选项选择您要使用串口(必须和实际相符合),波特率38400。 如果被仿真的目标板使用12MHZ或者是11.0592MHZ晶振时波特率选择38400,如果被仿真的目标板使用6MHZ晶振时波特率选择18400。

4、如果需要生成HEX代码给编程器烧写芯片的话,需要选中“生成HEX 文件”的选项,按钮“选择OBJ文件夹...”是用来选择最终HEX文件的存放目录的。 5、按F7快捷键可以进行编译,编译成功后如会出现上图红箭头所指的文字,表示编译成

HEX文件的烧录

1. keil编译生成hex文件大小与单片机内的flash空间大小没有完全绝对的关系 2. HEX 文件的大小,不是最终的代码大小, 一般实际要更小一些. 如果有兴趣研究,可以下载一下叫做 hex2bin 的小程序,可以把hex转换为bin 3. Intel hex 文件格式: Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。 Intel hex 文件全部由可打印的ASCII字符组成(可以用记事本打开),如下例所示: :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a705 0dbd81 :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d 0dbd2a :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4 f50874 Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下: :CCAAAARR...ZZ 其中: CC 本条记录中的数据字节数 AAAA 本条记录中的数据在存储区中的起始地址 RR 记录类型: 00 数据记录 (data record) 01 结束记录 (end record) 02 段记录 (paragraph record) 03 转移地址记录 (transfer address record) ... 数据域 ZZ 数据域校验和 Intel hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节

关于hex格式和mot格式转bin格式的总结

关于hex格式和mot格式转bin格式的总结 本文介绍用java转换hex和mot的方式 Hex格式文件是Intel产品主要格式文件,mot格式文件是摩托罗拉公司推出的格式文件。从解析方式上不能一概而论。倒是文件结构大体一致。 Bin文件是数据文件,一般来说从hex或mot转成的bin文件都比原文件小。因为hex 文件和mot文件都有很多描述文件和数据文件,而bin文件只要数据不需要描述。 Hex文件中的:标记了一行的开始。其后的每两个字符(不区分字母或数字)都看作一个字节。其中一行中包括 :|数据长度1字节|数据地址2字节|数据类型1字节|数据n字节|校验1字节 可以看出除了数据字节不确定其它都是固定的。而且数据类型中只有00类型的是数据记录,所以每一行中判断数据类型除了是00的其它的都可以不看。我们要取数据字节就要刨除:|数据长度|数据地址|数据类型|校验,5个字节和1个:共11个字符之外其它都是数据了。 while(true){ sLine=br.readLine(); if(sLine==null){ break; } //注意,字符串长度上:占了1位,在截取时要算进去 if(sLine.substring(0, 1).equals(":")){ //00000001为文件的结束描述 if(sLine.substring(1,9).equals("00000001")){ break; } //数据类型在第7和8位上(00为数据记录,01文件结束记录,02地址延伸 //03地址开始部分,04线性地址记录,05开始线性地址记录 //转为bin文件只取数据记录 if(sLine.substring(7, 9).equals("00")){ //数据从第9位开始到倒数第3位。后两位是数据校验 srtb.append(sLine.substring(9,sLine.length()-2)); } } } byte[] filebin=hexStringToBytes(srtb.toString());mot文件跟hex文件基本一样,mot文件不同的是数据描述有三种类型,三种类型的最大区别就是地址占用的长度不一致。这样在取数据部分的时候就要判断数据描述类型。根据类型取数据。mot文件中一行包括 数据类型1字节|数据长度1字节|数据地址(2,3,4)字节不等|数据n字节|校验1字节mot文件麻烦一点就在数据地址长度不固定。但也是有规律的,规律就在数据类型上。我们只关注数据mot文件行中出了S1,S2,S3是数据类型其它都是描述类型。S1类型数据地址2字节,S2类型数据地址3字节,S3类型数据地址4字节。那么如果是一行S1的类型数据S113106A000EE00338D46AA8000EE004F03030D54C这是一行随意截取的真实数据我们来

HEX格式说明

什么是Intel HEX文件格式? 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

keil中生成个人库文件及调用方法

如何在keil中生成个人库文件及调用方法 在网上找了些资料 代码积累多了,大家可能都尝试过自己写个库,方便调用,我最初的办法是把常用的函数放到一个个.C文件里头,要用的时候就把一个个.C添加到Group里面,这种方法就很麻烦了,每次新建一个工程都要ADD半天 这里8279.C,delay_ms.c,watchdog.c,function.c都是我以前写过现在拿来重用的代码 这样做还有一个问题,如果某个函数未调用,编译器就会给一个警告,UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS,"未调用的段,被忽略",虽然无啥大碍,但看着也挺不爽的 于是自己生成LIB文件,.lib是生成了,但就是没能用,始终有警告 *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL未解析的外部标号 *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL引用外部为解析的段 因为编译器没有找到那个函数的代码,也就未解析了,百度了一下,前几个结果竟然都没给出一个有效的解决办法 其实问题很简单,你在Group上右键ADD时注意一下对话框中允许添加的文件扩展名,除了c,asm之外,还有lib,把你的lib文件加进去,ok了 --------下面是我用库的一些记录-------------------------------------------------------------------- 库的生成

库的使用(在group中添加lib文件),在主调的C文件中include .h文件 KEIL中库可以由多个.obj(与.C对应)组成,而连接是以.obj为最小单元,即某.obj中有函数被调 用时,则整个.obj中所有函数都会被连接到.hex文件 通常为每一个函数编一个.C文件,而整个lib用一个.h文件,这样就可以使只有被调用的函数参与连接 Keil 生成Lib 调用Lib 2011-06-01 16:01:49| 分类:| 标签:|字号大中小订阅 1、维护自己写的代码不被别人乱改动。lib 不是c 代码,不能对它编辑,只能通过.h 文 件调用。所以为了别人能使用你的lib,一定要给他.h 文件。 2、可以把多个.c 文件合成一个lib 文件,这样在工程就不必要把每一个.c 文件都添加一 遍。 3、相比添加.c 文件,它具有不使用已经申明的extern 函数也不会出现Keil 经典的 UNCALLED FUNC warning。更重要的是,不使用的函数编译时不会产生代码,从而大大减 小.hex 文件。这对小容量的单片机来说是非常可贵的。 废话少说,下面以本人刚写的1602 程序为例一个教大家怎么生成和使用lib 文件。 为了实现上面说的lib 的第三个作用,大家要把独立的子函数用不同的.c 分开写。因为

hex格式文件学习笔记

前两天做s3c2440的nandfalsh实验时,有些问题(函数的指定地址存放)没有弄懂,今天花了一天的时间,算是把这个问题给解决掉了,为了更加深入的了解以及以后的复习之用,决定把他总结以下。首先,先认识一个问题,就是为什么能够指定地址存放?这个就涉及到生成hex镜像文件(不是bin文件),hex文件中包含了下载的地址(后面会详细解释),当下载软件如j-link,j-tag或是usb下载会根据hex文件中的地址信息将代码下到指定的地址单元中去。这里需要注意的是由于nandflash是不参与cpu编址的,它的地址是相对自己而言,所以如果要在nandflash中下载到指定地址,需要通过u-boot来实现。并且u-boot 必须支持这个功能,而其他的存储器是没这个问题,因为它们参与cpu的统一编址。好,现在问题来了,hex中的地址怎么来的呢?这个就是ads link器功劳了,我们指导ads连接器在配置的时候有三种模式,第一种模式很少用,一般我们是使用第二种而第三种,第二种是用的最多的,是生成简单的链接文件,不能对函数实现指定地址存放,第三种是生成复杂的链接文件,可以实现函数的指定地址存放,这是通过scatter文件实现的(后面会详细介绍)下面就看一下hex文件全称Intel HEX ntel 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 –扩展线性地址记录 05 - 开始线性地址记录后面则是真正的数据记录 dd 是数据域,它代表一个字节的数据.一个记录可以有许多数据字节.记录当中数 据字节的数量必须和数据长度域(ll)中指定的数字相符.

如何用KeilC51将ASM文件编译成Hex文件

按如下步骤进行: 1)点击菜单project,选择new project: 2)然后选择你要保存的路径,输入工程文件的名字,比如保存到keil目录里,工程文件的名字为test. 如下图所示,然后点击保存 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51 几乎支持所有的51核的单片机,如果你设计的是华邦的W77E58,可以选择winbond->W77E58,但是有一些版本,比如6.02,对它不能仿真,但是可以选择dallas的ds80c320来代替设计W77E58,两者的内核是一样的,只是w77e58带flash rom,而ds80c320没有flash rom,如果你的软件在仿真W77e58的时候有问题,那么就选用ds80c320 .我这里还是以大家用的比较多的Atmel 的89c52

来说明,如图所示,选择89c52之后,右边一栏是对这个单片机的基本的说明,然后点击确定. 4)这时要新建一个源程序文件,建立一个汇编或c文件,如果你已经有源程序文件,可以忽略这一步.点击菜单File->New:

5)输入一个简单的程序,如下: 5)选择菜单File_>SAVE: 6)选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是c程序文件,扩展名为.c,如果是汇编文件,扩展名为.a51,如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名.那么我们这里是要存储一个c源程序文件,所以输入.c扩展名,保存为test.c 的名字,(也可以保存为其他名字,比如learn.c等),点击保存.

Intel HEX文件格式

什么是Intel HEX格式? 回答: Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 记录格式 一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式. :llaaaatt[dd...]cc 每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述. :冒号是每一条Intel HEX记录的开始 ll 是这条记录的长度域,他表示数据(dd)的字节数目. aaaa 是地址域,他表示数据的起始地址 <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址, 对于不支持扩展段地址和扩展线性地址的,如89C51,这就是此条记录的起始地址> tt 这个域表示这条HEX记录的类型,他有可能是下面这几种类型 00 ----数据记录 01 ----文件结束记录 02 ----扩展段地址记录 04 ----扩展线性地址记录 dd 是数据域,表示一个字节的数据,一个记录可能有多个数据字节,字节数目可以 查看ll域的说明 cc 是效验和域,表示记录的效验和,计算方法是将本条记录冒号开始的所有字母对 <不包括本效验字和冒号> 所表示的十六进制数字 <一对字母表示一个十六进制数,这样的一个十六进制数为一个字节> 都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc.

KEILC51编译软件使用方法

2.1 Keiluvision4的安装和使用 Keil 公司是一家业界领先的微控制器(MCU )软件开发工具的独立供应商。Keil 公司由两家私人公司联合运营,分别是德国慕尼黑的KeilElektronikGmbH 和美国德克萨斯的KeilSoftwareInc 。Keil 公司制造和销售种类广泛的开发工具,包括ANSIC 编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-timekernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其KeilC51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。KeilC51是美国KeilSoftware 公司出品的51系列兼容单片机C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部分组合在一起。运行Keil 软件需要WIN2000、WINXP 等操作系统。如果你使用C 语言编程,那么Keil 几乎就是你的不二之选,即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 2.1.1 KeilμVision4简介 KeilμVision4是美国KeilSoftware 公司2009年2月发布的。KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更 有效地组织多个窗口,提供一个整洁,高效的环境来开发应 用程序。新版本支持更多最新的ARM 芯片,还添加了一些 其他新功能。 2011年3月ARM 公司发布最新集成开发环境RealViewMDK 开发工具中集成了最新版本的KeiluVision4, 其编译器、调试工具实现与ARM 器件的最完美匹配。 2.1.2 Keiluvision4的安装 (1)双击软件安装包如图2-1所示,弹出如图2-2所示界面,点击下一步,进入License 界面。 (2)勾选Iagree 复选框如图2-3选示,点击下一步,进入安装位置选择界面如图2-4所示。 图2-2 KeilμVision4 安装界面 图2-1 KeilμVision4软件安装包

相关主题