gpt4 book ai didi

arm - 无法在 Freescale i.MX28 上启动基本 OpenEmbedded-Core

转载 作者:行者123 更新时间:2023-12-02 20:51:48 25 4
gpt4 key购买 nike

我一直在尝试在 evaluation kit 上构建并启动 OpenEmbedded-Core对于 Freescale's ARM i.MX28 ,使用Freescale ARM layer对于 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-armmeta-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

因此,我决定在 SD 卡上使用 Freescale 的 U-Boot for i.MX28 发行版(来自其 LTIB 发行版)。我使用来自 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 访问它。

问题

  • 是否有针对 Freescale i.MX28 上的 OpenEmbedded-Core 的任何“入门”指南?
  • 飞思卡尔 ARM 层真的适合与 OpenEmbedded-Core、Yocto 等一起使用吗?我不太明白这些项目之间有何关联。
  • 还有其他人成功在 Freescale 的 i.MX28 上启动 OpenEmbedded-Core 的最小镜像吗?如果是这样,您的程序与我的程序有何不同?
  • 现阶段我不确定问题是否只是串行控制台无法正常工作,还是其他类型的问题。很难诊断这些甚至阻止基本系统运行的问题。目前有关于如何诊断的指导吗?
  • 为什么U-Boot会被破坏而无法启动?

最佳答案

从启动消息来看,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 警告后是否跳过任何​​内容。

关于arm - 无法在 Freescale i.MX28 上启动基本 OpenEmbedded-Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12135129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com