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.

[参考译文] TM4C1290NCPDT:sflash.exe 正常工作、但运行命令不会

Guru**** 2550160 points
Other Parts Discussed in Thread: TM4C1290NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/843405/tm4c1290ncpdt-sflash-exe-works-but-run-command-does-not

器件型号:TM4C1290NCPDT

大家好

按照 TI 的文档和代码、我能够在我的定制板上实现引导加载程序、其中 TM4C1290NCPDT 加载在闪存中的0x0上、我的应用程序加载在0x4000上。 我可以使用我从 Tivaware tools 目录编译的 sflash.exe 代码、使用此引导加载程序成功地重新加载应用程序。 一切都很好,谢谢!

但是、在加载引导加载程序后、我无法重新启动微控制器、我似乎需要一个完整的电源循环来使其再次运行(此时工作正常)。

我正在发送 sflash 运行命令、地址为0x4000 (我的应用程序在 flash 中的起始地址)。 我应该传递的正确地址是吗? 我原以为是这样、但现在我想知道它是否应该是复位 ISR 矢量? 我很困惑。 我还尝试了0x0 (这是引导加载程序位于闪存中的位置),但也不起作用。  

对电路板进行电源循环并不是一件大事、但由于 FPGA 等其他器件需要一些时间才能重新配置、因此这有点困难。

谢谢

Peter

sflash 命令:

/sflash ./cm_mcu.bin -r 0x4000 -p 0x4000 -c /dev/ttyUSB2 -b 115200 -d -s 76

[尽管我认为不需要解决此问题,但我在基于 RHEL7的 Linux Box 上使用的是最新版本的 Tivaware,并具有基于 gcc 的 Makefile 编译路径。]

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

    尊敬的 Peter:

     引导加载程序将应用程序加载到闪存后、您能否执行复位而不是重启电源? 重启有效的原因是处理器再次从复位矢量启动。 引导加载程序将检查0x4000处是否已存在应用程序。 如果应用程序存在、引导加载程序将跳转至0x4000以启动应用程序。 您可以通过复位引脚手动复位、也可以尝试修改引导加载程序、以便在应用程序更新后、通过调用 SysCtlReset()来强制软件复位。   

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

    你好,Charlie.

    感谢您的回答。 实际上、仅发出复位即可正常工作。 因此、这是一个很好的权变措施。 ‘,我的‘run’命令不起作用的原因是什么? 我应该发出一个与0x0或0x4000不同的地址吗?

    谢谢

    Peter

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

    尊敬的 Peter:

     您是否将-r ADDR 设置为0x4000? 您应将其设置为0x4000、以便在下载固件后处理器将跳转至该地址。

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

    你(们)好,查尔斯

    是的、我使用以下命令。 我尝试将其设置为0x4000和0x0、但两者都不起作用。 奇怪  

    /sflash ./cm_mcu.bin -r 0x4000 -p 0x4000 -c /dev/ttyUSB2 -b 115200 -d -s 76 

    奇怪的是、我的命令版本默认不会发送运行命令、而不会像上面列出的那样重置处理器。 我使用的是 Tivaware 2.1.4.178。

    我想我将像您建议的那样添加一个 SysCtlReset()调用。 感谢你能抽出时间。

    Peter