7

OpenEmbedded-Core のFreescale ARM レイヤーを使用して、Freescale の ARM i.MX28 の評価キットでOpenEmbedded- Coreをビルドして起動しようとしています。残念ながら、基本的な「Getting Started」ガイドは見つかりません ( 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.confおよびlocal.confファイルを編集します。

conf/bblayers.confには、meta-fls-armとのmeta-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.

以下で説明するように、試してみたい起動オプションが 2 つあります。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

そこで、Freescale の U-Boot for i.MX28 ディストリビューション (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 で接続できません。

質問

  • Freescale の i.MX28 で OpenEmbedded-Core を使用するための「入門」ガイドはありますか?
  • Freescale ARM 層は、実際に OpenEmbedded-Core や Yocto などで使用することを意図したものですか? これらのプロジェクトがどのように関連しているかはよくわかりません。
  • Freescale の 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、デフォルト環境を使用

すべてのデバイスが初期化されており、不正な crc 警告の後に何もスキップされていないことを確認してください。

于 2013-08-07T16:06:18.620 に答える