This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F5659:使用 CC11x 进行 MSP430F5659 OTA 编程

Guru**** 2513185 points
Other Parts Discussed in Thread: MSP430F5659

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/763570/msp430f5659-msp430f5659-ota-programming-using-cc11x

器件型号:MSP430F5659

您好!

我正在尝试通过无线电更新 MSP430F5659的 FW。

1 TI 提供的示例演示(SLAA600D–2013年6月–2018年2月修订) 在两个 LaunchPad F5529LP 之间很好地工作。

2/我的设置:

主机:Launchpad F5529LP

目标:F5659电路板。

3 工作内容:

a)目标和主机之间的无线电通信工作良好。

c)使用 image2C.pl 实用程序解析了样本闪烁。

我将遵循一个简单的流程:

加电后、目标直接进入引导模式。

主机发送代码段、校验和、最后发送 BSL_JMP_APP_CMD。

无闪存擦除。

问题:

1/我可以看到我的目标正在接收射频数据包、执行重置等操作、但坚持在那里看不到我上传的应用正在运行。

2在内存映射配置中我是否应该考虑任何东西。

以下是我的目标配置:

#define __LARGE_DATA_MODE__
/********* //*
指定系统内存映射*/*********
/*

RAM 存储器地址*/
__RAM_Start = 0x2400;//* RAM Start */
__RAM_END = 0x63FF;//* RAM End */
*应用程序和引导加载程序之间共享的 RAM,必须保留*/
passwd = 0x2400;//应用程序发送的密码强制引导模式*/
StatCtrl = 0x2402; // Comm 使用的状态和控制字节*/
CI_State_Machine = 0x2403;// Comm 使用的状态机变量*/
CI_Callback_PTR = 0x2404;//指向 Comm 回调结构的指针*//
//*用于引导加载程序或应用目的的未保留 RAM */
_nonreserved_RAM_Start = 0x2408; /*非保留 RAM */

/*闪存地址*
/_appl_Start = 0x8000;//应用程序区域开始*
/_appl_end = 0xEFFF;//应用程序区域结束*/
_FLEX Start = 0x10000;//灵活空间开始(应用程序或下载、取决于项目)*/
_FLEX End = 0x87FFF; /*灵活空间结束(应用或下载、视项目而定)*/*


引导加载程序区域的保留闪存位置*/
__Boot_Start = 0xF000;/*引导闪存*/
__Boot_Reset = 0xFFFE;/*引导复位矢量*/
__Boot_VectorTable = 0xFF80;/*引导矢量表*/__Boot_Callend=
Share6; /*共享回调的长度(2个调用=4B (MSP430)或8B (msp430x)*/
__Boot_SharedCallback = 0xFF7A;//共享回调的开始*/
_appl_Proxy_Vector_Start = 0xEF02;//*代理中断表*/
*应用程序区域的保留闪存位置*/_appl_appl_Memory_Start
(_appl_Start = 0xEF02);//*_appl_appl_enory_appl_Start (_appl_appl_enory_appl_start = 0xCR16);
/*应用程序区域*/
_appl_CRC_Size1 =(_appl_end -_appl_Start_Memory +1);/*为 CRC 计算的较低存储器中的字节数*/
_appl_CRC_Size2 =(_Flex_end -_Flex_Start + 1);//

为 CRC 计算的较高存储器中的字节数**/_appl_crc_ Boot

=
(_Reset_Reset_Reset_Reset_Reset_2):
origin = 0x0000、length = 0x0010
peripheral_8bit:origin = 0x0010、length = 0x00F0
peripheral_16BIT:origin = 0x0100、length = 0x0100
// RAM from _nonreserved_RAM_Start -__RAM_End
RAM:origin = 0x2408、length = 0x3FF8
RAM2:origin = 0xF0000、length = 0xUSBCRAM
origin = 0x1C00,length = 0x0800
INFOA:origin = 0x1980,length = 0x0080
INFOB:origin = 0x1900,length = 0x0080
INFOC:origin = 0x1880,length = 0x0080
:origin = 0x1800,length = 0x0080
// Flash from __Boot_Start -(__Shared_Sharedbacks
:__Sharedbacks:表) origin = 0xF000、length = 0x0F6F
//来自__Boot_SharedCallback + Len (使用时)
boot_shared_callback:origin = 0xFF70,length = 0x10
FLASH2:origin = 0x10000,length = 0x78000
//来自 INT_Boot_VectorTable-__Boot_VectorTable 的引导矢
量表: origin = 0xFF80,length = 0x7E
//从__Boot_Reset-_Flash_end
复位启动复位:origin = 0xFFFE,length = 0x0002

/*
INT00:origin = 0xFF80,length = 0x0002
INT01:origin = 0xFF82,length = 0x0002
INT02:origin = 0xFF84,length = 0x0002
INT03: origin = 0xFF86,length = 0x0002
INT04:origin = 0xFF88,length = 0x0002
INT05:origin = 0xFF8A,length = 0x0002
INT06:origin = 0xFF8C,length = 0x0002
INT07:origin = 0xFF8E,length = 0x0002
INT08:origin = 0xFF90,length = 0x0002
INT09: origin = 0xFF92,length = 0x0002
INT10:origin = 0xFF94,length = 0x0002
INT11:origin = 0xFF96,length = 0x0002
INT12:origin = 0xFF98,length = 0x0002
INT13:origin = 0xFF9A,length = 0x0002
INT14:origin = 0xFF9C,length = 0x0002
INT15: origin = 0xFF9E、length = 0x0002
Int16:origin = 0xFFA0、length = 0x0002
INT17:origin = 0xFFA2、length = 0x0002
INT18:origin = 0xFFA4、length = 0x0002
INT19:origin = 0xFFA6、length = 0x0002
INT20:origin = 0xFFA8、length = 0x0002
INT21: origin = 0xFFA,length = 0x0002
INT22:origin = 0xFFAC,length = 0x0002
INT23:origin = 0xFFAE,length = 0x0002
INT24:origin = 0xFFB0,length = 0x0002
INT25:origin = 0xFFB2,length = 0x0002
INT26:origin = 0xFFB4,length = 0x0002
INT27: origin = 0xFFB6,length = 0x0002
INT28:origin = 0xFFB8,length = 0x0002
INT29:origin = 0xFFBA,length = 0x0002
INT30:origin = 0xFFBC,length = 0x0002
INT31:origin = 0xFFBE,length = 0x0002
int32:origin = 0xFFC0,length = 0x0002
INT33: origin = 0xFFC2,length = 0x0002
INT34:origin = 0xFFC4,length = 0x0002
INT35:origin = 0xFFC6,length = 0x0002
INT36:origin = 0xFFC8,length = 0x0002
INT37:origin = 0xFFCA,length = 0x0002
INT38:origin = 0xFFCC,length = 0x0002
INT39: origin = 0xFFCE,length = 0x0002
INT40:origin = 0xFFD0,length = 0x0002
INT41:origin = 0xFFD2,length = 0x0002
INT42:origin = 0xFFD4,length = 0x0002
INT43:origin = 0xFFD6,length = 0x0002
INT44:origin = 0xFFD8,length = 0x0002
INT45: origin = 0xFFDA,length = 0x0002
INT46:origin = 0xFFDC,length = 0x0002
INT47:origin = 0xFFDE,length = 0x0002
INT48:origin = 0xFFE0,length = 0x0002
INT49:origin = 0xFFE2,length = 0x0002
INT50:origin = 0xFFE4,length = 0x0002
INT51: origin = 0xFFE6,length = 0x0002
INT52:origin = 0xFFE8,length = 0x0002
INT53:origin = 0xFFEA,length = 0x0002
INT54:origin = 0xFFEC,length = 0x0002
INT55:origin = 0xFFEE,length = 0x0002
INT56:origin = 0xFFF0,length = 0x0002
INT57: origin = 0xFFF2,length = 0x0002
INT58:origin = 0xFFF4,length = 0x0002
INT59:origin = 0xFFF6,length = 0x0002
INT60:origin = 0xFFF8,length = 0x0002
INT61:origin = 0xFFFA,length = 0x0002
INT62:origin = 0xFFFC,length = 0x0002
reset: origin = 0xFFFE、length = 0x0002
*/
}

/********* /*
指定段分配到内存中*//*********
/

SECTIONS
{
.bss:{}> RAM | RAM2 /*全局和静态 VARS */
.data:{}> RAM | RAM2 /*全局和静态 VARS */
.sysmem:{}> RAM /*动态内存分配区域*/
.stack: {}> RAM (高)/*软件系统堆栈*/

.text:{}>FLASH2 /* code */
.text:_ISR:{}> FLASH | FLASH2 /* ISR 代码空间*/
.cinit:{}> FLASH /*初始化表*/
.const:{}> FLASH /*常量数据*/

.cio: {}>RAM /* C I/O 缓冲区*/

.pinit:{}> FLASH /* C++构造函数表*/
.init_array:{}> FLASH /* C++构造函数表*/
.mspabi.exidx:{}> FLASH /* C++构造函数表*/
.mspabi.extab:{}> FLASH /* info/*:/* infoTables

: {}> INFOA /* MSP430 info flash memory segments */
.infoB:{}> INFOB
.infoC:{}> INFOC
.infoD:{}> INFOD

.boot_app_vectors:{}> boot_shared_callback
/* MSP430 interrupt vectors */
.boot_vector_table:{}> INT_vector_table

…… 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为了便于将来参考、在使用语法 Highlighter 工具(如下所示)发布到论坛时、代码更易于阅读 ")找到"插入代码、附加文件等..." 单击"回复"按钮后显示的链接。

    感谢您的详细博文。 您对 SLAA600 代码进行了多少更改? 如果开箱即用效果良好、则看起来这些更改导致了问题、因此在正确工作之前、将更改反向可能会有所帮助。 我看到您正在使用 MSP430F5659作为目标。 我建议为 F5529目标采用 SLAA600代码、只需进行必要的更改即可改用 F5659 -使所有其他功能保持不变。 我将从第4.2.4节"在 SLAA600中构建主机项目"开始。 将 F5529项目导入 CCS 后、请确保完成本节中提到的所有待办事项。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 James、
    好的、谢谢。