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.

[参考译文] MSPM0G3519:固件升级过程

Guru**** 2874300 points

Other Parts Discussed in Thread: MSPM0G3519, MSPM0C1104, UNIFLASH, MSPM0G3518

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1619356/mspm0g3519-firmware-upgrade-procedure

器件型号: MSPM0G3519
主题中讨论的其他器件: MSPM0C1104UNIFLASHMSPM0G3518

您好:

我使用的是 MSPM0G3519 LaunchPad。 我想进行基于 OTA 的固件升级、 我有 2 个代码。 第 1 页是引导加载程序代码、我在其中更改了 linker.cmd 文件中的闪存区域  

闪存中      (Rx) :origin = 0x00000000、length = 0x00008000。
 
在此引导加载程序代码中、我通过蓝牙接收.bin 文件、并存储在从 0x00008000 开始的位置。 完成后、我想检查应用程序是否有效、如果有效、我想跳转到应用程序。
int is_application_valid (void)
  uint32_t stack =*(uint32_t *) app_vector_address;
  //_BKPT (0);
  // if ((stack & 0xFFF00000)== 0x20200000)
  if ((stack & 0x2FFE0000)== 0x20200000){
    JUMP_FLAG = 1;
    结果= 1;
  }
    
  其他{

    结果= 2;
  }
  返回结果;
}

void jump_to_application (void)
  uint32_t *矢量表=(uint32_t *) app_vector_address;

  uint32_t appStack =矢量表[0];
  uint32_t appReset =矢量表[1];

  __disable_irq();

  /*禁用所有 NVIC 中断*/
  for (int i = 0;i < 8;i++)
  {
    NVIC->FFFFFF[i]= ICER; //禁用
    NVIC->ICPR[i]= 0xFFFFFFFF; //清除挂起
  }

  /*禁用 SysTick */
  SysTick ->CTRL = 0;

  SCB->VTOR = app_vector_address;
  __set_MSP (appStack);

   void (* appEntry)(void)=(void (*)(void)) appReset;
  appEntry ();
}
 
链接器.cmd 文件如下所示。
移动数据
  闪存中      (Rx) :origin = 0x00008000、length = 0x00078000
  SRAM_BANK0   (rwx):origin = 0x20200000、length = 0x00010000
  SRAM_BANK1   (RWX):origin = 0x20210000、length = 0x00010000
  BCR_CONFIG   (R) :origin = 0x41C00000、length = 0x000000FF
  BSL_CONFIG   (R) :origin = 0x41C00100、length = 0x00000080
  数据       (r) :origin = 0x41D00000、length = 0x00004000
}

很重要
  .intvecs: {} > 0x00008000
  .text :palign(8){}> flash
  .const : palign(8){}> flash
  .cinit :palign (8){}> FLASH
  .pinit :palign(8){}> flash
  .rodata : palign(8){}> flash
  .arm.exidx  :palign(8){}> flash
  .init_array :palign(8){}> flash
  .binit    : palign(8){}> flash
  .TI.ramfunc :load = FLASH、palign (8)、run=SRAM_BANK0、table (BINIT)

  .vtable: > SRAM_BANK0
  .args : > SRAM_BANK0
  .data : > SRAM_BANK0
  .bss  : > SRAM_BANK0
  .sysmem : > SRAM_BANK0
  .TrimTable: > SRAM_BANK0
  .stack : > SRAM_BANK0 (high)

  .bCRConfig :{}> BCR_config
  .BSLSConfig :{}> BSL_config
  .databank :{}>数据
}
binfile_storing.pngbin_hex_convert.png
 
在应用程序代码 main() 中、我使用了  
SCB->VTOR = 0x00008000;
我构建工程并生成.bin 文件。 我附上了.bin 文件的屏幕截图、该文件转换为十六进制视图后、显示了存储此值的内存视图。  当我检查 is_application_valid() 时、在 if 条件下存储后、它进入了一些默认的处理程序、我无法退出循环。 我不理解正在发生的事情。 我也在共享 main() 函数。  
内部 main (void)
  SYSCFG_DL_init ();
  _enable_irq();

  DL_UART_Main_ENABLE (UART_1_INST);
  NVIC_EnableIRQ (UART_1_INST_INT_IRQN);

  delay_ms (3000);

  /*if(is_application_valid())
  {
    __ BKPT (0);
    jump_to_application();
  }*/

  //请勿在此处擦除

  while (1)
  {
    DELAY_ms (1);
    lastReceiveTime++;

    IF(lastReceiverveTime > 2000)
    {
      if (rxIndex >= 8)
      {
        uint16_t fullBlocks = rxIndex / 8;

        for (int i = 0;i < fullBlocks * 8;I += 8)
        {
          flash_write_block (&rxBuffer[i]);
        }

        rxIndex = 0;
      }
if (lastReceiverveTime > 20000){
      __disable_irq();

      if(is_application_valid())
      {
        __ BKPT (0);
        jump_to_application();
      }
}
    }
  }
}
 
我想知道这是进行固件升级的正确方法吗? 还是有其他方法可以做到这一点?
我需要这方面的指导。 情况紧急。 我就不相信了。“
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我这边的方法看起来不错。

    •  is_application_valid(): 哪个代码会导致您输入 default_hander? 请检查 CPU 是否可以跳转到此代码行。 并读取堆栈值以检查其是否为 0x20210000
    • 请在引导加载程序代码中定义 HARD_FAULT 和 NMI 处理程序、以检查具体导致 MCU 进入 DEFAULT_HANDLER 的原因。
    • 您共享的 main() 函数是应用程序项目还是引导加载程序项目?  

    此致、

    Zoey

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

    您好、Zoey、

    我来到 is_application_valid (),我得到的堆栈= 0x20210000。 因此、正如我所说、If condition 应该为 true、它应该返回 result =1、但我不进入循环、方法是保留断点 I 进行检查、在 If condition 之后、当我进入它时、在 default_handler 中进入一些 while 循环。  

    我共享的 main() 函数是 bootloader。

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

    它是如此奇怪。  每次调用此函数时、它是否会进入默认处理程序?  

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

    是的

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

    是的、您能建议其他更好的方法吗? 因为我无法解决这个问题。 我希望能帮我解决问题

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

    您好、

    您可以在 ……\ti\mspm0_sdk_2_09_00_01\examples\nortos\LP_MSPM0C1104\bsl\flash_bsl -- flashbsl_invoking.c 中找到演示代码

    这是我们始终使用的:
    blInvocationState_t blInvocation_checkBlankDevice (void)
      //检查应用程序重置矢量是否存在
      if ((*((uint32_t *)(MAIN_APP_RESET_VECTOR_ADDR)))== BLANK_VALUE){
        返回 BL_INCTION_BLANK_DEVICE;
      }其他{
        返回 BL_INCTION_FALSE;
      }
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、谢谢。 我会详细讲解一下、并告诉您。 让螺纹打开。

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

    您好、Zoey、  

    这不适用于 MSPM0G3519。 你能建议一些更好的方式吗? 是否可以将.bin 文件存储在仿真 EEPROM 中、并且在通电时是否能够从 EEPROM 存储值引导?

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

    您好、

    您可以将其迁移到 M0G3519。  

    .bin 文件太大、无法存储为仿真的 EEPROM。 您是否可以在我们的 SDK 中引用辅助 BSL 代码(我共享的 C1104 演示代码还将包含空白检查、G3519 演示代码将在引导代码中具有空白检查,并且只需要闪存中的引导加载程序项目)。

    此致、

    Zoey  

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

    好的。 G3519 有许多 BSL 代码。 我应该检查哪一个? 请提出建议。 我将在这里共享代码列表。 请提出一个建议。  

    我的设置类似、我使用的是 MSPM0G3519 LaunchPad、并且我已将 JDY-525M 蓝牙模块连接到 UART1。 我使用 移动设备中的串行蓝牙终端传输 GPIO 切换代码的.bin/.hex 文件。

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

    您好、  

    我尝试使用 bsl_software_invoke_app_demo_uart 代码、我刷写了代码、一个蓝色的 LED 开始闪烁、我按了 S2、然后绿色的 LED 闪烁并停止、现在我开始闪烁 gpio_toggle_output 代码、即.hex 文件。 编程成功、我现在希望 gpio_toggle 代码可以运行、但它没有运行。 即使重新连接了硼酸盐、也没有运行代码。 电路板损坏了。 再次编程之前、我需要对电路板进行复位。

    请帮我解决这个问题。

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

    您好、

    您是指成功刷写 MCU?? 您是如何确认的? 您的引导加载程序协议是否与我们的 ROM BSL 相同?

     BSL_software_invoke_app_demo_uart 使用我们的 ROM 引导加载程序。 如果您有自己的协议、请参阅  。 并修改演示代码、如 UART 引脚、协议等。 我还附上了 BSL 用户指南以供您参考:

    https://www.ti.com/lit/pdf/slau887

    https://www.ti.com/lit/pdf/slaae88

     

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

    在 uniflash 中、它会显示程序已成功完成。 我没有更改我这边的任何代码、只是我正在使用 LaunchPad 并测试演示代码。 就是这样。 我期望演示代码能够正常工作。 因为它的 TI 提供了 uniflash、所以它应该会正常工作。 我不发送任何 BSL 协议。

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

    好的、请检查您的应用代码起始地址是否为 0x0000

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

    是的、起始地址为 0x0000。 应用程序代码也提供了相同的演示代码、即 gpio_toggle_output。 单独运行这些代码时、工作正常。

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

    您能否生成.bin 或.txt 文件并上传到 uniflash 来尝试? CCS 生成十六进制文件时存在问题

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

    非常感谢 Zoey。 .bin 文件工作正常。 因此、现在我想以相同的方式进行固件升级、但不使用 uniflash。 我将一个蓝牙模块连接到 LaunchPad 的 UART1。 我想通过蓝牙接收.bin 文件并刷写它。 我如何做到这一点,请给出步骤或给我一些想法.

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

    我有一个疑问,如果你能清除它。  

    RightNow 我无法在 Android 中实现应用以获得 BSL 协议,我可以做的是,通过移除蓝牙模块,我可以连接电缆,在那里我可以打开 docklight 并可以发送帧格式。 否则第二种方法是接收.bin 文件、将其存储在仿真 EEPROM 中、然后我可以通过将其转换为适当的 BSL 帧格式来将其发送到 BSL。 只是为了测试、我使用的是小尺寸文件、因此我认为这不是问题。

    我将等待您的答复

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

    您好、

    很抱歉晚才回复。 我 不熟悉您的主机系统。 但我想说的是、如果您将基于我们的 BSL 协议的.bin 文件发送到 MCU、那么 MSPM0 就可以成功更新。  因此、您可以通过直接存储的蓝牙或 EEPROM 将.bin 文件发送到主机、而不是通过主机将此数据阵列发送到 MCU。

    想让您知道、我们的 SDK 中确实有主机演示代码、不确定这是否对您有所帮助。  

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

    您好、

    现在、我可以进行固件升级。 我正在使用 docklight 发送 BSL 数据包。 我有一个疑问。 ROM BSL 在 UART0 上接受数据包。 我可以将配置更改为任何其他 UART 吗? 还有一点、比如在升级时、发生了任何干扰、那么电路板就无法正常工作。 我想、即使它不会升级到新固件、但我的旧固件应该运行。 因为我在发送新固件之前正在擦除,所以闪存中没有任何内容,所以什么都不起作用。 如何应对这种情况?

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

    您好、  

    现在、我正在尝试使用辅助 BSL。 但此代码没有在电路板上闪烁。 这是什么代码? 以及如何测试这段代码。 此代码能否解决我在固件升级中遇到的问题? 我在刷写代码时遇到以下错误。

    闪存编程器:无效的批量擦除命令
    文件加载程序:存储器写入失败:闪存编程器:错误、尝试在不擦除的情况下写入 NONMAIN!
    GEL:文件:C:\Users\dibyarekha\workspace_ccstheia\secondary_bsl_uart\Debug\secondary_bsl_uart.out:加载失败。

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

    您好、

    很抱歉晚才回复。 我在个人休假后才回到办公室。

    ROM BSL 正在 UART0 上接受数据包。 我可以将配置更改为任何其他 UART 吗? [/报价]

    那么您是对的。 ROM BSL 仅支持 UART0。 如果您想使用其他 UATR、请使用辅助 BSL 或 BSL 插件

    因为我在发送新固件之前要擦除、所以闪存中没有任何内容、所以什么都不起作用。 如何处理此问题?

    MSPM0G3519 支持双组。 您只能升级唯一的银行。 并将旧固件保留在另一组中。 在辅助 BSL 中、可以添加超时功能。 如果主机卡住、则目标可以跳转到旧版本进行运行。

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

    您好、

    辅助 BSL 未从 0x0000 开始。 因此、您可以尝试读取地址、看看 0x2000 是否具有相关代码。

    为什么无法再次加载:

    在此演示代码中、启用了受静态闪存保护的功能。 在这种情况下、正常闪存(批量擦除)无法工作并更改相关闪存。 您应该执行恢复出厂设置 e2e.ti.com/.../7674.Factory-reset_5F00_Auto.pdf

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

    您好、  

    我尝试这样做、但在调试时遇到错误。 请检查随附的文件。

    错误:(错误–1001 @ 0x0)此器件不支持所请求的操作。 (仿真包 20.4.0.3835)
    停止目标 CPU 时出现问题:设备连接错误。 这可能是由于器件进入低功耗模式。 尝试按下“Force Reset“(强制复位)按钮强制进行外部复位。 如果错误仍然存在、请尝试:1) 调用 BSL、2) 调用 DSSM 批量擦除、或 3) 调用 DSSM 恢复出厂设置。 有关更多信息、请查看器件常见问题解答。
    断点管理器:删除作业失败:注册/内存写入失败[22005]e2e.ti.com/.../bootloader_5F00_code.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试执行此操作、但在调试时遇到错误。

    您能帮助澄清一下您做什么以及在哪里遇到此类错误吗?

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

    如果器件在复位后进入引导加载程序模式、如果上一次更新失败、它会为您接受剂量吗?

    这意味着、如果上次固件更新失败、您可以使用复位来使器件进入引导加载程序模式。

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

    您好、

    需要再次复位。 如果我上次写入 0x00 存储器位置、那么在写入 0x00 之前、电源会关闭、那么在上电时、它仅保持在 BSL 状态。 但问题是、在这种情况下、我不想留在 BSL 中。 加电时、我想运行以前的固件。

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

    请帮帮我。 我真的被卡住了,无法继续前进。 需要您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我尝试读取 0x00058000 时、 buffer[0]=*(uint32_t *)(TEMP_BASE + offset);此行进入 default_handler、我不理解原因。

    您可以在这里检查一下

    1.您需要注意的是使用 uint32_t 指针读取数据、地址  TEMP_BASE +偏移量应为 4 字节对齐。  

    2.确保 TEMP_BASE + OFFSET 不超过 MSPM0G3519 的最大地址 0x0007FFFF

    3.您可以尝试 添加 Fault_Handler  以查看是否因此导致缺省处理程序

    我还尝试使用 MSPM0G3519 运行以下代码、在 myside 没有问题、因此代码格式应该没有问题。

     

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

    您好、

    同样的,我在我身边通过给直接内存位置检查,仍然是进入 DefaultHandler。 我的工作区是否有任何问题? 我只使用了 BSL 工程、因为我正在编辑和执行。

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

    您可以尝试这个工程

    e2e.ti.com/.../adc12_5F00_max_5F00_freq_5F00_dma_5F00_LP_5F00_MSPM0G3519_5F00_nortos_5F00_ticlang.zip

    确保您的器件是 MSPM0G3519、而不是 MSPM0G3518。

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

    好的、我会检查它、但我观察到的是、一般来说、如果我正在读取任何内存、那么它不会进入默认处理程序、只有当我在读取之后写入该内存时、才会进入默认处理程序

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

    我检查了这个。 在这里、您没有将任何内容写入存储器 0x00058000。 你可以写一些东西,然后再读回。不管它是工作还是不工作,请告诉我

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

    您提到的问题仍然没有

    e2e.ti.com/.../6406.adc12_5F00_max_5F00_freq_5F00_dma_5F00_LP_5F00_MSPM0G3519_5F00_nortos_5F00_ticlang.zip

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

    您好、我解决了这个问题。 现在、我能够从 0x00058000 读取并写入 0x0008000。 之后我进行系统复位、期望它运行新固件。 但它不起作用。 还需要做什么

    请提供帮助

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

    将数据从 0x00058000 复制到 0x00008000 后、复位不起作用、我正在执行 JUMP_TO_application。  

    void jump_to_application (void)
      uint32_t sp =*(uint32_t *) app_base;
      uint32_t reset =*(uint32_t *)(APP_BASE + 4)

      __disable_irq()
      SCB->VTOR = APP_BASE;
      __ set_msp;
      ((void (*)(void)) reset)();
    }。
    在第一行的这个函数中、它将进入默认处理程序。 获得固件后、如何启动? 我以前使用过  
    NVIC_SystemReset()。 仍然不起作用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您知道它在哪一行触发了默认处理程序吗?

    关于 Out 跳转到应用程序代码的一些注释:

    1.  可以删除__set_msp

    2. SCB->VTOR = APP_BASE;可以移动到应用程序代码的开头  

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

    您好、

    我解决了这个问题。 我昨天只犯了个错误。 使用写入 0x00008000  

    DL_FlashCTL_programMemoryFromRAM64WithECCGenerated 解决了问题。 现在、我的 sp = 0x20210000 且复位值= 0x000081DD
    但当我进入时  
    ((void (*)(void)) reset)();此行我不理解正在发生什么、我期望板应该重置、它应该运行新固件。 但这并没有发生。  
    接下来该做什么? 如何运行 0x00008000 提供的新固件。  
    ...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此行我不理解发生了什么、

    对于这一行、将进入应用程序的复位处理程序、然后跳转到 main 函数。 您可以将 GPIO 上拉到应用代码中、以表明它开始工作。

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

    您好、

    我发现了我的错误。 现在它可以正常工作了。

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

    您好、

    非常感谢您的帮助。 我是这款芯片的新手。 现在我以某种方式理解。 我还在做这个项目。 我还需要做一些修改。 如有进一步的疑问、我需要您的帮助。

    希望你能帮到我。

    谢谢

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

    没问题、如果您收到任何其他问题、请创建一个新主题。

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

    我还需要您的帮助、我将.bin 文件转换为十六进制、并使用 docklight 通过 UART 发送十六进制字节。

    我的目标是使用蓝牙发送文件。 现在、在这个 Launchpad 中、为了通过 docklight 发送十六进制字节、我使用了 uart0。 但我已将蓝牙连接到 UART1。 那么、如果我使用 uart1 也能实现同样的效果、这会不起作用?

    二次怀疑

    如何通过蓝牙发送.bin 文件?

    气象蓝牙会以十六进制字节的形式发送.bin 文件、还是需要使用外部软件将.bin 转换为十六进制字节并通过蓝牙传输?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在将.bin 文件转换为十六进制、并使用 docklight 通过 UART 发送十六进制字节。

    CCS 可直接生成 HEX 或 TI-TXT 格式、便于轻松处理。  

    我的目标是使用蓝牙发送文件。 现在、在这个 Launchpad 中、为了通过 docklight 发送十六进制字节、我使用了 uart0。 但我已将蓝牙连接到 UART1。 因此、如果我使用 uart1 执行同样的操作、它会有效吗?

    您是指使用 MSPM0 的 UART1 将固件发送到蓝牙器件吗?

    如何通过蓝牙发送.bin 文件?

    请参阅此  使用 1G 的 www.ti.com/.../slaa721e.pdf。

    天气蓝牙会将.bin 文件发送为十六进制字节、还是需要使用外部软件将.bin 转换为十六进制字节并通过蓝牙传输?

    在我们的演示代码中、使用 CCS Generate TI-TXT 格式固件、然后将其转换为可由 C 代码调用的头文件。 我们提供了 python 脚本来将固件转换为头文件。

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

    我的意思是、是否必须使用 uart0 来发送十六进制字节、也可以使用 uart1?

    我的蓝牙已连接到 uart1

    .hex 文件我尝试使用 uniflash 刷新、但它不工作。

    .txt 我从未使用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的意思是、是必须使用 uart0 发送十六进制字节、还是还可以使用 uart1?

    没关系。 UART1 也可以。

    .hex 文件我尝试使用 uniflash 刷写、但它不起作用。

    尝试以下方法来生成十六进制文件

    e2e.ti.com/.../generate_5F00_hex-file-with-CCS.pdf

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

    好的、谢谢。 我将逐一讲解、并尝试完成。

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

    您好、

    我又遇到了一个问题。

    到目前为止、我的代码可以正常使用 uart0。 当我启用 uart1 并刷写代码时、也使用 uart1 可以正常工作。 但当我拔下电源线并重新连接它时、无论闪存中有什么、它都无法运行。 我需要再次刷写代码。 我不理解正在发生的事情

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

    按下复位按钮、表示代码正在运行。 有什么问题吗? LaunchPad 中是否有任何连接,我需要在添加 uart1 后按重置按钮

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    直到现在、我的代码可以与 uart0 正常运行。 [/报价]

    使用 uart0 时的剂量不需要重置? 更改为 uart1 时、是否需要复位才能运行固件?