我有过一些为ARM more m设备以及Linux内核、uBoot和Beaglebone Black (为那些生活在岩石下的人编写更多带有MMU的ARM )应用程序编写裸机代码的经验。对我来说,应该使用arm-none-eabi-gcc (因为没有操作系统)编译cortex m代码是有意义的,而BBB的应用程序代码应该使用arm-linux-gnueabi-gcc (因为有操作系统,我不明白的是为什么uBoot和内核也要用arm-linux-gnueabi-gnueabi编译。在我看来,至少uBoot是一个裸机程序,没有什么花哨的操作系统要
我正在尝试获得一个运行在imx51 Freescale板上的linux内核和linux rootfs。我编译了linux内核、根文件系统和u-boot,并将镜像复制到SD-card:分区0:引导分区1: rootfs和linux内核U-Boot 2011.12 (Mar 13 2012: serialWarning: failed to set MAC address
Hit any key to stop autoboot: 0
在我的基于ARM的主板(DM368)的u-boot中,我手动将一些内核分区块标记为坏的。U-boot表示它已被标记,例如,在写入/读取内核映像时,我发现它跳过了这个坏块。但是,当我尝试从Linux中写入相同的分区(通过NFS加载)时,我发现Linux nandwrite命令使用了这个坏块!我用几种方法检查了这一点- Linux 100%忽略坏块标记。但是在互联网上到处都有人说BBT同时适用于u-boot和Linux。
那么,陷阱在哪里呢?
对于另一个带有支持booting a standalone application的u-boot的主板(mt7621),我可以创建一些linux boot镜像(独立应用程序),并将其放入闪存中,而不是放入正如我所提到的,基于mt7620的主板的u-boot不支持booting a standalone application,所以我决定创建一个boot trap作为u-bootlinux映像(而不是u-boot独立应用程序映像),保持boot trap的代码几乎相同(我只更改了函数签名