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/DRA726:U-boot 崩溃问题

Guru**** 2593720 points
Other Parts Discussed in Thread: DRA726, TLV320AIC3104

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/584282/linux-dra726-u-boot-crashing-issue

器件型号:DRA726
主题中讨论的其他器件: TLV320AIC3104

工具/软件:Linux

我们有一个使用 DRA726的新电路板、我在地址0x40300040处遇到了一些陷阱问题

如果我禁用 ICACHE 和 DCache、它会更远一些。 它看起来像是在 reserve_MMU()中的陷阱

void board_init_r (gd_t * dummy1、ulong dummy2)

   int i;

   debug (">>spl:board_init_r ()\n");
   gD->bd =&bdata;

#if!(已定义(CONFIG_SYS_ICACHE_OFF)&&已定义(CONFIG_SYS_DCach_OFF))&&\
      已定义(CONFIG_ARM)
   DRAM_init_Banksize();
   Reserve_MMU();
   enable_caches();
#endif

#if 已定义(CONFIG_SYS_SPL_malloc_start)
   MEM_malloc_init (CONFIG_SYS_SPL_malloc_start、
         CONFIG_SYS_SPL_malloc_size);
   gD->flags |= gd_flg_full_malloc_init;
#endif

在禁用这些功能的情况下、它将使用不同的 malloc、该 malloc 失败。

禁用这些功能后、我将使用看起来可以接受的调试器来实现此目的、因为无法停止 u-boot、因此我无法运行更远的时间

L 2016.05 (2017年3月24日- 15:12:29)
DRA722-GP ES2.0
SPL:无法从所有引导设备引导
###错误###请重置电路板###

如果我使用 micro SD 卡运行、它会在某个点与它一起进行陷阱

U-Boot SPL 2016.05 (2017年3月24日- 08:32:14)
DRA722-GP ES2.0
尝试从 MMC1引导


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

    我已将您的问题转交给 u-boot 专家。

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

    Michael

    因此,如果禁用 I 和 D 高速缓存,您会发现 u-boot 已被 SPL 加载但崩溃。

    您能否检查 DDR 存储器配置。 使用的 DDR 部件是什么? 它与 TI-EVM 相同还是不同?

    此致

    Ravi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在与来自瑞典公司部门的一些工程师合作。 它们具有与我使用的硬件相同的硬件。
    今天早上我被告知他们解决了这个问题。 您可以通过我们的合作伙伴的消息看到仍然存在一些问题

    "但是、我们经常会收到 prefet_abort 陷阱。 您认为硬件可能是这背后的原因吗? 我们看不到这种陷阱的来源。"

    至于您的问题、使用的 RAM 来自 Micron MT41K256M-16TW-107 x 2
    使用汽车 EMIF 电子表格设置时序时、数据速率为13333、RCD、RP 和 CL 为13.5
    频率为666Mhz。 布线长度是根据我们的硬件 Gus 提供的信息输入的。
    如果这是 DRAM 问题、那么在532Mhz 下工作效果会更好吗?

    RAM 测试通过、它会找到所有512MB 的 RAM。 通过内存浏览器看、似乎没有任何会导致 RAM 不稳定的东西。 在自动刷新的情况下、我看不到任何变为红色的内容

    米歇尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣的排印错误、我不知道 Gus 是什么意思、它应该是 Hardware Guy、而不是 Hardware Gus

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

    米歇尔

    您的内存大小是多少,无论是否是交错的? 您是否正确设置了 DMM Lisa MAP 寄存器?
    有关 TI-EVM 配置、请参阅 board/ti/dra7xx/evm.c。

    由于 RAM 测试通过、内存配置应该正常、但仍要检查上面已正确映射的 LISA 映射寄存器配置。

    如果我正确理解禁用了 I/D 高速缓存、在 MMC/SD 启动时、您将看到以下消息
    U-Boot SPL 2016.05 (2017年3月24日- 08:32:14)
    DRA722-GP ES2.0
    尝试从 MMC1引导

    您能否检查 u-boot 是否已从 MMC/SD 卡正确加载到 DDR。 使用调试打印件并检查它是否卡住。

    此致
    Ravi

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

    结果证明它无法启动 microSD 卡、这正是我们要做的事情。 QSPI 接线错误、因此在下一个硬件版本之前无法使用它。 我在 eMMC 中没有代码、也不知道代码是否有效。 考虑到我在 u-boot 中遇到了随机崩溃、在您观看有关使用相同器件的 BeagleBoard 和 TI EVM 的培训视频后很难进行测试(您应该在 DRA 器件上有一个)

    我首先通过从汽车器件上的 u-boot 方法切换到 Sitara 器件上使用的方法来解决启动问题。 然后找到我的自定义设备树。 到目前为止还不错,但最后我的结果是致命的撞车。 我们的硬件人员未正确设置 DDR (16位而不是32位)、因此它只能看到500MB 而不是1GB、但这不是导致崩溃的原因。

    我们首先尝试禁用 RTC (未安装32kHz 晶体)、但这并不是问题。 我确实注意到、在 u-boot 中、我必须禁用 LPAE 以防止 u-boot 完全崩溃。 我没有对内核执行同样的操作。 在禁用它仍然崩溃后、我们在瑞典的合作伙伴删除了 Linux 设备树中提及 RTCSS 的内容、问题消失了。

    在 DDR 上、当我要求硬件人员将其设置更改为32位时、我能够看到完整的1GB。 我的系统在 Linux 上、没有在 VirtualBox 上运行的 Windows 的 Excel 许可证、因此我必须使用 LibreOffice、其中一个基本脚本不起作用、因此我必须要求其他具有 Excel 的人运行该脚本。 最好用更好、更安全的内容替换基本脚本、或者进行仔细检查、以确保它也适用于 LibreOffice。

    我没有返回调试器查看是否仍然遇到随机崩溃。 Brad 提供了一些关于如何尽量减少这些问题的指导、我没有时间尝试这些问题。

    现在、主要问题是 MISC 错误消息。 如何消除这种情况? 新硬件可以安装、但不能安装当前硬件。
    我还尝试了 SDK 3.03中的工业内核、结果相同。

    [0.330427]------ [在此处剪切]-----
    [0.335260]警告:CPU:0 PID:1 at arch/arm/mach-omap2/omap_hwmod.c:2523 _init.constprop.23+0x1fc/0x424 ()
    [0.345443] OMAP-hwmod:rtcss:没有 MPU 寄存器目标基址
    [0.352051]模块链接在:
    [0.355280] CPU:0 PID:1 Comm:swapper/0未被污染4.4.45-activa #2
    [0.361979]硬件名称:通用 DRA72X (平展器件树)
    [0.368320]回扫:
    [0.370933][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [0.378789] r7:c08cc7ec R6:60000013 R5:00000000 R4:c094088c
    [0.384706][ ](show_stack)从[ ](dump_stack+0x8c/0xa0)
    [0.392217][ ](dump_stack)从[ ](warn_slESpath_common+0x88/b8)
    [0.400604] r7:c08cc7ec R6:000009db R5:00000009 R4:db075e58
    [0.406518][ ](warn_slowpath_common)、来自[ ](WARN_RASPH_FMt+0x38/0x40)
    [0.415535] R8:000000ac r7:db18cfc0 R6:00000000 R5:00000000 R4:c07fb820
    [0.422521][ ](warn_slowpath_fmt)、来自[ ](_init.constprop.23+0x1fc/0x424)
    [0.431540] r3:c07fd3dc r2:c07fb820
    [0.435293] R4:c0921494
    [0.437980][ ](_init.constprop.23)从[ ](_omap_hwmod_setup_All+0x48/0x98)
    [0.447263] R10:00000000 R9:c08c0600 R8:000000ac r7:db18cfc0 R6:c09196b0 R5:c091b870
    [0.455402] R4:c0921494
    [0.458090][ ](__omap_hwmod_setup_all)从[ ](do_one _initcall+0x98/0x1e4)
    [0.467193] R5:c08ccafc R4:c09196b0
    [0.470960][ ](多个_initcall)、来自[ ](kernel_init_freeed+0x1d4/0x268)
    [0.479974] R10:00000002 R9:c08c0600 R8:000000ac r7:c08fe820 R6:c090cae4 R5:c096d000
    [0.488116] R4:c096d000
    [0.490811][ ](kernel_init_freable)从[ ](kernel_init+0x18/0xf4)
    [0.499290] R10:00000000 R9:00000000 R8:00000000 r7:00000000 R6:00000000 R5:c065d418
    [0.507431] R4:c096d000
    [0.510123][ ](kernel_init)、来自[ ](RET_FANK_F叉+0x14/0x3c)
    [0.517976] R5:c065d418 R4:00000000
    [0.521762]--[末端迹线519efda632953689]--


    这些仅由 Cortex M4处理、并使用 IPU1通信接口。
    [0.534944] OMAP-hwmod:dcan1:_wait_target_disable 失败
    [0.546997] OMAP-hwmod:dcan2:_wait_target_disable 失败

    I2C1连接到 PMIC
    [0.599480] omap_hwmod:i2c1:_wait_target_disable 失败



    GBM 错误消息的泛滥也是一个严重问题、Brad 告诉我、直到10月才会解决。 我们在5月或6月投入生产。 我现在的工作是在位桶中发送消息。 但我没有收到任何其他用于调试的消息。
    这些消息可以在 Weston 代码中禁用、还是发送它们的二进制 blob?

    最后一个问题是声音、驱动程序崩溃。
    器件为 TLV320AIC3104
    I2C3

    我在设备树中的条目是否正确?

    VDD_3V3:fixedreguler-VDD_3V3{
    兼容="稳压器固定";
    稳压器名称="固定 VDD-3V3";
    稳压器最小微伏=<3300000>;
    稳压器最大值微伏=<3300000>;
    稳压器常开;
    稳压器启动;
    };


    tlv320aic3104:tlv320aic3104@18{
    #sound-di-cells =<0>;
    兼容="ti、tlv320aic3104";
    reg =<0x18>;

    分配的时钟=<&clkoutmux2_clk_mux>;
    分配的时钟父节点=<&sys_clk2_dclk_ddiv>;

    adc -稳定-ms =<40>;
    AVDD-SUPPLY =<&VDD_3V3>;
    IOVdd-supply =<&VDD_3V3>;
    DRVDD-SUPPLY =<&VDD_3V3>;
    DVDD 电源=<&VDD_3V3>;

    状态="正常";
    };


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

    我建议您针对不同的问题创建新的主题帖、以便我们能够指派合适的专家并跟踪每个问题。

    此致、
    Yordan