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.

[参考译文] MSP430F5418A:有关引导加载程序的问题

Guru**** 2535150 points
Other Parts Discussed in Thread: MSP430F5418A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/936966/msp430f5418a-questions-on-bootloader

器件型号:MSP430F5418A
主题中讨论的其他器件: MSP430F5438A

您好!

我想通过无线主机 CC1352以 OTA 方式升级 MSP430固件、在学习 MSPBSL 后、我有一些问题

1、由于电路板上的 MSP430可用 UART 引脚不是 P1.1和 P1.2、是否可以在自定义引导加载程序中将 BSL UART 引脚更改为 P5.6和 P5.7?

2、如果我从运行应用的 MSP430调用 BSL、我可以在 BSL 主机驱动程序中跳过 BSL 进入序列(通过 RST 和 TEST 引脚)吗? 我们希望 BSL UART 协议只使用 UART Tx、Rx 2引脚;

3、如何将自定义引导加载程序编程到 MSP430?

4、如何访问 BSL 源代码? 链接 MSPBSL_CustomBSL430 返回以下错误:

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

    您好、Siyou、我将在错误链接 MSPBSL_CustomBSL430上检查问题 、并稍后回复。 谢谢!

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

    您好、Siyou、

    链接 MSPBSL_CustomBSL430 已可用。

    请查阅 闪存器件 BSL 上的用户指南《MSP430Tm闪存器件引导加载程序(BSL)》

    请在 5xx/6xx 和 G2器件上查看 www.ti.com/.../slaa450g.pdf 自定义基于闪存的引导加载程序

    谢谢!

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

    您好、Xiaodong、

    感谢您更新链接、我现在可以获取代码。

    您还能帮助确认问题1、我们需要确保我们的硬件设计能够满足 BSL 要求。

    关于 SLAA450G、我的理解是答案应该是"是"、对吧?

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

    您好、Siyou、

    MSP430F5xx 和 MSP430F6xx 器件随附标准 TI BSL。

    由于 TI BSL 在闪存存储器中编程、因此可以对 BSL 进行重新编程和定制。

    我认为可以在 MSP430F5418A 上的定制引导加载程序中将 BSL UART 引脚更改为 P5.6和 P5.7。

    谢谢!

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

    您好、Xiaodong、

    我使用 UART P5.6和 P5.7尝试了定制的 BSL、但失败了、请查看以下过程并指出我缺少的内容。

    1、在《CCS_v7_MSP430F543xA_TA_UART》项目中将 UART 端口引脚修改为 P5.6和 P5.7、然后将其下载到器件;

    2、将测试应用下载到器件、在此测试应用中、它只需跳转到 BSL:

    void (* JumpToBSL)(void);
    _disable_interrupt ();//禁用中断
    JumpToBSL=(void (*)(0x1000);
    JumpToBSL();//跳转到 BSL 
    
    

    3、将 P5.6和 P5.7连接到 PC 串行工具,参数为“9600、8、1、even、none”。 PC 串行工具将 GetBSLVersion 命令“80 01 00 19 E8 62”发送到设备,但设备 UART 没有任何响应。

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

    器件型号:MSP430F5418A

    您好!  

    如  https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/936966中所述、我想将 BSL UART 引脚更改为 P5.6和 P5.7、但如果运气不好、您能指导我如何实现它吗?

    以下是我的测试 程序:

    1、在《CCS_v7_MSP430F543xA_TA_UART》项目中将 UART 端口引脚修改为 P5.6和 P5.7、构建并下载到器件中;

    2、将测试应用下载到器件、在此测试应用中、它只需跳转到 BSL:

    _disable_interrupt ();//禁用中断
    ((void (*)() 0x1000)(); 

    3、 将 P5.6和 P5.7连接到 PC 串行工具,参数为“9600、8、1、even、none”。 PC 串行工具将 GetBSLVersion 命令“80 01 00 19 E8 62”发送到设备,但设备 UART 没有任何响应。

    PS:我尝试了两个链接器命令文件、它们的结果与步骤3相同。

    内存
    {
    SFR :origin = 0x0000、length = 0x0010
    外设_8位 :origin = 0x0010,length = 0x00F0
    外设_16BIT :origin = 0x0100,length = 0x0100
    RAM :origin = 0x1C00,length = 0x4000
    INFOA :origin = 0x1980、length = 0x0080
    信息 :origin = 0x1900,length = 0x0080
    信息系统 :origin = 0x1880、length = 0x0080
    信息系统 :origin = 0x1800,length = 0x0080
    ZAREA :origin = 0x1000、length = 0x0010
    BSL430_VERSION_VENDOR:origin = 0x1010,length = 0x0001
    BSL430_VERSION_CI :origin = 0x1011,length = 0x0001
    BSL430_VERSION_API :origin = 0x1012,length = 0x0001
    BSL430_VERSION_PI :origin = 0x1013,length = 0x0001
    ZAREA_CODE :origin = 0x1014,length = 0x002E
    BSLSIG :origin = 0x17F0、length = 0x000C
    JTAGLOCKKEY :origin = 0x17FC,length = 0x0004
    闪存 :origin = 0x5C00,length = 0xA380
    FLASH2 :origin = 0x10000、length = 0x15BF8 //边界已更改以修正 CPU47 */
    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
    内部16. :origin = 0xFFA0、length = 0x0002
    INT17. :origin = 0xFFA2、length = 0x0002
    INT18 :origin = 0xFFA4、length = 0x0002
    INT19. :origin = 0xFFA6、length = 0x0002
    INT20. :origin = 0xFFFA8、length = 0x0002
    INT21. :origin = 0xFFAA、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
    复位 :origin = 0xFFFE,length = 0x0002
    }/*********
    
    /*
    指定段分配到内存中 */
    ********* /
    
    SECTIONS
    {
    .bss :{}> RAM /*全局和静态变量 *
    .data :{}> RAM /*全局和静态变量 *
    .TI.noinit:{}>RAM /*用于#pragma noinit *
    sysmem :{}> RAM /*动态内存分配区域*/
    堆栈 :{}> RAM (高) /*软件系统堆栈 */
    
    .ZAREA :{}> ZAREA
    .bSL430_version_vendor:{}> BSL430_version_vendor
    .bSL430_version_ci :{}> BSL430_version_CI
    .bSL430_version_API:{}> BSL430_version_API
    .bSL430_version_PI :{}> BSL430_VERSION_PI
    .ZAREA_CODE:{}> ZAREA_CODE
    .bSLSIG :{}> BSLSIG
    .JTAGLOCKKEY:{}> JTAGLOCKKEY
    
    #ifndef __LARGE_CODE_MODE__
    .text :{}>闪存 /*代码 */
    #else
    .text :{}>> FLASH2 | FLASH /*代码 */
    #endif
    .text:_ISR:{}> FLASH /* ISR 代码空间 *
    .cinit :{}>闪存 /*初始化表 */
    #ifndef __large_data_model__
    .const :{}>闪存 /*常量数据 */
    #else
    .const :{}>> FLASH | FLASH2 /*常量数据 */
    #endif
    .cio :{}> RAM /* C I/O 缓冲器 *
    
    .pinit :{}>闪存 /* C++构造函数表 *
    二进制文件 :{}>闪存 /*引导时初始化表*/
    init_array:{}> FLASH /* C++构造函数表 *
    .mspabi.exidx:{}>闪存 /* C++构造函数表 *
    .mspabi.extab:{}> FLASH /* C++构造函数表 */
    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    #ifndef __large_code_model__
    .TI.ramfunc:{} load=flash,run=RAM,table (BINIT)
    其他
    .TI.ramfunc:{} load=flash | FLASH2、run=RAM、table (BINIT)
    endif
    #endif #endif #endif
    
    
    信息 A :{}>INFOA /* MSP430 INFO 闪存段*/
    信息 B :{}>INFOB
    .infoC :{}>INFOC
    信息 D :{}>INFOD
    
    /* MSP430中断矢量 *
    int00 :{} > INT00
    .int01 :{} > INT01
    .int02 :{} > INT02
    .int03 :{} > INT03
    .int04 :{} > INT04
    .int05 :{} > INT05
    .int06 :{} > INT06
    .int07 :{} > INT07
    .int08 :{} > INT08
    .int09 :{} > INT09
    INT10 :{} > INT10
    INT11 :{} > INT11
    INT12. :{} > INT12
    INT13. :{} > INT13
    INT14 :{} > INT14
    .int15. :{} > INT15
    .int16. :{} > Int16
    .int17. :{} > INT17
    .int18. :{} > INT18
    .int19. :{} > INT19
    .int20. :{} > INT20
    .int21. :{} > INT21
    .int22. :{} > INT22
    .int23. :{} > INT23
    .int24. :{} > INT24
    .int25. :{} > INT25
    .int26. :{} > INT26
    .int27. :{} > INT27
    .int28 :{} > INT28
    .int29 :{} > INT29
    .int30 :{} > INT30
    .int31. :{} > INT31
    .int32. :{} > Int32
    .int33. :{} > INT33
    .int34. :{} > INT34
    .int35. :{} > INT35
    .int36. :{} > INT36
    .int37. :{} > INT37
    .int38. :{} > INT38
    .int39. :{} > INT39
    int40. :{} > INT40
    RTC :{*(.int41)}> INT41 type = VECT_init
    端口2 :{*(.int42 )}> INT42 type = VECT_init
    .int43. :{} > INT43
    .int44. :{} > INT44
    USCI_B1 :{*(.int45 )}> INT45 type = VECT_init
    USCI_A1 :{*(.int46)}> INT46 type = VECT_init
    端口1 :{*(.int47 )}> INT47类型= VECT_INIT
    Timer1_A1:{*(.int48)}> INT48 type = VECT_init
    Timer1_A0:{*(.int49)}> INT49类型= VECT_INIT
    DMA :{*(.int50)}> INT50类型= VECT_INIT
    .int51. :{} > INT51
    .int52. :{} > INT52
    TIMER0_A1:{*(.int53)}> INT53 type = VECT_INIT
    TIMER0_A0:{*(.int54)}> INT54 type = VECT_INIT
    ADC12. :{*(.int55)}> INT55 type = VECT_init
    USCI_B0 :{*(.int56)}> INT56 type = VECT_init
    USCI_A0 :{*(.int57 )}>INT57 type = VECT_init
    WDT :{*(.int58 )}> INT58 TYPE = VECT_INIT
    TIMER0_B1:{*(.int59 )}> INT59 TYPE = VECT_INIT
    TIMER0_B0:{*(.int60 )}> INT60 TYPE = VECT_INIT
    联合国管理信息系统 :{*(.int61 )}>INT61 type = VECT_INIT
    SYSNMI :{*(.int62)}> INT62 type = VECT_init
    复位 :{} >复位/* MSP430复位矢量 */
    }/
    
    ********* /*
    包括外设内存映射 */
    ********* /-l
    
    msp430f5418a.cmd
    

    部分
    {
    .bss :{}> RAM /*全局和静态 VARS *
    .data :{}> RAM /*全局和静态 VARS *
    sysmem :{}> RAM /*动态内存分配区域*/
    堆栈 :{}> RAM (高) /*软件系统堆栈 */
    
    .ZAREA :{}> ZAREA
    .bSL430_version_vendor:{}> BSL430_version_vendor
    .bSL430_version_ci :{}> BSL430_version_CI
    .bSL430_version_API:{}> BSL430_version_API
    .bSL430_version_PI :{}> BSL430_VERSION_PI
    .ZAREA_CODE:{}> ZAREA_CODE
    .bSLSIG :{}> BSLSIG
    .JTAGLOCKKEY:{}> JTAGLOCKKEY
    
    .text :{}>>闪存 /*代码 *
    .text:_ISR:{}> FLASH /* ISR 代码空间 *
    
    .cinit :{}>闪存 /*初始化表 *
    .const :{}>闪存 /*常量数据 *
    
    .cio :{}> RAM /* C I/O 缓冲器 *
    
    .pinit :{}>闪存 /* C++构造函数表 *
    init_array:{}> FLASH /* C++构造函数表 *
    .mspabi.exidx:{}>闪存 /* C++构造函数表 *
    .mspabi.extab:{}> FLASH /* C++构造函数表 *
    
    信息 A :{}>INFOA /* MSP430信息闪存段*/
    信息 B :{}>INFOB
    .infoC :{}>INFOC
    信息 D :{}>INFOD
    
    /* MSP430中断矢量 *
    int00 :{} > INT00
    .int01 :{} > INT01
    .int02 :{} > INT02
    .int03 :{} > INT03
    .int04 :{} > INT04
    .int05 :{} > INT05
    .int06 :{} > INT06
    .int07 :{} > INT07
    .int08 :{} > INT08
    .int09 :{} > INT09
    INT10 :{} > INT10
    INT11 :{} > INT11
    INT12. :{} > INT12
    INT13. :{} > INT13
    INT14 :{} > INT14
    .int15. :{} > INT15
    .int16. :{} > Int16
    .int17. :{} > INT17
    .int18. :{} > INT18
    .int19. :{} > INT19
    .int20. :{} > INT20
    .int21. :{} > INT21
    .int22. :{} > INT22
    .int23. :{} > INT23
    .int24. :{} > INT24
    .int25. :{} > INT25
    .int26. :{} > INT26
    .int27. :{} > INT27
    .int28 :{} > INT28
    .int29 :{} > INT29
    .int30 :{} > INT30
    .int31. :{} > INT31
    .int32. :{} > Int32
    .int33. :{} > INT33
    .int34. :{} > INT34
    .int35. :{} > INT35
    .int36. :{} > INT36
    .int37. :{} > INT37
    .int38. :{} > INT38
    .int39. :{} > INT39
    int40. :{} > INT40
    RTC :{*(.int41)}> INT41 type = VECT_init
    端口2 :{*(.int42 )}> INT42 type = VECT_init
    .int43. :{} > INT43
    .int44. :{} > INT44
    USCI_B1 :{*(.int45 )}> INT45 type = VECT_init
    USCI_A1 :{*(.int46)}> INT46 type = VECT_init
    端口1 :{*(.int47 )}> INT47类型= VECT_INIT
    Timer1_A1:{*(.int48)}> INT48 type = VECT_init
    Timer1_A0:{*(.int49)}> INT49类型= VECT_INIT
    DMA :{*(.int50)}> INT50类型= VECT_INIT
    .int51. :{} > INT51
    .int52. :{} > INT52
    TIMER0_A1:{*(.int53)}> INT53 type = VECT_INIT
    TIMER0_A0:{*(.int54)}> INT54 type = VECT_INIT
    ADC12. :{*(.int55)}> INT55 type = VECT_init
    USCI_B0 :{*(.int56)}> INT56 type = VECT_init
    USCI_A0 :{*(.int57 )}>INT57 type = VECT_init
    WDT :{*(.int58 )}> INT58 TYPE = VECT_INIT
    TIMER0_B1:{*(.int59 )}> INT59 TYPE = VECT_INIT
    TIMER0_B0:{*(.int60 )}> INT60 TYPE = VECT_INIT
    联合国管理信息系统 :{*(.int61 )}>INT61 type = VECT_INIT
    SYSNMI :{*(.int62)}> INT62 type = VECT_init
    复位 :{} >复位/* MSP430复位矢量 */
    }/
    
    ********* /*
    包括外设内存映射 */
    ********* /-l
    
    msp430f5438a.cmd
    

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

    我想问题是什么  文件不正确。

    是否有任何 TI 专家可以提供  自定义 MSP430F5418A 引导加载程序?