Не могу загрузить базовое OpenEmbedded-Core на Freescale i.MX28
Я пытался собрать и загрузить OpenEmbedded-Core наоценочный комплект заАРМ Freescale i.MX28, с использованиемСлой Freescale ARM заOpenEmbedded-Core, К сожалению, я не могу найти базовую версию "Приступая к работе". руководство (хотя естьРуководство по началу работы с Yocto). К сожалению, я не смог "начать работу" до такой степени, чтобы успешно загрузиться с базовой командной строки на последовательном порте отладки платы.
Вот то, что я смог собрать воедино, и насколько мне удалось достичь этого.
Fetch sourcesmkdir -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
Set up environment
. ./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"
Build
bitbake core-image-minimal
Я запустил эту сборку за одну ночь, и она успешно завершена для меня. Выходные файлы были в~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images
.
Есть два варианта загрузки, которые я хотел бы попробовать, как описано ниже. Загрузка с SD-карты проще, но для записи образа на SD-карту требуется довольно много времени (~ 30 минут). Загрузка из TFTP + NFS быстрее, но требует больше настроек.
Boot from SD CardЗапишите изображение на SD-карту:
sudo dd if=tmp-eglibc/deploy/images/core-image-minimal-imx28evk.sdcard of=/dev/sdc
Это заняло около 30 минут (файл 3,5 ГБ). Затем я помещаю его в слот 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.
Boot from TFTP + NFS
Сначала я попытался записать U-Boot на SD-карту:
sudo dd if=tmp-eglibc/deploy/images/u-boot-imx28evk.mxsboot-sdcard of=/dev/sdc
Затем я помещаю его в слот SD-карты платы 0 и включаю. Но все, что я получил в отладочном последовательном порту, было:
0x8020a01d
Поэтому я решил использовать дистрибутив U-Boot для i.MX28 (из их дистрибутива LTIB) Freescale на SD-карту. Я установил подходящие параметры U-Boot для загрузки NFS с параметрами из DHCP.
setenv bootargs console=ttyAMA0,115200n8
setenv bootargs_nfs setenv bootargs ${bootargs} root=/dev/nfs ip=dhcp nfsroot=,v3,tcp fec_mac=${ethaddr}
saveenv
Я подключился к маршрутизатору DD-WRT со следующими настройками DNSmasq:
dhcp-boot=,,192.168.250.106
dhcp-option=17,"192.168.250.106:/home/craigm/rootfs"
На моем хост-компьютере я настроил 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
Затем я вставил SD-карту U-Boot в слот 0 для SD-карты платы и включил питание. Дошло до этого, потом остановилось:
...
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.