我一直在尝试在Freescale ARM i.MX28的评估套件上构建和启动 OpenEmbedded-Core ,使用OpenEmbedded-Core的Freescale ARM 层。不幸的是,我找不到基本的“入门”指南(尽管有Yocto 入门指南)。不幸的是,我一直无法“开始”,以至于无法成功启动到主板调试串行端口上的基本命令提示符。
这是我能够拼凑起来的,并且就我到目前为止所取得的成果而言。
获取来源
mkdir -p oe-core/freescale-arm
cd oe-core/freescale-arm
git clone git://git.openembedded.org/openembedded-core oe-core
git clone git://github.com/Freescale/meta-fsl-arm.git
cd oe-core
git clone git://git.openembedded.org/meta-openembedded
git clone git://git.openembedded.org/bitbake bitbake
设置环境
. ./oe-init-build-env
这使我们进入一个新的子目录build
并设置某些环境变量。
编辑配置
编辑conf/bblayers.conf
和local.conf
文件:
conf/bblayers.conf
应该为 . 添加meta-fls-arm
和meta-oe
层BBLAYERS
。例如:
BBLAYERS ?= " \
/home/craigm/oe-core/freescale-arm/oe-core/meta \
/home/craigm/oe-core/freescale-arm/oe-core/meta-openembedded/meta-oe \
${TOPDIR}/../../meta-fsl-arm \
"
在conf/local.conf
中,我设置:
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j 4"
MACHINE = "imx28evk"
建造
bitbake core-image-minimal
我在一夜之间运行了这个构建,它对我来说已经成功完成。输出文件位于~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images
.
我想尝试两个引导选项,如下所述。从 SD 卡启动更简单,但需要很长时间(约 30 分钟)才能将映像写入 SD 卡。从 TFTP + NFS 引导更快,但需要更多设置。
从 SD 卡启动
将图像写入 SD 卡:
sudo dd if=tmp-eglibc/deploy/images/core-image-minimal-imx28evk.sdcard of=/dev/sdc
花了大约 30 分钟(3.5 GB 文件)。然后我把它放在板子的 SD 卡插槽 0 中,然后通电。它一直加载内核,然后停止:
U-Boot 2012.04.01-00059-g4e6e824 (Aug 23 2012 - 18:08:54)
Freescale i.MX28 family at 454 MHz
BOOT: SSP SD/MMC #0, 3V3
DRAM: 128 MiB
MMC: MXS MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: FEC0, FEC1
Hit any key to stop autoboot: 0
reading boot.scr
** Unable to read "boot.scr" from mmc 0:2 **
reading uImage
2598200 bytes read
Booting from mmc ...
## Booting kernel from Legacy Image at 42000000 ...
Image Name: Linux-2.6.35.3-11.09.01+yocto-20
Created: 2012-08-23 7:53:40 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2598136 Bytes = 2.5 MiB
Load Address: 40008000
Entry Point: 40008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
从 TFTP + NFS 启动
首先,我尝试将 U-Boot 写入 SD 卡:
sudo dd if=tmp-eglibc/deploy/images/u-boot-imx28evk.mxsboot-sdcard of=/dev/sdc
然后我把它放在板子的 SD 卡插槽 0 中,然后通电。但我在调试串口中得到的只是:
0x8020a01d
因此,我决定使用飞思卡尔的 i.MX28 U-Boot 发行版(来自他们的 LTIB 发行版)到 SD 卡上。我使用来自 DHCP 的参数为 NFS 引导设置了合适的 U-Boot 参数。
setenv bootargs console=ttyAMA0,115200n8
setenv bootargs_nfs setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=,v3,tcp fec_mac=${ethaddr}
saveenv
我使用以下 DNSmasq 设置连接到 DD-WRT 路由器:
dhcp-boot=,,192.168.250.106
dhcp-option=17,"192.168.250.106:/home/craigm/rootfs"
在我的主机 PC 上,我设置了一个 TFTP 服务器来提供uImage
来自~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images/
.
我还设置了一个根 NFS 服务器来为根文件系统提供服务。我编辑/etc/exports
服务/home/craigm/rootfs
。我提取了根文件系统:
bitbake meta-ide-support
rm -Rf ~/rootfs
runqemu-extract-sdk tmp-eglibc/deploy/images/core-image-minimal-imx28evk.tar.bz2 ~/rootfs
然后我把 U-Boot SD 卡放在板子的 SD 卡槽 0 中,然后上电。它走到了这一步,然后停了下来:
...
TCP cubic registered
NET: Registered protocol family 17
can: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
mxs-rtc mxs-rtc.0: setting system clock to 1970-01-01 00:03:33 UTC (213)
eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)
eth1: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, irq=-1)
Sending DHCP requests .
PHY: 0:00 - Link is Up - 100/Full
., OK
IP-Config: Got DHCP answer from 192.168.250.106, my address is 192.168.250.142
IP-Config: Complete:
device=eth0, addr=192.168.250.142, mask=255.255.255.0, gw=192.168.250.1,
host=192.168.250.142, domain=, nis-domain=(none),
bootserver=192.168.250.106, rootserver=192.168.250.106, rootpath=/home/craigm/rootfs
Looking up port of RPC 100003/3 on 192.168.250.106
Looking up port of RPC 100005/3 on 192.168.250.106
VFS: Mounted root (nfs filesystem) on device 0:15.
Freeing init memory: 160K
我不确定它是否在没有串行控制台或其他问题的情况下运行。我可以 ping 它192.168.250.142
,但我不能 Telnet 或 SSH 到它。
问题
- 飞思卡尔 i.MX28 上的 OpenEmbedded-Core 是否有任何类型的“入门”指南?
- 飞思卡尔 ARM 层是否真的打算与 OpenEmbedded-Core、Yocto 或其他什么一起使用?我真的不明白这些项目是如何关联的。
- 有没有其他人在飞思卡尔的 i.MX28 上成功启动了 OpenEmbedded-Core 的最小映像?如果是这样,您的程序与我的程序有何不同?
- 在这个阶段我不确定问题是否只是一个无法正常工作的串行控制台,还是其他类型的问题。很难诊断这些甚至阻止基本系统运行的问题。关于此时如何诊断的任何指示?
- 为什么 U-Boot 会坏掉,甚至无法启动?