YL9G20开发板Linux软件开发手册精.docx
《YL9G20开发板Linux软件开发手册精.docx》由会员分享,可在线阅读,更多相关《YL9G20开发板Linux软件开发手册精.docx(41页珍藏版)》请在冰豆网上搜索。
YL9G20开发板Linux软件开发手册精
YL-9G20开发板Linux软件开发手册
Version:
0.10
2009–8–31
修改序号修改后版本修改日期修改说明修改人
1V0.102009-8-31cs
2
5
6
7
8
9
目录
1综述.......................................................................................................................................................4
1.1主要内容.......................................................................................................................................41.2参考资料........................................................................................................................................4
2LINUX各项源码编译.....................................................................................................................5
2.1建立嵌入式LINUX开发环境......................................................................................................52.2编译BOOTSTRAP.....................................................................................................................62.3U-BOOT的编译......................................................................................................................82.4LINUX2.6.27的编译.............................................................................................................11
3CRAMFS根文件的制作..............................................................................................................153.1准备文件..........................................................................................................................................15
3.1制作步骤..........................................................................................................................................15
4NFS根文件的挂载.......................................................................................................................185NFS文件系统的挂载...................................................................................................................206内核在内存里调试........................................................................................................................227附录一完整LINUX启动过程.................................................................................................24
8附录二常用U-BOOT命令......................................................................................................31
9附录三LINUX常用命令................................................................................................................34
1综述
9G20微处理器基于926EJ-S内核,主频达到400MHz,YL-9G20开发板是深圳优龙科技有限公司基于at91sam9g20开发一款专用于高性能嵌入式处理的开发板,本文用于说明软件编译调试的使用说明。
1.1主要内容
第2章总体说明Linux各项源码编译
第3章给出cramfs根文件的制作教程
第4章给出linuxNFS根文件的挂载过程
第5章说明核在内存里调试步骤
本文默认的主机开发环境是WindowsXP2,其它的开发环境可能略有不同,相关的内容请参考相应资料。
1.2参考资料
1Atmel9g20USER’SMANUAL
2YL-9G20开发板硬件使用手册
3YL-9G20开发板烧写测试使用手册
最新的更新请参考Atmel官方网站:
2Linux各项源码编译
2.1建立嵌入式linux开发环境
这一章的工作是在PC机上的LINUX操作系统平台下进行的。
工作环境:
redhat9.0(linux操作系统
我们把linux的各项源码和编译工具拷贝到相应的工作目录下,这里默认的目录是/home/cs/9G20(这可以是用户自己的工作目录
下面所有的开发都是在root的权限下进行的
编译嵌入式linux内核前,要先安装交叉编译工具toolchain,随板光盘已附带交叉编译工具。
命令:
tarxjvfarm-2007q1-10-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2把编译工具解压,如下:
解压后,我们需要的编译工具就放在/home/cs/9G20/arm-2007q1/bin
2.2编译Bootstrap
命令:
unzipAT91Boostrap1.13.zip
解压后,在当前目录下会生成Bootstrap-v1.13新的目录,Bootstrap源码就在里面。
进入相应9g20源码区,修改编译工具的路径,下面用的是在dateflash的编译,/home/cs/9G20/Bootstrap-v1.13/board/at91sam9g20ek/dataflash
1ViMakefile
2把CROSS_COMPILE=用户的编译器安装路径(这里是/home/cs/9G20/arm-2007q1/bin/arm-none-linux-gnueabi-刚才解压
保存,退出。
3在当前目录下,直接make,编译源码,这样,目标代码就会在当前目录下生成
可以看到,生成dateflash_at91sam9g20ek.bin目标代码
说明:
Nandflash的编译请进入相应的nandflash目录下。
2.3U-Boot的编译
U-Boot解压命令
1tar–xjvf9g20-u-boot-1.3.4.tar.bz2(解压U-Boot的源码包
这样U-Boot的源码就解压在当前目录的u-boot1.3.4下
2cdu-boot-1.3.4(进入u-boot所在的源码目录
3viMakefile
4CROSS_COMPILE=用户的编译器安装路径
(这里是/home/cs/9G20/arm-2007q1/bin/arm-none-linux-gnueabi-刚才解压保存退出。
4make
这样,在本目录下就可以查找到编译的目标代码---u-boot.bin
说明:
u-boot有分dateflash和nandflash启动的,它们之间的定义在u-boot-1.3.4/include/configs/at91sam9g20.h中定义。
默认编译的目标代码是在Nandflash的,如果想编译的是dateflash,请使
//#defineCFG_USE_DATAFLASH_CS11有效。
2.4Linux2.6.27的编译
内核解压命令:
1tar-xjvf9g20-linux-2.6.27.tar.bz2
解压后,生成的linux-2.6.27就是9g20的源码目录。
2cdlinux-2.6.27(进入linux所在的源码目录
3viMakefile
4CROSS_COMPILE=用户的编译器安装路径
(这里是/home/cs/9G20/arm-2007q1/bin/arm-none-linux-gnueabi-刚才解压保存退出。
5makecleanARCH=arm(清除以前编译纪录
6makeARCH=armmenuconfig(进入linux配置菜单界面
进入界面如下:
这样,就可以在菜单这里配置内核了。
这里,导入需要的配置文件,默认的配置文件是.config文件。
配置完保存退出后。
可以编译内核。
6makeuImageARCH=arm(编译内核
7编译完成后,生成内核uImage在arch/arm/boot/目录下
把内核文件下载到开发板,就可以运行起来了。
3cramfs根文件的制作
3.1准备文件
把mkcrafs,YL-9G20_root.cramfs拷贝到linux的相应目录下。
3.1制作步骤
1mkdircramfs(建立个新的目录
2mountYL-9G20root.cramfscramfs–oloop(把根文件挂接到cramfs目录下注意:
mount………–oloop(为字母o而非数字0
3tar–cjvfcramfs.tar.bz2cramfs
4umountcramfs
5rm–rfcramfs
6tar–xjvfcramfs.tar.bz2
经过以上步骤后,根文件系统就是对应的cramfs目录了。
在修改和添加自己需要的应用程序后,用mkcramfs工具把它打包成新的根文件。
6mkcramfscramfsYL9g20_test.cramfs(YL9g20_test.cramfs自己命名的根文件
这样,新的根文件就制作成功了。
4NFS根文件的挂载
在下面的步骤中,linux系统的地址是192.168.0.112;开发板的地址是192.168.0.100
1用vi/etc/exports打开exports文件,在文件中添加
/home/cs/9G20/cramfs*(rw,no_root_squash
/home/cs/9G20/cramfs目录是上一章解压生成的根文件目录
保存,退出。
2重新启动服务
/sbin/servicenfsrestart
2设置开发板U-Boot启动参数
setenvbootargsroot=/dev/nfsrwnfsroot
=192.168.0.112:
/home/cs/9G20/cramfs
ip=192.168.0.11:
192.168.0.111:
192.168.0.1:
255.255.255.0:
at91:
eth0:
off
console=ttyS0,115200
3重启动开发板,就可以看到NFS根文件挂载上了。
这样,就可以把需要调试的应用程序挂载在NFS上调试,好了之后再制作成根文件下载到开发板运行。
5NFS文件系统的挂载
PC机Linux这边设置和上一章的一样,linux系统的地址是192.168.0.112;注意:
与上一章不同的是,NFS文件系统使用的根文件系统是cramfs根文件系统。
U-Boot的启动参数是不一样的,如下图所示:
开发板我们启动进入Linux后,
1设置好ip地址是192.168.0.100
2mkdir/tmp/nfs(在tmp目录下建立要挂载的nfs目录
3
mount–fnfs192.168.0.112:
//home/cs/9G20/cramfs/tmp/nfs
4cd/tmp/nfs(进入挂载的目录
5ls(查看,这样就可以看到挂载上的nfs文件系统了
6内核在内存里调试
1打开TFTP工具,指定编译好的内核文件路径,这里假设编译好的文件时uImage。
2启动U-boot设置好网口之类的参数,
3tftp22000000uImage(uImage为烧写的文件
4bootm22000000(跳到内存linux区
这样,要调试的内核就可以下到内存中运行了。
7附录一完整Linux启动过程
U-Boot1.3.4(Dec122008-12:
18:
30
DRAM:
64MB
NAND:
256MiB
In:
serial
Out:
serial
Err:
serial
Net:
macb0
macb0:
Startingautonegotiation...
macb0:
Autonegotiationtimedout(status=0x7849
macb0:
linkdown(status:
0x7849
Hitanykeytostopautoboot:
0
NANDread:
device0offset0xa0000,size0x200000
2097152bytesread:
OK
##BootingkernelfromLegacyImageat22000000...
ImageName:
linux-2.6
ImageType:
ARMLinuxKernelImage(uncompressed
DataSize:
1531744Bytes=1.5MB
LoadAddress:
20008000
EntryPoint:
20008000
VerifyingChecksum...OK
LoadingKernelImage...OK
OK
Startingkernel...
Uncompressing
Linux...................................................................................................done,bootingthekernel.
Linuxversion2.6.27(nferre@bendor(gccversion4.2.020070413(prerelease(CodeSourcerySourceryG++Lite2007q1-10#1FriDec1212:
38:
40CET2008
CPU:
ARM926EJ-S[41069265]revision5(ARMv5TEJ,cr=00053177
Machine:
AtmelAT91SAM9G20-EK
Memorypolicy:
ECCdisabled,Datacachewriteback
Clocks:
CPU396MHz,master132MHz,main18.432MHz
CPU0:
DVIVTwrite-backcache
CPU0:
Icache:
32768bytes,associativity4,32bytelines,256sets
CPU0:
Dcache:
32768bytes,associativity4,32bytelines,256sets
Built1zonelistsinZoneorder,mobilitygroupingon.Totalpages:
16256
Kernelcommandline:
mem=64Mconsole=ttyS0,115200root=/dev/mtdblock1
AT91:
96gpioirqsin3banks
PIDhashtableentries:
256(order:
8,1024bytes
Console:
colourdummydevice80x30
console[ttyS0]enabled
Dentrycachehashtableentries:
8192(order:
3,32768bytes
Inode-cachehashtableentries:
4096(order:
2,16384bytes
Memory:
64MB=64MBtotal
Memory:
61688KBavailable(2820Kcode,233Kdata,124KinitCalibratingdelayloop...197.83BogoMIPS(lpj=989184
Mount-cachehashtableentries:
512
CPU:
Testingwritebuffercoherency:
ok
net_namespace:
288bytes
NET:
Registeredprotocolfamily16
AT91:
PowerManagement
AT91:
Startingafterpower-restoredwakeup
SCSIsubsysteminitialized
usbcore:
registerednewinterfacedriverusbfs
usbcore:
registerednewinterfacedriverhub
usbcore:
registerednewdevicedriverusb
NET:
Registeredprotocolfamily2
IProutecachehashtableentries:
1024(order:
0,4096bytesTCPestablishedhashtableentries:
2048(order:
2,16384bytesTCPbindhashtableentries:
2048(order:
1,8192bytes
TCP:
Hashtablesconfigured(established2048bind2048
TCPrenoregistered
NET:
Registeredprotocolfamily1
NetWinderFloatingPointEmulatorV0.97(doubleprecision
JFFS2version2.2.(NAND(SUMMARY漏2001-2006RedHat,Inc.msgmnihasbeensetto120
ioschedulernoopregistered
ioscheduleranticipatoryregistered(default
atmel_usart.0:
ttyS0atMMIO0xfefff200(irq=1isaATMEL_SERIAL
atmel_usart.1:
ttyS1atMMIO0xfffb0000(irq=6isaATMEL_SERIAL
atmel_usart.2:
ttyS2atMMIO0xfffb4000(irq=7isaATMEL_SERIAL
brd:
moduleloaded
loop:
moduleloaded
sscssc.0:
AtmelSSCdeviceat0xc4870000(irq14
macbmacb:
invalidhwaddress,usingrandom
MACB_mii_bus:
probed
eth0:
AtmelMACBat0xfffc4000irq21(0a:
77:
62:
a4:
e4:
b6
eth0:
attachedPHYdriver[GenericPHY](mii_bus:
phy_addr=ffffffff:
00,irq=-1Driver'sd'needsupdating-pleaseusebus_typemethods
NANDdevice:
ManufacturerID:
0xec,ChipID:
0xda(SamsungNAND256MiB3,3V8-bitAT91NAND:
8-bit,SoftwareECC
Scanningdeviceforbadblocks
Creating3MTDpartitionson"atmel_nand":
0x00000000-0x00400000:
"Bootstrap"
0x00400000-0x04000000:
"Par