我设置了Kamikaze工具链(来自openwrt),并为AMCC PPC405ex kilauea参考板编译了Linux 2.6.30.x内核.但是,出于某种原因,我在uBoot中做错了,因为我无法从squashfs图像运行内核.图像在tftp上加载正常并解压缩,但控制台输出无法启动.
我没有更改Linux内核命令行,它看起来很好(console=ttyS0,115200 root=/dev/mtdblock).我也有点困惑uboot中的fdt是什么?
我不完全确定它是否真的属于stackoverflow,但是这又不是一个真正的superuser.com问题(因为这与开发环境有关,它肯定是编程相关的,即使不是一个编程问题)
我正在飞思卡尔电路板imx50evk上工作.我使用LTIB(linux目标图像构建器)构建了uboot.bin和uImage.在U-Boot提示符下输入bootm addr命令,然后在显示"正在加载内核..."消息后挂起
> MX50_RDP U-Boot > boot
MMC read: dev # 0, block # 2048, count 6290 partition # 0 ...
6290 blocks read: OK
## Booting kernel from Legacy Image at 70800000 ...
Image Name: Linux-2.6.35.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1323688 Bytes = 1.3 MB
Load Address: a0008000
Entry Point: a0008000
Verifying Checksum ... OK
Loading Kernel Image ...
Run Code Online (Sandbox Code Playgroud) 我知道我可以使用 dmesg 命令获取 Linux 启动日志,但不知道当我的系统刚启动时如何获取 U-boot 的启动日志。我也尝试过 Go-ogling,但我得到的只是到处都是 dmesg 参考。
另外我不确定U-boot中的CRM是什么?我在基于 ARM 的目标板上。
我正在使用带有内置 NAND 闪存的嵌入式 ARM 平台。我的屋顶分区是 squashfs。u-boot 和内核都使用 OMAP_ECC_BCH8_CODE_HW。问题是一些板(不仅仅是一个)在停电后停止工作(它们使用了大约 2 个月)。
启动时可以看到这些错误:
[ 8.270507] end_request: I/O error, dev mtdblock9, sector 25184
[ 8.278930] SQUASHFS error: squashfs_read_data failed to read block 0xc40396
[ 8.286376] SQUASHFS error: Unable to read fragment cache entry [c40396]
[ 8.293579] SQUASHFS error: Unable to read page, block c40396, size d696
[ 8.300628] SQUASHFS error: Unable to read fragment cache entry [c40396]
[ 8.307647] SQUASHFS error: Unable to read page, block c40396, size d696
[ 8.314819] SQUASHFS error: …Run Code Online (Sandbox Code Playgroud) 我对这两个文件的启动配置非常困惑.他们似乎在做同样的事情,我不明白为什么我需要或者.
如果我使用uEnv.txt,我将其设置为
bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
aload_script=fatload mmc 0 0x43000000 script.bin;
aload_kernle=fatload mmc 0 0x48000000 uImage; bootm 0x43000000 - 0x48000000;
uenvcmd=setenv run aload_script aload_kernel
Run Code Online (Sandbox Code Playgroud)
或者,我可以创建boot.cmd:
setenv bootargs console=console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
fatload mmc 0 0x43000000 script.bin
fatload mmc 0 0x48000000 uImage
bootm 0x48000000
Run Code Online (Sandbox Code Playgroud)
他们都工作......
在U-Boot中,我有以下两个环境变量:
filepath=myimages
kernelfile=${filepath}/uImage.bin
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时:
echo ${kernelfile}
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
${filepath}/uImage.bin
Run Code Online (Sandbox Code Playgroud)
但是,我希望它改为像这样评估filepath变量:
myimages/uImage.bin
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
我有恩智浦/自由规模的Imx6 saber lite开发板.我的任务是以这样的方式刷新两个OS内核(Linux和RTOS),以便linux在core0上运行,而在core1上运行RTOS.我有1GB DDR3,我必须先为RTOS分配128MB,然后为LINUX映像分配.
如何使用u-boot实现这种情况?
如果有人解决了这个问题,请告诉我!
提前致谢!
我正在制作自己的Linux发行版.开发进展顺利但是我发现很难理解内核加载地址和入口点之间的区别.
为了通过uBoot加载内核,我认为加载内核的内存地址总是与内核执行(启动)时的条目(起始点)相同.
但我猜测,因为这些是两个分开的值,并不总是必须相同,因此有一个原因可以将它们分开.
有人可以解释一下这两者之间的区别吗?
我的机器 Ubuntu 16.04.3 LTS x86_64。我确实编译了 u-boot-2017.11,但出现错误。
u-boot-2017.11$ export ARCH=arm
u-boot-2017.11$ export CROSS_COMPILE=/opt/toolchains/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
u-boot-2017.11$ make geekbox_defconfig
HOSTCC scripts/basic/fixdep
/lib/ld-linux-armhf.so.3: No such file or directory
scripts/Makefile.host:99: recipe for target 'scripts/basic/fixdep' failed
make[1]: *** [scripts/basic/fixdep] Error 255
Makefile:399: recipe for target 'scripts_basic' failed
make: *** [scripts_basic] Error 2
Run Code Online (Sandbox Code Playgroud)
我尝试查找并安装丢失的软件包,但已全部安装完毕。
u-boot-2017.11$ dpkg -S ld-linux-armhf.so
libc6-armhf-cross: /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3
u-boot-2017.11$ sudo apt-get install libc6-armhf-cross
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6-armhf-cross is already the newest version (2.23-0ubuntu3cross1).
0 upgraded, 0 newly installed, …Run Code Online (Sandbox Code Playgroud) 根据我的理解,选择的节点用于将引导参数发送到内核。以下是现有设备代码(am335x-bone-common.dtsi)的选定节点。
chosen {
stdout-path = &uart0;
};
Run Code Online (Sandbox Code Playgroud)
因此,我修改了选择的节点以传递内核参数。
chosen {
bootargs = "console=ttyO0,115200 root=/dev/mmcblk0p2 rootfstype=ext3 rw rootwait";
stdout-path = &uart0;
};
Run Code Online (Sandbox Code Playgroud)
在提起董事会时,我遇到了KERNEL PANIC,这是日志{ https://pastebin.com/XHyrsmfG }
仅供参考:这些是在串行控制台(minicom)上发出的u-boot命令,以便使用SDcard移植内核和设备树。
fatload mmc 0:1 0x81000000 zImage
fatload mmc 0:1 0x82000000 am335x-boneblack.dtb
bootz 0x81000000 - 0x82000000
Run Code Online (Sandbox Code Playgroud) linux-device-driver embedded-linux u-boot device-tree beagleboneblack
u-boot ×10
bootloader ×4
linux ×4
linux-kernel ×4
embedded ×2
arm ×1
command-line ×1
device-tree ×1
kernel ×1
libc ×1
multicore ×1
shell ×1
squashfs ×1
symmetric ×1
ubuntu ×1
ubuntu-16.04 ×1