应用程序虚拟空间哪个好

虚拟空间哪个好  时间:2020-12-28  阅读:()

1ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序应用报告ZHCAA00D–June2013–RevisedFebruary2018MSPBoot–适适用用于于MSP430闪闪存存微微控控制制器器的的主主存存储储器器引引导导加加载载程程序序LuisReynoso,CalebOverbayMSP430Apps摘摘要要本应用报告介绍如何实现存储在MSP430基于闪存的微控制器(MCU)的主存储器中的引导加载程序,此引导加载程序能够使用集成电路总线(I2C)、通用异步接收器/发送器(UART)或串行外设接口(SPI)总线以及CC110x射频收发器来完成无线下载(OAD).
此引导加载程序虽然高度灵活且模块化,但占用空间却很小,因此是一种非常具有成本效益的解决方案,并支持大型存储器型号(存储器空间大于64KB的器件).
可从以下URL下载一个软件包,其中包含用于主机器件和目标器件的示例和源代码:http://software-dl.
ti.
com/msp430/msp430_public_sw/mcu/msp430/MSPBoot/latest/index_FDS.
html如需了解介绍如何运行示例的分步过程,请参阅节4.
2.
5.
请勿将此引导加载程序与MSP430引导加载程序(BSL)混淆,后者存储在某些MSP430MCU的受保护存储器(ROM或闪存)中.
有关MSP430BSL的更多信息,请参阅《MSP430闪存器件引导加载程序(BSL)用户指南》和《创建基于闪存的定制引导加载程序(BSL)》.
注注:MSP430FRBoot是MSPBoot的扩展,其使用各种通信接口和无线下载(OAD)功能为MSP430FRAMMCU实现存储在主存储器中的引导加载程序.
MSP430FRBoot支持大型存储器型号(存储器空间大于64KB的器件)以及双映像和中断重定向选项,因此是替代MSP430FRAMMCU内置BSL的出色可定制方案.
www.
ti.
com.
cn2ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序内内容容1简介.
31.
1术语表31.
2约定.
42实现.
42.
1主例程42.
2应用程序管理器52.
3存储器接口(MI)102.
4通信接口(CI)113定制MSPBoot163.
1预定义的定制.
184构建MSPBoot184.
1启动新项目184.
2示例245参考文献30附附图图目目录录1MSPBoot软件架构42主例程的流程图53AppManager执行的应用程序验证.
64存储器分配.
85矢量重定向实现86双映像应用程序验证97I2C7位寻址格式.
118UART8-N-1格式.
129SPI格式1210示例命令1911在CCS中导入项目规范文件2012image2C示例.
2413目标板:MSP-EXP430F5529和MSP-EXP430G22414CC101EMK868-915、BOOST-CCEMADAPTER和430BOOST-CC10L2515导入MSPBootCCS项目2616选择目标配置.
2717选择App1_MSPBoot项目2718在CCS中选择主机项目的目标.
28附附表表目目录录1PHY-DL回调结构112CC110x数据包结构.
133Boot2App_Vector_Table定义134基于BSL的协议命令格式.
145基于BSL的协议命令146基于BSL的协议从设备响应147可选配置168定制文件17商商标标MSP430,CodeComposerStudio,LaunchPad,BoosterPackaretrademarksofTexasInstruments.
Allothertrademarksarethepropertyoftheirrespectiveowners.
www.
ti.
com.
cn简介3ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序1简简介介MSP430MCU配备了引导加载程序(BSL),通过该BSL可以轻松进行现场升级.
有关MSP430BSL的更多信息,请参阅《MSP430闪存器件引导加载程序(BSL)用户指南》和《创建基于闪存的定制引导加载程序(BSL)》.
该BSL在MSP430F5xx和MSP430F6xx器件中是可定制的,因为它位于闪存中.
其它系列(例如MSP430G2xx)具有存储在ROM中的BSL,该BSL仅支持UART,不能进行修改来支持I2C或其他接口.
鉴于这些限制,有必要创建一个存储在主存储器中并有助于轻松实现应用程序的引导加载程序.
本应用报告介绍如何实现名为MSPBoot并具有以下特征的引导加载程序:占用空间小(所需大小小于4KB)整合了20位和16位地址,分别用于大型存储器型号器件和小型存储器型号器件支持USI、USCI和eUSCI外设UART通信使用较小的存储空间提供最简单的有线接口SPI总线以稍大的占用空间提供无线下载(使用CC110x)不同的选项支持可定制的稳健性级别可选的双映像支持可应对通信中断问题允许在应用程序中使用所有中断应用程序可以选择重复使用引导加载程序中的低级通信驱动程序,也可以实现自己的驱动程序可配置的Boot进入方式使用CRC-CCITT对应用程序进行可选的验证提供源代码,允许进行其他定制该引导加载程序随附源代码,其中包括不同示例配置、应用程序示例和主机示例,以便简化测试、定制和实现.
本应用报告假定您已了解I2C、UART和SPI规范以及低于1GHz射频通信协议.
1.
1术术语语表表BOR欠压复位BSLMSP430引导加载程序CIMSPBoot通信接口CRC循环冗余校验eUSCI增强型通用串行通信接口I2C内部集成电路MCU微控制器MIMSPBoot存储器接口MSPBoot本应用报告介绍的引导加载程序MSP430FRBoot《MSP430FRBoot-适用于MSP430FRAM大型存储器型号器件的主存储器引导加载程序和无线更新》介绍的引导加载程序OAD无线下载OSI开放系统互连PUC上电清除复位ROM只读存储器SPI串行外设接口UART通用异步收发器USCI通用串行通信接口USI通用串行接口简介www.
ti.
com.
cn4ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序1.
2约约定定本文档包含的I2C传输示例使用以下约定:S:启动P:停止Sr:重复启动主到从A:确认(SDA低电平)从到主/A:不确认(SDA高电平)R:R/W位=1W:R/W位=0UART传输示例使用以下格式:主机到目标St:启动目标到主机SP:停止SPI传输示例使用以下格式:主到从X:不用考虑从到主2实实现现使用模块化方法可以在MSP430器件之间轻松迁移,并可以定制每一层.
图1显示了软件层.
图图1.
MSPBoot软软件件架架构构以下各节将更详细地介绍每个模块.
2.
1主主例例程程主例程具有以下用途:初始化MSP430MCU的基本功能.
初始化其他MSPBoot层.
实现用于轮询通信接口和处理命令的主循环.
www.
ti.
com.
cn实现5ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序图2显示了主例程的状态图:图图2.
主主例例程程的的流流程程图图2.
2应应用用程程序序管管理理器器应用程序管理器的主要目的是:检测器件何时应处于引导加载程序模式或应用程序模式验证应用程序重定向中断矢量从引导加载程序跳转到应用程序在双映像模式下恢复有效映像实现www.
ti.
com.
cn6ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
2.
1引引导导和和应应用用程程序序检检测测应用程序管理器通过运用以下规则来检测应该执行引导加载程序还是应用程序:在以下情况下执行应用程序:–应用程序有效(请参阅节2.
2.
1.
2)并且–外部事件或应用程序未强制使用引导加载程序(请参阅节2.
2.
1.
1)在以下情况下执行引导加载程序:–外部事件或应用程序强制使用引导加载程序或者–应用程序无效图3显示了此决策过程.
图图3.
AppManager执执行行的的应应用用程程序序验验证证2.
2.
1.
1强强制制使使用用引引导导加加载载程程序序模模式式即使应用程序有效,也可以通过以下选项强制使用引导加载程序模式:选项1:外部事件,例如复位后的GPIO状态.
默认情况下,软件会在复位后检查以下GPIO是否为低电平以强制使用引导加载程序模式:–MSP430G2xxx中的P1.
3(MSP-EXP430G2中的S2按钮)–MSP430F5529中的P1.
1(MSP-EXP430F5529中的S2按钮)可根据需要在TI_MSPBoot_AppMgr_BootisForced()中修改此事件.
www.
ti.
com.
cn实现7ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序选项2:应用程序要求执行引导加载程序模式.
变量StatCtrl和PassWd是保留变量并在应用程序和引导加载程序之间共享.
为强制使用引导加载程序模式,应用程序会将这些变量设置为:PassWd=0xC0DEStatCtrl.
BIT0=12.
2.
1.
2应应用用程程序序验验证证应用程序验证机制允许引导加载程序在执行应用程序之前对其进行验证.
可采用三种方法支持不同级别的代码规模和安全性:无:不验证应用程序,认为应用程序始终有效.
可通过外部事件强制使用引导加载程序模式.
不推荐.

复位矢量:如果复位矢量不同于0xFFFF(已擦除状态),则认为应用程序有效并执行应用程序.
CRC_CCITT:计算整个应用程序映像的CRCCCITT,并将结果与期望值进行比较.
请注意,基于BSL的协议(请参阅节2.
4.
2.
1)使用CRCCCITT,因此在使用基于BSL的协议时建议使用此验证方法.
此外,这种方法不考虑修改闪存内容(例如数据记录)的应用程序.
当执行这种类型的应用程序时,存储在闪存中的CRCCCITT会变得不正确,即使可能有效,引导加载程序也不会允许应用程序运行.
开发可以修改闪存的应用程序时,建议使用复位矢量验证方法.
请注意,验证方法可以防止执行损坏的应用程序,但是不能确保应用程序的完整性和功能,这是用户的责任.
如果应用程序不具有预期的功能,则仍可以使用硬件进入序列来恢复MSP430器件.
2.
2.
1.
3跳跳转转到到应应用用程程序序当通信协议检测到下载完成并且器件应跳转到应用程序时,MSPBoot会强制进行复位.
支持软件BOR的器件(例如MSP430F5529)使用此方法强制进行复位,这是将MSP430恢复到默认状态的有效方法.
定义了HW_RESET_BOR后会启用此方法.
对于不具有这种机制的器件(例如MSP430G2xx),可使用PUC复位.
这属于强制性复位,但不会清除所有寄存器.
定义HW_RESET_PUC后,引导加载程序将清除相关的寄存器.
2.
2.
2矢矢量量重重定定向向MSPBoot无法擦除或重新编程引导加载程序区域.
此限制提供了更安全的实现方案,因为引导加载程序始终可访问,并可以通过强制使用引导加载程序模式来恢复MCU.
复位矢量是引导加载程序必不可少的组成部分,因为其可以强制MCU始终跳转到引导加载程序的进入序列,所以不应将其擦除.
由于复位矢量位于16位闪存空间(0xFFFE)的顶端,因此引导加载程序代码位于相邻位置(请参阅图4).
实现www.
ti.
com.
cn8ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序图图4.
存存储储器器分分配配中断矢量表也位于受保护的引导区域中.
因为预计中断表的值将根据应用程序而变化,所以这意味着必须遵循一些特殊注意事项以允许应用程序中断.
在大型存储器型号器件(0x10000及更高)中,应用程序可以使用额外的20位空间.
2.
2.
3闪闪存存器器件件中中的的中中断断矢矢量量闪存擦除的最小大小为一个段,在MSP430MCU中为512字节.
考虑到这一点,应保护整个中断表不被擦除.
为了在应用程序级别允许中断,我们实现了一种软件矢量重定向方法来修复默认矢量表的内容并指向存储在应用程序空间中的代理表.
图5显示了此实现背后的概念:图图5.
矢矢量量重重定定向向实实现现www.
ti.
com.
cn实现9ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序1.
应用程序收到一个中断请求,当前地址将压入堆栈,然后CPU从矢量表中获取地址.
2.
矢量表包含每个中断的代理位置的地址.
CPU获取代理表中相应条目的地址并跳转到该地址.
3.
代理表包含分支指令(BRA),后跟每个ISR的实际地址.
CPU执行BRA指令,并跳转到相应的应用程序矢量ISR.
4.
ISR完成后将执行RETI指令,并从堆栈中弹出前一个地址.
此过程对于应用程序的实现几乎是透明的,但是必须注意,由于从代理表到应用程序ISR的额外跳转,延迟会增加.
示例代码中包含了演示如何实现中断的应用示例以演示此功能.
请注意,某些MSP430MCU支持将矢量重定向到硬件中的RAM(SYSRIVECT),这对于具有足够RAM的器件而言可能是一个很好的选择.
2.
2.
4双双映映像像支支持持应用程序管理器还可以支持双映像模式.
在这种模式下,即使映像下载中断或新下载的映像损坏,也总是希望主存储器中存在有效的应用程序.
此模式对于OAD至关重要,因为OAD可能会意外中断通信.
在双映像模式下,主存储器被分割成下载区域和应用程序区域,如节2.
3.
1所述.
此模式下的应用程序验证过程不同于常规的过程,如图6所示.
图图6.
双双映映像像应应用用程程序序验验证证实现www.
ti.
com.
cn10ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
2.
4.
1在在双双映映像像模模式式下下跳跳转转到到应应用用程程序序应用程序下载过程完成后,MSPBoot在跳转到新应用程序之前将执行以下步骤:1.
验证下载区域中的新映像a.
如果无效,则退出(复位会再次强制使用引导加载程序,并仅在原始映像有效时才执行应用程序)b.
如果有效,则继续2.
将应用程序区域替换为下载区域3.
验证应用程序区域中的映像a.
如果有效,则擦除下载区域(复位应执行应用程序,因为应用程序区域中的映像有效)b.
如果无效,则退出(意外状态,但复位将再次重新验证两个映像)2.
3存存储储器器接接口口(MI)为了保护引导加载程序区域,存储器在逻辑上分为两部分:应用程序区域:这是包含用户应用程序和已重定向矢量表的可写部分引导加载程序区域:这是包含引导加载程序和矢量表的不可写部分每个扇区的大小在项目链接器文件中定义.
在CodeComposerStudioIDE(CCS)的示例项目中提供了显示不同存储器大小的示例.
存储器接口提供了一个API可用于对应用程序存储器区域进行编程和擦除以及保护引导加载程序区域.
对于闪存器件,这种存储器保护的实现方式如下:不执行批量擦除,而是使用段擦除来擦除应用程序.
验证要擦除或编程的地址,以免引导加载程序区域发生意外损坏注注:MSPBoot在执行更新时不允许对引导加载程序区域进行写入或擦除访问,但在执行应用程序时无法防止意外擦除.
2.
3.
1双双映映像像支支持持启用双映像支持后,存储器接口模块会将MSP430应用程序区域划分为两个子部分,从而产生以下逻辑存储器映射:非引导区域–下载区域:此部分用作存储新应用程序映像的临时缓冲区.
主机无法访问该区域中的物理地址,但是当主机尝试下载到应用程序区域中的逻辑地址时,将写入该区域.
–应用程序区域:此部分用于执行当前应用程序映像.
主机可以使用该区域中的逻辑地址,但是主机无法写入物理地址.
验证下载区域中的新映像后,引导加载程序会更新应用程序区域.
节2.
2.
4对此过程进行了说明.
引导区域–这是包含引导加载程序和矢量表的只读部分.
每个扇区的大小在项目链接器文件中定义.
在CCS的示例项目中提供了显示不同存储器大小的示例.
www.
ti.
com.
cn实现11ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
4通通信信接接口口(CI)通信接口的目的是:从主机接收数据并将数据发送到主机实现通信协议解析数据、验证数据包并执行适当的命令根据函数的输出,生成响应根据开放系统互连(OSI)模型,CI分为两个模块:Physical-DataLink(PHY-DL)Network-Application(NWK-APP)2.
4.
1Physical-DataLink(PHY-DL)PHY-DL层提供了一个硬件抽象层(HAL)来简化向不同MSP430衍生产品或外设迁移的过程.
PHY-DL层提供了一个稳定的通道向主机发送数据和从主机接收原始数据.
当前的引导加载程序最初是使用I2C、UART或SPI实现的.
该引导加载程序当前支持USI、USCI和eUSCI模块,但是如果需要,可以包括其他选项.
通过使用表1中的回调函数提供指向结构的指针来初始化PHY-DL层.
(1)回调是可选的.
协议或CI可能不需要回调.
表表1.
PHY-DL回回调调结结构构t_CI_Callback结结构构类类型型定定义义.
RxCallback收到新字节时调用.
TxCallback需要传输字节时调用.
ErrorCallback(1)在PHY-DL中检测到错误(超时)时调用.
StartCallback(1)在检测到数据包开始时调用.
StopCallback(1)在检测到数据包结束时调用更高级别的层(NWK-APP)使用回调函数来实现通信协议.
根据协议的不同,某些回调不是必需的,因此可以在PHY-DL层中将它们禁用以减少占用空间.
节2.
4.
2中介绍了NWK-APP层.
2.
4.
1.
1I2C多年来,由于I2C总线的实现成本低、功能强大且具有灵活性,因此其一直是嵌入式应用中最常见的通信协议之一.
对于需要简单通信链路的低成本应用,这是一种有用的接口.
该接口能够与MSP430微控制器完美匹配,此系列的微控制器在一个具有成本效益的解决方案中融合了高性能、高集成度和超低功耗等特性.
I2C接口是使用具有MSP430MCU预定义地址的7位寻址格式来实现的:图图7.
I2C7位位寻寻址址格格式式预定义的MSP430MCU地址定义为:CONFIG_CI_PHYDL_I2C_SLAVE_ADDR=0x40为支持USI、G2xx3USCI、F5xx/6xxUSCI和eUSCI,还包含相关文件.
实现www.
ti.
com.
cn12ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
4.
1.
1.
1超超时时检检测测在I2C通信期间,当从设备需要更多时间来处理数据包时,将时钟线保持在低电平是有效的.
这种机制称为时钟拉伸,尽管这非常有用,但也可能导致器件无限期保持总线,从而使总线停止.

PHY-DL层可以选择性检测线路保持太长时间的情况,如果检测到这种情况,PHY-DL层可以复位接口.
此功能是根据CONFIG_CI_PHYDL_TIMEOUT启用的.
USCI和USI实现方案使用TA1来实现此功能,而eUSCI包括此功能的硬件支持.
2.
4.
1.
2UARTUART接口使用8-N-1格式(8个数据位,无奇偶校验位,1个停止位)实现(请参阅图8).
图图8.
UART8-N-1格格式式默认波特率定义为CONFIG_CI_PHYDL_UART_BAUDRATE=9600.
2.
4.
1.
3SPI用于CC110x通信的SPI接口是使用以下配置实现的(另请参阅图9):8位数据MSB在前时钟极性=0(非活动状态为高电平)时钟相位=1(数据在第一个时钟边沿改变,在随后的边沿被捕捉)3引脚配置,使用GPIO实现SS图图9.
SPI格格式式www.
ti.
com.
cn实现13ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
4.
1.
4CC110xCC110x器件使用表2中的数据包结构发送数据.
(1)数据包的最大长度为24字节;因此,每个数据包允许的最大数据字节数(N)为16.
(2)如果长度等于1(仅命令),这些子部分不包括在数据包中.
表表2.
CC110x数数据据包包结结构构帧帧头头长长度度(1)命命令令地地址址(2)数数据据(2)校校验验码码0x80N1字节3字节N-6字节2字节MSPBoot中CC110x的配置如下:数据速度为250kbps载波频率为902750Hz通过TI_MSPBoot_CI_PHYDL_CC1101.
c内部radio_init函数发送的变量,可以将数据速度设置为1.
2或38.
4kbps.
可在TI_MSPBoot_Config.
h中更改无线电频率.
必须同时更改目标和主机固件项目.
请参阅CC1101低功耗低于1GHz射频收发器数据表,了解有关常见CC1101x命令的更多信息以及其他通信详细信息.
数据包结构与基于BSL的协议相同,因此可以使用预期的格式将其直接从PHY-DL层传输到NWK-APP层.
节2.
4.
2.
1.
2也对此进行了介绍.
2.
4.
1.
5通通信信共共享享用户应用程序可以根据需要使用通信接口(I2C、UART、GPIO或其他用途),因为当MCU跳转到应用程序时,资源将被释放.
根据需要,CIPHY-DL可与应用程序共享,从而允许其使用同一个通信接口并减少应用程序占用空间.
启用此功能后,引导加载程序将共享表3中的函数指针.
(1)仅为SPI和UART实现回调,I2C不需要.
表表3.
Boot2App_Vector_Table定定义义Boot2App_Vector_Table此此表表包包含含共共享享CIPHY-DL函函数数的的地地址址TI_MSPBoot_CI_PHYDL_Init用于初始化PHY-DL的函数,该函数将一个指针传递给应用程序t_CI_Callback.
TI_MSPBoot_CI_PHYDL_Poll此函数检查所有相关标志并在需要时调用相应的回调TI_MSPBoot_CI_PHYDL_TxByte(1)用于写入TX缓冲区的函数应用程序必须声明自己的回调,这些回调在CIPHY-DL初始化期间传递,并在检测到相应事件时调用.
PHY-DL层的设计将占用空间小作为最重要的一个考虑因素.
如果PHY-DL的实现不够充分,应用程序始终可以实现自己的驱动程序.
随附软件包中的应用程序2示例展示了如何共享CIPHY-DL.
2.
4.
2NWK-APP利用CINetwork-Application层,可实现通信协议,解释来自PHY-DL的原始数据,并在执行适当的命令之前验证此类数据.
为简便起见,MSPBoot仅使用基于BSL的协议.
2.
4.
2.
1基基于于BSL的的协协议议MSP430BSL是MSP430MCU中包含的标准引导加载程序.
《MSP430闪存器件引导加载程序(BSL)用户指南》对此进行了详细说明.
在MSPBoot中实现的基于BSL的协议可以保持稳健性,但是并不能实现所有命令,并且与BSL协议完全采用相同的格式来减少其占用空间.
此协议基于数据包,具有表4中的格式.
实现www.
ti.
com.
cn14ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序(1)PAYLOAD_MAX_SIZE默认设置为20(1个命令字节+3个地址字节+16个数据字节)表表4.
基基于于BSL的的协协议议命命令令格格式式帧帧头头长长度度有有效效载载荷荷校校验验码码[L]校校验验码码[H]0x801到PAYLOAD_MAX_SIZE(1)1到PAYLOAD_MAX_SIZE字节1字节1字节帧帧头头:固定为0x80长长度度::1字节加有效载荷长度.
有效值为1到PAYLOAD_MAX_SIZE.
有有效效载载荷荷::1到PAYLOAD_MAX_SIZE字节,包含命令、可选地址和数据(可选,根据命令类型而定).
校校验验和和::有效载荷的16位CRCCCITT表5中的命令会作为有效载荷来实现.
表表5.
基基于于BSL的的协协议议命命令令命命令令CMD字字节节1字字节节2字字节节3字字节节4…字字节节length-1ERASE_SEGMENT0x12ADDR[L]ADDR[M]ADDR[H]XXXERASE_APP0x15XXXXXXRX_DATA_BLOCK0x10ADDR[L]ADDR[M]ADDR[H]DATA0XDATAnTX_VERSION0x19XXXXXXJUMP2APP0x1CXXXXXXERASE_SEGMENT擦除由ADDR寻址的存储器段(闪存中为512字节).
ERASE_APP擦除应用程序区域.
RX_DATA_BLOCK编程从地址ADDR开始的n字节数据.
TX_VERSION向目标请求MSPBoot版本.
JUMP2APP指示目标跳转到应用程序映像(在验证之后).
来自目标的响应始终是一个字节(表6列出了有效值).
表表6.
基基于于BSL的的协协议议从从设设备备响响应应响响应应值值说说明明OK0x00上一条命令正确执行HEADER_ERROR0x51帧头不正确CHECKSUM_ERROR0x52帧校验和不正确PACKETZERO_ERROR0x53数据包长度=0PACKETSIZE_ERROR0x54数据包长度>MAX_LENUNKNOWN_ERROR0x55协议错误INVALID_PARAMS0xC5命令收到的参数不正确INCORRECT_COMMAND0xC6收到的命令无效MSPBOOT_VERSION0到0xFF发送为TX_VERSION命令的响应(默认为0xA0)www.
ti.
com.
cn实现15ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
4.
2.
1.
1安安全全性性每个数据包的内容均通过16位CRC验证,从而为引导加载程序提供更高的稳健性.
主机可以检查每条命令的结果,如果上一条命令未成功执行,则会重试.
ERASE_SEGMENT和RX_DATA_BLOCK命令可以擦除和写入16位存储器映射中的任何区域,因此可能损坏引导加载程序.
为避免这种可能性,TI建议在编程或擦除操作之前包含CONFIG_MI_MEMORY_RANGE_CHECKMI定义以验证地址.
如果该过程中断,应用程序区域可能会损坏,因此TI建议使用节2.
2.
1.
2中所述的应用程序验证方法之一,或使用双映像方法.
2.
4.
2.
1.
2使使用用CC110x的的基基于于BSL的的协协议议该协议的CC110x实现方案遵循与UART相同的准则,但是由于信息是以完整的数据包而不是以字节接收的,因此包含一些细微的更改.
由于表2中列出的传入CC110x数据包与表4中预期的基于BSL的协议相同,因此可以将来自PHY-DL层的数据直接传输到NWK-APP层,而无需进行转换.
2.
4.
2.
1.
3采采用用I2C的的示示例例将I2C与基于BSL的协议一起使用时,需要了解以下注意事项:主机始终启动传输(R或W).
数据包必须包含从设备的地址.
所有其他地址将被忽略.
如果从设备尚未准备好处理数据或发送响应,它将使时钟保持低电平(在I2C中称为"拉伸时钟")请注意,不同的命令具有不同的处理时间示例:主机从MCU读取版本S0x40WA0x80A0x01A0x19A0xE8A0x62APAddrHeaderLengthTX_VERSIONChecksum_LChecksum_HS0x40RA0xA0/APAddrVersion示例:主机将16个字节写入地址0xC000.
S0x40WA0x80A0x14A0x10A0x00A0xC0A0x00A0x03A0xEEAAddrHeaderLengthRX_DATA_BLOCKAddrLAddrMAddrHData0Data10x47A0xFFA0xB2A0x40A0x80A0x5AA0x20A0x01A0xD2AData2Data3Data4Data5Data6Data7Data8Data9Data100xD3A0x22A0x00A0xD2A0xD3A0x15A0xE4APData11Data12Data13Data14Data15Checksum_LChecksum_HS0x40RA0x00/APAddrOK定制MSPBootwww.
ti.
com.
cn16ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序2.
4.
2.
1.
4采采用用UART或或CC110x的的示示例例将UART与基于BSL的协议一起使用时,需要了解以下注意事项:不需要地址,因为预计通信将是点对点的通信.
UART中的所有字节均按照节2.
4.
1.
2中所述采用8-N-1格式.
目标准备就绪时(而不是主机请求时)将以命令的结果响应主机应在发送命令后等待目标的响应,最好是超时.
不同的命令具有不同的处理时间.
示例:主机擦除MCU应用程序区域0x800x010x150x640xA3HeaderLengthERASE_APPChecksum_LChecksum_H目标器件将处理命令,并在准备好后提供响应结果.
0x00OK将CC110x与基于BSL的协议一起使用时,需要了解同样的注意事项.
对于这些注意事项,例外情况是节2.
4.
2.
1.
2,其中指出从CC110x接收的数据包中所有字节均采用基于BSL的协议的预期格式;因此,这些字节可以直接从PHY-DL传输到NWK-APP.
尽管处理时间是相同的,但是无线通信的预期速度可能比UART慢一些,并且主机等待时间应该会延长以进行补偿.
3定定制制MSPBootMSPBoot的设计重点是低成本和小占位空间;但是,某些应用需要具有更高级别的安全性和稳健性,或者可以从这些特性中受益.
根据应用要求,MSPBoot代码中提供了不同级别的定制,并且可以根据特定需求进行调整.
可通过添加适当的文件或通过启用和禁用某些预处理程序定义来选择这些选项.
表7列出了可以在TI_MSPBoot_Config.
h中配置的选项.
表表7.
可可选选配配置置值值说说明明对对代代码码大大小小的的影影响响NDEBUG已定义忽略ASSERT_H函数.
启用看门狗.
–未定义调试期间使用.
选中ASSERT_H函数.
禁用看门狗.
增加大约20字节CONFIG_MI_MEMORY_RANGE_CHECK已定义确认要擦除或编程的地址在应用程序区域内.
增加大约44字节未定义不验证要擦除或编程的地址.
主机必须发送正确的地址.
–CONFIG_APPMGR_APP_VALIDATE1不验证应用程序-2通过检查CRC-CCITT验证应用程序.
增加大约6字节CONFIG_CI_PHYDL_COMM_SHARED已定义通信接口PHY-DL层与应用程序共享.
增加大约28字节未定义CIPHY-DL不与应用程序共享.
–CONFIG_CI_PHYDL_I2C_TIMEOUT已定义在CIPHY-DL中检测超时.
增加大约48到62字节未定义CIPHY-DL不检测超时.
–www.
ti.
com.
cn定制MSPBoot17ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序表表7.
可可选选配配置置(continued)值值说说明明对对代代码码大大小小的的影影响响CONFIG_CI_PHYDL_START_CALLBACK已定义在检测到"启动"时,调用回调函数(仅某些协议或通信接口才需要).
增加大约12字节未定义在检测到"启动"时,不调用回调函数.
–CONFIG_CI_PHYDL_STOP_CALLBACK已定义在检测到"停止"时,调用回调函数(仅某些协议或通信接口才需要).
增加大约38到54字节未定义在检测到"停止"时,不调用回调函数.
–CONFIG_CI_PHYDL_ERROR_CALLBACK已定义在检测到超时错误时,调用回调函数(仅某些协议或通信接口才需要).
增加大约16到20字节未定义在检测到超时错误时,不调用回调函数.
–CONFIG_CI_PHYDL_CC1101_FREQUENCY已定义定义CC110x通信的频率-未定义--CONFIG_CI_PHYDL_UART_BAUDRATE已定义定义UART通信的波特率-未定义--CONFIG_CI_PHYDL_I2C_SLAVE_ADDR已定义定义使用I2C通信时MSP430响应的地址-未定义--如果要选择其他定制方案,可通过在项目中添加和使用适当的文件来实现.
表8列出了项目中可互换的文件.
表表8.
定定制制文文件件CIPHY-DLTI_MSPBoot_CI_PHYDL_USI_I2C_Slave.
c使用USI作为I2C从设备TI_MSPBoot_CI_PHYDL_USCI_I2C_Slave_x2xx.
c使用USCI作为x2xx器件上的I2C从设备TI_MSPBoot_CI_PHYDL_USCI_I2C_slave.
c使用USCI作为I2C从设备TI_MSPBoot_CI_PHYDL_USI_I2C_slave.
c使用USI作为I2C从设备TI_MSPBoot_CI_PHYDL_eUSCI_I2C_slave.
c使用eUSCI作为I2C从设备TI_MSPBoot_CI_PHYDL_USCI_UART_x2xx.
c使用USCI作为x2xx器件上的UARTTI_MSPBoot_CI_PHYDL_USCI_UART.
c使用USCI作为UARTTI_MSPBoot_CI_PHYDL_eUSCI_UART.
c使用eUSCI作为UARTTI_MSPBoot_CI_PHYDL_CC1101.
c使用CC110xMITI_MSPBoot_MI_Flash_20Bit.
c用于对大型存储器型号器件中的应用程序闪存进行编程的APITI_MSPBoot_MI_FlashDualImg_20Bit.
c用于在大型存储器型号器件的闪存中实现双映像的APITI_MSPBoot_MI_Flash_16Bit.
c用于对小型存储器型号器件中的应用程序闪存进行编程的APITI_MSPBoot_MI_FlashDualImg_16Bit.
c用于在小型存储器型号器件的闪存中实现双映像的API应用管理器TI_MSPBoot_AppMgr.
c标准应用管理器TI_MSPBoot_AppMgrDualImg_20Bit.
c在大型存储器型号器件中支持双映像的应用管理器TI_MSPBoot_AppMgrDualImg_16Bit.
c在小型存储器型号器件中支持双映像的应用管理器定制MSPBootwww.
ti.
com.
cn18ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序3.
1预预定定义义的的定定制制软件包中包含CCS项目,该项目支持两个器件(MSP430F5529和MSP430G2553),这两个器件具有三个通信接口(UART、I2C或带有CC110x的SPI)并且每个器件有两个预定义的配置(单映像、双映像).
在提供的CCS示例中,器件和通信接口通过选择的项目分开,并可以在Project→BuildConfigurations→SetActive下选择预定义的配置.
4构构建建MSPBoot此部分作为分步指南,介绍了如何为目标器件构建引导加载程序和演示应用程序.
4.
2节介绍如何构建和使用示例应用程序来运行演示.
4.
1启启动动新新项项目目软件包中包含以下内容:Host_Examples::这些示例显示了将MSP-EXP430F5529或MSP-EXP430G2用作主机,该主机通过UART、I2C或带有CC110x的SPI通信接口对MSP430基于闪存的目标进行编程.
MSP430F5529_Examples::这些示例显示了将MSP430F5529用作MSPBoot目标.
这包括引导加载程序代码和每个相应通信接口(UART、I2C或带有CC110x的SPI)的两个示例应用程序.
MSP430G2553_Examples::这些示例显示了将MSP430G2553用作MSPBoot目标.
这包括引导加载程序代码和每个相应通信接口(UART或I2C)的两个示例应用程序.
Utilities::–430TXTConverter::这是一个Perl脚本,用于将CCS输出文件转换为HostTargetApps.
请参阅节4.
1.
2.
1.
–Project_Creator::这是一个脚本,用于自动生成CCS项目脚本文件以用于创建新的MSPBoot项目,请参阅节4.
1.
1.
1.
该软件包是使用CCS7.
2.
0进行构建和测试的.
其他IDE版本和编译器不能直接支持所提供的资源,可能需要进行一些修改.
4.
1.
1创创建建新新的的MSPBoot项项目目虽然随附软件包中提供的示例在引入到MSPBoot时是一个很好的参考起点,但是您可能希望使用其他基于闪存的MSP430器件型号.
随附软件包中包含一个项目生成脚本,该脚本生成一个CCS项目脚本文件,使用此文件可创建新的MSPBoot项目.
创建后,需要通过用户输入修改几个文件,以确保新创建的源代码可用于所使用的MSP430器件型号(请参阅节4.
1.
1.
3).
www.
ti.
com.
cn构建MSPBoot19ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
1.
1.
1MSPBootProjectCreator.
plMSPBootProjectCreator::生成开始在CCS中创建MSPBoot项目所需的所有引导加载程序和应用程序源文件.
注注:需要Perl解释器才能运行此脚本.
如果需要,请访问http://www.
perl.
org/来下载解释器.
位位置置::Utilities/ProjectCreator/MSPBootProjectCreator.
pl语语法法::[]denotesanoptionalfieldAllnumbersshouldbeinhexadecimalformatMSPBootProjectCreator.
pl[-help]-hdr-lnk_file[-boot_size][-shared_vectors][-dual_image][-I2C][-UART]其中(所有数字均为十六进制值):-hdr=指定MSP430器件型号的头文件.
需要与MSPBootProjectCreator.
pl位于同一目录中.
该文件的默认路径是C: iccsvxccs_basemsp430include,其中ccsvx是所使用的ccs版本.
-lnk_file=指定所用器件的默认链接器文件.
需要与MSPBootProjectCreator.
pl位于同一目录中.
该文件的默认路径是C: iccsvxccs_basemsp430include,其中ccsvx是所使用的ccs版本.
-boot_size=可选参数.
指定引导加载程序区域的大小.
仅允许0x400的增量.
如果省略,则会使用默认的引导加载程序大小.
-shared_vectors=可选参数.
指定共享矢量的数量(十六进制).
如果未指定,则默认值为3个矢量.
-dual_image=可选参数.
指定所创建文件应启用双映像引导加载程序.
如果未指定,则认定为单映像.

-I2C,-UART=指定引导加载程序的通信接口.
必须从二者中择一.
注注:使用生成器脚本时,不支持带有CC110x的SPI,因为它具有许多特定于器件的依赖性.
如果尝试开发的是OAD应用程序,请参阅随附软件包中提供的示例.
图图10.
示示例例命命令令构建MSPBootwww.
ti.
com.
cn20ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序该脚本使用位于Linker_Templates、Vector_Templates和ProjectSpec_Templates文件夹中的模板.
可以根据需要修改这些模板的内容,但在运行脚本时这些模板必不可少.
该脚本还使用Src文件夹中的代码.
同样,可以根据需要修改这些文件的内容,但是它们的名称和文件路径必须保持相同,才能确保脚本正常运行.
4.
1.
1.
2在在CCS中中导导入入项项目目规规范范文文件件一旦执行了MSPBootProjectCreator并创建了项目规范文件,您将需要在CCS中使用该文件来创建项目.
1.
首先打开CCS并导航到Project→ImportCCSProjects.
.
.
a.
浏览到由MSPBootProjectCreator.
pl生成的项目规范文件b.
确定您将使用的应用程序模板并选择适当的项目a.
App_Shared_Comm:显示如何与引导加载程序共享通信接口b.
App_Simple:不与引导加载程序共享通信接口c.
单击Finish图图11.
在在CCS中中导导入入项项目目规规范范文文件件2.
从每个项目中删除默认的链接器命令文件.
该文件的标题为lnk_.
cmd.
3.
在按照节4.
1.
1.
3的要求修改了适当的源代码之后,您可以构建项目并在MSP430器件上对其进行编程.
www.
ti.
com.
cn构建MSPBoot21ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
1.
1.
3修修改改生生成成的的源源代代码码使用MSPBootProjectCreator时,有几个文件在创建后需要用户修改.
这些文件包括:在MSPBoot中:–main.
c–TI_MSPBoot_Config.
h–Comm/PHY_DataLink/TI_MSPBoot_CI_PHYDL_xxxx_xxx.
c–AppMgr/TI_MSPBoot_AppMgr.
c在Application(s)中:–main.
c–TI_MSPBoot_Mgr_Vectors_xxxx.
c这些文件中需要修改的部分用//TODO:标记加以标记,该标记易于搜索并在CCS中突出显示.
每个TODO也会显示在CCS任务列表中,可通过View→Other.
.
.
→General→Tasks来访问任务该列表.
每个任务都包含有关必须修改的内容以及在何处查找示例的说明.
使用项目生成脚本时,必须进行此类修改才能确保MSPBoot和应用程序代码正确运行.
4.
1.
1.
3.
1修修改改MSPBootMain.
cMSPBootmain.
c中有三个TODO项需要用户修改:定义调试接口–例如,调试接口可以是在引导加载程序中时点亮的LED或进入特定状态的GPIO初始化时钟系统–默认情况下,MSPBoot随附的示例将系统频率设置为8MHz.
MSPBoot可以在8MHz、4MHz或1MHz下运行.
有关更多详细信息,请参阅随附软件包和器件特定用户指南中提供的示例.

初始化硬件–当器件进入引导加载程序代码时,未初始化为默认值的外设寄存器会影响其正常运行.
例如,由应用程序设置为每秒中断一次的计时器将影响MSPBoot的运行.
因此,TI强烈建议将所有外设寄存器初始化为默认值.
如果是在BOR之后进入的引导加载程序,则所有外设寄存器均已设置为默认值.
4.
1.
1.
3.
2修修改改TI_MSPBoot_Config.
hTI_MSPBoot_Config.
h中有四个TODO项需要用户修改:定义MCLK频率–修改main.
c之后,代码的其他部分需要知道MCLK频率才能正常运行.
设置看门狗时间间隔–在某些应用中,如果引导加载程序无响应,可能需要将器件复位.
时间间隔长短的最大影响因素是所编程器件的闪存大小.
闪存空间越多,时间间隔必须越长.
例如,在包含128KB闪存的MSP430F5529中,时间间隔大于6秒.
如果使用看门狗计时器,则NDEBUGdefine语句也必须取消注释.
设置硬件进入条件–通常,引导加载程序提供了一种通过硬件条件进入代码的方法.
在MSPBoot中,用户可以根据引脚的状态是高电平还是低电平来做决策.
构建MSPBootwww.
ti.
com.
cn22ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序取消配置选项的注释–根据使用的通信接口,有许多不同的配置选项需要选择.
您也可以在表7中找到这方面的更多信息.
–使用I2C时:取消CONFIG_CI_PHYDL_START_CALLBACK和CONFIG_CI_PHYDL_I2C_SLAVE_ADDR的注释–使用UART时:取消CONFIG_CI_PHYDL_UART_BAUDRATE的注释–使用CC110x时:取消CONFIG_CI_PHYDL_CC1101_FREQUENCY的注释4.
1.
1.
3.
3修修改改TI_MSPBoot_CI_PHYDL_xxxx_xxx.
cTI_MSPBoot_CI_PHYDL_xxxx_xxx.
c中有三个TODO项需要用户修改:定义通信模块–根据器件和通信协议的不同,MSP430中的多个外设可以实现相同的结果.
例如,在MSP430F5529中,USCI_A0和USCI_A1模块都可以执行UART通信.
用户需要修改与此TODO关联的定义,以便根据应用要求使用适当的外设寄存器进行通信.
定义计时器模块(仅限USCI和USII2C)–在I2C通信中,可以配置可选的超时,以利用各种MSP430MCU中的计时器模块.
用户需要修改与此TODO关联的定义,以便根据应用要求使用相应的计时器.
设置GPIO引脚–根据通信接口和所使用的具体模块的不同,用户需要将GPIO设置为适当的外设功能.
有关如何设置通信接口的引脚的更多信息,请参阅特定器件数据表.
4.
1.
1.
3.
4修修改改TI_MSPBoot_AppMgr.
cTI_MSPBoot_AppMgr.
c中有一个TODO项需要用户修改.
在TI_MSPBoot_Restore_DefaultClockSettings函数中,建议用户将时钟设置设为默认值,就好像该器件刚刚复位一样.
该函数在跳转到应用程序代码之前被调用,并将确保MSPBoot时钟设置不会被带到应用程序中.
4.
1.
1.
3.
5修修改改ApplicationMain.
c根据使用的是简单应用程序模板还是共享通信应用程序模板,TODO项的数量有所不同.
但是,每个都包含TODO项,用于添加用户定义的值、函数及其原型以及中断服务例程.
这些TODO项仅需要替换为相应的用户代码.
每个模板还提供对函数TI_MSPBoot_JumpToBoot的访问,该函数允许应用程序代码跳转到引导加载程序.
4.
1.
1.
3.
6修修改改TI_MSPBoot_Mgr_Vectors_xxxx.
cTI_MSPBoot_VecRed_xxxx_App.
c中有两个TODO项需要用户修改:添加ISR原型–为了让矢量重定向能够正常工作,请为应用程序中使用的每个ISR添加外部原型.
这些将在下一个TODO中使用.
更新代理矢量表–要以应用程序中使用的ISR更新代理中断矢量表,请将"Dummy_ISR"文本替换为相应的ISR函数名称.
每行旁边的注释将显示与ISR相关的外设.
www.
ti.
com.
cn构建MSPBoot23ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
1.
2使使用用MSPBoot加加载载应应用用程程序序代代码码创建定制应用程序以使用MSPBoot加载到MSP430时,请执行以下步骤以获得最佳结果:1.
在不使用MSPBoot的情况下开发应用程序.
a.
此过程包括创建项目,使用默认的链接器文件,以及像不使用主存储器引导加载程序一样开发代码.

2.
开发应用程序后,将代码转移到应用程序模板之一.
a.
App_Simple:不与引导加载程序共享通信接口b.
App_Shared_Comm:显示如何与引导加载程序共享通信接口3.
如节4.
1.
1.
3.
6中所述修改矢量重定向文件.
4.
编辑项目属性以输出TI-TXT十六进制格式文件.
a.
ProjectProperties→MSP430HexUtility→EnableMSP430HexUtilityb.
ProjectProperties→MSP430HexUtility→OutputFormatOptions→OutputTI-TXThexformat(--ti_txt)5.
构建项目.
6.
使用项目Debug文件夹中的TI-TXT文件生成可以从主机处理器加载的C文件(请参阅节4.
1.
2.
1).
7.
将MSPBoot加载到目标器件上.
8.
如果目标器件尚未执行引导加载程序代码,必须强制目标器件进入引导加载程序.
为此,可将应用程序代码设置为在收到特定命令时跳转到引导加载程序.
请参阅提供的示例,以获取有关如何完成此操作的更多信息.
9.
将应用程序C文件加载到目标器件上.
a.
有关更多信息,请参阅随附软件包中包含的示例主机项目.
4.
1.
2.
1转转换换应应用用程程序序输输出出映映像像通过选择ProjectProperties→MSP430HexUtility,可将CCS项目设置为生成MSP430.
txt格式或Intel.
hex格式的输出,从而了解更多信息.
这两种文件都不包含CRC,但可以由主机处理器计算CRC,或者需要手动将CRC添加到生成的文件中.
无论如何计算CRC,都必须将应用程序映像转换为可供主机处理器使用的格式.
为了简化这一过程,软件包中包含image2C,这是一个Perl脚本,用于将MSP430.
txt文件或Intel.
hex文件转换为C数组.
位位置置::MSPBootUtilities430ImageConverterimage2C.
pl语语法法::[]denotesanoptionalfieldimage2C.
pl[-help]-src-dest-struct[-20_bit]-src=指定.
txt或.
hex格式的源文件.
-dst=指定.
c格式的目标文件.
-struct=C文件中数组的名称.
如果使用随附软件包中提供的主机示例,TI建议将结构命名为App1或App2.
-20_bit=可选参数.
指定创建的文件与大型存储器型号(20位)MSP430器件兼容.
如果使用大型存储器型号器件,则需要使用此命令才能正确生成文件.
如果未指定,则认定为单映像.

构建MSPBootwww.
ti.
com.
cn24ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序图图12.
image2C示示例例注注:需要Perl解释器才能运行此脚本.
如果需要,请访问http://www.
perl.
org/来下载解释器.
4.
2示示例例该软件包中包含MSP430G2553和MSP430F5529的示例.
可以使用任何MSP430板,但本应用报告中使用的示例是LaunchPad开发套件MSP-EXP430G2和MSP-EXP430F5529.
4.
2.
1LaunchPad开开发发套套件件硬硬件件A在MSP-EXP430G2中,P2.
0默认未连接到LED2.
使用I2C通信时,可以添加外部连接以进行演示B使用I2C通信时,必须在MSP-EXP430G2中拆除将P1.
6连接到LED2的跳线J5.
图图13.
目目标标板板::MSP-EXP430F5529和和MSP-EXP430G2引导加载程序和演示应用程序在LaunchPad开发套件的所有变体中使用相同的LED(LED1和LED2)表示法.
对于每种电路板衍生品,与这些I/O外设相对应的引脚分配都不同.
对于每种用途,示例的设计都旨在使主机和目标LaunchPad开发套件可以是相同的派生品,尽管有示例,但可以根据需要针对不同的配置进行修改.
www.
ti.
com.
cn构建MSPBoot25ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
2.
2CC110x硬硬件件可通过两个硬件选项将CC110x通信用于MSPBoot示例.
第一个选项是CC1101EMK868-915和BOOST-CCEMADAPTER的组合,但是最简单的解决方案是使用430BOOST-CC110L.
图14显示了这两个选项.
图图14.
CC101EMK868-915、、BOOST-CCEMADAPTER和和430BOOST-CC10L每个选项都需要两个单元,一个表示主机器件,另一个表示目标.
两种解决方案在所有LaunchPad开发套件中都兼容,并采用直接连接方式,因此不需要其他硬件即可运行所提供的示例.
如需了解有关LaunchPad开发套件和BoosterPack插件模块的生态系统的更多信息,可查看TILaunchPad开发套件.
CAUTION430BOOST-CC10L和CC101EMK868-915使用不同的参考晶体来生成适当的频率.
将CC101EMK868-915与BOOST-CCEMADAPTER一起使用时,必须将hal_spi_ref_exp5529.
h中找到的参考晶体定义从27000修改为26000,以适应从430BOOST-CC10L上27MHz晶体到CC101EMK868-915上26MHz晶体的变化.
4.
2.
3构构建建目目标标项项目目1.
选择一个目标处理器:MSP430F5529或MSP430G2553.
2.
选择通信接口:I2C、UART或带有CC110x的SPI.
3.
打开CCS并选择或创建工作区.
4.
将MSPBootCCS项目导入工作区中.
这些项目位于MSPBoot\_Examples\a.
选中Copyprojectsintoworkspace复选框以确保您所处理的项目位于工作区中而不是PC上的其他地方.
构建MSPBootwww.
ti.
com.
cn26ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序图图15.
导导入入MSPBootCCS项项目目5.
构建引导加载程序a.
选择MSPBoot项目b.
选择适当的目标配置(单映像或双映像)www.
ti.
com.
cn构建MSPBoot27ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序图图16.
选选择择目目标标配配置置6.
构建并下载.
仅应将目标LaunchPad开发套件连接到PC7.
构建这两个应用程序.
a.
选择App1_MSPBoot项目,然后选择与引导加载程序相同的配置.
图图17.
选选择择App1_MSPBoot项项目目8.
单击Build项目.
在此步骤之后会生成输出,但是将通过主机处理器转换并下载输出.
节4.
1.
2.
1说明了如何转换映像,而节4.
2.
4说明了如何使用主机演示来下载映像.
9.
对App2_MSPBoot重复步骤6构建MSPBootwww.
ti.
com.
cn28ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
2.
4构构建建主主机机项项目目可按照以下步骤构建主机项目:1.
将该项目导入CCS.
项目文件位于MSPBootHost_ExamplesHost_Examples_for__target\.
2.
在main.
c中找到位于几个地址(包括CRC地址)的定义上方的TODO项a.
更新相关的值以匹配目标器件链接器命令文件中定义的地址.
3.
将节4.
2.
3的步骤8生成的目标应用程序C文件添加到主机项目中排除的TargetApps文件夹4.
在main.
c中找到位于目标应用程序文件的定义上方的TODO项a.
更新这些文件的名称以匹配步骤3中引用的目标应用程序C文件.
5.
构建主机项目a.
选择主机项目b.
选择适当的目标配置(单映像或双映像)图图18.
在在CCS中中选选择择主主机机项项目目的的目目标标6.
构建并下载.
仅应将主机LaunchPad开发套件连接到PC.
该项目使用位于以下文件夹中的应用程序映像:Target_Apps其中的Project_Dir是主机项目所在的目录.
默认情况下,也应从主机构建中排除此文件夹.
预构建的映像包含在内,但是可以按照节4.
2.
3和节4.
1.
2.
1中所述的步骤替换或更新目标应用程序.
www.
ti.
com.
cn构建MSPBoot29ZHCAA00D–June2013–RevisedFebruary2018SLAA600—http://www-s.
ti.
com/sc/techlit/SLAA600版权2013–2018,TexasInstrumentsIncorporatedMSPBoot–适用于MSP430闪存微控制器的主存储器引导加载程序4.
2.
5运运行行示示例例主机项目将两个不同的映像发送到目标器件,并使用按钮进行用户交互.
在两个LaunchPad开发套件上都不需要以USB连接到计算机即可运行演示;但是,每个套件都应通过eZ-FET由USB连接供电,或通过连接到VCC和GND引脚的稳定3.
3V外部电源供电(在这种情况下,请确保eZ-FET断开连接).
无论使用哪种通信类型或映像模型,都将按照以下步骤运行演示:1.
如节4.
2.
3所述构建并下载MSPBoot,并构建App1和App2.
2.
根据节4.
1.
2.
1转换App1和App2.
3.
如节4.
2.
4所述构建并下载主机应用程序.
4.
根据所需的通信类型(I2C、UART或带有CC110x的SPI)连接电路板.
a.
每个主机项目都在代码的开头包含一个注释图表,其中描述了正确的连接.

5.
在两个器件中重置并执行代码.
6.
要进入目标引导加载程序模式(LED1和LED2都保持亮起状态即表示处于该模式),请执行以下步骤:a.
如果目标没有有效的应用程序(默认),则目标将保持在引导加载程序模式下.

久久网云-目前最便宜的国内,香港,美国,日本VPS云服务器19.9元/月起,三网CN2,2天内不满意可以更换其他机房机器,IP免费更换!。

久久网云怎么样?久久网云好不好?久久网云是一家成立于2017年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,久久网云目前提供有美国免费主机、香港主机、韩国服务器、香港服务器、美国云服务器,香港荃湾CN2弹性云服务器。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松快捷运用云计算!多年云计算领域服务经验,遍布亚太地区的海量节点为...

Friendhosting全场VDS主机45折,虚拟主机4折,老用户续费9折

Friendhosting发布了今年黑色星期五促销活动,针对全场VDS主机提供45折优惠码,虚拟主机4折,老用户续费可获9折加送1个月使用时长,优惠后VDS最低仅€14.53/年起,商家支持PayPal、信用卡、支付宝等付款方式。这是一家成立于2009年的老牌保加利亚主机商,提供的产品包括虚拟主机、VPS/VDS和独立服务器租用等,数据中心可选美国、保加利亚、乌克兰、荷兰、拉脱维亚、捷克、瑞士和波...

TmhHost香港三网CN2 GIA月付45元起,美国CN2 GIA高防VPS季付99元起

TmhHost是一家国内正规公司,具备ISP\ICP等资质,主营国内外云服务器及独立服务器租用业务,目前,商家新上香港三网CN2 GIA线路VPS及国内镇江BGP高防云主机,其中香港三网CN2 GIA线路最低每月45元起;同时对美国洛杉矶CN2 GIA线路高防及普通VPS进行优惠促销,优惠后美国洛杉矶Cera机房CN2 GIA线路高防VPS季付99元起。香港CN2 GIA安畅机房,三网回程CN2 ...

虚拟空间哪个好为你推荐
海外主机租用哪有国外(欧洲)虚拟主机出租cm域名注册cm域名是什么含义?价格是多少?注册地址是多少?有什么投资价值?国内ip代理谁给我几个北京或国内的IP代理啊,高分,能用的美国vps租用VPS服务器租用哪里的好?国外主机空间可以购买国外主机(空间一样吗?)来做私服吗?免费域名空间免费空间和免费域名云服务器租用租用云服务器,要注意什么?虚拟主机软件常见的虚拟机软件有哪几种?1g虚拟主机我要做一个下载资料类网站,刚买了一个虚拟主机1G的,提供商说一次,只能上传一个小于10M的文件天津虚拟主机在天津做个网站需要多少钱
免费虚拟主机申请 域名备案号查询 泛域名解析 西安电信测速 directspace BWH 特价空间 哈喽图床 英语简历模板word php探针 天猫双十一抢红包 个人免费空间 本网站在美国维护 dux 毫秒英文 网站cdn加速 共享主机 100m独享 美国免费空间 hdd 更多