无法在飞思卡尔i.MX28上启动基本的OpenEmbedded-Core

时间:2012-08-27 00:44:12

标签: arm embedded-linux openembedded

我一直在尝试使用evaluation kit Freescale's ARM i.MX28Freescale ARM layer OpenEmbedded-Core上构建和启动OpenEmbedded-Core。不幸的是,我找不到基本的“入门”指南(虽然有Yocto getting-started guide)。不幸的是,我无法“开始”,无法成功启动到主板调试串口的基本命令提示符。

这是我能够拼凑起来的东西,据我所知,到目前为止。

获取来源

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-arm添加meta-oeBBLAYERS图层。 E.g:

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卡启动更简单,但将图像写入SD卡需要相当长的时间(约30分钟)。从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(从他们的LTIB发行版)分发U-Boot到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的{​​{1}}文件。

我还设置了一个根NFS服务器来为根文件系统提供服务。我修改了~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images/以投放/etc/exports。我解压缩了根文件系统:

/home/craigm/rootfs

然后我将U-Boot SD卡放入主板的SD卡插槽0,然后打开电源。它到此为止,然后停止了:

bitbake meta-ide-support
rm -Rf ~/rootfs
runqemu-extract-sdk tmp-eglibc/deploy/images/core-image-minimal-imx28evk.tar.bz2 ~/rootfs

我不确定它是否在没有串行控制台或其他问题的情况下运行。我可以在... 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它,但我无法通过Telnet或SSH连接它。

问题

  • 飞思卡尔的i.MX28上有OpenEmbedded-Core的“入门”指南吗?
  • 飞思卡尔ARM层真的打算用于OpenEmbedded-Core,Yocto还是什么?我真的不明白这些项目的关系。
  • 有没有其他人在飞思卡尔的i.MX28上成功启动OpenEmbedded-Core的最小图像?如果是这样,你的程序与我的程序有什么不同?
  • 我现阶段不确定这个问题只是一个非功能性的串口控制台,还是其他一些问题。很难诊断出阻止甚至让基本系统运行的这些问题。有关如何诊断的指针吗?
  • 为什么U-Boot会被破坏,甚至无法启动?

1 个答案:

答案 0 :(得分: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,使用默认环境

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