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.
使用 I LOAD 下方的代码、在 CCS-8中以调试模式运行。 我运行脚本编写器。 我获得了大量 NACK 返回、在下电上电后、MSP430FR2355运行之前加载的代码、而不是通过 BSL 脚本程序加载的新代码。
代码:
#include
int main (空)
{
//
//时钟配置
//
//停止看门狗计时器
WDTCTL = WDTPW | WDTHOLD;
//根据 MCLK 的器件数据表的要求配置一个 FRAM 等待状态
//在配置时钟系统之前在8MHz 以上运行。
FRCTL0 = FRCTLPW | NWAITS_1;
_bis_SR_register (SCG0);//禁用 FLL
CSCTL1 = DCORSEL_3;// DCO 范围= 8MHz
CSCTL2 = FLLD_0 + 243;// DCOCLKDIV = 8MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0);//启用 FLL
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
_disable_interrupt ();
((((void (*)))))0x1000)();
}
您能帮我找到参考文件吗? 我打开该链接、它看起来像标准的非 FR 代码。 我完成了每个链接。
我不确定等待状态。 我们有两个人在处理这个问题、Wes 可能已经在某个地方提出了一些建议、以包括等待状态。 我仅使用这个简单的 CC8启动代码进行了测试、但没有结果。 我认为这将以默认时钟速度运行、就像使用硬件调用它一样。 我将尝试弄清楚等待状态、并使用8MHz 时钟通过两种方式进行尝试。
我们只有标准 FET 探针。 我已经尝试过、也没有想到测试线或复位会产生干扰。
我必须再次设置、但我想、Wes 提到了这些 nacks。 没有 Nack、只是没有任何数据返回。
您好、Don、
我们使用您提供的代码运行了一些测试、看起来它正常工作。 我们看到器件跳转到 BSL 并保持在该位置以等待 BSL 命令。 我们使用 SET_BAUDRATE 命令对其进行了测试。
下面是响应0x00时发送的 SET_BAUDRATE 命令的图片(这正是我们期望看到的)
这里是 FRAM BSL 用户指南的链接、您可以在其中看到针对几个不同 BSL 命令(包括 SET_BAUDRATE)的示例响应。
我可能需要一些时间才能发送您请求的文件(假设我获得了这样做的权限)。 但是、看起来它正在努力实现我们的目标
您能否向我发送您所看到的确切问题的屏幕截图?
谢谢、
Mitch
现在、我已在 A0上设置了带有串行端口的 LaunchPad 板、它成功运行了我们的代码。 然后、我转到 main 的顶部并设置一个断点。 中断后、我找到此代码、然后"移至线路"
_disable_interrupt ();
FRCTL0 = FRCTLPW | NWAITS_1;
_bis_SR_register (SCG0); //禁用 FLL
CSCTL1 = DCORSEL_3;// DCO 范围= 8MHz
CSCTL2 = FLLD_0 + 243; // DCOCLKDIV = 8MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0); //启用 FLL
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
((((void (*)))))0x1000)();
我执行到 BSL 中、在 BSL 代码设置时钟寄存器的位置之后、它会将 MOV.W 执行到计算的存储器中、在该点、TX 线看起来像是被更改为一个输入。 它永远不会被设置为 TXD 输出(保持一个输入)、并且在某个时候代码会挂起。
之前、Mitch 向我发送了一个正在运行的2355的屏幕截图、该屏幕截图是对 set Budrate 命令的响应。 我注意到 TX 线路实际上是低电平的、直到它看到数据进入、所以我复制了这个序列、然而、TX 线路仍然是浮动的。 (它在我的应用程序中传输。) 测试是在 LaunchPad 上完成的。 对于 LaunchPad、我已获取 P1.6和 P1.7、并将它们电平转换为适用于 BSL_RX 和 BSL_TX 的 RS232电平。
我无法让他们都清楚:
此外、我查看了寄存器、在进行干净重建后、这些位为1、设置如上所示:
Mitch -我取得了一些进展!
我设置了客户配置块、使其强制串行下载(与自动配置)、并得到对我设置的波特率的响应。 我怀疑 AutoConfig 在器件上无法正常工作、或者我们的 I2C 器件会导致它认为它是 I2C 传输。 一旦我跳过这个障碍、我将告诉你我是否可以实际下载软件。
结果我只能看到它尝试了一次、然后我失去了公式。 我添加了代码以使 bslConfig 正常工作。 这是您的 SLAU550P 文档第11页的内容、但有一个例外:
//
// BSL 配置
//
#define BSL_CONFIG_signature (0x695A)// BSL 配置签名
#define BSL_CONFIG_PASSWORD (0x5A00)// BSL 用户配置签名
#define BSL_CONFIG_INT_RAM_ERAGE_BY_INIT (0xFFF7)//在 BSL 调用期间擦除 Tiny RAM
#define BSL_CONFIG_INT_RAM_NOT_ERAGE_BY_INIT (0xFFFF)//(默认值)在 BSL 调用期间不会擦除 Tiny RAM
#define BSL_CONFIG_RAM_ERAGE_BY_INIT (0xFFFB)//在 BSL 调用期间擦除 RAM
#define BSL_CONFIG_RAM_NOT_ERAGE_BY_INIT (0xFFFF)//(默认值)在 BSL 调用期间不会擦除 RAM
#define BSL_CONFIG_INTERFIT_UART_I2C (0xFFFC)//启用 UART 和 I2C
#define BSL_CONFIG_INTERFIT_UART_ONLY (0xFFFD)//启用 UART
#define BSL_CONFIG_INTERFIT_I2C_ONLY (0xFFFE)//启用 I2C
#pragma RETAIN (bslConfigurationSignature)
#pragma DATA_SECTION (bslConfigurationSignature、".bslconfigsignature")
const unsigned int bslConfigurationSignature = BSL_CONFIG_signature;
pragma RETAIN (bslConfig)
#pragma DATA_SECTION (bslConfig、".bslconfig")
const unsigned int bslConfig =(BSL_CONFIG_PASSWORD |~BSL_CONFIG_INTERFIT_UART_ONLY);
我必须在 BSL_CONFIG_INTERFIT_UART_ONLY 前面添加 μ~。 不知道这是如何按照书面形式工作的。 如您所见、我的配置现在位于内存中:
这是我跳转到调用的代码:
_disable_interrupt ();
FRCTL0 = FRCTLPW | NWAITS_1;
_bis_SR_register (SCG0); //禁用 FLL
CSCTL1 = DCORSEL_3;// DCO 范围= 8MHz
CSCTL2 = FLLD_0 + 243; // DCOCLKDIV = 8MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0); //启用 FLL
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
((((void (*)))))0x1000)();
我的 SYSCONFIG0位于 x09603。 我认为这是受保护模式、但您的代码示例中有我设置位的情况、因此我不确定。 这似乎没有什么影响。
我不知道我在工作时可能做了哪些不同的事情、但仍在尝试弄清楚。
您能提供进一步的帮助吗?
它非常不稳定。 有时我可以设置波特率、有时我不能。 我还无法对任何内容进行实际编程。 现在就积极工作。
Mitch、您能评论吗?
我想我想知道您是如何连接它的:
运行上述代码、然后使用以下代码运行 BSL_Scripter:
模式 FRxx UART 9600 COM9
详细
TX_BSL_VERSION
(COM9是我的 MSP 应用 UART 1)
未返回数据。
您好、Don、
从 MSP-FET 移除带状线时、您需要使用跳线将 MSP-FET 连接到 EVM。 使用引脚2 (VCC_TOOL)供电、引脚9用于 GND、引脚12用于 TX、引脚14用于 RX。
我还注意到您正在运行 TX_BSL_VERSION 命令。 这是一个受保护的命令、这意味着您需要在器件响应此命令之前提供 RX_password。 您是否可以尝试 change_baud 比率命令、而不是尝试 TX_BSL_VERSION 命令? 这不受保护。 此命令的一些格式示例包括:
好消息。 我让它可靠地工作。 最后。 我将在 LaunchPad 上下载工作、然后再确定它在我的硬件上不工作的原因。
这是正确的 script.txt 吗?
模式 FRxx UART COM20
批量擦除
延迟200
RX_PASSWORD pass32_default.txt
RX_DATA_BLOCK NVL NEW UART.txt
此密码是否为:
pass32_default.txt
@FFE0
FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF ff ff ff ff ff ff ff ff ff (FF 关闭 FF
问
太棒了! 我们正在取得进展!
您的脚本看起来不错、但密码除外。 BSL 密码是从0xFFE0到0xFFFF 的中断向量中的数据:
您可以通过在 CCS 中对器件进行编程(但不要运行该数据)来找到此数据、然后转到 View > Memory Browser。 您应该会看到如下所示的窗口:
这是我在使用您提供的软件(注释掉用户配置)对器件进行编程时看到的数据。 您需要确保您的密码文件与此区域中的数据匹配。 我与您的代码一起使用的密码文件为:
@FFE0
46 80 46 80 46 80 46 80 46 80 46 80 46 80 46 80 46 80 80 46 80 80
46 80 46 80 46 80 46 80 46 80 46 80 46 80 32 80
问
您需要记住密码文件的端序。 首先输入低字节、然后输入高字节。 您可以看到我的最后2个数据字节(来自地址0xFFFE 和0xFFFF)是不同的、因为这是我的复位矢量数据。
很抱歉中断该线程、但我一直关注这个问题、感到困惑。 就我的教育而言、如果您使用 Launchpad 而不是 MSP-FET 连接到 FR2355、为什么不需要 BSL-Scripter 模式行上的"奇偶校验"? 我认为只有 MSP-FET 和 Rocket 提供了芯片 BSL 所需的偶校验。 LaunchPad 是否也提供了该功能?
我想同样的问题也适用于/Reset 和 Test 上的 BSL 硬件调用模式、我认为 MSP-FET 或 Rocket 提供了该模式、而不是 BSL-Scripter。 您如何使用 Launchpad 和 Scripter 实现这一目标?
尊敬的乔治:
我们不需要在 BSL-Scripter 模式行上进行"奇偶校验"、因为我们确实在使用 MSP-FET 工具。 抱歉、如果该问题在线程的前面未清除。
我们的设置为:
PC 通过 USB > MSP-FET 连接到 MSP-FET 通过跳线连接到 FR2355 Launchpad (跳线连接为 VCC、GND、TX 和 RX)。 因此、我们可以使用 MSP-FET 工具为 FR2355 Launchpad 供电。 与 FR2355 Launchpad 的所有 BSL 通信均通过 MSP-FET 完成。
谢谢、
Mitch
谢谢 Mitch。 Don Harrison 也使用 MSP-FET 吗?
我是。
"奇偶校验"的需要来自哪里?
您好、Don、
BSL 器件通常以偶校验格式进行通信。 但是、我们不必在脚本中显式设置奇偶校验、因为 MSP-FET 工具会为我们处理这一问题。
如果您想了解更多信息、请访问 BSL Scripter 用户指南的链接。 模式命令的详细信息在第2.4.1节中