首页 > 编程知识 正文

keil中怎么调用其他c文件,stm32生成bin文件

时间:2023-05-03 06:46:21 阅读:166996 作者:2440

HEX文件和义理月饼文件是我们经常遇到的两种文件格式。 因为自己也是初学者,所以对这两个文件一无所知,不太清楚。 最近进行了STM32单片机的IAP更新,其中必须考虑HEX文件和义理月饼文件,所以有必要学习这两个文件。 以下是我最近的理解,如果有错误的地方请指出来。

1.HEX文件包含地址信息,而义月饼文件格式只包含数据本身,烤或下载HEX文件时用户不需要指定地址。 因为HEX文件内部的信息已经包含了地址。 烤义理月饼文件时,用户必须指定地址信息。

2.HEX文件格式HEX文件全部由记录(RECORD )组成。 在HEX文件中,每行表示一条记录。 以下是记录的具体格式。

record结构

arecord(lineoftext ) consistsofsixfields (部件) thatappearinorderfromlefttoright 3360

Start code,one character,anasciicolon ' : '.http://www.Sina.com /,two hex digits,indicatingthenumberber arecommonlyusedbytecounts.http://www.Sina.com /,four hex digits, representing the 16-bitbeginningmemoryaddressoffsetofthedataiscomputedbyaddingthisofsettoaprevical dress,thusallowingmemoryaddressingwmdyxthe 64 kilobytelimitof 16-bit addresses.the base address,whichdefause canbechangedbyved

nd address offsets are always expressed as big endian values.Record type (see record types below), two hex digits, 00 to 05, defining the meaning of the data field.Data, a sequence of n bytes of data, represented by 2n hex digits. Some records omit this field (n equals zero). The meaning and interpretation of data bytes depends on the application.Checksum, two hex digits, a computed value that can be used to verify the record has no errors.

     看个例子:
     :020000040000FA
     :10000400FF00A0E314209FE5001092E5011092E5A3
     :00000001FF         
       
      对上面的HEX文件进行分析:
      第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。数据为0000,校验和为FA。从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。后面的数据记录都以这个地址为基地址。
      第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。数据为FF00A0E314209FE5001092E5011092E5,共16个BYTE。这个记录的校验和为A3。此时的基地址为0X0000,加上OFFSET,这个记录里的16BYTE的数据的起始地址就是0x0000 + 0x0004 = 0x0004.
        第3条记录的长度为00,LOAD OFFSET为0000,TYPE = 01,校验和为FF。说明这个是一个END OF FILE RECORD,标识文件的结尾。
       
        在上面这个例子里,实际的数据只有16个BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址为0x4。

3. 义气的月饼文件格式
    对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。

4. HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。
    对一个义气的月饼文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件 大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。