你(们)好
我正在为 OMAP-L138 SoC 上的 DSP 内核设计复位逻辑、以便它可以执行复位以从 NAND 闪存加载应用。 这是为了能够远程更新 DSP 软件。
我想使用 DSP 的 GPIO 引脚之一通过将 GPIO 连接到 OMAP-L138 SoC 的 RESET 引脚来将 RESET 置为有效。 这是个好主意吗?
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.
你(们)好
我正在为 OMAP-L138 SoC 上的 DSP 内核设计复位逻辑、以便它可以执行复位以从 NAND 闪存加载应用。 这是为了能够远程更新 DSP 软件。
我想使用 DSP 的 GPIO 引脚之一通过将 GPIO 连接到 OMAP-L138 SoC 的 RESET 引脚来将 RESET 置为有效。 这是个好主意吗?
您好、Mitesh、
将 RESET 置为有效而不同时将 TRST 置为有效将产生热复位、而不是 POR (上电复位)-您需要的是这样吗? 请参阅 数据表的6.4.2热复位。
热复位为器件提供有限的复位。 热复位通过仅将 RESET 拉低来启动(通过热复位将 TRST 保持为高电平)。 热复位可将器件的某些部分设置为默认状态、而不会更改其他部分。 除了 RESETOUT 之外、所有引脚都是三态的
-保留内部内存
-当复位变为高电平时、引导引脚不会被锁存、而是保留与上一个 POR 相同的值。
为了确保您执行 POR、您可以始终将 TRST 保持为低电平(直到您想使用 JTAG)-只有在需要使用 JTAG 控制器时才需要释放 TRST。
您是否介意 ARM 内核也重新启动? 如果不是、则对 NAND 形式的重新启动应用复位可能是一个可行的选项、但您可能需要使用不止一个 GPIO 来驱动复位、并且 TRST 都为低电平...
根据表6-1。 复位时序要求、复位的脉冲宽度需要至少保持100ns。 如果只需将 GPIO 连接到复位、该 GPIO 在复位时将变为高阻态、并且可能无法满足此要求。 如果您在 Hi-Z GPIO 上添加了一个下拉电阻器、则永远不会释放器件复位-它将始终下拉... 您可以使用 GPIO (带有上拉电阻)触发复位脉冲电路、如下所示。 电容器可确保复位脉冲持续一定的时间。
您还可以使用具有手动复位功能的电压监控器、如 TPS3125。 有一个内部计时器在指定的延迟时间内将复位保持低电平。
看门狗复位会触发一个 POR -您可能可以利用它来实现您的目标:强制看门狗计时器过期并以这种方式进行复位。
还应考虑引导模式引脚-它们是静态上拉的高电平还是低电平? 在正常操作和固件升级期间、它们是否相同? 它们还具有表6-1中规定的要求。 数据表的复位时序要求。 复位上升沿前20ns 设置、复位上升沿后20ns 保持。 如果它们与上拉和下拉电阻器静态连接、则很容易满足。 不要自行使用 GPIO 来驱动引导模式、因为 GPIO 将变为高阻态
您似乎只想重置 DSP 内核并仅将一些新代码加载到 DSP 内核中(ARM 内核仍在运行)。 我相信有一种方法可以通过共享存储器实现这一点、并关闭 C674x 超级模块的电源。 如果您对此感兴趣、我可以与其他知识渊博的人一起...
为 C674x 超级模块断电需要以下软件序列:
1.将 PDCCMD 寄存器的 MEGPD 位域置位为1、使能掉电。
2.启用要唤醒超级模块的 CPU 中断;禁用所有其他中断。
3.执行一条空闲指令。
超级模块将保持断电模式、直到唤醒上面第2步中启用的中断
请参阅以下 wiki 页面:
http://processors.wiki.ti.com/index.php/OMAP-L138_Bootloader
http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138#Booting_DSP_Binaries
希望这对您有所帮助、
标记
Mark、您好、很抱歉我的回复很晚、但非常感谢您的回复。 这很有用。
我要做的就是:
如果需要 ARM (Linux)的 DSP 复位功能、我们希望将其用作远程升级重启。 引导引脚是静态的、通常设置为从 NAND 闪存引导 DSP。 TRSTn 通过下拉电阻器连接到 GND。 想法是 Linux 会将新的 DSP 应用写入 DSP NAND 闪存、然后在下一次重新启动时、DSP 应使用最新的 DSP 应用。
听起来您最后提到的"一种使用共享存储器实现此目的的方法、并关闭 C674x 超级模块的电源"是否可以在 Linux 中实现? 是否有任何示例应用?
谢谢。
您好、Mukul、
从 Mark 的答复中可以看出、使用 DSP PSC 从 Linux 重置 DSP 内核是很清楚和明智的。 我仍在尝试使用 SDK4.0.0.4在定制板上运行 Linux、而我得到的一个工作就是尝试重新启动 DSP 的 IPC 方法。 我试图了解 Linux 中的远程处理器、 听起来好像在加载 DSP FW 的过程中会使用这种想法。 但是的、感谢您的回复。 我已决定不执行任何硬件模式、只需进行复位即可。 将使用 DSP PSC 逻辑从 Linux 中实现它。 谢谢。