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/TMDSLCDK138:最新的 Processor SDK Linux 内核在引导时崩溃

Guru**** 2551110 points
Other Parts Discussed in Thread: AM1808, OMAP-L138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606475/linux-tmdslcdk138-the-latest-processor-sdk-linux-kernel-crashes-at-boot

器件型号:TMDSLCDK138
主题中讨论的其他器件:AM1808OMAP-L138DA8XXOMAPL138

工具/软件:Linux

你好!

我们正在使用 OMAPL138-LCDK 电路板。 我正在尝试从 Processor SDK v03.03.00.04编译和启动最新的可用 Linux 内核(4.9.x)。

我使用的默认配置是 tisdk_omapl138-lcdk_defconfig。 工具链是从 Ubuntu epos 安装的最新 ARM GCC。

所有编译都正常、无错误。 但是、当我尝试从构建的二进制文件引导 Linux 时、它会崩溃。 引导日志如下(内核 args 中指定了 USER_DEBUG=31):

[日志从此处开始]

正在启动内核...

正在解压缩 Linux... 已完成、正在引导内核。
在物理 CPU 0x0上引导 Linux
Linux 版本4.9.13-g102f61776e (root@Denis-VirtualBox)(gcc 版本4.7.3 (ubuntuo/Linaro 4.7.3.3-12ubuntu1))#3优先于 Mon Jun 26 6月26日16:07:34 MSK 2017
CPU:ARM926EJ-S [41069265]修订版5 (ARMv5TEJ)、CR=0005317f
CPU:VIVT 数据高速缓存、VIVT 指令高速缓存
编号:FDT:机器模型:DA850/AM1808/OMAP-L138 LCDK
内存策略:数据高速缓存写入
达芬奇 da850/OMAP-L138/AM18x 变体0x1
在区域顺序和移动分组中构建1个区域列表。  总页数:24288页
内核命令行:console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait mem=32M@0xC0000000 mem=64M@0xc4000000 ip=off user_debug=31
PID 哈希表条目:512 (顺序:-1、2048字节)
DEntry 高速缓存散列表条目:16384 (顺序:4、65536字节)
inode 高速缓存哈希表条目:8192 (顺序:3、32768字节)
内存:90452K/98304K 可用(4456K 内核代码、359K rwdata、1560K rodata、224K init、154K BSS、 7852K 保留、0K CMA 保留)
虚拟内核内存布局:
   向量 :0xff0000-0xff1000  (  4KB)
   Fixmap :0xc00000 - 0xc00000  (3072 KB)
   vmalloc:0xc8800000 - 0x0x800000  (880 MB)
   低内存 :0xC0000000 - 0xC80000  (128 MB)
   模块:bbf000000 - 0xC0000000  ( 16 MB)
     .text:0xc0008000 - 0xc04626f8  (4458 KB)
     init:0xc05ea000-0xc0622000  (224KB)
     data:0xc0622000-0xc067bf50  (360KB)
      .bss:0xc067bf50 - 0xc06a2a78  (155KB)
slub:HWalign=32、order=0-3、MinObjects=0、CPU=1、Nodes=1
可抢占的分层 RCU 实现。
       叶片扇出的构建时间调整为32。
NR_IRQ:245
时钟源:timer0_1:屏蔽:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:79635851949 ns
SCHED_CLOCK:24MHz 时为32位、分辨率41ns、每89478484971ns 换行一次
控制台:彩色虚拟设备80x30
正在校准延迟环路... 226.09 BogoMips (lpj=1130496)
PID_max:默认值:32768最小值:301
挂载高速缓存哈希表条目:1024 (顺序:0、4096字节)
mountpoint-cache 哈希表条目:1024 (顺序:0、4096字节)
CPU:测试写入缓冲区一致性:好的
为0xc0008400 - 0xc0008458设置静态标识映射
devtmpfs:已初始化
VFP 支持 v0.3:不存在
时钟源:Jiffies:MASK:0xFFFFFFFF max_cycles:0xFFFFFFFF、max_idle_ns:19112604462750000 ns
futex 哈希表条目:256 (顺序:-1、3072字节)
pinctrl 内核:已初始化的 pinctrl 子系统
NET:注册协议系列16.
DMA:预分配256 KiB 池、用于原子相干分配
空闲:使用调速器梯
空闲:使用调速器菜单
多路复用器:已初始化 RTC_ALARM
多路复用器:设置寄存器 RTC_ALARM
多路复用器:   PINMUX0 (0x00000000)= 0x48080000 -> 0x28080000
EDMA 1c00000。EDMA:禁用 memcpy
EDMA 1c00000。EDMA:TI EDMA DMA 引擎驱动程序
EDMA 1e30000.EDMA:禁用 memcpy
EDMA 1e30000.EDMA:TI EDMA DMA 引擎驱动程序
I2C_Davinci i2c_Davinci.1:找不到节点/SoC@1c00000/pinmux@14120/pinmux_i2c0_pins 的 pctldev、推迟探针
时钟源:切换到时钟源 timer0_1
NET:注册协议系列2.
TCP 建立哈希表条目:1024 (顺序:0、4096字节)
TCP 绑定哈希表条目:1024 (顺序:0、4096字节)
TCP:配置哈希表(建立1024 BIND 1024)
UDP 哈希表条目:256 (顺序:0、4096字节)
UP-Lite 哈希表条目:256 (顺序:0、4096字节)
NET:注册协议系列1
RPC:注册后命名为 UNIX 套接字传输模块。
RPC:注册的 UDP 传输模块。
RPC:注册的 TCP 传输模块。
RPC:已注册的 TCP NFSv4.1反向通道传输模块。
工作集:timestamp_bits=14 max_order=15 bucke_order=1
块层 SCSI 通用(BSG)驱动程序0.4版已加载(主要250)
已注册 IO 调度程序 NOOP (默认)
pinctrl-single 1c14120.pinmux:请更新 DTS 以使用#pinctrl-cells =<2>
pinctrl-single 1c14120.pinmux:pA fec14120处160个引脚、尺寸80
串行:8250/16550驱动程序,10个端口,禁用 IRQ 共享
控制台[ttyS2]已禁用
serial8250.2:MMIO 0x1d0d000处的 ttyS2 (IRQ = 61、base_baud = 8250000)是 TI DA8xx/66AK2x
控制台[ttyS2]已启用
返修:模块已加载
libphy:固定 MDIO 总线:探测
DaVinci_MDIO DaVinci_MDIO.0:达芬奇 MDIO 修订版本1.5
DaVinci_MDIO DaVinci_MDIO.0:检测到的 phy 掩码 FFFFFFFE
libphy:Davinci_mdio.0:探测
DaVinci_MDIO DaVinci_MDIO.0:PHY[0]:器件 DaVinci_MDIO.0:00、驱动程序 SMSC LAN8710/LAN8720
I2C /dev/entries 驱动程序
DaVinci_MMC DA830-MMC.0:获得了 CD GPIO
DaVinci_MMC DA830-MMC.0:使用 DMA、4位模式
NET:注册协议系列10.
SIT:IPv6、IPv4和 MPLS over IPv4隧道驱动程序
NET:注册协议系列17.
控制台[netcon0]已启用
netconsole:网络日志记录已启动
DaVinci_EMAC DaVinci_EMAC.1:用于读取 Mac 地址的机器/器件类型不兼容
DaVinci_EMAC DaVinci_EMAC.1:使用随机 MAC 地址:1A:E3:55:dd:71:45
输入:GPIO 密钥作为/devices/platform/gpio-keys/input/input0
mmc0:主机不支持读取只读开关、假设已启用写入
mmc0:地址 AAAA 处的新高速 SDHC 卡
mmcblk0:mmc0:AAAA SS08G 7.40 GiB
 mmcblk0:P1 P2
hctosys:无法打开 RTC 设备(rtc0)
ext4-fs (mmcblk0p2):使用 ext4子系统安装 ext3文件系统
随机:快速初始化完成
ext4-fs (mmcblk0p2):恢复完成
ext4-fs (mmcblk0p2):已安装的具有有序数据模式的文件系统。 OPTS:(空)
VFS:在设备179:2上安装了根(ext3文件系统)。
devtmpfs:已安装
释放未使用的内核内存:224K (c05ea000-c0622000)
此架构没有内核内存保护。
INIT (1):未定义指令:PC=b6fb008c
CPU:0 PID:1 Comm:INIT 未被污染4.9.13-g102f61776e #3
硬件名称:通用 DA850/OMAP-L138/AM18x
任务:c7838000 task.stack:c7836000
PC 位于 bbb6fb008c
lr 位于 bb6fa65d0
PC:[ ]   LR:[ ]   PSR:60000010
SP:bea8cb30 ip:bea8cb88 fp:bea8cda4
R10:b6fc6988 R9:7f5ea9cc R8:b6fc6988
R7:00000000 R6:00000000 R5:7f73595c R4:7f5ebb00
r3:00015ca0 r2:00000197 r1:00000000 r0:bea8cb60
FLAGS:nZCv 模式   USER_32 ISA ARM 段用户上 FIQ 上的 IRQ
控制:0005317f 表:c7b50000 DAC:00000055
代码:e48c3004 e8ac0ff0 e59f302c e79f2003 (ecac8b10)
内核严重错误-未同步:尝试终止初始化! exitcode=0x00000004

--[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000004
[日志结束]

我尝试使用 arch/arm/configs/ti_sdk_omapl138_release_defconfig 中的不同配置。 同一个故事:它崩溃。

但是、当我使用 TI 提供的预构建二进制文件以及 PDK 时、一切都可以正常启动并正常工作。

您能否提供有关如何编译内核以成功引导的提示?

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

    您能否尝试以下操作:
    CD ~/
    使 Linux_clean 成为问题
    构建 Linux

    并查看生成的 Linux 映像是否适用于您的电路板。 如果电路板启动、您可以检查 TISDK 目录中的 Rules.make 文件、并查看哪些文件用于内核配置。 也许您导出 arch=arm、而 Rules.make 指定:arch=armv5te

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、我已经验证了 OMAP-L138 LCDK 上的波纹。 我按如下方式构建内核:
    x0155517@~ MMS:μ C/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+e43d1050-geed43d1050$导出 arch=arm
    x0155517@MMS:~μ C/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+e43d1050-geed43d1050$导出路径=~μ C/ti-processor-sdk-linux-omapl138-lsysk-04.00.04.00.04.00.04.00.086/ linux-roots/linux-board/linux-roots/linux-board/linux-board/linux-board.04.00.04.00.04.00.04/linux-board/linux-roots/
    x0155517@~ MMS:μ C/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+eed43d1050-geed43d1050$导出 cross_compil=arm-linux-gnueabi-
    x0155517@~ MMS:μ C/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+e43d1050-geed43d1050$ make tisdk_omapl138-lcdk_defconfig
    x0155517@~ MMS:μ C/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+eed43d1050-geed43d1050$ make -J4

    然后、我创建了 SDK 卡并使用以下命令来替换新构建的 zImage:
    sudo mv zImage-4.9.28-geed43d1050 ./zImage-4.9.28-geed43d105.old
    sudo cp ~/ti-processor-sdk-linux-omapl138-lcdk-04.00.04/board-support/linux-4.9.28+gitAUTOINC+e43d1050-geed43d1050/arch/arm/boot/zImage ./zImage-105.28-geed43d4.9
    同步
    我的板启动正常。 我认为您应该在构建内核之前修改您的环境设置。

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

    感谢您的回答。

    我的 makefile 文件中似乎没有目标"linux_clean"、我使用"make distclean"在编译之前清理内容。
    另外、"armv5te"架构对我来说不起作用、我在"arch"目录中只有"arm"子目录。

    下面是用于构建的命令序列:

    arch=arm cross_compile=arm-linux-gnueabi-生成发行版
    arch=arm cross_compile=arm-linux-gnueabi- make tisdk_omapl138-lcdk_defconfig
    arch=arm cross_compile=arm-linux-gnueabi- make zImage
    arch=arm cross_compile=arm-linux-gnueabi- make 模块
    等等
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!

    我们使用非常相似的步骤来编译内核。 但我注意到您使用的 PSDK 版本晚于我的版本(04.00.00.04与03.03.00.04)。 也许这是关键? 请指出、我可以从何处获取适用于我的电路板的最新 PSDK?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我使用的版本是支持 OMAP-L138的官方发布版本。 您可以从此处下载:
    software-dl.ti.com/.../index_FDS.html

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、非常感谢! 最新的 SDK 工作正常、我已成功编译和引导