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.
大家好、我们即将发布一款采用 TM4C1294NCPDTI3的新产品。
我正在尝试使用计算机上的 LM 闪存编程器来测试引导加载程序功能、但无法完成。 它在我同事的计算机上运行良好、但我们无法让它在我的计算机上运行。 我使用的是相同的设置和相同的设备。 我希望找到一种解决方案、就好像它对我来说是个问题、但它也可能对我们的客户造成问题。
我已将其设置为手动配置、并使用串行(UART)接口。
我已经确认我使用的是正确的 COM 端口。 我可以使用其他程序(不再连接并且不会阻塞端口)与器件通信。 如果 在 LM 闪存编程器上将 COM 端口更改为我知道是错误的端口、则会收到错误消息说配置 COM 端口失败。 我在正确的 COM 端口上没有看到该错误、因此我知道它可以使用该 COM 端口。
我知道正确的波特率(同样-能够通过其他程序进行通信)。 但是、我使用的是"支持自动波特率"功能。 尝试连接时、我收到一条错误消息、说它"无法将波特率与板同步"。 当我禁用自动波特率支持时、则错误提示"无法与电路板建立通信"。
我一开始使用的是 USB 集线器、但我在 LMFlash 帮助中看到它会使事情一团糟、因此我现在直接连接到计算机上的 USB 端口而不是通过集线器。 从 USB 端口可以看到一个 USB-RS485转换器。 我尝试过不同品牌的转换器、以确定其中是否存在问题。 这似乎没有什么不同。
我还尝试完全重新启动计算机。
这些设置与我的同事成功使用的设置相同。 尝试连接时、我在器件上处于引导加载程序模式。 您能帮助我解决问题的原因吗?
这可以与我的计算机上的驱动程序相关吗? 我有适用于这些转换器的不同 FTDI 驱动器。
安全设置是否会影响 LM Flash Programmer 的通信能力?
您好!
根据我从屏幕截图中看到的内容、我想您正在使用 ROM 引导加载程序、对吗? 我自己尝试过。
-首先我把闪存完全擦除。 这很重要。 如果未擦除闪存、则 ROM 引导加载程序将假定应用程序存在、并跳转到应用程序。 ROM 引导加载程序将查看地址位置0x0和0x4处的堆栈指针和复位矢量。 如果这些值不是 F 的值、则引导加载程序将跳转到应用程序。
-我使用下面的手动配置,这几乎是一样的你。 当然、我的 COM 端口将与您的端口不同。
-我使用 ROM 引导加载程序加载一个简单的闪烁示例,它加载成功,我可以看到 LED 闪烁。
- ROM 引导加载程序仅适用于 UART0、没有其他 UART 端口。 如果您尝试使用其他 UARTx 端口、它将不起作用。 您将需要使用基于闪存的引导程序、而您可以在其中为串行引导加载配置指定的 UARTx 端口。
-可以在具有已擦除 MCU 的 LaunchPad 上使用 LM 闪存编程器吗? 您可以在 LaunchPad 上重复同样的问题吗? LaunchPad 具有内置的板载 ICDI 调试探针、该探针也可以枚举为 COM 端口。 这不是 FDTI。 我想知道这是否是 FTDI 驱动程序问题。
尊敬的 Charles:
感谢您的答复。 我想我在最初的帖子中一定不会很清楚。 该软件可与我们在同事的所有计算机上开发的产品配合使用、但由于某种原因、我希望您能够帮助我识别。
我没有在上面进行开发、因此我不确定、但我认为它是基于闪存的引导加载程序。 我没有 LaunchPad 来尝试。 是否还有其他方法可以确定是否是 FTDI 驱动程序问题?
我没有在上面进行开发,因此我不确定,但我相信它是基于闪存的引导加载程序。
我迷路了
好的、闪存引导加载程序/ROM 引导加载程序可能是错误的。 我知道我的屏幕截图上的设置与我的同事正在成功使用的设置相同。 当我明天回到办公室的时候,我会尝试你的建议。
您好!
您可以从地址0x0通过 CCS 存储器浏览器窗口进行检查吗? 是否将闪存引导加载程序驻留在0x0? 如果您有一个空闪存或者已经有一个驻留在0x0中的应用程序、则闪存将不起作用。 我将建议您首先完成闪存的完全擦除。 正如我之前概述的指令、使用 JTAG 将闪存引导加载程序加载到0x0。 您可能有一个自定义的闪存引导加载程序、但我建议您首先尝试常用的闪存引导加载程序并使其正常工作。 如果库存引导加载程序也产生相同的错误、那么我只能考虑一些驱动程序或计算机问题、因为您的同事使用相同的设置。
哪种驱动程序或计算机问题会导致此类错误?
请先尝试建议的内容。 如果它能够正常工作、则问题会得到解决。 如果您完全按照我使用库存示例概述的说明操作、但仍然存在相同的问题、那么我们可以调查可能导致您出现问题的原因。 实际上,我还没有看到像你这样的问题,因为这些步骤已经被执行了。
您的电路板是否与同事不同?
您使用的是闪存引导加载程序还是 ROM 引导加载程序? 您还没有回答我的问题。 您的屏幕截图显示您正在尝试将应用程序加载到0x0、如果您实际使用的是基于闪存的引导加载程序、这将覆盖闪存引导加载程序。 这是您真正想要的吗?
您正在使用哪个 UART 端口? 如果您要使用 ROM 引导加载程序、那么唯一能够使用的 UART 端口是 UART0? 检查要连接到的 FTDI USB 转 UART 适配器。
假设您在使用 ROM 引导加载程序。 您是否有任何其他通信端口连接到您的电路板? ROM bootloader 不知道您要从哪个通信端口引导。 因此、它将扫描所有可用的通信端口以进行启动。 如果它发现以太网已连接或 SPI 已连接、那么如果有任何有效命令、它就会尝试从此处进行引导。 这可能是您的问题吗? 有关详细信息、请参阅引导加载程序用户指南。
我完全把我的整个设置转到了我同事的计算机上、将相同的设置放在他们的 LM 闪存编程器上、然后运行它就没有问题。 如果您认为闪存引导加载程序在0x0下不起作用、那么我们必须使用 ROM 引导加载程序。 我的软件人员当前正在休假(其他可能知道的同事也是如此)、因此我无法询问她我们使用的是哪个引导加载程序。
您可以在同事的计算机上再次重复启动吗? 如果不是、则必须是 ROM 引导加载程序。 如果 ROM 引导加载程序发现应用程序已经驻留在0x0、它将立即跳转到应用程序。
可以在0x0覆盖 FLASH 引导程序、但我发现客户几乎不会使用它。 在闪存引导加载程序中、可以启用 ENABLE_BL_UPDATE 标志、以覆盖引导加载程序本身。
//*****
//
//启用对引导加载程序的更新。 更新引导加载程序是不安全的
//操作,因为它不能完全容错(设备断电
//部分执行可能导致引导加载程序不再存在
//闪存)。
//
//取决于:无
//不包括:无
//需要:无
//
//*****
//#define ENABLE_BL_UPDATE
另一种可能是您的应用程序位于0x0、但扫描 UART0的引导加载命令。 收到有效命令后,它会通过调用 ROM_UpdateUART()跳转到 ROM 引导加载程序。
我在最后一个小时尝试与 CCS 连接以读取存储器、但也无法使其正常工作。 我确保擦除了芯片、然后再次重新运行上面列出的 boot_deme1过程、以确保没有错过任何内容。 我使用 JFlash Lite 将 boot_serial.bin 放到器件上、 可以吗?或者我是否需要通过 CCS 执行某些操作? 如果是、我需要一些有关连接的帮助。
不幸的是、我另一天使用的计算机的同事今天在家里工作、我无法再尝试。
我正在使用 JFlash Lite 将 boot_serial.bin 放入设备中。 可以吗?或者我是否需要通过 CCS 执行某些操作? [/报价]如果可以通过 JFlash 成功加载 boot_serial.bin、则无需使用 CCS。 话虽如此、我仍要求您尝试基于闪存的引导加载程序、因为我不确定您的同事是在使用 ROM 引导加载程序还是闪存引导加载程序。
我成功地通过 JFlash 加载了 boot_serial.bin、但获得了上面显示的结果(错误:无法建立连接)
我成功地通过 JFlash 加载了 boot_serial.bin,但获得了上面显示的结果(错误:无法建立连接)
如果您使用通过 JFlash 加载的 boot_serial.bin 板并在您同事的计算机上运行 LM Flash 程序员、那么它将可以工作、对吗? 在另一种情况下、只有您的计算机有问题、对吗?
如果您正在进行相同的操作、但只有您的计算机有 UART 接口问题、我建议您使用示波器或逻辑分析仪来捕获 UARTTX 和 UARTRX 波形。 比较在您同事的计算机上运行时捕获的波形与在您的计算机上运行时捕获的波形。 必须有一些细微的差异。
是的、只有我的计算机有问题。
好的、我可以尝试设置一些东西来捕获波形。
同时、如果我使用不同的程序(docklight)、则可以通过相同的连接与器件进行通信。 这是否表明我的计算机使用 LM Flash 程序员时出现问题、而不是 UART 接口出现问题?
与此同时,如果我使用不同的程序(docktlight),我可以通过相同的连接与设备进行通信。 这是否表明使用 LM Flash 程序员的计算机有问题,而不是 UART 接口有问题?
您能否从 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hello 尝试一个简单的 hello 示例? 我不知道您在使用哪个 UART 实例、因此您可能需要修改要使用的任何 UART 接口的 hello 示例。 如果您让 hello 示例正常运行、则意味着 UART 接口良好、并且连接到该 UART 接口的 FTDI UART 转 USB 适配器也可以正常运行。 唯一剩下的就是 LM 闪存编程器。 但是、我不知道为什么 LM Flash 程序员在您的计算机和同事之间会有不同的行为。
您是否尝试过计算机上的每个 USB 端口、它们都有相同的问题?
您是否可以重新安装 LM Flash Programmer? 这会有什么区别吗?
好了,我可以尝试设置一些东西来捕获波形。 [/报价]是的、这将是找出的最佳方法。
好的、我的同事回到了编写固件的办公室。 她说我们使用 ROM 引导加载程序(TI 预安装)、我们使用 UART0接口、并且我们在使用 LM 闪存进行刷写之前没有擦除全部闪存、因为我们将引导配置(BOOTCFG 寄存器)设置为我们用于进入 ROM 引导加载程序的特定 GPIO。
我还无法捕获波形。
您好!
,我们使用 UART0接口,并且由于我们设置了启动配置(BOOTCFG 寄存器[/引号),因此在使用 LM 闪存进行刷写之前,我们没有擦除完整闪存这意味着您需要将任何指定的 GPIO 引脚置为有效才能进入引导模式。 你这么做了吗?
A 校长, 我在办公室,直到8月3日,我将无法回答深入的问题,直到我回来。
尊敬的 Charles:
没问题。 享受假期吧!
是的、我要在引导加载程序模式下启动产品(我们有一个按钮可按下)。 我尝试了第三个 USB 到 RS485转换器、并使其能与计算机上的 LM 闪存编程器配合使用。 什么原因会导致编程器与某些转换器配合使用、而不与其他转换器配合使用? 用于此目的的所有转换器都能够通过其他程序与器件通信...
Deborah、您好!
我尝试了第三个 USB 到 RS485转换器,并让它在我的计算机上与 LM 闪存编程器一起工作。
很高兴您的问题已通过某种方式得到解决。 但是、我不知道与您拥有的其他转换器相比、这款特定的 USB 到 RS485为什么可以正常工作。 LM Flash 程序员不知道连接了哪种类型的转换器。 如果您确实想了解其他转换器为何不起作用、则需要比较示波器波形。 我认为不同转换器之间必须存在一些细微差异、或许细微差异足以导致 MCU 端或 LM 误解数据。
我尝试了第三个 USB 到 RS485转换器,并让它在我的计算机上与 LM 闪存编程器配合使用。 什么原因会导致编程器与某些转换器配合使用、而不与其他转换器配合使用? [/报价]您是否使用2线半双工 RS485连接?
如果是、区别可能在于 LM 闪存编程器如何与 USB 到 RS485转换器交互来控制 RS485总线的方向。