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/DRA750:J6在内核中引导完成

Guru**** 2551370 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593328/linux-dra750-j6-boot-up-stucking-in-kernel

器件型号:DRA750
主题中讨论的其他器件:DRA752

工具/软件:Linux

我们有自定义子板 +自定义 DRA752 CPU 模块板 ,带有 uboot 2014.07 ,采用 glsdk 7.03.00.3格式,但我们的某些 CPU 模块通过 MP 行进行筛选, 效果很差。

由于这些 CPU 模块 无法成功启动, 因此在“正在启动内核...”中进行了存根 在启动期间、日志如下所示:

U-Boot 2014.07 (2017年4月26日- 16:16:36)

CPU:DRA752-GP ES2.0
板:DRA7xx
I2C:就绪
DRAM:2 GiB
MMC:OMAP SD/MMC:0、OMAP SD/MMC:1、OMAP SD/MMC:2
使用默认环境

序列号未设置、正在设置...
SATA link 0超时。
AHCI 0001.0300 32插槽1端口3 Gbps 0x1不支持 SATA 模式
标志:64位 NCQ stag pm led clo only pmp pio sagadopt part ccc apst
扫描总线设备...
找到0个器件。
SCSI:net:PHY 未找到
cpsw
按任意键停止自动引导:0
J6 ...
卡未响应电压选择!
卡未响应电压选择!
切换到分区#0,好
的 mmc1 (第0部分)是
当前在设备1
上找到的设备 SD/MMC,读取 j6_uenv.txt
206字节从
j6_uenv.txt 加载的环境3ms (66.4 KiB/s)中读取从
mmc1导入环境...
5178640字节在121ms (40.8 MIB/s)内读取
101700字节在8ms (12.1 MIB/s)内读取
从 mmc1...
内核映像@ 0x82000000 [ 0x000000 - 0x4f0510]
###平展设备树 blob (位于88000000)
使用0x88000000的 FDT blob 启动
正在将设备树加载到8ffe4000,结束8ffd43... 确定

启动内核...

您能给我们一些调试的方向吗?  (这应该是硬件问题,但我们想知道哪个部分是 NG )

BTW、我在 J6_uenv.txt 中增加了调试级别(loglevel=8)。

此致、

鲍伊·任

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

    您好、Bowei、

    此主题与以下主题相同:

    e2e.ti.com/.../593340

    我将关闭它、请不要在同一主题上开始多个主题。

    此致、

    Mariya

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

    它们可能不同。 一个是在"启动内核"中进行存根、另一个是内核紧急情况。
    它们是不同的、对吧?

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

    这两个线程中的描述看起来是相同的,但在一个情况下,您会遇到内核恐慌,而在另一个情况下,您会在“正在启动内核...”之后卡住。

    您能否说明当您遇到不同错误时、您的设置有何不同?

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

    设置相同。 这两个 CPU 模块从我们的生产线中滤除。 我们想知道这个 CPU 模块上发生了什么。
    您能给我一些调试的方向吗? 或者我们需要在何处添加调试消息?

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

    您好、Bowei、

    通常、错误的 DTB 会导致引导卡在"启动内核..." 但是、由于您可能在所有电路板上使用相同的软件设置、我怀疑这是一个不同的问题。

    有几种方法可以检查正在发生的情况

    如果 JTAG 可用、则连接调试器- CCS 或 Lauterbach

    使用 log_buf、内核打印内容存储在"_log_buf"指向的位置。该地址可在内核构建目录的"System.map"文件中找到。

    • 获得地址后、您可以重置电路板并在 u-boot 处停止
    • 将内存内容转储到__log_buf 指向的位置,将 virt 地址转换为 phys,通常为0xc***只需将其更改为0x8****,然后使用“MD 0x” #objects"  可以读取内容。
    • 例如、如果_log_buf 地址为0xcda00000、则转储"MD 0x8da00000 0x1000"

    此致、

    RK

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

    您好 RK、

    首先、感谢您的支持。

    但您能更详细地描述一下吗? 或者、您能否与我分享相关文档?

    1.我需要在哪里打印"log_buf"?

    2.内容是地址还是不是"System. map"中的地址? (系统映射片段如下所示)

    00000000 t __vectors_start
    00000018 a cpu_v6_suspend_size
    00000024 a cpu_v7_suspend_size
    00001000 t __stubs_start
    00001004 t vector_rst
    00001020 t vector_IRQ
    000010a0 t vector_dabt
    00001120 t vector_pabt
    000011a0 t vector_und 00001004 t vector_rst 000010a0
    
    
    
    t vector_rt vector_rt 00024 t vector t_c00024 t_c000t_c000t_trador_c000t_trabt 000t_c00024 t_trador_c000t_trador_c000t_c000t_c000t_trador_
    
    
    
    _Turn _MMU_ON_loc
    c000813c t __fixup_pv_table
    c000818c t __ve_atags
    c0008200 T __exception_text_start
    c0008200 T _stext
    c0008200 T ASM_DO_fetc0008214
    T do_undefendir c0008384
    T DO_IPI t_IN000843_t_t_t_t_abort
    t_t_t_intrabort t_c0008000843_t_t_t_t_t_t_intrabort t_t_t_c000800080008t_t_t_t_t_inq_t_intrl
    
    
    
    
    

    3.参数"#objects"是什么? 如何知道"#objects"的正确值?

    非常感谢您的帮助!

    此致、

    Bowei

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

    您好、Bowei、

     我刚刚记得、方法2可能不会直接在 DRA75x 上工作、因为所有复位都会重新路由到冷复位、这会擦除 DDR。

    但是、您可以使用 CCS 读取_log_buf 内容、而无需重置电路板。

    您是否在 System.map 文件中找不到"_log_buf"? 请参阅下面的 System.map 文件示例。

    c0996438 b excluse_console
    c099643c b text.34688
    c099683c b __log_buf
    c09b6840 b syslog_seq
    c09b6848 b syslog_idx
    

    连接 CCS 后,打开内存浏览器并输入地址"0x "以查看内容。

    此致、

    RK

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

    您好 RK、

    我在我的 System.map 中找到了__log_buf 内容

    c0a5c47c b syslog_prev
    c0a5c480 b syslog_partial
    c0a5c484 b __log_buf
    c0a6c484 b always_kmsg_dump
    c0a6c488 b dump_stack_arch_desc_str 

    我转储了__log_buf 地址的值,它们是不同的。

    工作板上的值为"D09E56FC"、但非工作板上的值为"00000000"。

    从上述资料中可以得出什么结论? 您对 CPU 模块或 SoC 中出现故障有什么想法吗?

    此致、

    Bowei

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bowei、
    它是一个环形缓冲器的起始部分。 不仅一个值、还可以保存高达128K 字节的数据。
    如果转储从__log_buf 开始的下一个4K 字节,您应该能够在稍后的时间看到队列中要打印到控制台的内核打印件。


    此致、
    RK