.hex文件

  • .hex文件是什么
  • .hex文件的数据结构
    • 按照记录类型具体分析
  • Mermaid
  • Flowchart

.hex文件是什么

它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件。每一行包含一 个 HEX 记录 ,由对应机器语言码和/或常量数据的十六进制编码数字组成。Hex文件通常用于传输将被存于ROM 或者EPROM 中的程序和数 据。大多数EPROM 编程器或模拟器使用Intel HEX 文件。Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。

.hex文件的数据结构

Hex文件的记录格式如下:

Intel HEX 由任意数量的十六进制记录组成。每个记录包含5个域,每一组字母 对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节。

  • :(冒号)每个Intel HEX 记录都由冒号开头;
  • LL 是数据长度域, 它代表记录当中数据字节 (D…D) 的数量;
  • aaaa 是地址域, 它代表记录当中数据的起始地址;
  • TT是代表HEX 记录类型的域 , 它可能是以下数据当中的一 个:
    00:数据记录(Data Record),用来记录数据,HEX文件的大部分记录都是数据记录。
    01:文件结束记录(End of FileRecord),用来标识文件结束,放在文件的最后,标识HEX文件的结尾。
    02:扩展段地址记录(ExtendedSegment Address Record),用来标识扩展段地址的记录,扩展段地址记录(HEX86),它包含4~19位数据地址段。由于普通的Intel的HEX记录文件只能记录64K的地址范围,所以大于64K的地址数据要靠扩展段地址记录。
    03:开始段地址记录(Start Segment Address Record)
    04:扩展线性地址记录(Extended Linear Address Record),用来标识扩展线性地址的记录,扩展线性地址记录也叫32位地址记录或者HEX386记录,这些记录包含了数据在存储器里真实地址的高16位。 当一个扩展线性地址记录被读取后,将一直保持有效,直到它被另一个扩展地址记录改变。因为它记录的是后面数据在存储器里存放的真实起始地址,所以它的起始地址偏移量(Load offset)总是0000。
    05:开始线性地址记录(Start Linear Address Record),32位机(80386或更高的CPU)的EIP寄存器里存放的地址(main函数的入口地址)。
  • D…D是数据域,它代表一个字节的数据。一个记录可以有许多数据字节。记录当中数据字节的数量必须和数据长度域(LL)中指定的数字相符。
  • CC是校验和域,它表示这个记录的校验和。校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。

(CheckSum: two’s complement of length,address,record type and data fields module 256.)

记录格式可表示为:“:[1字节长度][2字节地址][1字节记录类型][n字节数据段][1字节校验和]

关于位、字节、二进制、十六进制:
二进制,是计算机为了快速方便而采用的一种记数方式,十六进制也是一种常用的记数方式。位(bit)就是一个二进制位,即可表示0和1,而字节(Byte)是计算机更通用的计算单位,1字节等于8位,可以代表256个数字(在编程中可以通过这些数字作为判断),int类型一般为4字节,即32位。一个十六进制数,如0xf,代表16个数字,2的4次方,即4位,所以两个十六进制数如0xff就是一个字节。

按照记录类型具体分析

  1. 数据记录”00”
    Intel HEX文件由任意数量以回车换行符结束的数据记录组成,数据记录外观如下:
    :10246200464C5549442050524F46494C4500464C33
    其中,10 是这个记录当中数据字节的数量,即0x10 ;2462 是数据将被下载 到存储器当中的地址,即0x2462;00 是记录类型(数据记录),即0x00;464C…464C是数据,分别代表0x46,0x4C…,注意hex中的数据域是小端序的,即按照先低位字节后高位字节的方式记录的;33 是这个记录的校验和,即0x33;计算方法如下:
    256D-(10H+24H+62H+00H+46H+4CH+55H+49H+44H+20H+50H+52H+4FH+46H+49H+4CH+45H+00H+46H+4CH)%256D=33H。

各种进制数的后缀字母分别为:
B :二进制数。
Q :八进制数。
D :十进制数。
H :十六进制数。
关于%是取余和取模:
在JAVA、C、C++里,%是取余运算,英文remainder;
在Python里,%号是取模运算,英文modulus;
取余运算的除法是向零舍入,取模运算的除法是向小值舍入;
取余运算结果的符号与被除数相同,取模运算结果的符号与除数相同。

  1. 文件结束(EOF)”01”
    Intel HEX文件必须以文件结束(EOF)记录结束这个记录的记录类的值必须是01.EOF记录外观总是如下:
    :00000001FF
    其中,00 是记录当中数据字节的数量;
    0000 是数据被下载到存储器当中的地址,在文件结束记录当中地址是没有意义、被忽略的。0000h 是典型的地址;
    01 是记录类型 01(文件结束记录);
    FF 是这个记录的校验和,计算方法如下: 256D-(00H+00H+00H+01H)=FFH。
  2. 扩展线性地址记录(HEX386) ”04”
    由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,就有了Extended Linear AddressRecord。如果这行的数据类型是0x04,那么,这行的数据就是随后数据的基地址。扩展线性地址记录也叫作32位地址记录或HEX386记录,这些记录含数据的高16位扩展线性地址记录总是有两个数据字节,外观如下:
    :02000004FFFFFC
    其中,02 是这个记录当中数据字节的数量;
    0000 是地址域,对于扩展线性地址记录,这个域总是0000;
    04 是记录类型04( 扩展线性地址记录);
    FC 是这个记录的校验和, 计算如下: 256D-(02H+00H+00H+04H+FFH+FFH)/256D=FFH。

当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被用于从 Intel HEX 文件读取来的随后的记录。线性地址保持有效,直到它被另外一个扩展地址记录所改变。通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址。

以下的例子演示了这个过 程:

:0200000480007A //数据记录的绝对存储器地址高16位为0x8000

:100000001D000A00000000000000000000000000C9

:100010000000000085F170706F0104005D00BD00FC

第一行,是扩展线性地址记录,里面的数据、也就是基地址是0x8000,第二行是数据记录,里面的地址值是0x0000。那么数据1D000A00000000000000000000000000(共16个字节)要写入FLASH中的地址为 (0x00008000<< 16)| 0x0000,也就是写入FLASH的0x80000000这个地址;第三行的数据写入地址为0x80000010。当一个HEX文件的数据超过64k的时候,文件中就会出现多个扩展线性地址记录。

左移运算符(<<):
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a << 2 将a的二进制位左移2位,右补0,
左移1位后a = a * 2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

按位或运算符(|):
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。 
另,负数按补码形式参加按位或运算。
“或运算”特殊作用:
常用来对一个数据的某些位置1。
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。
例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

  1. 扩展段地址记录(HEX86)“02“
    扩展段地址记录也叫HEX86 记录 , 它包括4-19 位数据地址段。扩展段地址记总是有两个数 据字节 , 外观如下:
    :020000021200EA
    其中,02 是记录当中数据字节的数量;
    0000 是地址域。对于扩展段地址记录,这个域总是0000;
    02 是记录类型 02( 扩展段地址记录);
    1200 是地址段;
    EA 是这个记录的校验和。

当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存, 它被应用于 从 Intel HEX 文件读取来的随后的记录。段地址保持有效, 直到它被另外一 个扩展地址记录所改变。通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址。

以下的例子演示了这个过程:

来自数据记录地址域的地址 2462
扩展段地址记录数据域    +1200
                                         ---------
绝对存储器地址           00014462


2018年12月29日15:17:45

Mermaid

编译连接示意:

#mermaid-svg-8IPzajS5zIM1wWwG .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-8IPzajS5zIM1wWwG .label text{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .node rect,#mermaid-svg-8IPzajS5zIM1wWwG .node circle,#mermaid-svg-8IPzajS5zIM1wWwG .node ellipse,#mermaid-svg-8IPzajS5zIM1wWwG .node polygon,#mermaid-svg-8IPzajS5zIM1wWwG .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-8IPzajS5zIM1wWwG .node .label{text-align:center;fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .node.clickable{cursor:pointer}#mermaid-svg-8IPzajS5zIM1wWwG .arrowheadPath{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-8IPzajS5zIM1wWwG .flowchart-link{stroke:#333;fill:none}#mermaid-svg-8IPzajS5zIM1wWwG .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-8IPzajS5zIM1wWwG .edgeLabel rect{opacity:0.9}#mermaid-svg-8IPzajS5zIM1wWwG .edgeLabel span{color:#333}#mermaid-svg-8IPzajS5zIM1wWwG .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-8IPzajS5zIM1wWwG .cluster text{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-8IPzajS5zIM1wWwG .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-8IPzajS5zIM1wWwG text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-8IPzajS5zIM1wWwG .actor-line{stroke:grey}#mermaid-svg-8IPzajS5zIM1wWwG .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-8IPzajS5zIM1wWwG .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-8IPzajS5zIM1wWwG #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-8IPzajS5zIM1wWwG .sequenceNumber{fill:#fff}#mermaid-svg-8IPzajS5zIM1wWwG #sequencenumber{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG #crosshead path{fill:#333;stroke:#333}#mermaid-svg-8IPzajS5zIM1wWwG .messageText{fill:#333;stroke:#333}#mermaid-svg-8IPzajS5zIM1wWwG .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-8IPzajS5zIM1wWwG .labelText,#mermaid-svg-8IPzajS5zIM1wWwG .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-8IPzajS5zIM1wWwG .loopText,#mermaid-svg-8IPzajS5zIM1wWwG .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-8IPzajS5zIM1wWwG .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-8IPzajS5zIM1wWwG .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-8IPzajS5zIM1wWwG .noteText,#mermaid-svg-8IPzajS5zIM1wWwG .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-8IPzajS5zIM1wWwG .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-8IPzajS5zIM1wWwG .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-8IPzajS5zIM1wWwG .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-8IPzajS5zIM1wWwG .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .section{stroke:none;opacity:0.2}#mermaid-svg-8IPzajS5zIM1wWwG .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-8IPzajS5zIM1wWwG .section2{fill:#fff400}#mermaid-svg-8IPzajS5zIM1wWwG .section1,#mermaid-svg-8IPzajS5zIM1wWwG .section3{fill:#fff;opacity:0.2}#mermaid-svg-8IPzajS5zIM1wWwG .sectionTitle0{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .sectionTitle1{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .sectionTitle2{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .sectionTitle3{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-8IPzajS5zIM1wWwG .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .grid path{stroke-width:0}#mermaid-svg-8IPzajS5zIM1wWwG .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-8IPzajS5zIM1wWwG .task{stroke-width:2}#mermaid-svg-8IPzajS5zIM1wWwG .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .taskText:not([font-size]){font-size:11px}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-8IPzajS5zIM1wWwG .task.clickable{cursor:pointer}#mermaid-svg-8IPzajS5zIM1wWwG .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-8IPzajS5zIM1wWwG .taskText0,#mermaid-svg-8IPzajS5zIM1wWwG .taskText1,#mermaid-svg-8IPzajS5zIM1wWwG .taskText2,#mermaid-svg-8IPzajS5zIM1wWwG .taskText3{fill:#fff}#mermaid-svg-8IPzajS5zIM1wWwG .task0,#mermaid-svg-8IPzajS5zIM1wWwG .task1,#mermaid-svg-8IPzajS5zIM1wWwG .task2,#mermaid-svg-8IPzajS5zIM1wWwG .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutside0,#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutside2{fill:#000}#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutside1,#mermaid-svg-8IPzajS5zIM1wWwG .taskTextOutside3{fill:#000}#mermaid-svg-8IPzajS5zIM1wWwG .active0,#mermaid-svg-8IPzajS5zIM1wWwG .active1,#mermaid-svg-8IPzajS5zIM1wWwG .active2,#mermaid-svg-8IPzajS5zIM1wWwG .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-8IPzajS5zIM1wWwG .activeText0,#mermaid-svg-8IPzajS5zIM1wWwG .activeText1,#mermaid-svg-8IPzajS5zIM1wWwG .activeText2,#mermaid-svg-8IPzajS5zIM1wWwG .activeText3{fill:#000 !important}#mermaid-svg-8IPzajS5zIM1wWwG .done0,#mermaid-svg-8IPzajS5zIM1wWwG .done1,#mermaid-svg-8IPzajS5zIM1wWwG .done2,#mermaid-svg-8IPzajS5zIM1wWwG .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-8IPzajS5zIM1wWwG .doneText0,#mermaid-svg-8IPzajS5zIM1wWwG .doneText1,#mermaid-svg-8IPzajS5zIM1wWwG .doneText2,#mermaid-svg-8IPzajS5zIM1wWwG .doneText3{fill:#000 !important}#mermaid-svg-8IPzajS5zIM1wWwG .crit0,#mermaid-svg-8IPzajS5zIM1wWwG .crit1,#mermaid-svg-8IPzajS5zIM1wWwG .crit2,#mermaid-svg-8IPzajS5zIM1wWwG .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-8IPzajS5zIM1wWwG .activeCrit0,#mermaid-svg-8IPzajS5zIM1wWwG .activeCrit1,#mermaid-svg-8IPzajS5zIM1wWwG .activeCrit2,#mermaid-svg-8IPzajS5zIM1wWwG .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-8IPzajS5zIM1wWwG .doneCrit0,#mermaid-svg-8IPzajS5zIM1wWwG .doneCrit1,#mermaid-svg-8IPzajS5zIM1wWwG .doneCrit2,#mermaid-svg-8IPzajS5zIM1wWwG .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-8IPzajS5zIM1wWwG .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-8IPzajS5zIM1wWwG .milestoneText{font-style:italic}#mermaid-svg-8IPzajS5zIM1wWwG .doneCritText0,#mermaid-svg-8IPzajS5zIM1wWwG .doneCritText1,#mermaid-svg-8IPzajS5zIM1wWwG .doneCritText2,#mermaid-svg-8IPzajS5zIM1wWwG .doneCritText3{fill:#000 !important}#mermaid-svg-8IPzajS5zIM1wWwG .activeCritText0,#mermaid-svg-8IPzajS5zIM1wWwG .activeCritText1,#mermaid-svg-8IPzajS5zIM1wWwG .activeCritText2,#mermaid-svg-8IPzajS5zIM1wWwG .activeCritText3{fill:#000 !important}#mermaid-svg-8IPzajS5zIM1wWwG .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-8IPzajS5zIM1wWwG g.classGroup text .title{font-weight:bolder}#mermaid-svg-8IPzajS5zIM1wWwG g.clickable{cursor:pointer}#mermaid-svg-8IPzajS5zIM1wWwG g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-8IPzajS5zIM1wWwG g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-8IPzajS5zIM1wWwG .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-8IPzajS5zIM1wWwG .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-8IPzajS5zIM1wWwG .dashed-line{stroke-dasharray:3}#mermaid-svg-8IPzajS5zIM1wWwG #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG .commit-id,#mermaid-svg-8IPzajS5zIM1wWwG .commit-msg,#mermaid-svg-8IPzajS5zIM1wWwG .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-8IPzajS5zIM1wWwG g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-8IPzajS5zIM1wWwG g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-8IPzajS5zIM1wWwG g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-8IPzajS5zIM1wWwG .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-8IPzajS5zIM1wWwG .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-8IPzajS5zIM1wWwG .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-8IPzajS5zIM1wWwG .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-8IPzajS5zIM1wWwG .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-8IPzajS5zIM1wWwG .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-8IPzajS5zIM1wWwG .edgeLabel text{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-8IPzajS5zIM1wWwG .node circle.state-start{fill:black;stroke:black}#mermaid-svg-8IPzajS5zIM1wWwG .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-8IPzajS5zIM1wWwG #statediagram-barbEnd{fill:#9370db}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-state .divider{stroke:#9370db}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-8IPzajS5zIM1wWwG .note-edge{stroke-dasharray:5}#mermaid-svg-8IPzajS5zIM1wWwG .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-8IPzajS5zIM1wWwG .error-icon{fill:#522}#mermaid-svg-8IPzajS5zIM1wWwG .error-text{fill:#522;stroke:#522}#mermaid-svg-8IPzajS5zIM1wWwG .edge-thickness-normal{stroke-width:2px}#mermaid-svg-8IPzajS5zIM1wWwG .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-8IPzajS5zIM1wWwG .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-8IPzajS5zIM1wWwG .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-8IPzajS5zIM1wWwG .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-8IPzajS5zIM1wWwG .marker{fill:#333}#mermaid-svg-8IPzajS5zIM1wWwG .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-8IPzajS5zIM1wWwG {color: rgba(0, 0, 0, 0.75);font: ;}

编译
链接
打包
编译
打包
链接
.c/.h源文件
.o二进制文件
.hex烧录文件
.a压缩文件
.c/.h更新源文件
.o二进制文件

项目相关需求:

#mermaid-svg-gVGWqwb8Bbld9jKC .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .label text{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .node rect,#mermaid-svg-gVGWqwb8Bbld9jKC .node circle,#mermaid-svg-gVGWqwb8Bbld9jKC .node ellipse,#mermaid-svg-gVGWqwb8Bbld9jKC .node polygon,#mermaid-svg-gVGWqwb8Bbld9jKC .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gVGWqwb8Bbld9jKC .node .label{text-align:center;fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .node.clickable{cursor:pointer}#mermaid-svg-gVGWqwb8Bbld9jKC .arrowheadPath{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-gVGWqwb8Bbld9jKC .flowchart-link{stroke:#333;fill:none}#mermaid-svg-gVGWqwb8Bbld9jKC .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-gVGWqwb8Bbld9jKC .edgeLabel rect{opacity:0.9}#mermaid-svg-gVGWqwb8Bbld9jKC .edgeLabel span{color:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-gVGWqwb8Bbld9jKC .cluster text{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-gVGWqwb8Bbld9jKC .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gVGWqwb8Bbld9jKC text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-gVGWqwb8Bbld9jKC .actor-line{stroke:grey}#mermaid-svg-gVGWqwb8Bbld9jKC .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-gVGWqwb8Bbld9jKC #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .sequenceNumber{fill:#fff}#mermaid-svg-gVGWqwb8Bbld9jKC #sequencenumber{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC #crosshead path{fill:#333;stroke:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .messageText{fill:#333;stroke:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-gVGWqwb8Bbld9jKC .labelText,#mermaid-svg-gVGWqwb8Bbld9jKC .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-gVGWqwb8Bbld9jKC .loopText,#mermaid-svg-gVGWqwb8Bbld9jKC .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-gVGWqwb8Bbld9jKC .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-gVGWqwb8Bbld9jKC .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gVGWqwb8Bbld9jKC .noteText,#mermaid-svg-gVGWqwb8Bbld9jKC .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-gVGWqwb8Bbld9jKC .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-gVGWqwb8Bbld9jKC .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-gVGWqwb8Bbld9jKC .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-gVGWqwb8Bbld9jKC .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .section{stroke:none;opacity:0.2}#mermaid-svg-gVGWqwb8Bbld9jKC .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-gVGWqwb8Bbld9jKC .section2{fill:#fff400}#mermaid-svg-gVGWqwb8Bbld9jKC .section1,#mermaid-svg-gVGWqwb8Bbld9jKC .section3{fill:#fff;opacity:0.2}#mermaid-svg-gVGWqwb8Bbld9jKC .sectionTitle0{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .sectionTitle1{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .sectionTitle2{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .sectionTitle3{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-gVGWqwb8Bbld9jKC .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .grid path{stroke-width:0}#mermaid-svg-gVGWqwb8Bbld9jKC .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-gVGWqwb8Bbld9jKC .task{stroke-width:2}#mermaid-svg-gVGWqwb8Bbld9jKC .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .taskText:not([font-size]){font-size:11px}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-gVGWqwb8Bbld9jKC .task.clickable{cursor:pointer}#mermaid-svg-gVGWqwb8Bbld9jKC .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-gVGWqwb8Bbld9jKC .taskText0,#mermaid-svg-gVGWqwb8Bbld9jKC .taskText1,#mermaid-svg-gVGWqwb8Bbld9jKC .taskText2,#mermaid-svg-gVGWqwb8Bbld9jKC .taskText3{fill:#fff}#mermaid-svg-gVGWqwb8Bbld9jKC .task0,#mermaid-svg-gVGWqwb8Bbld9jKC .task1,#mermaid-svg-gVGWqwb8Bbld9jKC .task2,#mermaid-svg-gVGWqwb8Bbld9jKC .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutside0,#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutside2{fill:#000}#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutside1,#mermaid-svg-gVGWqwb8Bbld9jKC .taskTextOutside3{fill:#000}#mermaid-svg-gVGWqwb8Bbld9jKC .active0,#mermaid-svg-gVGWqwb8Bbld9jKC .active1,#mermaid-svg-gVGWqwb8Bbld9jKC .active2,#mermaid-svg-gVGWqwb8Bbld9jKC .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-gVGWqwb8Bbld9jKC .activeText0,#mermaid-svg-gVGWqwb8Bbld9jKC .activeText1,#mermaid-svg-gVGWqwb8Bbld9jKC .activeText2,#mermaid-svg-gVGWqwb8Bbld9jKC .activeText3{fill:#000 !important}#mermaid-svg-gVGWqwb8Bbld9jKC .done0,#mermaid-svg-gVGWqwb8Bbld9jKC .done1,#mermaid-svg-gVGWqwb8Bbld9jKC .done2,#mermaid-svg-gVGWqwb8Bbld9jKC .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-gVGWqwb8Bbld9jKC .doneText0,#mermaid-svg-gVGWqwb8Bbld9jKC .doneText1,#mermaid-svg-gVGWqwb8Bbld9jKC .doneText2,#mermaid-svg-gVGWqwb8Bbld9jKC .doneText3{fill:#000 !important}#mermaid-svg-gVGWqwb8Bbld9jKC .crit0,#mermaid-svg-gVGWqwb8Bbld9jKC .crit1,#mermaid-svg-gVGWqwb8Bbld9jKC .crit2,#mermaid-svg-gVGWqwb8Bbld9jKC .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-gVGWqwb8Bbld9jKC .activeCrit0,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCrit1,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCrit2,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-gVGWqwb8Bbld9jKC .doneCrit0,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCrit1,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCrit2,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-gVGWqwb8Bbld9jKC .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-gVGWqwb8Bbld9jKC .milestoneText{font-style:italic}#mermaid-svg-gVGWqwb8Bbld9jKC .doneCritText0,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCritText1,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCritText2,#mermaid-svg-gVGWqwb8Bbld9jKC .doneCritText3{fill:#000 !important}#mermaid-svg-gVGWqwb8Bbld9jKC .activeCritText0,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCritText1,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCritText2,#mermaid-svg-gVGWqwb8Bbld9jKC .activeCritText3{fill:#000 !important}#mermaid-svg-gVGWqwb8Bbld9jKC .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-gVGWqwb8Bbld9jKC g.classGroup text .title{font-weight:bolder}#mermaid-svg-gVGWqwb8Bbld9jKC g.clickable{cursor:pointer}#mermaid-svg-gVGWqwb8Bbld9jKC g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gVGWqwb8Bbld9jKC g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-gVGWqwb8Bbld9jKC .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-gVGWqwb8Bbld9jKC .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gVGWqwb8Bbld9jKC .dashed-line{stroke-dasharray:3}#mermaid-svg-gVGWqwb8Bbld9jKC #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC .commit-id,#mermaid-svg-gVGWqwb8Bbld9jKC .commit-msg,#mermaid-svg-gVGWqwb8Bbld9jKC .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-gVGWqwb8Bbld9jKC g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-gVGWqwb8Bbld9jKC g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-gVGWqwb8Bbld9jKC g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-gVGWqwb8Bbld9jKC .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-gVGWqwb8Bbld9jKC .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-gVGWqwb8Bbld9jKC .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-gVGWqwb8Bbld9jKC .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-gVGWqwb8Bbld9jKC .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-gVGWqwb8Bbld9jKC .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-gVGWqwb8Bbld9jKC .edgeLabel text{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-gVGWqwb8Bbld9jKC .node circle.state-start{fill:black;stroke:black}#mermaid-svg-gVGWqwb8Bbld9jKC .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-gVGWqwb8Bbld9jKC #statediagram-barbEnd{fill:#9370db}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-state .divider{stroke:#9370db}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-gVGWqwb8Bbld9jKC .note-edge{stroke-dasharray:5}#mermaid-svg-gVGWqwb8Bbld9jKC .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-gVGWqwb8Bbld9jKC .error-icon{fill:#522}#mermaid-svg-gVGWqwb8Bbld9jKC .error-text{fill:#522;stroke:#522}#mermaid-svg-gVGWqwb8Bbld9jKC .edge-thickness-normal{stroke-width:2px}#mermaid-svg-gVGWqwb8Bbld9jKC .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-gVGWqwb8Bbld9jKC .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-gVGWqwb8Bbld9jKC .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-gVGWqwb8Bbld9jKC .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-gVGWqwb8Bbld9jKC .marker{fill:#333}#mermaid-svg-gVGWqwb8Bbld9jKC .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-gVGWqwb8Bbld9jKC {color: rgba(0, 0, 0, 0.75);font: ;}

寻址
替换
.map地址文件
.hex烧录文件
更新数据

2018年12月29日15:20:33

Flowchart

具体流程细节

Created with Raphaël 2.2.0开始n=0读取.map文件中待替换变量在pflash中的起始地址和字节数,记作aa和s获取下一个行数:n=n+1读取.hex文件中第n行的地址域,记作an搜索替换的起始行数:an<=aa<an+32?计算替换变量所占行数:l=s/32向上取整;令i=n;a(i)=an+32*(i-n)判断变量是否多跨一行:an+32*l<aa+s?l=l+1从第i行数据域的aa-a(i)字节后开始替换;替换完成后重算该行的校验和;判断循环是否继续:i+1<n+l?获取下一行行数:i=i+1;从第i行数据域开始替换;替换完成后重算该行的校验和;结束yesnoyesnoyesno

hex文件格式学习记录相关推荐

  1. hex文件格式剖析,以及hex与bin文件互相转换

    大家好,我是学电子的小白白. 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载 ...

  2. 基础知识 | hex文件格式详解

    hex文件格式总结 什么是hex文件? 文件格式 指令类型(Record type) 校验和 :04 02B0 00 92020008 AE :04 0000 05 08000135 B9 :00 0 ...

  3. 2021年3月7日之前学习记录

    学习记录 每日任务有两项:做题和总结当天所学知识.做题由简单到困难,刷题顺序是PAT->蓝桥杯->牛客->力扣->PAT··· 写博客进行自我监督 day 4,5,6 × 反思 ...

  4. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  5. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  6. 很多人都不清楚HEX文件格式

    Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件.在Intel HEX文件中,每一行包含一个HEX记录.这些记录由对应机器语言码和/或常量数据的十六进制编 ...

  7. hex文件格式解析_玩转Hex文件

    00 关于Hex Hex文件格式(本文讲的是Intel Hex)是好多好多年以前定义的格式,解析这文件的工具网上搜出来的也是一大摞一大摞的.记住,我们就别瞎折腾自己写一个了哦.我们要学会站在巨人的肩膀 ...

  8. Markdown个人学习记录

    Markdown个人学习记录 参考书籍:<了不起的Markdown>-毕小朋-电子工业出版社 第一章 Markdown概述 Markdown作为现在最流行的轻量级"写作语言&qu ...

  9. 基本:HEX文件格式定义

    0x01 概述 此处简单的对于HEX文件进行一些说明介绍,主要介绍了关于Hex文件基本的架构与数据定义 此章过于简单以至于没多少字,主要是hex文件本就是使用一种可视化显示不在Ascii编码内真实数据 ...

最新文章

  1. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
  2. Linux系统支持的目录文件有,【技术支持】linux操作系统有哪些文件和目录操作相关命令?...
  3. BZOJ 4898 Luogu P3778 [APIO2017]商旅 (分数规划、最短路)
  4. MYSQL多字段分组having子句
  5. eclipseweb开发response和request接收发送数据乱码问题
  6. python期末考试重点_如何应付大学的python考试而不至于挂科?
  7. 重新捡起flask(三)
  8. NUC980开发板Linux系统EC20模块 移植 串口 PPP拨号
  9. 小马虎想用计算机计算396乘19,2020版苏教版数学四年级下册第四单元《用计算器计算》单元测试卷C卷...
  10. ACM_栈的压入、弹出序列
  11. 机器学习and深度学习学习资料
  12. 国内首个!阿里云发布容器ATTCK攻防矩阵 | 凌云时刻
  13. html5怎么设置黑色背景及亮度,网页背景怎么设置为纯黑色css样式
  14. 蓝墨云班课php答案,蓝墨云班课试题库答案
  15. 人工智能发展将使人类沦落为“无用阶级”
  16. 关于STM8CAN产生bus-off如何自动恢复
  17. 企业服务器系统怎么做,如何搭建一个小型企业服务器机房?6个步骤学起来!...
  18. pmp证书报考流程+pmp备考+pmp学习干货+pmp指南汇总
  19. Kafka消费者不消费数据
  20. hadoop配置、运行错误总结

热门文章

  1. 【论文学习】:ICCV 2017-Detect-and-Track: Efficient Pose Estimation in Videos
  2. 刺客信条奥德赛多项功能修改器(附游戏攻略)
  3. 小白学习Excel VBA (一)
  4. b64_c3VuJTIwYm95 好看的电影推荐
  5. 由lol六周年全新官网按钮动画——动画效果、z-index
  6. 内存条坏了 一般会出现什么情况?
  7. Lottie- 让Android动画实现更简单
  8. MySql之Sql注入的产生与预防
  9. 简述我国进一步完善分税制改革的基本思路
  10. 魔力宝贝服务器端文件介绍,对魔力宝贝数据库的认识,及SQL数据库详细说明