引导

时间:2016-10-24 17:44:52

标签: arm embedded-linux u-boot

实际上我正试图在我的Zedboard上启动linux(使用带有ARM cortex-A9处理器的zync SoC)。但没有成功。在这里,我将分享这个故事: -

1-我已经完成了我的SD卡的第一个分区,并将其命名为Boot,我在这里复制了以下内容: -

  

BOOT.bin

     

uEnv.txt

     

devicetree.dtb

     

的uImage

     

uramdisk.image.gz

2-现在我正在尝试从SD卡启动它,但它没有发生,我收到以下消息。在此消息中,我特别突出显示了错误消息以及我在tty终端中获得的其他相关消息。

U-Boot 2014.01 (Oct 08 2016 - 12:33:09) 

I2C:   ready

Memory: ECC disabled

DRAM:  512 MiB

MMC:   zynq_sdhci: 0

SF: Detected S25FL256S_64K with page size 256 Bytes, erase size 64 KiB, total 32 MiB

*** Warning - bad CRC, using default environment



In:    serial

Out:   serial

Err:   serial

Net:   Gem.e000b000

Hit any key to stop autoboot:  3  2  1  0 

Device: zynq_sdhci

Manufacturer ID: 27

OEM: 5048

Name: SD04G

Tran Speed: 50000000

Rd Block Len: 512

SD version 3.0

High Capacity: Yes

Capacity: 3.7 GiB

Bus Width: 4-bit

reading uEnv.txt

226 bytes read in 7 ms (31.3 KiB/s)

Loaded environment from uEnv.txt

Importing environment from SD ...

Running uenvcmd ...

Device: zynq_sdhci

Manufacturer ID: 27

OEM: 5048

Name: SD04G

Tran Speed: 50000000

Rd Block Len: 512

SD version 3.0

High Capacity: Yes

Capacity: 3.7 GiB

Bus Width: 4-bit

reading uImage

4150864 bytes read in 399 ms (9.9 MiB/s)

reading devicetree.dtb

9275 bytes read in 16 ms (565.4 KiB/s)

reading uramdisk.image.gz

18047061 bytes read in 1698 ms (10.1 MiB/s)

**Wrong Image Format for bootm command**

**ERROR: can't get kernel image!**

Copying Linux from SD to RAM...

reading uImage

4150864 bytes read in 399 ms (9.9 MiB/s)

reading devicetree.dtb

9275 bytes read in 16 ms (565.4 KiB/s)

reading uramdisk.image.gz

18047061 bytes read in 1698 ms (10.1 MiB/s)

**Wrong Image Format for bootm command**

**ERROR: can't get kernel image!**

zynq-uboot> 

3-我的uenv.txt文件的内容如下: -

boot_Zed=mmcinfo;fatload mmc 0 0x3000000 ${kernel_image}; fatload mmc 0 0x2A00000 ${devicetree_image}; fatload mmc 0 0x2000000 ${ramdisk_image}; bootm 0x3000000 0x2000000 0x2A00000
uenvcmd=run boot_Zed 

4-我通过以下命令创建了ramdiskimage: -

mkimage -A ARM -T ramdisk -C gzip -n 'ZED filesystem' -d ramdisk.image.gz uramdisk.image.gz

执行上述命令后,我收到以下消息: -

Image Name:   ZED filesystemCreated: 

Mon Oct 24 10:40:13 2016

Image Type:   ARM Linux RAMDisk Image (gzip compressed)

Data Size:    18046997 Bytes = 17624.02 kB = 17.21 MB

Load Address: 00000000

Entry Point:  00000000

5-所以这是评论中要求的printenv列表: -

  

波特率= 115200

     

bitstream_image = system.bit.bin

     

BOOT_IMAGE = BOOT.BIN

     

boot_size = 0xF00000

     

bootcmd =运行$ modeboot

     

的bootdelay = 3

     

BOOTENV = uEnv.txt

     

devicetree_image = devicetree.dtb

     

devicetree_size =地址0x20000

     

ethact = Gem.e000b000

     

ethaddr = 00:0A:35:00:01:22

     

fdt_high = 0x20000000

     

importbootenv = echo从SD导入环境...; env import -t

     

$ {loadbootenv_addr} $ filesize

     

initrd_high = 0x20000000

     

IPADDR = 10.10.70.102

     

jtagboot = echo TFTPing Linux to RAM ...&& tftpboot 0x3000000   $ {kernel_image}&& tftpboot 0x2A00000 $ {devicetree_image}&& tftpboot的   0x2000000 $ {ramdisk_image}&& bootm 0x3000000 0x2000000 0x2A00000

     

kernel_image =的uImage

     

kernel_size = 0x500000

     

loadbit_addr =的0x100000

     

loadbootenv = fatload mmc 0 $ {loadbootenv_addr} $ {bootenv}

     

loadbootenv_addr = 0x2000000

     

mmc_loadbit_fat = echo将SD / MMC / eMMC的比特流加载到RAM ..&&   mmcinfo&& fatload mmc 0 $ {loadbit_addr} $ {bitstream_image}&& FPGA   加载0 $ {loadbit_addr} $ {filesize}

     

modeboot = sdboot

     

nandboot = echo将Linux从NAND闪存复制到RAM ...&& nand读   0x3000000 0x100000 $ {kernel_size}&& nand读取0x2A00000 0x600000   $ {devicetree_size}&& echo复制ramdisk ...&& nand读取0x2000000   0x620000 $ {ramdisk_size}&& bootm 0x3000000 0x2000000 0x2A00000

     

norboot = echo将Linux从NOR闪存复制到RAM ...&& cp.b 0xE2100000   0x3000000 $ {kernel_size}&& cp.b 0xE2600000 0x2A00000   $ {devicetree_size}&& echo复制ramdisk ...&& cp.b 0xE2620000   0x2000000 $ {ramdisk_size}&& bootm 0x3000000 0x2000000 0x2A00000

     

qspiboot = echo将Linux从QSPI闪存复制到RAM ...&& sf探针0 0   0&& sf读取0x3000000 0x100000 $ {kernel_size}&& sf读取0x2A00000   0x600000 $ {devicetree_size}&& echo复制ramdisk ...&& sf阅读   0x2000000 0x620000 $ {ramdisk_size}&& bootm 0x3000000 0x2000000   0x2A00000

     

ramdisk_image = uramdisk.image.gz

     

RAMDISK_SIZE = 0x5E0000

     

rsa_jtagboot = echo TFTPing Image to RAM ...&& tftpboot 0x100000   $ {boot_image}&& zynqrsa 0x100000&& bootm 0x3000000 0x2000000   0x2A00000

     

rsa_nandboot = echo将图像从NAND闪存复制到RAM ...&& nand读   0x100000 0x0 $ {boot_size}&& zynqrsa 0x100000&& bootm 0x3000000   0x2000000 0x2A00000

     

rsa_norboot = echo将图像从NOR闪存复制到RAM ...&& cp.b   0xE2100000 0x100000 $ {boot_size}&& zynqrsa 0x100000&& bootm   0x3000000 0x2000000 0x2A00000

     

rsa_qspiboot = echo将图像从QSPI闪存复制到RAM ...&& sf探针   0 0 0&& sf读取0x100000 0x0 $ {boot_size}&& zynqrsa 0x100000&&   bootm 0x3000000 0x2000000 0x2A00000

     

rsa_sdboot = echo将图像从SD复制到RAM ...&& fatload mmc 0   0x100000 $ {boot_image}&& zynqrsa 0x100000&& bootm 0x3000000   0x2000000 0x2A00000

     

sdboot = if mmcinfo;然后运行uenvboot; echo将SD从SD复制到   RAM ......&& fatload mmc 0 0x3000000 $ {kernel_image}&& fatload mmc 0   0x2A00000

     

$ {devicetree_image}&& fatload mmc 0 0x2000000 $ {ramdisk_image}&&   bootm 0x3000000 0x2000000 0x2A00000;网络

     

SERVERIP = 10.10.70.101

     

标准错误=串行

     

标准输入=串行

     

标准输出=串行

     

uenvboot =如果运行loadbootenv;然后回显Loaded环境   {} BOOTENV $;运行importbootenv;网络连接;如果测试-n $ uenvcmd;回声   运行uenvcmd ...;运行uenvcmd;网络

     

usbboot = if usb start;然后运行uenvboot; echo从USB复制Linux   RAM ...&& fatload usb 0 0x3000000 $ {kernel_image}&& fatload usb 0   0x2A00000 $ {devicetree_image}&& fatload usb 0 0x2000000   $ {ramdisk_image}&& bootm 0x3000000 0x2000000 0x2A00000;网络

     

环境大小:3368/131068字节

基于我的上述信息,请您告诉/建议我解决我的问题。

1 个答案:

答案 0 :(得分:0)

您尚未将加载地址传递给mkimage。尝试向其添加-a 0x2000000参数。 另外-C gzip参数可能是错误的,因为您获取已经压缩的输入文件。请尝试使用-C none