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:查找早期引导阶段调试提示

Guru**** 678420 points
Other Parts Discussed in Thread: OMAP-L138, CDCE906, AM1808, TPS3705, TPS3707, ADS1274
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/806243/omap-l138-looking-for-early-boot-phase-debugging-hints

器件型号:OMAP-L138
主题中讨论的其他器件: CDCE906AM1808TPS3705TPS3707ADS1274

您好!

我们设计并同时生产一个包含 OMAP-L138 CPU 内核系统的 DSP 测量系统、该内核系统是 OMAP-L138 LCD 套件 CPU 电路、相同闪存、相同 RAM 的副本。

设计和软件(uBoot + Linux 应用程序)已经完成、大部分生产的电路板都可以在所有条件下启动并正常工作、其设计目标包括 EMI/EMC 合规性。

没有、我们发现一些电路板在 POR (上电复位)上根本没有启动、但在通过按下 RESET 按钮手动启动后运行良好、该按钮连接到 TPS3707-33D 欠压检测器和复位计时器的 MR 输入。 这是可重现的、不依赖于温度、电源电压等。 配置为从闪存进行 NAND 引导的引导模式逻辑也没有显示异常。 刷写电路板(uBoot 和 Linux 3.3。 在两个分区中、使用 TI SFH_OMAP-L138.exe)不会出现问题、但由外部复位信号启动/管理、因此我们必须在内部固件启动("BOOTME"提示符)和用户启动之间切换。

电源电压、排序和时序正常、由4通道示波器检查。 CPU 时钟源是一个24MHz XCO、通过 CDCE906 PLL 控制器、其工作方式也很有魅力。

CDCE906输出端的24MHz 时钟(Y5、通过硬复位配置)是稳定的、因为在 OMAP 引脚上复位超过100ms 之前、TRST 通过4k7电阻下拉至 GND。

对于运行得非常好的电路板以及根本不启动的电路板、上述所有条件都是相同的。 这里的"不启动"意味着控制台端口不会出现单个 char、因此在早期系统初始化中、这很可能不是软件问题。

您能告诉我们一些指针/提示吗、在哪里可以找到有关 OMAP-L1xx 极早启动阶段的信息、以及如何使用"正常"实验室设备对其进行调试? 我们无法访问 BGA 封装的每个引脚、也没有可用的高端逻辑分析仪。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    加电失败后是否可以使用 JTAG 进行连接? 在这种情况下、您应该运行一个诊断 GEL 文件:

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

    Brad、您好!

    感谢您提供第一个提示、即尝试通过 JTAG 进行连接。

    我们有一个 XDS100v2 JTAG 适配器和板上所需的连接端口。 但我们直到最近几周才使用它。 实际上,我们能够在没有 JTAG 调试的情况下构建、闪存和运行电路板,听起来可能很有趣,但事实是:-)

    同时、我将 XDS100取出抽屉、阅读一些有关在 ccs5.5中连接和配置它的文章、并能够连接电路板并将您指向的 GEL 文件加载到目标配置中。 我不确定是将其加载到 ICEPICK_C 连接中还是加载到 ARM9_0连接中、因此我将其放入两个连接的"初始化脚本"条目中。 我没有收到任何错误消息、因此我认为这是可以的。

    点击按钮'Test Connection"将获得'gain'结果、该消息告诉我 JTAG 似乎正常并且处理器可见。 如果我关闭目标电源、这也会得到报告、因此我认为这是可行的。

    当我在 Studio 中打开 Debug 视图时、我看到 DSP 已连接(状态为'Suspened')、ARM 和两个 PRU 均为'IsConnected:unknown'。 反汇编窗口显示、DSP 在其代码中的某个位置-看起来不是很糟、而是我在问自己如何开始。 但这不是这里的问题。

    当我通过上下文菜单连接 ARM 目标时、需要一段时间(我的 CCS 在虚拟盒 Linux 内运行、我们的部门不允许运行本机 Linux PC)、然后它告诉我、PC 指向0x14、无法访问 RAM: "00000014:   ???? 读取0x00000014时出现页面故障[代码= 0x6]"

    这将解释为什么电路板不启动、但如果我稍后按下复位按钮、为什么它会启动。

    我对引导模式配置进行了其他调查: 我们使用简单的无源 logik 配置引导模式引脚、在用于引导加载和闪存的串行引导和"正常"引导/运行之间切换、该无源 logik 会切换 BOOT0、-1、-2、-3、 -4 在0x14 (用于"串行器")和0x0E (用于" NAND 8")闪存引导之间。 此逻辑由一个引脚驱动、该引脚可用于正常启动、并由 CP2103 USB 至串行适配器板的 GPIO 驱动。 这一切都很好、我检查了所有该 BOOTx 引脚的电压。 对于"良好"以及两个不在 POR 上启动的电路板、这些值都是正确的。

    我的有趣观察是、"串行"引导在应用电源时能够完美地工作。 在电路板刷写过程中、主器件复位由 CP2103 GPIO 多次启动、因此在刷写过程中未观察到错误。 当使用处于"NAND-8"引导模式的 GPIO 为电路板上电时、它不会启动。 在此状态下、我通过 CCS 中的 JTAG 调试视图进行了观察。

    我的问题:

    为什么我要在 Studio 中首先连接(JTAG-) DSP 目标? 这是(可更改)默认值还是来自 ARM、因为 ARM 似乎无法从 RAM 读取数据并运行?

    应用电源/释放复位后的第一微秒内会发生什么情况?  ARM CPU 是第一个运行的内核、还是 DSP 内核以某种方式参与了早期启动过程?

    是否可以怀疑闪存和/或 RAM 电源是否可以解决我的问题? 它硬连接到 OMAP ps、这次两个器件都使用1.8V 电压(可修改)。

    最重要的是:OMAP-L1x 中的早期启动过程是否有一些信息可以为我们提供有关如何调试此问题的提示?

    感谢您的阅读、或许还有进一步的帮助。

    霍斯特

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

    Brad、您好!

    同时、我成功地在损坏的电路板上运行 GEL 诊断脚本。 我捕获了控制台输出以供您参考:

    -先前的输出,电路板断电

    ICEPICK_C:目标 CPU 上的电源故障:(错误-180 @ 0xFFFFFF4C)控制器检测到目标功率损耗。 用户必须为目标打开或连接电源。 (仿真包5.1.232.0)
    ICEPICK_C:在断开连接之前未能从目标中删除调试状态。  程序存储器中仍可能嵌入了断点运算代码。  建议您在连接之前重置仿真器、并在继续调试之前重新加载程序
    ARM9_0:错误:无法获取 PRSC 状态
    ARM9_0:20次尝试后无法确定目标状态
    ARM9_0:在断开连接之前无法从目标中删除调试状态。  程序存储器中仍可能嵌入了断点运算代码。  建议您在连接之前重置仿真器、并在继续调试之前重新加载程序

    -由电路板供电、然后根据 processors.wiki.ti.com/.../OMAP-L1x_Debug_Gel_Files 中的说明执行 GEL 文件

    -然后从控制台窗口输出复制和粘贴:

    ARM9_0:GEL 输出:
    ----------------------
    ARM9_0:GEL 输出:|            器件信息           |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:DEV_INFO_00 = 0x1B7D102F
    ARM9_0:GEL 输出:DEV_INFO_01 = 0x00000000
    ARM9_0:GEL 输出:DEV_INFO_02 = 0x0000001E
    ARM9_0:GEL 输出:DEV_INFO_03 = 0x00000035
    ARM9_0:GEL 输出:DEV_INFO_04 = 0x00000000
    ARM9_0:GEL 输出:DEV_INFO_05 = 0x000003E0
    ARM9_0:GEL 输出:DEV_INFO_06 = 0x00000080
    ARM9_0:GEL 输出:DEV_INFO_07-DEV_INFO_08-DEV_INFO_09-DEV_INFO_10-DEV_INFO_11-DEV_INFO_12 = 0-0-4527369-13-17-15
    ARM9_0:GEL 输出:DEV_INFO_13、DEV_INFO_14、DEV_INFO_15、DEV_INFO_16 = 5、0、6246
    ARM9_0:GEL 输出:---
    ARM9_0:GEL 输出:DEV_INFO_17 = 0x00030003
    ARM9_0:GEL 输出:DEV_INFO_18 = 0x00000000
    ARM9_0:GEL 输出:DEV_INFO_19 =ARM9_0:GEL 输出:0ARM9_0:GEL 输出:0ARM9_0:GEL 输出:0ARM9_0:GEL 输出:0ARM9_0:GEL 输出:0ARM9_0:GEL 输出:0ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:---
    ARM9_0:GEL 输出:DEV_INFO_20 = 0x303864
    ARM9_0:GEL 输出:DEV_INFO_21 = 0x3830306B
    ARM9_0:GEL 输出:DEV_INFO_22 = 0x303864
    ARM9_0:GEL 输出:DEV_INFO_23 = 0x3830306B
    ARM9_0:GEL 输出:---
    ARM9_0:GEL 输出:DEV_INFO_24 = 0x0D00F011
    ARM9_0:GEL 输出:DEV_INFO_25 = 0x00451509
    ARM9_0:GEL 输出:DEV_INFO_06 = 0x00000080
    ARM9_0:GEL 输出:DEV_INFO_26 = 0x30CC0005
    ARM9_0:GEL 输出:

    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|              BootROM 信息               |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:ROM ID:d800k008
    ARM9_0:GEL 输出:器件修订版本2.1
    ARM9_0:GEL 输出:引导引脚:30
    ARM9_0:GEL 输出:引导模式:仿真调试
    ARM9_0:GEL 输出:
    ROM 状态代码:0x00000000
    说明:ARM9_0:GEL 输出:无错误
    ARM9_0:GEL 输出:
    程序计数器(PC)= 0xFFFFFF0000
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|             时钟信息            |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:PLL 配置为利用晶体。
    ARM9_0:GEL 输出:ASYNC3 = PLL0_SYSCLK2
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:注意: 以下 PLL 部分中的所有时钟频率都是基于的
    ARM9_0:GEL 输出:关闭 OSCIN = 24MHz。  如果该值与您的硬件不匹配
    ARM9_0:GEL 输出:您应该更改 GEL 文件顶部的#define 并将其保存、
    ARM9_0:GEL 输出:然后重新加载。
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|             PLL0信息            |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:PLL0_SYSCLK1 = 24MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK2 = 12MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK3 = 8MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK4 = 6MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK5 = 8MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK6 = 24MHz
    ARM9_0:GEL 输出:PLL0_SYSCLK7 = 4MHz
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|             PLL1信息            |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:PLL1_SYSCLK1 = 24MHz
    ARM9_0:GEL 输出:PLL1_SYSCLK2 = 24MHz
    ARM9_0:GEL 输出:PLL1_SYSCLK3 = 24MHz
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|             PSC0信息            |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:状态解码器:
    ARM9_0:GEL 输出: 0 = SwRstDisable (复位有效、时钟关闭)
    ARM9_0:GEL 输出: 1 = SyncReset (已连接复位、时钟打开)
    ARM9_0:GEL 输出: 2 =禁用(复位取消置位、时钟关闭)
    ARM9_0:GEL 输出: 3 =使能(复位取消置位、时钟开启)
    ARM9_0:GEL 输出:>3 =正在进行转换
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:模块0:   EDMA3CC (0)       状态= 0
    ARM9_0:GEL 输出:模块1:   EDMA3 TC0         状态= 0
    ARM9_0:GEL 输出:模块2:   EDMA3 TC1         状态= 0
    ARM9_0:GEL 输出:模块3:   EMIFA (BR7)       状态= 0
    ARM9_0:GEL 输出:模块4:   SPI 0             状态= 0
    ARM9_0:GEL 输出:模块5:   MMC/SD 0          状态= 0
    ARM9_0:GEL 输出:模块6:   AINTC             状态= 3
    ARM9_0:GEL 输出:模块7:   ARM RAM/ROM       状态= 3
    ARM9_0:GEL 输出:模块9:   UART 0            状态= 0
    ARM9_0:GEL 输出:模块10:   SCR 0 (BR0/1/2/8) 状态= 3
    ARM9_0:GEL 输出:模块11:   SCR 1 (BR4)       状态= 3
    ARM9_0:GEL 输出:模块12:   SCR 2 (BR3/5/6)   状态= 3
    ARM9_0:GEL 输出:模块13:   PRUSS             状态= 0
    ARM9_0:GEL 输出:模块14:   ARM               状态= 3
    ARM9_0:GEL 输出:模块15:   DSP               状态= 3
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|             PSC1信息            |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:状态解码器:
    ARM9_0:GEL 输出: 0 = SwRstDisable (复位有效、时钟关闭)
    ARM9_0:GEL 输出: 1 = SyncReset (已连接复位、时钟打开)
    ARM9_0:GEL 输出: 2 =禁用(复位取消置位、时钟关闭)
    ARM9_0:GEL 输出: 3 =使能(复位取消置位、时钟开启)
    ARM9_0:GEL 输出:>3 =正在进行转换
    ARM9_0:GEL 输出:
    ARM9_0:GEL 输出:模块0:   EDMA3CC (1)       状态= 0
    ARM9_0:GEL 输出:模块1:   USB0 (2.0)        状态= 0
    ARM9_0:GEL 输出:模块2:   USB1 (1.1)        状态= 0
    ARM9_0:GEL 输出:模块3:   GPIO              状态= 0
    ARM9_0:GEL 输出:模块4:   UHPI              状态= 0
    ARM9_0:GEL 输出:模块5:   EMAC              状态= 0
    ARM9_0:GEL 输出:模块6:   DDR2和 SCR F3   状态= 0
    ARM9_0:GEL 输出:模块7:   McASP0 + FIFO     状态= 0
    ARM9_0:GEL 输出:模块8:   SATA              状态= 0
    ARM9_0:GEL 输出:模块9:   VPIF              状态= 0
    ARM9_0:GEL 输出:模块10:   SPI 1             状态= 0
    ARM9_0:GEL 输出:模块11:   I2C 1             状态= 0
    ARM9_0:GEL 输出:模块12:   UART 1            状态= 0
    ARM9_0:GEL 输出:模块13:   UART 2            状态= 0
    ARM9_0:GEL 输出:模块14:   McBSP0 + FIFO     状态= 0
    ARM9_0:GEL 输出:模块15:   McBSP1 + FIFO     状态= 0
    ARM9_0:GEL 输出:模块16:   LCDC              状态= 0
    ARM9_0:GEL 输出:模块17:   eHRPWM (全部)      状态= 0
    ARM9_0:GEL 输出:模块18:   MMC/SD 1          状态= 0
    ARM9_0:GEL 输出:模块19:   upp               状态= 0
    ARM9_0:GEL 输出:模块20:   ECAP (全部)        状态= 0
    ARM9_0:GEL 输出:模块21:   EDMA3 TC2         状态= 0
    ARM9_0:GEL 输出:模块24:   SCR-F0 BR-F0      状态= 3
    ARM9_0:GEL 输出:模块25:   SCR-F1 BR-F1      STATE = 3
    ARM9_0:GEL 输出:模块26:   SCR-F2 BR-F2      状态= 3
    ARM9_0:GEL 输出:模块27:   SCR-F6 BR-F3      状态= 3
    ARM9_0:GEL 输出:模块28:   SCR-F7 BR-F4      STATE = 3
    ARM9_0:GEL 输出:模块29:   SCR-F8 BR-F5      状态= 3
    ARM9_0:GEL 输出:模块30:   BR-F7 (DDR 控制器) 状态= 3
    ARM9_0:GEL 输出:模块31:   L3 RAM、SCR-F4、BR-F6状态= 3

    也许这至少有助于或提供一些线索...

    此致

    霍斯特

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

    Brad、您好!

    感谢您提供第一个提示、即尝试通过 JTAG 进行连接。

    (笑声)

    请参阅以下两条有关我的调查的消息、以进一步隔离问题。

    这个问题只是为了删除"TI 认为这解决了问题"状态标志。

    霍斯特

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

    霍斯特、

    SOC 时钟和 PLL 是旁路状态,因此 SOC ROM 似乎正在检测引导引脚为仿真调试引导而不是配置 PLL。您表示引导逻辑配置为 NAND 引导,但基于 Debug GEL 输出。 引导设置为仿真调试引导。 是否有允许您更改引导设置的引导开关设置。 也可以比较工作板和非工作板的输出。  

    当电路板在 POR 上n`t 引导但在后续复位时引导时、我们会怀疑 SOC 或引导介质 (在您的情况下为 NAND 闪存)出现电源时序问题。 您是否查看了不工作电路板上的电源定序。 当 SOC 尝试从闪存读取数据时,NAND 闪存是否通电?  使用 JTAG 和 CCS 测试这种情况的一个好方法是将电路板配置为从 NAND 引导、并在 POR 时使其失败。 然后连接到 ARM9并转至 Run->Reset->CPU reset 并运行内核。 CPU 复位将器件放回 ROM 并重新启动启动序列。 如果 NAND 器件在此时间范围内已通电、则后续引导应正确引导 SOC、就像您正在应用的电路板复位一样。

    此致、

    Rahul

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

    [引用用户="Horst Beched"]

    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:|              BootROM 信息               |
    ARM9_0:GEL 输出:-------------------------------------------------------
    ARM9_0:GEL 输出:ROM ID:d800k008
    ARM9_0:GEL 输出:器件修订版本2.1
    ARM9_0:GEL 输出:引导引脚:30
    ARM9_0:GEL 输出:引导模式:仿真调试
    ARM9_0:GEL 输出:
    ROM 状态代码:0x00000000
    说明:ARM9_0:GEL 输出:无错误
    ARM9_0:GEL 输出:
    程序计数器(PC)= 0xFFFFFF0000
    ARM9_0:GEL 输出:

    [/报价]

    霍斯特——抱歉我在度假,论坛没有“外出”。  谢谢、Rahul、您的参与。  我想从您的 JTAG 脚本中突出显示上述行。  该行根据 BOOTCFG 寄存器的值获得输出。  BOOTCFG 寄存器是一个只读寄存器、在复位时锁存引导引脚状态。  在出现故障的情况下、它被锁存为"仿真调试"模式、即0x1E。  引导 ROM 使用此值来确定要执行的操作、因此行为是合理的。  换言之、您需要弄清为什么引导引脚未正确锁定在故障电路板上。  也许您已经...  您能否向我们提供有关您的问题是否已解决的最新信息?

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

    Brad 和 Rahul、您好!

    首先、感谢您提供第一个提示、即尝试 JTAG 调试。 我们认为,这一问题并不是太紧迫,因此,两周的答复延迟不是问题。

    我在尝试 我们的 XDS100v2 JTAG 适配器以及 CCS 5.5安装时学到了一点、它在 VirtualBox 中运行、在 Win7-box 上执行 Ubuntu 16.04。  在这种配置中、XDS100v2无法以可接受的方式使用。 如文档所述、一切"似乎正常"、但运行速度非常慢(单步执行时每条指令大约一分钟)、无法获得合理结果或对问题的理解。 但原则上它起作用。 XDS100探测器在没有 VirtualBox *****和*** VirusScanner 开销的情况下,在本地 Linux 盒上运行速度快得多,可用性更强。

    错误的引导模式:正确、当 XDS100处于活动状态时、引导模式被设定为 JTAG (0x1E)。 但这似乎来自 CCS 内的适配器/调试器设置。 我找不到开关/选项卡/配置文件、在使用 JTAG 适配器时修改引导模式的位置-但我相信、这是可能的。 否则、调试某种问题根本就不可能。

    但是、我得到了进一步的理解(简单!) 谷歌和阅读。

    在我发布第一篇帖子后的周末、我谷歌搜索了有关 TI ARM 处理器启动问题的类似错误报告/社区帖子、我找到了 AM1808 Sitara 芯片的芯片勘误表、该芯片与 OMAP-L (相同的 ARM 内核、但没有 DSP 配套器件)非常接近。 在本文档中、我发现了问题2.0.9、它确切地描述了我们的问题。 然后、我读取 OMAP-L138 SPRZ301M 的芯片勘误表 (抱歉 、我在一个月前没有这个想法)、并且这个芯片具有完全相同的"异或性"、如"Advisory 2.3.23"中所述。 因此、我考虑了一个"次级复位"修复。

    在我们的硬件中、我们使用 TPS3707-33DR 欠压检测器和复位计时器、并且主复位输入#MR 引脚1也连接到 RS232控制台连接器的复位引脚按钮。

    在不重新设计太多硬件的情况下生成次级复位的想法是将 TPS3707更改为包含看门狗计时器的 TPS3705。 我   将 OMAP 焊球 T18 "CLKOUT"直接连接到 TPS3705的 WDI 输入(引脚6)和看门狗输出#WDO、并与控制台连接器的按钮和(外部 GPIO 控制)复位输入引脚并行。

    我希望 TPS3705 #WDO 输出的临时快捷方式(如果有人按下复位按钮或我们的脚本控制的板级闪存系统脉冲、输出持续几百毫秒)不会损坏 TPS3705。 如果 OMAP 不启动并且在 POR 之后的1.5秒内不提供 CLKOUT、它将从 TPS3705获得一个200ms 的第二个复位脉冲。 这将重复、直到 OMAP 运行。

    就在昨天、我们获得了 TPS3705-DR33芯片的五个样片、因此我无法同时进行测试、因此我问您:您如何考虑该变通办法?

    此致

    霍斯特

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

    你(们)好、Horst

    Rahul 向我转发了这一帖子。 很好,你可以在这方面进一步搜索-有时我们会忘记我们自己的错误/失败症状:)  

    >>您如何看待该变通办法?

    从较高的层次来看、它看起来不错、并且似乎遵循了 Advisory 2.0.20围绕项目符号1进行的工作。 您将需要管理 CLKOUT 或 GPIO 切换、并确保它开始/不开始馈入您的看门狗电路的时序基于您的启动时序和专门针对您的用户引导加载程序的仪表、具体取决于您何时可以 使 CLKOUT 或 GPIO 切换等

    您是否确认您的上拉/下拉不在2.0.9中列出的推荐范围内? 我相信、从长远来看、只要您有机会旋转电路板、就应该解决这个问题。

    让我们了解一下它如何与看门狗复位权变措施配合使用。

    此致

    Mukul  

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

    霍斯特、

    我们在几周内没有收到您的意见。 我们想知道您是否对此问题有任何更新。  

    此致、

    Rahul

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

    您好 Rahul、

    谢谢你的友好提醒:-)

    我们仍在就这个问题开展工作。 焊接两条电线并更换 TPS3707芯片对我来说很容易、但由于人手不足、我们无法修改 u-boot 代码、以便在上电后的1.2s 内激活 OMAP 的 CLKOUT 引脚。

    几个月前、我们在 LCDK 评估板上使用该引脚为 ADS1274 ADC 计时、该代码仍在我们的软件中。 但是、此激活仅在 Linux 引导时进行、并且在加电后超过12秒、太晚了、无法在此处提供帮助。

    因此、我们(我的软件伙伴和我)将在本周修改 u-boot 的早期初始化、以便设置焊球 T18的引脚多路复用器、使其发挥"CLKOUT"的功能。 由于我理解技术参考手册 SPRUH77-A 中的描述、因此用0x1 A 启用 SYSCFG PINMUX13_7_4位字段中的引脚功能应该足够了。 PLLC0的 OCSCLK 配置寄存器的 OCSRC 字段默认设置为0x14、该设置应通过24MHz 外部时钟频率馈送至 CLKOUT 引脚 T18。 默认情况下、OSCDIV 寄存器也设置为0x8000 (16位)、这意味着使能和1:1的分频器比率。  

    当我们编辑源代码时、我们也会设置这两个寄存器、我们不确定是否会被 u-boot 标准代码修改、但我们将对这些寄存器名称进行 grep、并首先查看源代码。

    您是否同意这种设置理念? 我们将在明天或星期三对此进行编码并尝试、并报告我们的结果。

    此致、

    霍斯特

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

    霍斯特、

    正如 Mukul 在先前的 POR 中所指出的、从较高的层面来看、它看起来不错、并且似乎遵循了基于 TRM 读取 CLKOUT 配置引脚 T18的理解情况的 Advisory 2.0.20 Work 项目符号、这似乎也是正确的。 我不是 uboot 专家、我不能确切说明 u-boot 标准代码设置引脚的位置、但我会 ping u-boot 专家、看看他们是否可以评论或指向源代码。

    此致、

    Rahul

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

    您好、Rahul 等。

    同时、我们能够解决该问题。 我们在软件中进行了一些修改、成功地修补了两个电路板、因此这是芯片勘误表 sprz301m 中建议2.3.23 (或者、也许是建议2.2.0)中描述的 OMAP-L138异常。

    我们修复了电路板、将 TPS3707-33D 复位计时器替换为具有看门狗的 TPS3705-33D 复位计时器。 看门狗输出#WDO 通过二极管1N4148连接到同一芯片的主复位输入#MR、阳极连接到#MR、kathode 连接到#WDO。  当按下 RESET 按钮或通过我们的控制台连接器施加外部复位时、该二极管避免了#WDO 输出的临时快捷方式。

    为了向看门狗发送处理器活动信号、我们将24MHz CPU 时钟从 OMAP CLKOUT 引脚(T18)馈送到 TPS3705的 WDI。

    上电后、必须在不到1.2s 的时间内激活时钟输出、否则看门狗将再次复位到 OMAP。 为此、我们对软件进行了两项修改(采用 u-boot 和 Linux 3.3):

    在 u-boot 的初始化代码中、我们将引脚 T18的引脚多路复用器寄存器设置为 CLKOUT 功能、并将 PLLC0中 OC中国 证监会多路复用器的 OCSEL 字段设置为0x14、以便通过连接到 OSCIN 的 XCO 传入主时钟进行馈送。 OSCDIV 分频器被启用并被设定为一个0的分频比(寄存器值0x8000)。 u-boot 初始化从上电开始所需的时间少于0.8s、直到 CLKOUT 上出现24MHz 时钟、这符合时序需求。

    2.为了能够刷写原始电路板、在闪存 u-boot 并使其正常工作之前、我们在 SFT 目标 C 代码中进行了相同的添加、每当 OMAP 寄存器设置为引导模式 UART2时、就会首先加载该代码、 第一个软件包(u-boot 封装本身)会刷写到我们的 NAND 芯片中。

    运行 u-boot 后、我们有以太网、可以分别在引导模式 NAND-8或 NAND-16中执行以下所有设置和闪存。

    所以我们很好,我们的老板很高兴:-)

    此致 Horst