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.

[参考译文] CCS/MSP430F6726:MSP430F6726 I2C 定制 BSL

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F5438A, MSP430F6726, MSP430F6736, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/703814/ccs-msp430f6726-msp430f6726-i2c-customized-bsl

器件型号:MSP430F6726
主题中讨论的其他器件:MSP430F5438AMSP430F6736UNIFLASH

工具/软件:Code Composer Studio

我正在尝试为 MSP430F6726定制 I2C BSL、我在 这里找到了一些示例代码(http://www.ti.com/tool/MSPBSL) 以供参考。 我没有找到任何有关将 BSL 代码配置到闪存的 CCS 命令文件的文档。 有人能帮我详细了解需要在 CCS 工具的默认命令文件中进行哪些更改吗?  

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

    您有哪个版本的定制 BSL 下载? 我们最近发布了新版本的定制 BSL 代码、其中提供了可能对您有用的特定 CCS 示例。 版本1_01_00_00是最新版本、已于本周发布。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace H:

    感谢您的回答。  我已经下载了参考代码并将其放入其中。

    我已打开"CCS_v7_MSP430F543xA_TA_UART"项目并将其构建。 我的工作空间中生成的.txt 与位于该文件夹"MSP430BSL_1_01_00_00\Released_BSL_Images\MSP430F5438A_Family"中的发布.txt 文件不同。 我认为这两种方法应该是相同的。 我在这里附加了这两个文件以供参考。  我不理解这两者之间的区别。  

    我使用的是 CCS 版本:7.3.0.00019和编译器版本 TI V16.4.4。  

    CCS 工具中需要的任何其他设置。  我的最终目标是为 MSP430F6726制作 I2C BSL。 根据您的输入、我将针对 I2C 项目进行相应的更改。  

    e2e.ti.com/.../8877.BSL.00.07.05.04.txte2e.ti.com/.../6330.MSP430F5438A_5F00_BSL.txt

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

    Niranjan、

    与通过下载中的二进制文件存储的二进制文件相比、您将无法从项目编译中获得相同的二进制文件。 自定义 BSL 文件夹中提供的二进制文件是在制造时在芯片上提供的内容的准确副本。 此时使用的编译器版本和 IDE 版本以及提供的 BSL 源代码之间会有差异。 我们不断更新 BSL 源代码以进行改进和错误修复、但不要更新提供的二进制文件、因为我们希望确保客户始终可以重新刷写到"刚好离开汇编行"状态。  

    至于将外设接口更改为 I2C、源代码在定制 BSL 下载中提供、并在随附的应用手册中提供一些示例和文档。  

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

    Jace、

    是的、我知道基于代码二进制的改进、将会发生变化。

    但在共享的 MSP430F5438A.txt 代码中,数据超过2KB 以上。 最大 BSL 代码内存为2KB。

    我不确定如何减小代码大小、使其适合2KB 大小。

    我将在调试活动模式下构建项目、优化级别为4。  

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

    Niranjan、您好!

    感谢您在此提供更多信息。 以前不清楚您的问题到底是什么。 为了便于记录、自定义 BSL 下载包中包含的原始二进制文件历来使用 IAR 编译。

    我刚刚在 CCSv8中使用编译器 TIv18.1.0.LTS 编译了这个相同的项目,我能够编译到低于2k 标记的位置。 这是在4级进行优化时进行的、通过设置"0"进行大小与速度之间的关系、强调对大小进行优化。  此外、我关闭了 CCS 执行的零初始化。 为此、请打开项目属性并导航至"Build"->"MSP430 Linker"->"Advanced Options"-> Miscellaneous。 这是此页面上的最后一个选项。 选择"关闭"。

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

    尊敬的 Jace:

    我尝试了相同的方法、并将其编译为低于2k 标记、这是使用 CCS_v7_MSP430F543xA_TA_UART 项目进行的。

    但是、当我使用 这个 CCS_v7_MSP430F522x_I2C 项目尝试相同的设置时、它仍然超过2k 标记。

    实际上、我需要 MSP430F6726/MSP430F6736的 I2C-BSL 、我已将这个 CCS_v7_MSP430F522x_I2C 项目作为参考并更改了这个 MSP430F6736器件型号的设置。  详情如下:

    1) 1)工具更改

     a.器件型号(随附配置屏幕)

     b.命令文件(随附是 MSP430F6736的命令文件(lnk_msp430f6736_BSL)、我已将文件扩展名更改为.txt、因为.cmd 未上传)

    2) 2)代码更改

     A. BSL_Device_File.h

         //特定于器件的定义

        #define MUS_ERASE_DELAY 0x8000

        #define interrupt_vector_start 0xFF80

        #define interrupt_vector_end 0xFFFF

        #define SECURE_RAM_START 0x1C00

        #define TX_PORT_SEL P2SEL

        #define TX_PORT_DIR P2DIR

        #define RX_PORT_SEL P2SEL

        #define RX_PORT_DIR P2DIR

        #define RXD   BIT1            // P2.1上的 RXD

        #define TXD   BIT0            // P2.0上的 TXD

        #define DCO_SPEED 8000000

        #define ACLK_SPEED 32768

        #define UCZNCTL1 UCB0CTL1

        #define UCZNCTL0 UCB0CTL0

        #define UCZNI2COA UCB0I2COA0

        #define UCZNIE  UCB0IE

        #define UCZIV  UCB0IV

        #define UCZRXBUF UCB0RXBUF

        #define UCZTXBUF UCB0TXBUF

    e2e.ti.com/.../lnk_5F00_msp430f6736_5F00_bsl_5F00_cmd.txt

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

    Niranjan、您好!

    我向 Custom BSL Creator 介绍了这一点。 CCS 中的 I2C 实现似乎不会编译到小于2k 的内存中。 这是由于 CCS 编译器内的限制。 如果您的应用无法容忍更多的 BSL 空间、则建议使用 IAR 编译定制 BSL。 (过去、IAR 提供了可实现此目的的有限大小免费版本。) 或者、如果您想留在 CCS 中、可以剪切某些功能或命令以减小大小。  

    您可以在此处获取 CCS +自定义 BSL 编译大小中的反馈。 我们将在将来向定制 BSL 包添加注释、以引起注意。 很抱歉造成混淆。   

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

    尊敬的 Jace:

    感谢您的澄清。

    我在这里还有几个问题。

    图像超过2k 还可以吗?

    如果将映像拆分为两 个区域(BSL 存储器和主代码存储器)、那么它是否仍然可以正常工作??

    "如果您的应用无法容忍更多的 BSL 空间"

    我还有很多用于 BSL 的主存储器空间、您建议在存储器中包含 FLASH2 (请参阅 FLASH2的.cmd 文件)区域吗? 我认为 Bank3 位于0x01C000。  

    您能否确认 BSL_Device_File.h 中所做的上述共享更改是否正确?

    感谢你的帮助。  

    此致

    Niranjan  

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

    是的、图像超过2k 正常。 BSL 仍将起作用、因为链接器应该可以正常链接所有内容。 这种方法没有已知问题、我们的工具团队最近对其进行了测试、以确保一切正常。

    我确实看到了在未来器件更新方面对方法进行的一些权衡/问题。 您需要非常清楚地了解您的文档、以确保未来的更新(通过 BSL 或 JTAG)不会覆盖 BSL 区域中不存在的额外部分。 如果您通过 BSL 向器件写入覆盖该额外 BSL 部分的映像、则可能会遇到问题。 然后、您将损坏 BSL 接口、因为 BSL 的一部分将被您的应用程序覆盖。

    至于检查您的命令文件、我不是最好的来源。 请参阅以下用户指南以了解更多信息。 http://www.ti.com/lit/slau132
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    感谢您的澄清。

    我删除了一些函数(不需要的 BSL 命令)并使其在2k 标记中进行编译。

    我使用 UNIFLASH 将其刷写到器件中、它会擦除所有内容并将新的 BSL 映像写入 BSL 存储器。

    附加的是 UNIFLASH 设置。

    如文档 slaa450e.pdf 中所述。 BSL 应该从0x1000地址开始、用户应用程序我们可以通过调用0x1000地址(如(void (*)() 0x1000)(); (在调用此地址之前禁用中断)来跳转到 BSL 代码。

    但是地址0x1000在刷写 BSL 映像(CUSTOMBSL.txt )后没有任何内容,因为文件没有要写入的任何数据。 CUSTOMBSL.txt 文件的数据从0x1010开始。  随附的是 CUSTOMBSLtxt 文件。

    我尝试保留0x1000到0x100F (ZAREA)之间的现有数据、并写入0x1010中未发生的新映像。

    请提供您的意见。   

     e2e.ti.com/.../CUSTOMBSL.txt

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

    以下是其他信息、当我调试 BSL 代码时、我没有获得 I2C 中断。

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

    由于该区域的存储器保护、调试 BSL 区域中的自定义 BSL 时通常会遇到问题。 要调试定制 BSL、建议将定制 BSL 代码刷写到主存储器中。 如需更多信息、请参阅自定义 BSL 应用手册中的第1.5节。 (http://www.ti.com/lit/slaa450)