在线时间4 小时
UID3471461
注册时间2018-4-18
NXP金币0
TA的每日心情 | 开心 2019-1-11 16:21 |
---|
签到天数: 1 天 [LV.1]初来乍到
新手上路
- 积分
- 33
- 最后登录
- 2019-1-23
|
本人小白,最近学习linux的时候,希望通过tftp的方式加载zImage 和dtb。u-boot的环境变量如下:
=>printenv
baudrate=115200
boot_fdt=try
bootargs=root=/dev/mmcblk3p2 console=ttymxc3,115200 rw rootwait video=mxcfb0:dev=lcd,CLAA-WVGA,if=RGB24
bootcmd=mmc dev 2;if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=5
bootscript=echo Running bootscript from mmc ...; source
console=ttymxc3
emmcdev=2
epdc_waveform=epdc_splash.bin
ethact=FEC
ethaddr=00:11:22:33:44:55
ethprime=FEC
fdt_addr=0x20000000
fdt_file=imx6q-sabresd.dtb
fdt_high=0xffffffff
image=zImage
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
ipaddr=192.168.0.10
loadaddr=0x10000000
loadbootscript=fatload mmc ${mmcdev}{mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}{mmcpart} ${fdt_addr} ${fdt_file}
loadimage=fatload mmc ${mmcdev}{mmcpart} ${loadaddr} ${image}
mfgtool_args=setenv bootargs console=ttymxc3,115200 rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" enable_wait_mode=off
mmcargs=setenv bootargs console=${console},${baudrate} ${smp} root=${mmcroot}
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk3p2 rootwait rw
netargs=setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}{nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
script=boot.scr
serverip=192.168.0.8
update_emmc_firmware=if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; if ${get_cmd} ${update_sd_firmware_filename}; then if mmc dev ${emmcdev} 1; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi
update_sd_firmware=if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; if mmc dev ${mmcdev}; then if ${get_cmd} ${update_sd_firmware_filename}; then setexpr fw_sz ${filesize} / 0x200; setexpr fw_sz ${fw_sz} + 1; mmc write ${loadaddr} 0x2 ${fw_sz}; fi; fi
Environment size: 2776/8188 bytes
使用mfg tool工具烧写的时候,此时将执行bootz 0x120000 - 0x180000.如果我在uboot下执行,如下操作:
tftp 0x12000000 zImage
tftp 0x18000000 imx6q-sabresd.dtb
bootz 0x120000 - 0x180000,则启动到Start Kernel.... 卡住了,如果执行如下操作:
tftp 0x10000000 zImage tftp 0x20000000 imx6q-sabresd.dtb bootz 0x10000000 - 0x20000000,则kernel能够启动。
请问:
1.0x10000000 0x20000000这两个地址代表的是什么,是如何确定的?
2.为什么0x12000000 和 0x18000000这两个地址加载kernel的时候会卡住?
最佳答案
請看i.MX_Linux_User's_Guide.pdf的Table 36.
|
|