首要清晰要学什么?
1写Bootloader。会以u-boot为例。
2改内核。用ARM编译器对linux内核进行编译。并移植驱动
3制造文件体系,把shell放入开发板(串口shell),把应用程序植入。
那么先来介绍开发板的硬件:
现在手上拿到的是山寨的2440开发板,分上层中心板和基层母板。
有1个arm的cpu(片上体系,里边还包含外设,不只一个cpu),2个32m的内存,一个flash,和一个晶振供给的时钟。
母板则为4.3寸触摸屏和LCD屏(2个屏要分隔驱动),USB的3个host端和1个device端。RJ45网络端口。Rs232串口(15电压)。
JTAG仿真接口。SD卡槽。3个指示灯。音频输入输出口。gps芯片。
一下介绍pc机与开发板直接的衔接方法。
usb,并口<-------------------------------->JTAG
<------------------------串口----------------------->
PC<------------------------网络-----------------------> ARM开发板
<------------------------usb------------------------>
还有一类叫wiggier仿真器,能够进行flash烧写和简略的调试。
接下来介绍整个开发板的烧写流程。
1咱们运用openjtag对裸板进行烧写。OPENJTAG仿真器网上都有卖。它经过把写好的u-boot,uimage放入开发板内存,再经过烧写flash,把内存中的u-boot程序烧如flash中。
2使用网络来奇妙装置体系。先履行minicom -s来发动minicom,在serial port setup中A选/dev/ttyS0, E选115200 8N1.然后封闭hardware flow control。最终选save setup as dfl。minicom就能够操控开发板了。
在开发板开机后按空格,可进入u-boot的指令行。
咱们使用linux上的nfs把取舍好的linux与linux体系的压缩包先挂载在nfs服务器上,然后经过网线把开发板和pc机连起来,修正u-boot的环境变量,让他从网络加载。之后定制的linux体系便起来了,然后把从前一起加载的压缩包解压缩,解压缩的文件主动烧入flash中,完结烧写。之后把u-boot的环境变量改回来就行了。
以下是详细的履行代码
1发动openjtag。
2履行脚本
a, >halt 使开发板的cpu暂停
b, >arm920t cp15 2 0协处理器指令来封闭mmu
c,>init_2440对开发板进行初始化
d,>halt
e,>arm920t cp15 2 0
f,>load_image
g,>load_image
h,>resume 0x33f80000 从u-boot方位开端运转
i,minicom #help nand
j,#nand erase铲除flash
k,#nand write 33f80000 0 40000 把内存中的u-boot写入flash中
l,#nand write 32000000 100000 200000把内存中的uImage写入flash中
m,#reset重启
3在linux下履行一下进程
a,mkdir/work/root;chmod 777 /work/root 新建作业目录,并把权限位设置到最高
b,tar zxvf root.tgz -C /work/root解压当时目录下的文件体系压缩包
b,mv root.tgz /work/root 并把该压缩包一起放入作业目录
c,vi /etc/exports ,增加一行 /work/root *(rw,sync,no_root_squash) 装备nfs的装备文件
d,services nfs restart 重启nfs服务
e, minicom >setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.3:/work/root ip=192.168.1.8:192.168.1.3:255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M 在minicom中的开发板的uboot下改动环境变量,让开发板经过网络从主机端发动作业目录下的文件体系。(这儿主机端的ip位用ifconfig eth0 +ip来设)
h,>printenv
ti,>boot
4之后你会发现开发板的linux体系现已发动,之后持续经过minicom操作开发板
a,minicom >mount /dev/mtdblock2 /mnt 把flash设备挂载到mnt里
b,>tar zxvf root.tgz -C /mnt 把刚刚的压缩包直接解压到flash设备中,完结操作体系的烧录
c,>reboot 重启
d,minicom >setenv bootargs root=/dev/mtdblock2 console=ttySAC0 mem=64M 重启后在u-boot里把环境变量改成从flash发动
e.>boot
这样便是一个完好的烧录进程。而其间的u-boot uImage 与 操作体系的定制。咱们将在今后的课程中来编写。