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/processor-SDK-AM335X:在 AM335x 上引导4.4内核时出现问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/565023/linux-processor-sdk-am335x-troubles-with-booting-4-4-kernel-on-am335x

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

美好的一天,亲爱的所有人:)

基于 AM335x 的定制板有问题。

一年前、我使用了 TI Linux、内核版本3.19、它运行得很好。 今年、我想使用具有内核4.4的 TI Linux。

我重建了新的内核和设备树,无法引导:)设备静默挂起。 以下是 u-boot 日志:

U-Boot SPL 2015.04-RC1-M脏(2015年6月25日- 18:09:55)
尝试初始化板(board.c/am33xx_spl_board_init)。
读取标题
Magic:ee3355aa
名称:A335BNLT
串行:
版本:000c
MMC:块编号0x100超出最大值(0x0)
MMC:块编号0x200超出最大值(0x0)
***错误-使用
默认环境

读取 u-boot.img
读取 u-boot.img


U-Boot 2015.04-RC1-M脏(2015年6月25日

:55

)未找到有效的环境区域 512 MIB
MMC:OMAP SD/MMC:0、OMAP SD/MMC:1
阅读 headerNet:读取 headerpsw、USB_ether
按任意键停止自动引导:0
未知命令'run'-尝试'help'
切换到分区#0、 好
的,mmc0是
在设备0
读取 boot.scr
上找到的当前设备 SD/MMC **无法读取文件 boot.scr **
读取 uEnv.txt
**无法读取文件 uEnv.txt **
5051464字节在324ms (14.9 mB/s)内读取
36181字节在50ms (706.1 kib/s)内读取
内核映像@ 0x82000000 [ 0x000000 - 0x4d1448]
###平展设备树 blob,地址为88000000
,使用0x88000000的 FDT blob 启动
正在将设备树加载到8fff4000,结束地址为8ffd54... 确定

启动内核... 

`s 都是这样。 我使用硬件 UART 作为串行终端。 它在一年前的3.19年中完美工作、现在在4.4年中不工作。

下面是 u-boot 的 printenv:

Kobus U-Boot# printenv
arch = ARM
波特率=115200
电路板=AM335x
Board_name=A335BNLT
Board_rev=000c
BOOT_FDT=尝试
bootargs=console=ttyO0、115200n8 root=/dev/nfs nfsroot=192.168.7.34:/media/kobus/fs、nolock RW IP=192.168.7.159
bootcmd=run findfdt;运行 mmcboot;setenv bootpart 1:1;运行 mmcboot;运行 netboot;
BOOTCOUNT=1
BOOTDELAY=1
bootdir=/boot
bootenv=uEnv.txt
BootFile=zImage
BOOTM_SIZE=0x10000000
bootpart=0:2
bootscript=echo 正在从 MMC${mmcdev}...;源${loadaddr}运行的 bootscript
console=ttyO0、115200n8
CPU=armv7
DFU_alt_INFO_eMMC=rawemmc RAW 0 3751936
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;mlo fat 0 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x400;spl-os-args.raw 0x80 0x80;spl-os-image.fat raw 0x900;spl-os-os-gfat 1;fat 0 uEnv.txt
dfu_alt_info_ram=内核 ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
eth1addr=84:EB:18:92:85:3b
ethact=cpsw
ethaddr=84:EB:18:92:85:39
FDT_addr_r=0x88000000
fdtaddr=0x88000000
fdtfile=kobus10.dtb
fileaddr=82000000
filesize=3ff028
findfdt=setenv fdtfile kobus10.dtb;
importbootenv=echo 从 mmc 导入环境...;env 导入-t -r $loadaddr $filesize
ipaddr=192.168.7.159
kernel_addr_r=0x82000000
loadaddr=0x82000000
loadbootenv=加载 MMC ${mmcdev}${loadaddr}${bootenv}
loadbootscript=load MMC ${mmcdev}${loadaddr}boot.scr
loadfdt=load MMC ${bootpart}${fdtaddr}${bootdir}/${fdtfile}
loadimage=load MMC ${bootpart}${loadaddr}${bootdir}/${bootfile}
loadramdisk=load MMC ${mmcdev}${rdaddr}ramdisk.gz
mmcargs=setenv bootargs console=${console}${optargets}root=${mmcroot}rootfstypy=${mmcrootfstype}
mmcboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;然后运行 bootscript;否则运行 loadbootenv;然后从${bootenv}回显已加载的环境;运行 envbootenv;fi;如果测试-n $uucmd;然后运行 loadvcmd;然后运行 envcmd;然后运行 envip;
mmcdev=0
mmclosados=run mmcargs;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则测试${boot_FDT}=试用;然后 bootz;否则、回显警告:无法加载 bootz;否则;fi;
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait
netargs=setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}RW IP=${ipaddr}
netboot=echo Hi,从网络引导...;tftp ${loadaddr}${bootfile};tftp ${fdtaddr}${fdtfile};运行 netargs;bootz ${loadaddr}-${fdtaddr}
nfsopts=nolock
partitions=uuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}
ramargs=setenv bootargs console=${console}${optargets}root=${ramroot}rootfstypy=${ramrootfstype}
ramboot=echo 从 ramdisk 引导...;运行 ramargs;bootz ${loadaddr}${rdaddr}${fdtaddr}
ramdisk_addr_r=0x88080000
ramroot=/dev/ram0 rw
ramrootfstype=ext2
读数地址= 0x88080000
rootpath=/media/kobus/fs
serverip=192.168.7.34
SoC=am33xx
args=setenv bootargs console=${console}${optargets}root=${spiroot}spifstypy=${rootrootfstype}
spiboot=echo Booting from SPI ...;运行 spiargs;SF 探测器${spibusno}:0;SF 读取${loadaddr}${spisrcadr}${spiimgsize};bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
rootspifstype=jffs2.
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial_OMAP
stdin=serial_OMAP
stdout=serial_OMAP
USBnet_devaddr=84:EB:18:92:85:3b
供应商= TI
ver = U-Boot 2015.04-RC1-M脏(2015年6月25日- 18:09:55)

环境大小:3725/131067字节

内核配置:/cfs-file/__key/communityserver-discussions-components-files/354/0066_2E00_config

和器件树文件: /cfs-file/__key/communityserver-discussions-components-files/354/5756_2E00_kobus10_2E00_dts_2E00_config

/cfs-file/__key/communityserver-discussions-components-files/354/7002_2E00_kobusxx_2E00_dtsi_2E00_config

请至少帮助启用 UART 控制台以进行内核引导。

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

    启用 EARLY_PRINTK 和 DEBUG_LL、以获取 Linux 内核中的低级调试选项。

    您能否共享在 u-boot 中将哪个 UART 用作调试控制台? 请共享位于 include/configs/中的 u-boot 配置标头、默认情况下应为 AM335x_EVM.h、但您可能已针对定制板对其进行了更改。

    另一个想法是在 am335x_evm.h (或您使用的任何 u-boot 配置文件)中添加 define debug、以便从 u-boot 获取更详细的输出。

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

    您好、Yordan。

    我按如下方式启用了 EARLY_PRINTK && DEBUG_LL:

    CONFIG_DEBUG_LL=y
    # CONFIG_DEBUG_OMAP2UART1未设置
    CONFIG_DEBUG_AM33XXUART1 = y
    # CONFIG_DEBUG_AM33XXUART2
    未设置# CONFIG_DEBUG_LL_UART_PL01X 未设置
    CONFIG_DEBUG_OMAP2PLUS_UART=y CONFIG_DEBUG_ING_UNDEBUG_US_CONFIG_UART="
    
    
    
    未设置 CONFIG_UARTL.US_UNGE_CONFIG_UARTL.US_CONFIG_UARTL.US_UNGE=Y" CONFIG_UART_UART_UART_UART="未设置 CONFIG_UN 

    我重新编译了新版本的 TI u-boot、效果很好。

    我在 u-boot 中将 UART0用作调试控制台。  am335x_evm.h 中的调试n`t 显示任何异常。 它在跳转至内核后挂起。

    我实际上使用的是 AM335x_EVM.h 其中包括:

    /cfs-file/__key/communityserver-discussions-components-files/354/3465.am335x_5F00_evm.h

    我n`t 说,所有提议的行动都没有改变任何东西。 内核在启动时挂起:(

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我让它工作了。 似乎我将错误的内核配置作为内核的基本配置