Arm Can';t引导基本开放式嵌入核心在飞思卡尔i.MX28上

Arm Can';t引导基本开放式嵌入核心在飞思卡尔i.MX28上,arm,embedded-linux,openembedded,Arm,Embedded Linux,Openembedded,我一直在尝试使用for在for上构建和引导OpenEmbedded Core。不幸的是,我找不到基本的“入门”指南(尽管有一个)。不幸的是,我还没有能够“开始”,成功地引导到主板调试串行端口上的基本命令提示符 这是我能够拼凑的东西,也是迄今为止我所能拼凑的东西 获取来源 建立环境 这将我们放入一个新的子目录build,并设置某些环境变量 编辑配置 编辑conf/bblayers.conf和local.conf文件: conf/bblayers.conf应为bblayers添加meta fls a

我一直在尝试使用for在for上构建和引导OpenEmbedded Core。不幸的是,我找不到基本的“入门”指南(尽管有一个)。不幸的是,我还没有能够“开始”,成功地引导到主板调试串行端口上的基本命令提示符

这是我能够拼凑的东西,也是迄今为止我所能拼凑的东西

获取来源 建立环境 这将我们放入一个新的子目录
build
,并设置某些环境变量

编辑配置 编辑
conf/bblayers.conf
local.conf
文件:

conf/bblayers.conf
应为
bblayers
添加
meta fls arm
meta oe
层。例如:

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"
建造 我一夜之间运行了这个构建,它已经为我成功地完成了。输出文件位于
~/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.5GB文件)。然后我把它放在主板的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.
...
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
从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服务器,为
~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images/
中的
uImage
文件提供服务

我还设置了一个根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,并通电。它走到这里,然后停了下来:

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.
...
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
上ping它,但我不能Telnet或SSH连接到它

问题
  • 飞思卡尔的i.MX28上有关于开放式嵌入式内核的“入门”指南吗
  • 飞思卡尔ARM层真的打算与OpenEmbedded Core、Yocto或什么一起使用吗?我真的不明白这些项目之间的关系
  • 有没有其他人成功地在飞思卡尔的i.MX28上启动了一个最小的OpenEmbedded Core映像?如果是的话,你的程序和我的有什么不同
  • 在这个阶段,我不确定问题是否只是一个不起作用的串行控制台,或者其他类型的问题。很难诊断这些问题,这些问题甚至会妨碍基本系统的运行。在这一点上有关于如何诊断的建议吗
  • 为什么U-Boot坏了,甚至不能启动

从启动消息看,U-boot工作正常。U型靴没有坏

下面的启动消息

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警告后没有跳过任何内容。

我没有使用您正在使用的飞思卡尔硬件,但这看起来可疑地像一个无法正常工作的串行控制台(或损坏的rootfs,但让我们先试试简易修复!)。在local.conf中,尝试添加
SERIAL_CONSOLE=“115200 ttyO2”
(或者
ttyS2
,显然您还需要为硬件使用正确的控制台编号)。OE构建后,检查
../your\u target\u roots/etc/inittab
以确认它正在使用正确的串行参数调用
getty
/etc/inittab
已经包含行
S:2345:respawn:/sbin/getty 115200 ttyAMA0
,我认为
ttyAMA0
是正确的串行设备。也许是一个更好的论坛,可以提出像这样的具体问题。飞思卡尔支持,有时甚至他们的开发人员也会阅读该论坛。
DRAM:  128 MiB