You are on page 1of 19

Ti liu ny c dnh cho software, hardware, v k s h thng ang c k hoch s

dng sn phm v cho nhng ai mun hiu r hn v sn phm.



Chng 1: gii thiu tng quan

iMX linux BSP l 1 tp hp cc gi binary, code, v file support c th c s dng
to ra mt file nh h thng linux kernel cho board i.MX

1.1 Boot Stream
Khi iMX23 thot khi ch reset, n s bt u thc thi ROM. Khng c thay th -
khng c m khc c php x l cc trng hp ngoi l thit lp li. ROM c ch
boot t cc chn (boot mode pins) chn khi ng t USB, SD/MMC hay NAND
Flash,
Boot stream bt u vi mt lnh load ch th ROM sao chp cc tp tin thc thi vo b
nh. Lnh jump cui cng ch th ROM truyn iu khin n on thc thi m n
c np.
Mt lnh quan trng khc l call. Lnh ny gi ROM thc hin mt hm gi n
mt a ch c th v sau tip tc x l boot stream khi tr v iu khin. Mt lnh
call thng c bt u trc bi mt lnh load
Di y l s i din cho mt boot stream c cha 2 bootlet v mt hm thc thi
chnh

Mi bootlet l mt thc thi c xy dng mt cch ring bit cho mt mc ch c th
m khng cn quan tm n bootlet ng trc hay sau n.
Boot stream c th hng dn ROM gi bt k s lng thc thi (excutable) trc lnh
jump, ty thuc vo nhu cu ca h thng. Cc boot stream i.MX233 cha cc bootlet
sau:
- Power_prep: bootlet ny cu hnh cc ngun cung cp (power supply)
- Boot_prep: bootlet ny cu hnh clocks v sdram
- Linux_prep: bootlet ny chun b cho qu trnh khi ng linux.

Di y l mt s i din ca mt boot stream c xy dng vi i.MX23
Linux BSP


Mt v d khc cho U-boot boot stream:

1.2 FlashBoot Loader
Boot stream l mt khi nim quan trng cho imx233, n c th c coi l mt b np
khi ng.
B Linux SDK cung cp 2 boot stream image:
- Linux kernel boot stream
- U-boot boot stream

1.3 Linux kernel v Driver
Gi Freescale BSP bao gm Freescale Linux 2.6.28 kernel, m ngun Driver, v mt
Kernel image dng sn. Ta c th tm thy kernel image trong ng dn sau:
L2.6.31_10.05.02_ER_images_MX233/zImage
L2.6.31_10.05.02_ER_images_MX233/imx23_linux.sb
L2.6.31_10.05.02_ER_images_MX233/imx23_uboot.sb

1.4 Root File System
Gi Root file system cung cp busybox, th vin chung, v mt s thnh phn c bn.
Linux BSP cha gi root file system ti:
imx233/rootfs.jffs2
imx233/rootfs.ext2.gz

Chng 2: Xy dng Linux Platform
Chng ny s gii thch lm th no thit lp mt mi trng pht trin (build
enviroment), ci t v xy dng LTIB, t rootfs cho NFS, v ci t mi trng cho
host (host environment)

2.1 Thit lp Built Environment
Thit lp build environment bao gm ci t h iu hnh linux v LTIB

2.1.1 Ci t Linux OS v s dng linux Builder
Ci t phin bn linux nh Fedora 4/5, ReaHat hoc ubuntu 8.0 trn mt my tnh.
Trong ti kha lun s dng linux mint 16 (tng ng vi ubuntu)

2.2 Ci t v build LTIB
LTIB (Linux Target Image Builder) l cng c build Linux (BSP Board Support
Packet) cho cc board nhng da trn cc chip MPU ca Freescale bao gm PowerPC,
ARM, Coldfire. LTIB c pht trin bi trang http://www.bitshrine.org/ltib/, y l mi
trng cross compile kh hu dng h tr cho chng ta xy dng v pht trin h thng
nhng theo cch d dng v tin li nht.

ci t LTIB, ta lm cc bc sau:
Lu : trong mt s h thng linux, mt s lnh (th tc) phi c thc hin di quyn
root. Tuy nhin, cc lnh sau c thc hin nh mt user thng thng.

Bc 1: ci t gi LTI B
$tar zxf <ltib_release>.tar.gz
$./<ltib_release>/install
Trong <ltib_release> l tn phin bn ca LTIB. Lnh ny s ci t LTIB vo th
mc ca my tnh

Bc 2: Build LTI B

Note: cn ci 1 s gi h tr cho vic build LTIB trc khi ci nu my tnh cha c cc
gi ny:
$sudo apt-get install rpm
$sudo apt-get install rpm-build
$sudo apt-get install bison

sau thc hin lnh:
$sudo visudo
thm dng sau vo cui
$congtri ALL = NOPASSWD: /usr/bin/rpm, /opt/ltib/usr/bin/rpm
trong congtri l tn user


$cd <your LTIB directory>
$./ltib -m config
Trong <your LTIB directory> l ng dn n th mc cha LTIB
qu trnh ny mt khong 1h

Chn nn tng (platform) Freescale iMX refernce board v thot, lu cc thay i. Ti
menu tip theo, chon kiu nn tng (platform type) v packet profile. Thot v lu cc
thay i.
Sau chy lnh sau
$./ltib
Sau khi hon thnh, ta c file kernel image trong ng dn rootfs/boot/zImage
Lu : Ta phi t tham s network trong LTIB khi ng thng qua NFS
$./ltib c
Thit lp cc thng s mng trong cc ng dn sau y:
Target System Configuration
Options--->
Network setup
IP address
netmask
broadcast address
gateway address
nameserver IP address

2.3 Ci t rootfs cho NFS
C 2 cch ci t rootfs cho NFS
Cch 1: s dng gi rootfs trong bn phn phi
S dng lnh sau t ng dn rootfs cho NFS (ta phi s dng ti khon root user)
$mkdir /mnt/rootfs
$cp imx233/rootfs.ext2.gz /tools
$cd /tools
$gunzip rootfs.ext2.gz
$mount -o loop -t ext2 rootfs.ext2 /mnt/rootfs
$cp -r /mnt/rootfs .
$export ROOTFS_DIR=/tools/rootfs

Cch 2: s dng rootfs c to ra sau khi build kernel
Thay v s dng rootfs.ext2.gz, ta c th s dng root file system trong ng dn
<your_LTIB_directory>
%export ROOTFS_DIR=/<your LTIB directory>/rootfs

2.4 Thit lp trn Linux Host
thit lp trn h thng Linux Host, ta thc hin cc bc sau:
Bc 1: tt tng la cho php tftp lm vic
$iptables F
hoc trong comman line, nhp:
$setup

Bc 2: ci t tftp server
Bc 3: ci t nfs server
Bc 4: to th mc tftboot
$mkdir /tftpboot
Kernel image v mi th cn c ti ln bi tftp (cng nh zImage kernel) s c lu
tr trong th mc ny

Bc 5:sa ni dung trong /etc/xinetd.d/tftp nh sau cho php tftp
{
disable = no
socket_type = dgram.
protocol = udp.
wait = yes
user = root
server = /usr/sbin/in.tftpd.
server_args = /tftpboot
}

Bc 6: chy lnh sau trong linux host (my tnh ci linux)
$vi /etc/exports

hoc dng lnh:
$gedit /etc/exports

Thm dng sau trong file:
$/tools/rootfs *(rw,sync,no_root_squash)
Bc 7: khi ng li nfs v tftp server trn linux host
$/etc/init.d/xinetd restart
$/etc/init.d/nfs restart

Bc 8: copy zImage v rootfs.jffs2 trong gi LTIB vo th mc tftpboot
$cp imx233/zImage /tftpboot
$cp imx233/rootfs.jffs2 /tftpboot

hoc
$cp /<your LTIB directory>/rootfs/boot/zImage /tftpbo
$cp /<your LTIB directory>/rootfs.jffs2 /tftpboot
trong <your LTIB directory> l ng dn n LTIB trn my tnh host linux


2.5 Xy dng Firmware
Cu hnh Firmware. Trong command line g lnh
$./ltib selectype

La chn chnh xc cc mc nh sau:
--- Chn kiu nn tng (platform type)
La chn (imx233/stmp3780) --->
--- Chn packages profile
La chn (Updater profile for mx233) --->

Sau khi hon thnh vic xy dng ltib, file update.sb s c to ra
Chng 3: cu hnh Board
iMX233-EVK SoC OTP bits (Default have burned)
C mt cng c gi l BitBurrner ghi cc bit nht nh. (tham kho thm trong file
BitBurner\378x_mmc_boot_readme.txt trong gi phn mm)
Cc bit OTP sau nn set cho php khi ng t MMC/SD card
- cho php SD/MMC MBR h tr trong iMX233 SoC ROM:
+ HW_OCOTP_ROM[3]: 1
- cu hnh iMX233 SoC ROM s dng chn PWM3 iu khin ngun
SD/MMC
+ HW_OCOTP_ROM0[20]: 0
+ HW_COOTP_ROM0[21]: 1

Cu hnh trn board:
Gt switch tng ng chon khi ng t MMC/SD

Chng 4: To Boot Stream Image
Cc chip SoC iMX23 c tch hp trong ROM firmware c kh nng ti v thc hin cc
binary image trong nh dng c bit t cc v tr khc nhau bao gm MMC/SD card v
NAND flash. Mt binary image c gi l boot stream v bao gm mt s bootable
image nh hn (bootlets) c kh nng khi ng v hng dn ROM firmware nn x l
nhng bootlets (v d nh ti mt bootlet On-Chip t b nh RAM v chy n t ).

4.1 Thit lp Kernel comman line
Trong LTIB, chy lnh sau, sau chn Package list v thit lp mc nh v thay th
kernel command lines bng la chn boot_stream bn di.
$./ltib m config

4.2 Xy dng Boot stream image
Trong LTIB, xy dng mt Linux Kernel v U-Boot boot stream image mi, s dng
lnh sau:
$./ltib p boot_stream.spec f
Cc file boot stream c tn imx23_linux.sb v imx23_uboot.sb s c to ra v t
rootfs/boot/ directory

Chng 5: khi ng t Phn cng
Chng ny s trnh by cch khi ng board iMX23 cho ln chy u tin.
Thng thng c 3 cch khi ng linux kernel trn board iMX23:
- Khi ng t MMC/SD card
- Khi ng t NAND flash
- Khi ng t Ethernet (network boot)
Tt c cc ch khi ng ngoi tr khi ng t ethernet c h tr bi firmware
c xy dng trong ROM ca iMX23. M ROM c boot stream image cha trong
linux kernel t cc ngun khi ng khc nhau. Network boot ca linux kernel c thc
hin bi b khi ng U-Boot (U-Boot boot loader). U-Boot c ti v bt u bi
ROM firmware thng qua MMC card hoc NAND flash
B linux SDK cung cp 2 boot stream image:
- Linux kernel boot stream
- U-boot boot stream
Chng sau s m t lm th no chun b v khi ng linux kernel trong mi ch
boot c h tr.

5.1 Target Preparation
5.1.1 Thit lp kernel command line
Cc ty chn dng lnh bao gm mt dng lnh mc nh v ba dng lnh c la chn
bng cch nhn phm trong khi h thng khi ng. Nu file cu hnh lnh c t hn bn
dng lnh th nhng mc c thay th bng chui dng lnh mc nh sau:
console=ttyAM0,115200

- thit lp SSP port n mt chc nng c bit, thit lp ssp1 v ssp2:
+ SSP1 trong ch SPI
ssp1 = spi1
+ SSP1 ch MMC/SD mode
Ssp1 = mmc

Lu : gi tr la chn sspX thng thng s loi tr ln nhau. Khng th cu hnh mt
cng SSP cho hai chc nng cng mt lc
- la chn v tr ca root file system, bin dng lnh root phi c cu hnh.
Cng c th c mt nhu cu thit lp lnh b sung ty chn dng da trn loi
h thng lu tr root file system:
o Root file system c nm trn mt phn vng th MMC
root=/dev/mmcblk0p[N] rw rootwait
vi [N] l s phn vng chnh (primary partiotion) cha root file system

o Root file system c t trn mt NAND fash (UBI volume)
ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs

o Root file system trn NFS qua USB link (ta cn xy dng trong USB.
Image USB mc nh c xy dng nh mt module)
ip=[Target IP]:[Host IP]::::usb0:off root=/dev/nfs
nfsroot=/tools/rootfs,rsize=1024,wsize=1024

Vi:
Host IP l a ch IP ca Ubuntu Linux host
Target IP a ch IP c gn cho IMX233 board

o Root file system trn NFS thng qua Ethernet link:
ip=[Target IP]:[Host IP]::::eth0:off root=/dev/nfs
nfsroot=/tools/rootfs,rsize=1024,wsize=1024

Vi:
Host IP l a ch IP ca Ubuntu Linux host
Target IP a ch IP c gn cho IMX233 board

C bn dng lnh ci sn cho php khi ng kernel vi root file system nm trn th
MMC, b nh flash NAND v NFS root:
- Lnh mc nh:
console=ttyAM0,115200 root=/dev/mmcblk0p3 rw rootwait
- Lnh thay th 1 (c gn cho phm 1)
noinitrd console=ttyAM0,115200 ssp1=spi1 ubi.mtd=1 root=ubi0:rootfs0
rootfstype=ubifs rw gpmi
- Lnh thay th 1 (c gn cho phm 1)
- Lnh thay th 2 (c gn cho phm 2): ngi dng cn chnh sa n thit lp
ng dn cho rootfs v a ch my ch nfs
noinitrd console=ttyAM0,115200 root=/dev/nfs
nfsroot=10.193.100.213:/data/rootfs_home/rootfs_mx233 rw ssp1=spi1 ip=dhcp
rootwait gpmi

- Lnh thay th 3 (c gn cho phm 3)
noinitrd console=ttyAM0,115200 root=/dev/ram0 rdinit=/sbin/init
fec_mac=00:08:02:6B:A3:1A gpmi

5.1.2 Rebuilding the Linux SDK
Nu cc dng lnh mc nh c thay i th cn phi xy dng li SDK to ra bn
cp nht cho Linux kernel boot stream image vi cc lnh thay th pha trn
Trong LTIB thc hin lnh:
./ltib -p boot_stream f

5.1.3 Ghi boot stream khi ng t mt b khi ng (boot media)
Khi ng t MMC/SD
- MMC card phi c mt phn vng chnh vi dung lng 16MB loi 0x53
(OnTrack DM6 Aux3). Di y l mt v d v u ra ca lnh fdisk l hin th
mt phn vng c cu hnh ng:

fdisk -l /dev/sdd

Disk /dev/sdd: 1014 MB, 1014497280 bytes
64 heads, 32 sectors/track, 967 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot Start End Blocks Id System
/dev/sdd1 1 16 16368 53 OnTrack DM6 Aux3
- To mt phn vng nh MMC cha boot stream:
dd if=/dev/zero of=mmc_boot_partition.raw bs=512 count=4

dd if=<where the boostream lives>/iMX233_linux.sb
of=mmc_boot_partition.raw ibs=512 seek=4 conv=sync,notrunc

- Ghi phn vng MMC vo th nh (gii s phn vng khi ng MMC trong v d
l /dev/sdd1)
fdisk -l /dev/sdd
Disk /dev/sdd: 1014 MB, 1014497280 bytes
64 heads, 32 sectors/track, 967 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 16 16368 53 OnTrack DM6 Aux3

Khi ng t NAND
Mt boot stream image khng th ghi vo NAND flash t Linux host. N cn phi ti
kernel t th MMC hoc khi ng t network. Mt khi Linux ang chy trn
STMP3780 c th ghi boot stream image vo NAND bng cng c kobs-ng:
o Copy boot stream vo root file system. V d, trong trng hp ca NFS
root use:
cp <where the boostream lives>/iMX23_linux.sb /tools/rootfs
o Khi ng board v login
o Ghi boot stream image vo flash:
kobs-ng -d iMX23_linux.sb

lu : nu b nh flash c d liu, cn phi xa ton b d liu trong bng lnh sau:
#echo n 1 > /sys/bus/platform/devices/gpmi-nfc.0/ignorebad
#flash_eraseall /dev/mtd<N>
Khi ng t Network
Khi ng linux kernel t network c thc hin bng cch s dng b np khi ng
U-Boot. U-Boot boot stream c ti t bt k ngn khi ng (boot source) c h tr
bi iMX23 ROM.

5.1.4 Chun b root file system
To Root file system trn MMC card
Mc nh kernel command line s dng 3 phn vng chnh:
o FAT
o Phn vng boot stream ku 0x53 (OnTrack DM6 Aux3)
o Phn vng etx2
To mt phn vng chnh th 3 trn MMC card ngoi phn vng bt buc c cha
boot stream image. Di y l mt v d v u ra ca lnh fdisk l hin th mt
th MMC card c cu hnh ng:
fdisk -l /dev/sdd
Disk /dev/sdd: 1014 MB, 1014497280 bytes
64 heads, 32 sectors/track, 967 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 100 FAT
/dev/sdd2 101 16 16368 53 OnTrackDM6 Aux3
/dev/sdd3 117 967 973824 83 Linux
nh dng phn vng th 2:
mkfs.ext2 /dev/sdd3

Gn kt (mount) phn vng MMC/SD th 2:
mount /dev/sdd2 /mnt/mmc

Sao chp Linux SDK root file system n th mc ni phn vng MMC c gn
(mounted)

G phn vng MMC (unmount)
umount /mnt/mmc

Thm thng tin cp nht bng tay n root file system /mnt/mmc nu cn thit
Ngoi ra cng c mt s cng c gi l cfimager c th to ra phn vng, vit boot
stream v rootfs
Cfimager.exe a f imx23_linux.sb e rootfs.ext2 d <mass storage disk, no :, such
as H>

To Root file system trn NAND flash
Mt file system image khng th c ghi vo NAND flash t Linux host. Board
iMX23c th c khi ng bng cch s dng mt root file system trn MMC hoc
NFS u tin v sau Flash file system image c th c ghi vo b nh NAND
flash vi cn c nandwrite.
Nhp ng dn ltib/rootfs
tar jcvf ../rootfs.tar.bz2
Sao chp rootfs.tar.bz2 vo MMC card hoc NFS root
Khi ng board t MMC hoc NFS root
Chy cc lnh sau:
flash_eraseall /dev/mtd0
flash_eraseall /dev/mtd1
kobs-ng init imx23_linux.sb
ubiattach /dev/ubi_ctrl -m 1 -d 0
ubimkvol /dev/ubi0 -n 0 -N rootfs0 -s 256MiB
ubimkvol /dev/ubi0 -n 1 -N rootfs1 -s 256MiB
ubimkvol /dev/ubi0 -n 2 -N data m
mkdir -p /mnt/ubi0; mount -t ubifs ubi0_0 /mnt/ubi0
mkdir -p /mnt/ubi1; mount -t ubifs ubi0_1 /mnt/ubi1
tar -jxvf -C /mnt/ubi0 rootfs.tar.bz2
tar -jxvf C /mnt/ubi1 rootfs.tar.bz2
umount /mnt/ubi0
umount /mnt/ubi1

5.3 Target Boot
5.3.1 khi ng bng MMC/NAND
chn ch khi ng t MMC

You might also like