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.

[参考译文] Linux/TMS320C6678:重新引导 Linux C6x 时出现问题

Guru**** 2538950 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/588240/linux-tms320c6678-problem-on-reboot-linux-c6x

器件型号:TMS320C6678

工具/软件:Linux

大家好

我在重新启动 Linux C6x (c6678 EVM 和 JFFS2文件系统)时遇到问题。

第一个解决方案:

使用 reboot 命令:)

COM 控制台:

重新启动命令后,我希望系统再次从 NAND 闪存进行复位和引导 ,但没有发生任何情况(COM 控制台中没有打印任何内容。我可以 ping IP,但我无法使用 Telnet 连接到主板)

第二个解决方案:

 我尝试使用 RSTCTRL 寄存器根据 以下文章重置芯片 :用于重置的 C 代码(使用 C6x-ucreux-gcc 编译)

printf ("重置2.0!!! \n");

volatile unsigned int * pRSTCTRL =(volatile unsigned int *)(0x023100E8);
printf ("在*pRSTCTRL =%8.8x \n"、*pRSTCTRL 之前);
volatile unsigned int Key = 0x5A69;
*pRSTCTRL = Key;
printf ("在*pRSTCTRL =%8.8x 之后;*pRSTCTRL
=%8.0";*pRSTCTRL =%pRSTCTRL =%8.n";*pRSTCTRL = 8.0_p 

输出:

没有发生任何事情,RSTCTRL 保持锁定!!! (我认为 Linux 没有在 RSTCTRL 寄存器上写入操作)

当我使用 CCS (cl6x)编译代码并加载到内核5 (Linux C6x 在内核0上运行)时,RSTCTRL 解锁(RSTCTRL 值 (* 0x023100E8)更改为 0x0001000C),芯片(8内核)正确复位,Linux 在内核0上重新启动

但我需要从 Linux (核心0)重新启动,而不是从 SYS/BIOS 端(核心1-7)重新启动

有人可以帮助我重新启动我的 Linux C6x?

谢谢

EBI

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

    我已通知 C66x 团队。 他们的反馈将直接发布在此处。

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

    查看 keyston_reset()函数,该函数似乎执行了它应该执行的操作。 您可以尝试通过设置 RSTCFG 来查看它是否会产生任何影响。

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

    您好 Rex  

    感谢您的回复,很抱歉您迟到了!

    [引用 user="Rex Chang"]查看 keyston_reset()函数,该函数似乎执行了它应该执行的操作。

    我无法在 我的 Linux C6x 源文件中找到 keyston_reset()函数,在 google 搜索中,我可以找到"TI keystone reboot driver":

    根据文件注释,此驱动程序在2014年编写,但最新的 Linux C6x 版本与2012年相关!!!

    是否可以确认我找到了正确的文件?

    谢谢  

    EBI

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

    您的代码是否为2.0.0.63版本? 您可能希望从 Linux-C6x git 存储库中获取更新的代码。 它显示在 Linux-C6x wiki 页面的"资源"部分下。 请注意、TI 已在2年前停止该项目及其支持。 存储库的状态为原样。

    为方便起见、此处提供了指向存储库的链接: linux-c6x.org/.../

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Rex
    是的、我使用的是2.0.0.63版本
    我使用看门狗解决重启问题(由于时间限制)

    感谢有用的信息和链接,我尝试更新源文件并重建 Linux,但我来自使用 RTOS (或非 OS)进行微控制器/微处理器编程,并且是嵌入式 Linux 开发的新手!

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

    您好 Rex

     git 从存储库克隆最新代码并重建项目后,问题得到解决,软件重新引导工作正常!

    提交时根据 pllctrl 添加了重新引导命令 !

    感谢您的支持  

    EBI