MS430G2755有关MSPBoot的代码移植流程
[复制链接]
1 MS430G2755 CMD 文件的产生
首先用Per工具产生CMD文件(Generating Linker Files), 通过Per的工具会产生两个CMD文件,其中一个给MSP430G2755的Bootloader使用,另一个给MSP430G2755的应用程序使用。操作指令如下,
C:\Users\a0223791\Desktop\MSP430-BSL-IAP\MSPBoot_1_01_00_00\linkerGen>perl MSPBo
otLinkerGen.pl -file lnk_msp430G2755_Uart_1KB -dev MSP430G2755 -params 0x8000 0x
FFE0 0xFC00 48 6 0x1100 0x20FF 0x80 0x1000 0x10BF
![](https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/2018_2D00_11_2D00_27_5F00_161819.png)
这里面有几个重要的参数说明如下,
<0x8000 > = Start address of Flash/FRAM
对于MSP430G2553 地址为0xC000 , 而MSP430G2755的地址需要修改为0x8000
<0xFFE0 > = Address of interrupt vector table
中断向量表的地址0xFFE0, 对于MSP430G2553和MSP430G2755相同
<0xFC00> = Start address of Bootloader
Bootloader的起始地址0xFC00,对于两者也是相同的
<48 > =Size of the proxy table
这里的48对应于12个中断向量,每个中断向量占用4Byte
<6> = Size of shared vectors
在应用程序中一共有3个(P1/Time/Dummy)中断向量,每个中断向量占用2Byte, 对应参数为6
<0x1100> = Start address of RAM
RAM的起始地址也需要修改为MSP430G2755的0x1100
<0x20FF > = End address of RAM
RAM的结束地址也需要修改为MSP430G2755的0x20FF
<0x80> = Size of the stack
MSP430G2755默认的堆栈大小为0x80
<0x1000> = Start address of info memory used for bootloader
Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改
<0x10BF > = End address of info memory used for bootloader
Information的起始和结束地址MSP430G2553和MSP430G2755一致,无需修改
注意如上修改的参数6,及中断向量的数量,在Bootloader中的中断向量不需要修改,只修改MSP430G2755应用程序App中的中断向量即可,通过下图可以直观看到中断向量的在Bin文件中的分布。
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/3821.B2.png)
图二 MSP430G2755中断向量
![](https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/7723.B3.png)
图三 MSP430G2755 Bin文件对应虚拟中断向量表
注意在这里的809C 和80E2 就对应MSP430G2755应用程序中的P1_Isr 和Timer_A,GPIO中断和定时器中断。下图会看到在MSP430G2755Bootloader中虚拟中断向量表的分布。
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/6710.B4.png)
图四MSP430G2755 Bootloader虚拟中断向量表
2 工程CMD文件添加
将2.1步骤中产生的CMD文件,分别添加到MSP430G2755的Bootloader及应用程序App的工程中,如下图所示
![](https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/2018_2D00_11_2D00_27_5F00_161903.png)
图5 MSP540G2755 CMD文件
特别注意,如果使用的是TI默认的MSP430G2553的工程,需要将原工程的器件型号选择为MSP430G2755,并且把MSP430G2755自带的G2553的CMD文件删除掉,使用生成MSP430G2755的CMD文件。
3 应用程序txt转化c文件
通过CCS编译器,编译MSP430G2755的应用程序,编译完成后会产生一个txt文件下载格式,我们需要将这个产生的txt文件转换为.c文件,这个.c文件才能给主控MCU使用,通过Bootloader下载到MSP430G2755中。转化运行指令如下,
C:\Users\ a0223791\Desktop\MSP430-BSL-IAP\G2755_Porting\MSPBoot_1_01_00_00\430txt
_converter>430txt2C.pl App1_MSPBoot.txt AppForHostG2755.c App1
![](https://e2echina.ti.com/resized-image/__size/1230x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/2018_2D00_11_2D00_27_5F00_161916.png)
通过这步将生成的.c文件,添加到主MCU中的main函数文件路径中,在这里我们测试的主控MCU是MSP430G2553,添加后的程序如下图所示。
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/6403.B6.png)
图六 Host MCU添加升级程序
4 写入CRC校验地址信息
通过上步我们在主控MSP430G2553中添加了需要升级的应用程序,同时我们还要在主MCU中修改目标升级芯片(MSP430G2755)的CRC地址信息,修改参考如下,
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/3731.B7.png)
图七 MSP430G2553添加CRC地址信息
注意此时已经不再需要MSPBoot用户指导手册中的CRC生成工具,进行CRC的校验,我们看到其实直接在主MCU中计算了CRC校验,并且把CRC的值放到指定的位置。
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/5353.B8.png)
图八 MSP430G2553 计算CRC数值
5 修改MSP430G2755应用程序
在这测试了将之前MSP430G2553默认的P1.1和P1.2口UART,修改为MSP430G2755硬件P3.4和P3.5口UART接收数据的接口。实际的参考代码如下,
![](https://e2echina.ti.com/resized-image/__size/600x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-00-74/B9.png)
图九 MSP430G2755 UART口修改
特别注意,在MSP430G2755应用程序App中,有两个中断默认使用即P1口和定时器中断,不能直接将P1口和Timer的中断直接屏蔽掉,这样会导致Host主控MSP430G2553升级MSP430G2553成功后,MSP430G2553并未正常的启动应用程序。如果在应用程序中不需要这两个中断向量,则在第一步产生CMD文件的过程中需要修改<6> = Size of shared vectors 这个参数。
|