Linux kernel Sitara AM335x evm,zImage未启动

Linux kernel Sitara AM335x evm,zImage未启动,linux-kernel,arm,cross-compiling,embedded-linux,u-boot,Linux Kernel,Arm,Cross Compiling,Embedded Linux,U Boot,我在启动内核时遇到问题。我用am335x-evm_deconfing编译了我的内核。在编译之前,我添加了initramfs,并展示了我自己的rootfs。编译结束后,我将zImage转移到NFS文件夹。我重启了NFS demon,打开了Sitara。在主菜单u-Boot中,我执行了这个命令 setenv bootfile zImage setenv fdtfile am335x.dtb setenv serverip <serverip> dhcp 在这个命令之后,我看到了这个控制

我在启动内核时遇到问题。我用am335x-evm_deconfing编译了我的内核。在编译之前,我添加了initramfs,并展示了我自己的rootfs。编译结束后,我将zImage转移到NFS文件夹。我重启了NFS demon,打开了Sitara。在主菜单u-Boot中,我执行了这个命令

setenv bootfile zImage
setenv fdtfile am335x.dtb
setenv serverip <serverip>
dhcp
在这个命令之后,我看到了这个控制台行

#### Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
Loading Device Tree to 8f321000, end 8f32c4e6 ... OK

Starting kernel ...
在这一阶段,这个过程是悬而未决的。有什么建议吗。?也许我做错了什么

对于append,我从u-Boot环境粘贴变量

arch=arm
baudrate=115200
board=am335x
board_name=FLogicSi
board_rev=B.01
boot_fdt=try
boot_targets= mmc0 nand
bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
bootcmd_mmc0=setenv devnum 0; setenv rootpart 2; run mmc_boot;
bootcmd_nand=run nandboot;
bootcmd_usb=setenv devnum 0; run usb_boot;
bootdelay=3
bootdir=/boot
bootenv=uEnv.txt
bootfile=kernelDM
bootpart=0:2
console=ttyO0,115200n8
cpu=armv7
dfu_alt_info_emmc=rawemmc mmc 0 3751936
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw mmc 100 100;u-boot.img.raw mmc 300 400;spl-os-args.raw mmc 80 80;spl-os-image.raw mmc 900 2000;spl-o1
dfu_alt_info_nand=NAND.SPL part 0 1;NAND.SPL.backup1 part 0 2;NAND.SPL.backup2 part 0 3;NAND.SPL.backup3 part 0 4;NAND.u-boot-spl-os part 0 5;NAND.u-boot part 0 6;NAND0
dfu_alt_info_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
dnsip=10.0.0.1
eth1addr=d0:ff:50:b3:58:2e
ethact=cpsw
ethaddr=d0:ff:50:b3:58:2c
fdt_high=0xa0000000
fdtaddr=0x80F80000
fdtfile=am335x-flsi-usb.dtb
fileaddr=80f80000
filesize=84e7
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test
gatewayip=10.0.0.1
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize
ipaddr=10.0.0.32
loadaddr=0x80200000
loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
mmc_boot=setenv devtype mmc; if mmc dev ${devnum}; then run mmcargs;run scan_boot; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; run mmcboot;fi
mmcargs=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;
mmcdev=0
mmcloados=run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; t;
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait
mtdids=nand0=nand.0
mtdparts=mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),128k(NAND.SPL.backup2),128k(NAND.SPL.backup3),256k(NAND.u-boot-spl-os),1m(NAND.u-boot),128k(NAND.u-boot-)
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} - ${fdtaddr}
nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048
nandrootfstype=ubifs rootwait=1
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs 
nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr}
netmask=255.0.0.0
nfsopts=nolock
partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot}
rootfstype=${ramrootfstype}
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M
ramrootfstype=ext2
rdaddr=0x81000000
rootpart=2
rootpath=/export/rootfs
scan_boot=echo Scanning ${devtype} ${devnum}...; for prefix in ${bootdir}; do for script in ${bootfile}; do run script_boot; done; done;
script_boot=if load ${devtype} ${devnum}:${rootpart} ${loadaddr} ${bootdir}/${bootfile}; then run findfdt; load ${devtype} ${devnum}:${rootpart} ${fdtaddr} ${bootdir}/;
serverip=10.0.0.10
soc=am33xx
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial
stdin=serial
stdout=serial
usb_boot=setenv devtype usb; run usb_init; if usb dev 0; then run usbargs;run scan_boot; bootz ${loadaddr} - ${fdtaddr}; fi
usb_init=usb start 0;
usbargs=setenv bootargs console=${console} ${optargs} root=${usbroot} rootfstype=${usbrootfstype}
usbnet_devaddr=d0:ff:50:b3:58:2e
usbroot=/dev/sda2 rw
usbrootfstype=ext4 rootwait
vendor=ti
ver=U-Boot 2013.10-00189-g78d8ebd-dirty (Oct 15 2014 - 17:35:33)

Environment size: 5565/131067 bytes
这是printenv的输出。我认为变量控制台是正确的

在内核的menuconfig中,我有一个值:

root=/dev/mmcblk0p2 rootwait console=ttyO0,115200 

丹尼尔

附录—— 用于传输的控制台日志

U-Boot# setenv bootfile kernelDM
U-Boot# setenv fdtfile am335x-flsi-usb.dtb
U-Boot# setenv serverip 10.0.0.10
U-Boot# dhcp 
link up on port 0, speed 1000, full duplex 
BOOTP broadcast 1 
DHCP client bound to address 10.0.0.32 
Using cpsw device TFTP from server 10.0.0.10; our IP address is 10.0.0.32 
Filename 'kernelDM'. 
Load address: 0x80200000 
Loading: ################# ... ### 2.4 MiB/s 
done 
Bytes transferred = 29544136 (1c2cec8 hex) 

输出
正在启动内核…
表明zImage的解压缩正在挂起。initramfs有多大?传输的图像的总大小是多少?“我已将zImage转移到NFS文件夹。”--您应该使用TFTP服务器的目录。您使用的是TFTP而不是NFS。@锯末我的zImage大小为28852K。我向您展示从控制台传输日志。U-Boot#setenv bootfile kernelDM U-Boot#setenv fdtfile am335x-flsi-usb.dtb U-Boot#setenv serverip 10.0.0.10 U-Boot#端口0上的dhcp链接,速度1000,使用cpsw设备TFTP从服务器10.0.0.10将全双工BOOTP广播1 dhcp客户端绑定到地址10.0.0.32;我们的IP地址是10.0.0.32文件名“kernelDM”。加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:0x80200000加载地址:2.4MIB/s完成字节数传输=29544136(1c2cec8十六进制)哈希模式更长,我必须将其缩减。@artlessnoise是的,我做了。我转移了我的工作。我在上面的评论中描述了它。为什么要显示“zImage”作为引导文件名,然后显示“kernelDM”?“kernelDM”来自哪里?为什么这么大?我遇到过这样大的uImage+initramfs的问题,并且已经摆脱了initramfs。顺便说一句@artlessnoise这个问题对于配置调试或内核中的其他任何东西来说可能太早了,无法产生任何影响。@sawdust请参阅。我想我以前和你谈过这个?您可能需要通过定义/取消注释某些代码来启用解压缩程序代码中的某些跟踪。如果mach/SOC支持,用于调试的汇编宏将在ARM Linux的任何引导阶段工作。请参阅并查找调试。您是对的,这可能是u-boot问题。谁知道呢?
U-Boot# setenv bootfile kernelDM
U-Boot# setenv fdtfile am335x-flsi-usb.dtb
U-Boot# setenv serverip 10.0.0.10
U-Boot# dhcp 
link up on port 0, speed 1000, full duplex 
BOOTP broadcast 1 
DHCP client bound to address 10.0.0.32 
Using cpsw device TFTP from server 10.0.0.10; our IP address is 10.0.0.32 
Filename 'kernelDM'. 
Load address: 0x80200000 
Loading: ################# ... ### 2.4 MiB/s 
done 
Bytes transferred = 29544136 (1c2cec8 hex)