首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在Freescale i.MX28上启动基本的OpenEmbedded

不能在Freescale i.MX28上启动基本的OpenEmbedded
EN

Stack Overflow用户
提问于 2012-08-27 00:44:12
回答 1查看 2.4K关注 0票数 7

我一直试图在评价工具包 for 弗里斯卡尔(氏)手臂i.MX28上构建和引导OpenEmbedded,使用飞度臂层 for OpenEmbedded。不幸的是,我找不到一个基本的“入门”指南(尽管有一个Yocto入门指南)。不幸的是,我还没能“开始”,以至于在板的调试串口上成功地引导到基本命令提示符。

这是我所能拼凑起来的,就我所能做到的。

取源

代码语言:javascript
复制
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

设置环境

代码语言:javascript
复制
. ./oe-init-build-env

这使我们进入了一个新的子目录build,并设置了特定的环境变量。

编辑配置

编辑conf/bblayers.conflocal.conf文件:

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

代码语言:javascript
复制
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中,我设置了:

代码语言:javascript
复制
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j 4"
MACHINE = "imx28evk"

构建

代码语言:javascript
复制
bitbake core-image-minimal

我一夜之间运行了这个构建,它已经为我成功地完成了。输出文件在~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images中。

有两个引导选项,我想尝试,如下所述。从SD卡启动比较简单,但是需要相当长的时间(~30分钟)才能将图像写入SD卡。从TFTP + NFS引导更快,但需要更多的设置。

从SD卡启动

将图像写入SD卡:

代码语言:javascript
复制
sudo dd if=tmp-eglibc/deploy/images/core-image-minimal-imx28evk.sdcard of=/dev/sdc

大约需要30分钟(3.5GB文件)。然后我把它放进公告牌的SD卡插槽0,然后打开电源。它已经加载了内核,然后停止:

代码语言:javascript
复制
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引导

首先,我试图将写到SD卡上:

代码语言:javascript
复制
sudo dd if=tmp-eglibc/deploy/images/u-boot-imx28evk.mxsboot-sdcard of=/dev/sdc

然后我把它放进公告牌的SD卡插槽0,然后打开电源。但是我在调试串口中得到的只有:

代码语言:javascript
复制
0x8020a01d

因此,我决定在SD卡上使用Freescale的发行版(来自LTIB发行版)。我用DHCP的参数为NFS启动设置了合适的U参数.

代码语言:javascript
复制
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路由器:

代码语言:javascript
复制
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。我提取了根文件系统:

代码语言:javascript
复制
bitbake meta-ide-support
rm -Rf ~/rootfs
runqemu-extract-sdk tmp-eglibc/deploy/images/core-image-minimal-imx28evk.tar.bz2 ~/rootfs

然后我把U卡放进了板的SD卡插槽0,然后启动。就这样停了下来:

代码语言:javascript
复制
...
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

我不确定它是在没有串行控制台的情况下运行,还是其他问题。我可以在192.168.250.142上点击它,但我不能使用Telnet或SSH。

问题

  • 在飞思卡尔的i.MX28上有任何关于OpenEmbedded的“入门”指南吗?
  • 飞思卡尔的手臂层真的打算和OpenEmbedded,Yocto一起使用吗?我真的不明白这些项目有什么关系。
  • 有没有其他人在飞思卡尔的i.MX28上成功地启动了OpenEmbedded的最小映像?如果是的话,你的程序和我的有什么不同?
  • 在这个阶段,我不确定问题是一个非功能性的串行控制台,还是其他类型的问题。很难诊断出这些问题,这些问题甚至妨碍了基本系统的运行。在这一点上有关于如何诊断的指示吗?
  • 为什么U会坏了,甚至不能启动?
EN

回答 1

Stack Overflow用户

发布于 2013-08-07 16:06:18

从启动消息看,U引导似乎运行良好。你的靴子没坏。

下面的引导消息

代码语言:javascript
复制
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引导已经完成了它的工作。“引导内核”是引导加载器将控制交给内核的点。

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

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

从引导日志看,RAM看起来没有问题。它已经初始化了。

代码语言:javascript
复制
DRAM:  128 MiB

检查以下消息是否没有造成任何问题。*警告-使用默认环境的坏CRC

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12135129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档