理论教育 引导装载器的数据流结构详解

引导装载器的数据流结构详解

时间:2023-06-15 理论教育 版权反馈
【摘要】:C28x十六进制应用程序支持引导装载器的数据流结构,该程序包含在C2000代码生成工具中。数据流结构的数值皆为十六进制。注意并非所有的引导装载器都接受8位和16位数据流。需要参考具体引导装载器的详细信息来获取有效的数据流宽度。数据流中的第12个字是要发送的第一个数据块的长度。例如,从8位数据流中发送20个8位的数据值,块的长度应该是0x000A,表示10个16位的数据。然后从由输入数据流内容确定的入口地址继续执行。

引导装载器的数据流结构详解

C28x十六进制应用程序(hex2000.exe)支持引导装载器的数据流结构,该程序包含在C2000代码生成工具中。

数据流结构的数值皆为十六进制。数据流的第一个16位字为关键值。该关键值告知引导装载器(Bootloader)到来的数据流宽度是8位还是16位。注意并非所有的引导装载器都接受8位和16位数据流。需要参考具体引导装载器的详细信息来获取有效的数据流宽度。对于8位的数据流,关键值是0x08AA;对于16位的数据流,关键值是0x10AA。如果引导装载器接收到一个无效的关键值,那么装载就中断。

接下来的8位字用于初始化寄存器值或者通过传递数值增强引导装载器。如果引导装载器不使用这些值,那么它们被保留以备将来使用,并且引导装载器读取这些值后再丢弃它。当前,只有SPI、I2C和并行I/O引导装载器使用这些字来初始化寄存器。

第10和11位字组成了22位的入口地址。这一地址在引导加载完成后用于初始化PC寄存器。这一地址一般为引导装载器所下载程序的入口。

数据流中的第12个字是要发送的第一个数据块的长度。不管被定义为8位还是16位数据流格式,块的长度都是以16位字定义的。例如,从8位数据流中发送20个8位的数据值,块的长度应该是0x000A,表示10个16位的数据。

对于每一个被传送的数据块,块长度与目的地址的样式不断重复。接下来的两个字表示装载数据块的目标地址,在数据大小和地址之后将是16位字的数据块。一旦所有的块都被发送,一个块长度为0x0000的信号告知装载器所有的发送都已经完成,引导装载器将会返回入口地址到调用程序处,在此清理并退出。然后从由输入数据流内容确定的入口地址继续执行。

例14-5 16位数据流结构

10AA;0x10AA,16位关键值

0000 0000 0000 0000 ;8个保留字

0000 0000 0000 0000

003F 8000 ;0x003F8000入口地址(EntryAddr),引导完成后的开始点

0005 ;0x0005,5个16位字组成的第一个数据块

003F 9010 ;0x003F9010,第一个块将会从0x3F9010处装入

0001 0002 0003 0004 ;装载的数据=0x000l 0x0002 0x0003 0x0004 0x0005

0005

0002 ;0x0002,两个l6位字组成的第二个块

003F 8000 ;0x003F8000,第二个块将会从0x3F8000处装载

7700 7625 ;装载的数据=0x7700 0x7625

0000 ;0x0000,长度0指示数据流结束

在装载完成后,以下的存储器单元值将会进行如下的初始化:

单元 值

0x3F9010 0x0001

0x3F9011 0x0002

0x3F9012 0x0003

0x3F9013 0x0004

0x3F9014 0x0005

0x3F8000 0x7700

0x3F8001 0x7625

PC从0x3F8000处开始执行。

在8位模式下,字的最低位字节(LSB)在最高位字节(MSB)之后发送。对于32位的值例如目标地址,最高位字(MSW)首先被装载,然后是最低位字节(LSW)。(www.daowen.com)

例14-6 8位数据流结构

AA 08 ;0x08AA,8位关键值

00 00 00 00 ;8个保留字

00 00 00 00

00 00 00 00

00 00 00 00

3F 00 00 80 ;0x003F8000入口地址(EntryAddr),引导完成后的开始点

05 00 ;0x0005,5个16位字组成的第一个数据块

3F 00 10 90 ;0x003F9010,第一个块将会从0x3F9010处装入

01 00 ;装载的数据=0x0001 0x0002 0x0003 0x0004 0x0005

02 00

03 00

04 00

05 00

02 00 ;0x0002,两个16位字组成的第二个块

3F000080 ;0x003F8000,第二个块将会从0x3F8000处装载

0077 ;装载的数据=0x77000x7625

2576

0000 ;0x0000,长度0指示数据流结束

在装载完成后,以下的存储器单元值将会进行如下的初始化:

单元 值

0x3F9010 0x0001

0x3F9011 0x0002

0x3F9012 0x0003

0x3F9013 0x0004

0x3F9014 0x0005

0x3F8000 0x7700

0x3F8001 0x7625

PC从0x3F8000处开始执行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈