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 が壊れて起動できなくなるのはなぜですか?