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 与 操作系统的定制。我们将在以后的课程中来编写。
上一篇:ARM指令学习笔记
下一篇:第2课:ARM汇编学习
推荐阅读最新更新时间:2024-03-16 15:03