7

我一直在尝试在Freescale ARM i.MX28的评估套件上构建和启动 OpenEmbedded-Core ,使用OpenEmbedded-CoreFreescale 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.conflocal.conf文件:

conf/bblayers.conf应该为 . 添加meta-fls-armmeta-oeBBLAYERS。例如:

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 会坏掉,甚至无法启动?
4

1 回答 1

2

从引导消息看来,U-boot 工作正常。U-boot没有坏。

以下引导消息

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.

通过上面的日志,u-boot 已经完成了它的工作。“引导内核”是引导加载程序将控制权交给内核的地方。

我猜问题可能出在内核映像或内存中。

要消除内存问题,请尝试查看手册并尝试使用开发板的参考手册在 RAM 中进行读写。

从引导日志看RAM好像没有问题。它已被初始化。

DRAM:  128 MiB

检查以下消息是否没有引起任何问题。 *警告 - CRC 错误,使用默认环境

检查是否所有设备都已初始化,并且在 bad crc 警告后没有跳过任何内容。

于 2013-08-07T16:06:18.620 回答