1.5.8软件包新增内容: 增加了DM9000百兆网卡的驱动,支持扬创2440开发板4.1版本。
最后更新:2008-03-19
- 1 -
目录
一、 utu Linux概述............................................................................................................................................4 二、 utu Linux相关软件功能............................................................................................................................4
2.1 通过串口与PC传送文件...................................................................................................................6
2.1.1 使用sz命令向PC机传送文件.........................................................................................................6 2.1.2 使用rz命令接受PC机传送过来的文件..........................................................................................6 2.2 如何通过FTP与PC传送文件.....................................................................................................................7 2.3 如何使用U盘/移动硬盘............................................................................................................................8 2.4 测试SD/MMC卡......................................................................................................................................10 2.5 测试音频,播放MP3...............................................................................................................................11 2.6 如何中止程序运行..................................................................................................................................11 2.7 Usb摄像头的使用.....................................................................................................................................11
2.7.1 如何将usb摄像头的视频显示在LCD液晶屏上..........................................................................12 2.7.2在PC机端使用浏览器访问摄像头................................................................................................13 2.8 测试简单网络功能..................................................................................................................................14
2.8.1 Ping命令.........................................................................................................................................14 2.8.2 PC机使用Telnet命令登录开发板..................................................................................................16 2.8.3 WebServer功能...............................................................................................................................17 2.9 实时时钟设置和保存..............................................................................................................................17 2.10 如何DHCP动态获取IP地址和DNS......................................................................................................18 2.11 如何连接互联网....................................................................................................................................18
2.11.1 使用Telnet在终端登录清华BBS................................................................................................18 2.11.2 使用浏览器在浏览网页..............................................................................................................19 2.12 如何开机自动运行程序........................................................................................................................20 2.13 测试开发板上的按键............................................................................................................................21 2.14测试开发板上的LED灯..........................................................................................................................22 2.15 如何在程序中控制液晶屏的背光关闭和打开.....................................................................................23 三、如何快速为开发板安装Linux系统................................................................................................................24
3.1 安装PC端tftp软件....................................................................................................................................24 3.2 下载utu-bootloader文件u-boot.bin..........................................................................................................25 3.3 网络更新内核文件uImage......................................................................................................................27 3.4 网络更新yaffs文件系统映像..................................................................................................................28 四、建立Linux下的开发环境................................................................................................................................31
4.1 建立编译环境..........................................................................................................................................31 4.2 建立NFS(网络文件系统)服务器.......................................................................................................32 五、如何为目标板上的linux 编译用户程序.......................................................................................................34
5.1 如何编译按键测试程序..........................................................................................................................34 5.2 如何把编译好的程序传到目标板上运行...............................................................................................34
5.2.1 nfs挂载方式启动开发板的utu-linux.............................................................................................35
- 2 -
5.2.2 把编译好的文件拷贝到开发板的flash上....................................................................................37 5.2.3 用nfs启动方式更新整个utu-linux文件系统................................................................................37
六、编译内核(使用3.4.1的交叉编译器).......................................................................................................41
6.1 装载默认配置参数..................................................................................................................................41 6.2 执行下面的命令来生成内核映像..........................................................................................................43 6.3 定制linux内核..........................................................................................................................................44
6.3.1 如何配置CPU................................................................................................................................45 6.3.2 如何配置各个尺寸的LCD 驱动支持..........................................................................................46 6.3.3 如何配置触摸屏...........................................................................................................................49 6.3.4 如何配置USB 鼠标和键盘..........................................................................................................51 6.3.5 如何配置两个usb主口的支持......................................................................................................53 6.3.6 如何配置优盘的支持...................................................................................................................54 6.3.7 如何配置网眼和中芯微等USB 摄像头......................................................................................56 6.3.8 如何配置网卡驱动.......................................................................................................................59 6.3.9 如何配置声卡驱动.......................................................................................................................64 6.3.10 如何配置SD/MMC 卡驱动.......................................................................................................67 6.3.11 如何配置LED 驱动....................................................................................................................69 6.3.12 如何配置串口驱动.....................................................................................................................70 6.3.13 如何配置RTC 实时时钟驱动....................................................................................................70 6.3.14 如何配置yaffs 文件系统的支持................................................................................................71 6.3.15 如何配置EXT2/VFAT/ NFS 等文件系统..................................................................................73 6.3.16 开机画面的logo文件..................................................................................................................77
七、编译Qtopia和QT应用程序Hello,World.........................................................................................................78
7.1 编译Qtopia...............................................................................................................................................78 7.2 编译基于Qtopia的Hello World应用程序................................................................................................78 八、如何建立yaffs文件系统映像.........................................................................................................................79 附录A、utu-bootloader常用命令...........................................................................................................................80 附录B、Linux常用命令.........................................................................................................................................82
- 3 -
一、 utu Linux概述
utu Linux 是扬创科技基于linux 2.6内核,针对ARM框架CPU移植的嵌入式linux操作系统,针对有S3C2410、S3C2440、PXA270等不同的CPU版本,utu Linux稳定可靠,已经在很多客户的批量产品上实践验证,广受好评。
二、 utu Linux相关软件功能
Windows下的超级终端详细的使用方法请用户自己参考相关资料,这里不再详述。 设置请和下图保持一致。
连接好电源、用所配的串口线连接开发板的COM0和PC机的串口,在开发板utu-LINUX系统起来后,我们可以在终端看到:
- 4 -
按回车键,进入utu-linux命令行终端:
- 5 -
2.1 通过串口与PC传送文件
通过串口登录utu Linux以后,在命令行下可以使用rz、sz命令来和PC机相互传送文件。
2.1.1 使用sz命令向PC机传送文件
在超级终端窗口点击鼠标右键
按照上图设置,点击“关闭”按钮。
在utu Linux命令行输入:
sz /etc/init.d/rcS
将把开发板上utu Linux的/etc/init.d目录下的rcS文件传送到PC机的E盘根目录下。
这个rcS文件是utu Linux的启动脚本,用户可以在PC机端使用文本编辑软件打开查看编辑,增加删除系统启动以后的加载选项。
2.1.2 使用rz命令接受PC机传送过来的文件
在 utu Linux命令行输入:rz
[root@utu-linux /]# rz
点击鼠标右键,选择“发送文件”:
- 6 -
点击“发送”按钮,就把PC机端E盘根目录下的rcS文件传到开发板上面的utu Linux的根目录了。
2.2 如何通过FTP与PC传送文件
utu Linux for 2440 v1.5版本默认已经开启了ftp服务,用户可以在PC端直接使用cute ftp等ftp客户端软件直接登录,用户名和密码均为空。
下图是使用cute ftp登录开发板的IP:192.168.1.15:
- 7 -
在这里,你就可以直接上传下载开发板上utu Linux系统的ftp的pub文件见下的内容了,这里的pub文件夹在utu Linux的 / var/ftp/目录下。
如果不能写入,请按照下面的方法修改一下pub文件夹的属性: [root@utu-linux /mnt]# cd /var/ftp/ [root@utu-linux ftp]# chmod 777 pub [root@utu-linux ftp]#
2.3 如何使用U盘/移动硬盘
将我们所要挂接的U盘(示例用的是一个1G的U盘)插入开发板USB Host接口,终端此时会提示:
- 8 -
此时,按一下回车键重新回到utu-linux终端,我们只需在命令行键入 mount -t vfat /dev/sda1 /mnt
即可挂接U盘成功,cd /mnt进入mnt目录,ls一下,就能看到u盘的内容了。
- 9 -
2.4 测试SD/MMC卡
同挂接U盘一样,插入SD/MMC卡(演示用的是一个1G的SD卡)后系统的提示:
按回车,我们进行挂接,命令为:mount -t vfat /dev/mmcblk0p1 /mnt
- 10 -
2.5 测试音频,播放MP3
madplay是一个基于控制台下的mp3播放器。它有多种播放控制模式,可以运行“madplay -h”查看其使用帮助
使用madplay播放SD卡里面的mp3:
按照2.3章节挂载好sd卡,进入mnt目录,输入: madplay 2.mp3
2.6 如何中止程序运行
使用 Ctrl+C的组合键,可以中止正在运行的程序,如果是在后台运行的程序,需要使用kill来杀掉对应的进程。
2.7 Usb摄像头的使用
utu Linux for 2440 v1.5支持市面上最常见的中星微301系列驱动芯片的摄像头,插入usb摄像头,命令行显示:
- 11 -
[root@utu-linux]# usb 1-1: new full speed USB device using s3c2410-ohci and ad dress 2
drivers/usb/media/gspca/gspca_core.c: USB SPCA5XX camera found.(ZC3XX)
提示已经找到了摄像头,设备名所在路径:/dev/v4l/video0
2.7.1 如何将usb摄像头的视频显示在LCD液晶屏上
在命令行输入:servfox -g –L 终端显示的信息:
[root@utu-linux /]# servfox -g -L
servfox version: 1.1.2 date: 07:10:2005 (C) mxhaard@magic.fr frame buffer: 320x240, 16bpp, 0x25800byte Ctrl + C to STOP!
- 12 -
2.7.2在PC机端使用浏览器访问摄像头
在命令行输入:servfox -d /dev/video0 -g -s 640x480 -w 7070 注意:640 480中间是小写的英文字母x,不是叉。 终端显示的信息:
[root@utu-linux /]# servfox -d /dev/video0 –g -s 640x480 -w 7070 servfox version: 1.1.2 date: 07:10:2005 (C) mxhaard@magic.fr Waiting .... for connection. CTrl_c to stop !!!!
在PC端打开IE浏览器,输入开发板IP地址:http://192.168.1.168如果开发板是其他ip,请敲对应的ip地址。
注意:正常显示摄像头图像,需要先安装光盘里面的 /工具和软件/j2re-1_4_2_15-windows-i586-p.exe
- 13 -
2.8 测试简单网络功能
特别提醒:测试网络功能的时候,请注意关闭PC的防火墙软件或者对防火墙软件做相应设置。
2.8.1 Ping命令
这里我们只是简单的测试一下开发板和PC机的“PING”功能:
- 14 -
首先,确认开发板上的utu Linux的IP地址,在utu Linux终端输入: ifconfig
可以运行 ifconfig eth0 192.168.1.168 up 将开发板的ip改为192.168.1.168
如上图所示,utu-linux上的ip地址为192.168.1.168,在utu-linux终端运行一下:ping 192.168.1.1:
- 15 -
按Ctrl+C可以回到命令行。
在pc端ping开发板上的utu linux:
2.8.2 PC机使用Telnet命令登录开发板
确认和PC主机的IP地址在同一个网段,在pc机的命令行下键入: telnet 192.168.1.168
并用root用户名登录,就可以从pc机透过网络telnet登录到开发板上,如图:
- 16 -
utu Linux的telnet功能还具备从开发板的linux直接telnet到外部的bbs上去,再后面的开启DHCP功能自动获取IP和DNS的章节有叙述。
2.8.3 WebServer功能
请看2.7.2章节。
2.9 实时时钟设置和保存
设置时间为2006年11月27日17点12分0秒,输入:date –s 112717122006 [root@utu-linux /]# date -s 112717122006 Mon Nov 27 17:12:00 UTC 2006 使用hwclock –w保存
[root@utu-linux /]# hwclock -w [root@utu-linux /]#
保存以后,就具备实时时钟的功能了,不管开发板有没有电,时钟都会一直往前走的。
- 17 -
2.10 如何DHCP动态获取IP地址和DNS
确认开发板连接的网络的路由器具备DHCP功能,并可自动分配DNS, 在命令行输入 udhcpc & 终端显示:
[root@utu-linux /]# udhcpc &
[root@utu-linux /]# udhcpc (v1.3.2) started Sending discover...
Sending select for 192.168.1.104...
Lease of 192.168.1.104 obtained, lease time 7172 deleting routers
route: SIOC[ADD|DEL]RT: No such process adding dns 202.106.46.151 adding dns 202.106.195.68
[1] + Done udhcpc [root@utu-linux /]#
从上面的显示信息看到开发板运行utu Linux从路由器那边获取了192.168.1.104的IP地址,并且得到了DNS地址:202.106.46.151 202.106.195.68
2.11 如何连接互联网
确认已经按照2.10所说,得到了IP和DNS,然后按以下操作。
2.11.1 使用Telnet在终端登录清华BBS
在命令行输入:telnet bbs.tsinghua.edu.cn [root@utu-linux /]# telnet bbs.tsinghua.edu.cn 登录成功出现以下画面:
- 18 -
2.11.2 使用浏览器在浏览网页
此步骤需要有配套液晶屏才能操作。
在LCD显示的Qtopia图形界面,点击 “应用程序”->“浏览器”如图所示:
- 19 -
2.12 如何开机自动运行程序
utu Linux的启动脚本位于/etc/init.d/rcS 默认信息如下: #! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S prevlevel=N umask 022
export PATH runlevel prevlevel #
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses. #
trap \":\" INT QUIT TSTP
################################## /bin/mount -t tmpfs tmpfs /dev /bin/mount -t sysfs sysfs /sys echo \"Starting udevd...\" /sbin/udevd --daemon /sbin/udevstart
################################## mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0 /bin/mknod /dev/pts/1 c 136 1 /bin/mknod /dev/pts/2 c 136 2 /bin/mknod /dev/pts/3 c 136 3 /bin/mknod /dev/pts/4 c 136 4 /bin/mknod /dev/pts/5 c 136 5 /bin/mount -t devpts devpts /dev/pts
- 20 -
/bin/mount -t proc none /proc ln -s /dev/ts0 /dev/h3600_tsraw mknod /dev/buttons c 254 0 mkdir /dev/fb ln -s /dev/fb0 /dev/fb/0 mkdir /dev/v4l
ln -s /dev/video0 /dev/v4l/video0 /sbin/hwclock -s
hostname -F /etc/sysconfig/HOSTNAME /sbin/ifconfig lo 127.0.0.1 #config network by manual work /sbin/ifconfig eth0 192.168.1.15 #/sbin/route add default gw 192.168.1.1 #config network by udhcpc #/sbin/udhcpc & /sbin/portmap & /etc/init.d/vsftpd stop /etc/init.d/vsftpd start /usr/sbin/telnetd -l /bin/login /usr/sbin/boa & /bin/qtopia &
前面加#号的是注释掉的,比如用户如果想让开发板上电以后直接就可以从路由器自动获取IP和DNS,可以把:#/sbin/udhcpc & 前面的#号去掉,让udhcpc一开机就运行起来。
2.13 测试开发板上的按键
在开发板linux命令行,输入命令:./buttons [root@utu-linux /bin]# ./buttons 然后按下各个按键会出现 其中1,2,….表示不同的按键。
- 21 -
如图:
按Ctrl+C 退出。
2.14测试开发板上的LED灯
[root@utu-linux /bin]# ./led Usage:
led led_number on|off Options:
led_number from 0 to 3 on 1 off 0 让第1个led灯亮,输入:
[root@utu-linux /bin]# ./led 1 1
对应的管脚关系,请用户自己对一下原理图和程序里面的源码。
- 22 -
2.15 如何在程序中控制液晶屏的背光关闭和打开
启动utu linux以后在/usr/bin目录下有个lcdbacklight应用程序,进入目录执行该应用程序,可以控制lcd背光的关闭和打开。 打开:
./lcdbacklight on 关闭:
./lcdbacklight off
注意:这个程序是控制LCD接口里面的LCD_PWREN管脚的高低电平状态,以达到关闭背光的目的,能否达到目的,和液晶屏驱动板是否支持这个功能有关系,YC2440配套的各个套餐中,只有套餐2的nec 3.5寸屏的驱动包不支持这个功能,其他均支持。lcdbacklight的源码请参见\\example\\lcdbacklight。
- 23 -
三、如何快速为开发板安装Linux系统
3.1 安装PC端tftp软件
安装光盘目录下的:\\工具和软件\\TFTP_Server_TFTPDWIN_v0.4.2
安装以后把\nuxfor2440V1.5\\Images 目录下的u-boot.bin_320240、uImage_320240-tp、filesystem.yaffs-touchscreen三个文件拷贝到TFTP_Server_TFTPDWIN的安装目录下,(该文档假定用户购买的是2440套餐1,烧写带触摸板功能的qtopia1.7PDA版本GUI,其它套餐的客户的操作类似,只是对应的文件不一样,请客户注意。另,以下文档提到的文件等都假定客户购买的事套餐1,不再重复说明)并把u-boot.bin_320240重新命名为u-boot.bin;uImage_320240-tp重新命名为uImage;filesystem.yaffs-touchscreen重新命名为filesystem.yaffs。如下图。
运行,如下界面:
- 24 -
3.2 下载utu-bootloader文件u-boot.bin
3.2.1 用并口下载u-boot.bin
如果开发板上的nandFlash没有任何程序,首先必须用并口烧写utu-bootloader,utu-linux采用的是业内广为使用的u-boot,下面先介绍如何使用配套的YCTEK-ARM Wiggler小板烧写u-boot。 1 确认并口GIVEIO驱动已安装,具体安装方法参见光盘 \\工具和软件\\GIVEIO驱动安装。 2 确认开发板按连接要求连接(尤其是YCTEK-ARM Wiggler小板),加电。 前期准备工作,连接开发板:
1) 将wiggler 小板(配件中标注yctek-ARM Wiggler 的小板)与YC2440板上的JTAG 口通过20 芯带线进行连接,wiggler 25 芯的那端直接接PC 并口。 3) 连接开发板配套电源。
4) 双击运行\nuxfor2440V1.5\\Images目录下的u-boot.bin_320240.bat批处理文件,按照下图操作,可以正常烧写完u-boot,并口烧写速度比较慢,这个过程大概需要好几分钟。
U-boot文件只要烧写一次就可以,如果购买的开发板是烧写Linux系统的,可以跳过这一步。
- 25 -
3.2.2 用网络下载u-boot.bin
如果用户开发板上已经烧写好了uboot,需要重新更新一下uboot的话,不需要再用并口烧写,可以直接通过网络更新: 1、 运行windows的超级终端,波特率等设置严格按照下图设置:
Windows下的超级终端详细的使用方法请用户自己参考相关资料,这里不再详述。
特别提醒:串口工具请使用超级终端,要是使用DNW的话,在传送文件系统镜像的时候会出现未知错误。 2、把开发板的串口和PC连接好,网卡使用网线联入网络,打开电源,在超级终端显示开发板utu-linux的启动信息,按空格键,进入utu-bootloader的命令行:
- 26 -
utu-bootloader常用命令请见附录A,如果下载以后启动异常,可以先擦除一下nand flash,然后再按照下面方法更新一遍utu Linux系统,如何擦除整个nand flash见附录A。
3、输入 run install-bootloader 下载更新uboot
utu-bootloader里面默认设置了自己的IP为192.168.1.168 ;使用tftp服务器的ip地址为192.168.1.200,请确认PC端的tftp服务器软件已经开启,PC的ip地址设置为192.168.1.200,如果不是这个IP地址,请更改PC的IP地址为这个地址,或者在utu-bootloader命令行用setenv serverip的命令重新指定TFTP服务器端的IP地址;3.1章节描述的那3个文件也拷贝到了相应目录。
3.3 网络更新内核文件uImage
在utu-bootloader命令行输入:run install-kernel
- 27 -
3.4 网络更新yaffs文件系统映像
注意:更新文件系统之前,请reset或者重新上电复位进入utu-bootloader命令行,否则下载完毕,重新启动utu linux的时候,会出现错误。
重新启动以后,在utu-bootloader命令行输入:run install-filesystem
###表示一直在传送数据,此时tftp软件界面显示如下:
- 28 -
传送并写入flash完成以后显示:
更新完成,重新上电就可以启动utu Linux了。
注意:如果烧写的是带触摸板功能的GUI,第一次启动会自动提示校正触摸板,请用触摸笔点击触摸,出现十字光标校正的时候,一定要点中十字光标的准心位置,一共校正 上、下、左、右、中间,五个位
- 29 -
置点,如果点击不准确将会校正不过去,一直循环让校正。
如果烧写的是qtopia1.7的带触摸板功能的GUI,系统更新第一次启动的时候,设置相关信息的时候,
请点“Next”一直往下走就可以,首次进入qt图形界面的时候,tabs选项卡地方的汉字会显示不正确,因为默认的粗体没有,请点击“Settings”->“外观”,然后在弹出的对话框 中什么都不修改,直接再点击“OK”,这样中文显示就都正常了。
更新系统以后第一次上电,触摸校正ok,不过到最后一步的时候,可能会一直显示“ 漏斗 ”那个界面,进入不了qt图形界面,这个时候不用管它,重新上电就可以了。 关于nand flash坏点的问题的特别说明:
Nand flash有几个坏点是正常情况,请客户不要惊讶,不会影响任何使用。 操作系统自动会对坏点做上标记,实际使用的时候会跳过坏点的。 ☺
PC端是Linux系统下更新开发板的utu-linux的方法,请用户根据自己的pc端的linux版本,下载个合适的tftp服务器软件,参照上面所介绍的windows下的更新方法进行更新。
- 30 -
四、建立Linux下的开发环境
4.1 建立编译环境
Linux下开发环境的建立主要就是建立交叉编译环境,为在X86体系的PC机上建立一个编译ARM上能运行的程序的环境。
经过我们对各个PC Linux版本实际测试使用,强烈建议用户安装Fedora8 Linux发行版本,官方网站:http://fedoraproject.org/ 下载地址:
http://download.fedoraproject.org/pub/fedora/linux/releases/8/Fedora/i386/iso/Fedora-8-i386-DVD.iso
对于初学入门的用户,强烈建议不要用虚拟机安装Linux。 在arm-linux-gcc-3.4.1.tar.bz2文件目录下运行命令
mkdir /usr/local/arm #如果您的pc端linux系统已经有这个文件夹,这步就跳过 tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /
然后运行命令gedit /etc/bashrc修改bashrc文件,注意:如果pc端安装的是ubuntu linux系统,需要修改的是bash.bashrc文件。
在最后加上一行PATH=$PATH:/usr/local/arm/3.4.1/bin 保存后关闭
重新打开终端,如果输入命令arm-linux-gcc --version后能有版本显示则交叉编译环境已经建立了
- 31 -
3.3.2和2.95.3的交叉编译环镜的建立和2.95.3的建立方法一样:
tar -xjvf arm-linux-gcc-3.3.2.tar.bz2 -C / tar -xjvf arm-linux-gcc-2.93.3.tar.bz2 -C / 同时要将bashrc中的PATH改成 PATH=$PATH:/usr/local/arm/3.3.2/bin 或者
PATH=$PATH:/usr/local/arm/2.95.3/bin
要注意的是交叉编译器不能同时使用,当使用其中一个时,要将另外的PATH删除
在utu Linux的开发中,编译内核和应用程序请使用3.4.1版本编译器;编译qtopia请使用3.3.2版本;如果要使用vivi,编译vivi请使用2.95.3版本。
4.2 建立NFS(网络文件系统)服务器
将根文件系统释放到目录中:
- 32 -
tar –xjvf s3c2440_recover.tar.bz2 –C /utuLinux/s3c2440/ 如果没有对应目录,请事先建立该目录: mkdir /utuLinux
mkdir /utuLinux/s3c2440
确认已经在Linux操作系统上安装好了nfs软件,并确保NFS服务正常启动运行。 然后用命令 gedit /etc/exports
对nfs服务的配置文件进行修改,加上如下内容
/utuLinux/s3c2440/s3c2440_recover *(rw,sync,no_root_squash)
/utuLinux/s3c2440/s3c2440_recover 是代表要作为YC2440的根文件系统的共享目录;*代表所有的客户机都可以挂接此文件系统;rw代表客户机以读写许可来挂接它们的根文件系统;no_root_squash 选项允许客户机以主机上的root身份挂接根文件系统。请阅读exports的手册获取更详细的信息。
- 33 -
五、如何为目标板上的linux 编译用户程序
5.1 如何编译按键测试程序
使用前面所说的3.4.1版本GCC编译
首先进入buttons测试程序的所在目录,然后执行arm-linux-gcc -o buttons main.c [root@utu-Linux/]#cd buttons
[root@utu-Linux/]#arm-linux-gcc -o buttons main.c 或者进入buttons测试程序的所在目录,后然后执行make, [root@utu-Linux/]#cd buttons [root@utu-Linux/]#make 测试:
在开发板linux命令行,输入命令 [root@utu-Linux /]# ./buttons 然后按下各个按键会出现 buttons_value: 1 buttons_value: 2 buttons_value: 3 buttons_value: 4 buttons_value: 5 buttons_value: 6
其中1,2,….表示不同的按键。
5.2 如何把编译好的程序传到目标板上运行
把编译好的程序传到目标板上有好多种方法,参见的有以下几种: 第一种:使用串口传送; 第二种:用ftp传送;
第三种:用U盘或者SD卡拷贝;
- 34 -
第四种:用NFS文件系统挂载
前面3种方面在第二章有详细介绍,在这里重点介绍一下如何用nfs文件系统挂载。
5.2.1 nfs挂载方式启动开发板的utu-linux
首先确认一下按照4.2章节所介绍的在PC端的Linux环境下建立好了nfs服务器
PC端Linux下请设置好minicom,波特率设置为115200;数据位8;奇偶校验:无;停止位:1;数据流控制:无;Minicom的具体细节使用问题,请用户参考相关minicom的帮助资料。
串口线网线都连接好,打开minicom,给开发板上电,按空格键键入utu-bootloader提示符:
在utu-bootloader提示符下输入: Setenv
bootargs
'console=ttySAC0
root=/dev/nfs
nfsroot=192.168.1.103:/utuLinux/s3c2440/s3c2440_recover
ip=192.168.1.15:192.168.1.1:192.168.1.1:255.255.255.0:www.yctek.com:eth0:off'
在这里192.168.1.103的地址是指nfs服务器的PC端ip地址,用户根据自己的情况做修改,以上指令比
- 35 -
较长,在word里面的排版有点乱,用户可以从光盘 \nuxfor2440V1.5 的 从nfs启动脚本.txt文件中直接拷贝张贴到utu-bootloader提示符下,回车,重新进入utu-bootloader提示符,输入:boot 后回车。
重新启动就可以挂载上PC端的nfs目录/utuLinux/s3c2440/s3c2440_recover了,如下图所示。
- 36 -
5.2.2 把编译好的文件拷贝到开发板的flash上
5.2.1操作成功以后,在nfs启动以后的命令行中按照如下指令输入: #mount /dev/mtdblock2 /mnt
#cp /buttons /mnt/bin (假设buttons为编译好的文件) #umount /mnt 如图所示:
然后重启动板子就可发现buttons在目标板的/bin文件夹下
5.2.3 用nfs启动方式更新整个utu-linux文件系统
在5.2.1 所示nfs启动以后,在命令行输入 recover_system_qtopia_tp,回车,就可以更新开发板上整个文件系统,utu Linux默认的包里面包含了好几种GUI图形界面,通常客户请使用Qtopia PDA Edition Version 1.7版本的,各个更新指令对应的不同的GUI图形界面:
- 37 -
1) 使用 recover_system_qtopia_tp 更新系统,将烧写Qtopia PDA Edition Version 1.7标准版的文件系统(使
用触摸屏版本)
2) 使用 recover_system_qtopia_mouse 更新系统,将烧写 Qtopia PDA Edition Version 1.7标准版的文件系
统(使用鼠标版本)
3) 使用 recover_system_no_gui 更新系统,将烧写没有使用GUI图形界面的文件系统。
4) 使用 recover_system_mizi 更新系统,将烧写Mizi公司的图形界面的文件系统(基于QTopia标准版修
改)
5) 使用 recover_system_opie 更新系统,将烧写OPIE图形界面的文件系统(基于QTopia标准版修改)
更新过程:
- 38 -
- 39 -
更新完成:
重新上电,utu Linux系统就在开发板上跑起来了。
注意:如果烧写的是带触摸板功能的GUI,第一次启动会自动提示校正触摸板,请用触摸笔点击触摸,出现十字光标校正的时候,一定要点中十字光标的准心位置,一共校正 上、下、左、右、中间,五个位置点,如果点击不准确将会校正不过去,一直循环让校正。
如果烧写的是qtopia1.7的带触摸板功能的GUI,系统更新第一次启动的时候,设置相关信息的时候,
请点“Next”一直往下走就可以,首次进入qt图形界面的时候,tabs选项卡地方的汉字会显示不正确,因为默认的粗体没有,请点击“Settings”->“外观”,然后在弹出的对话框 中什么都不修改,直接再点击“OK”,这样中文显示就都正常了。
更新系统以后第一次上电,触摸校正ok,不过到最后一步的时候,可能会一直显示“ 漏斗 ”那个界面,进入不了qt图形界面,这个时候不用管它,重新上电就可以了。
- 40 -
六、编译内核(使用3.4.1的交叉编译器)
注意:
1、使用3.4.1的交叉编译器
2、一定先将utulinuxfor2440V1.5目录下的mkimage文件拷贝到PC端linux的/usr/bin下,否则编译utu-linux内核时,make uImage会出现错误!!
内核源码压缩包的名字是\" utu-linux_for_s3c2440_V1.5-2007-8-18.tar.bz2\"。执行下面的命令来解压 bz2 包
tar –xjvf utu-linux_for_s3c2440_V1.5-2007-8-18.tar.bz2 –C /utuLinux/s3c2440/ (注意:文件名可能随着版本升级有些变化,请和光盘里面的文件名确认一下)
6.1 装载默认配置参数
进入内核源码的目录,ls查看一下配置文件:
对应YC2440各个系列套餐的配置文件分别是: 套餐一: config_320240_ts (触摸屏版本);config_320240_mouse(使用usb鼠标版本) 套餐二: config_240320_ts (触摸屏版本);config_240320_mouse(使用usb鼠标版本) 套餐三: config_480290_ts (触摸屏版本);config_480290_mouse(使用usb鼠标版本) 套餐四: config_800480_ts (触摸屏版本);config_800480_mouse(使用usb鼠标版本) 套餐五: config_480272_ts (触摸屏版本);config_480272_mouse(使用usb鼠标版本)
- 41 -
进入生成的内核源代码目录,执行\"make menuconfig\"命令来配置参数。 cd /utuLinux/s3c2440/utu-linux_for_s3c2440_V1.5.3 make menuconfig
选择进入“Load an Alternate Configuration File”配置栏:
- 42 -
输入配置文件名如 套餐5的config_480272_ts并回车,在主菜单里选择 6.2 执行下面的命令来生成内核映像 编译内核需要arm-linux-gcc-3.4.1 版本的编译器,请务必检查安装好。 [root@yctek /]#make uImage - 43 - 映像文件产生在内核源码包目录下的\"arch/arm/boot\",生成的有uImage。 如果想生成供vivi使用的zImage,请执行: make zImage 注意:一定要将utulinuxfor2440V1.5目录下的mkimage文件拷贝到PC端linux的/usr/bin下,否则编译utu-linux内核时,make uImage会出现错误!! 6.3 定制linux内核 上面我们使用缺省文件配置和编译了内核,其实linux 内核的配置选项有很多,下面我们就常见的一些选项分别予以图解,帮助你尽快熟悉内核配置,以便定制自己需要的内核。 运行make menuconfig 后,进入内核配置主菜单 - 44 - 6.3.1 如何配置CPU 在主菜单里面,选择System Type,按回车进入 可以看到,系统大部分使用了标注了S3C2410 的选项,这是因为S3C2410 和S3C2440的 - 45 - 很多寄存器地址等地址和设置是完全相同的,该版本的linux-2.6 内核不再对这两种CPU 分别设置。 如果您要选择板级选项,可以进入 S3C24XX Implementations 子菜单,里面有很多常见的使用基于S3C2410 和S3C2440 的目标板平台选项 它们分别对应于 arch/arm/mach-s3c2410/mach-* 开头的文件,如IPAQ H1940 对应于 mach-h1940.c,我们的开发板平台为UTU2440,它对应于mach-utu2440.c。另外, 在这个文件中, 还会用到一个机器码 MACH_TYPE, 该机器码的定义文件为arch/arm/tools/mach-types,其中,我们开发板的机器码为5244 6.3.2 如何配置各个尺寸的LCD 驱动支持 在主菜单里面,选择Device Drivers,按回车进入 - 46 - 选择Graphics support,按回车进入,选中: <*> Support for frame buffer devices <*> S3C2410 LCD framebuffer support 选中LCD select,按回车进入,如图 - 47 - 在该子菜单里面您可以选择需要的LCD 驱动 - 48 - 选择完毕,按回车退回到上一层菜单,再选择 6.3.3 如何配置触摸屏 在Device Drivers 菜单里面,选择Input device support,按回车进入 然后选中里面的 <*> Touchscreen interface <*> Event interface - 49 - 找到并选择Touchscreens 选项,按回车进入: 选中 <*>Samsung S3C2410 touchscreen input dirver - 50 - 4线电阻式触摸屏两种方向的设置: 在这里可以设置触摸板的反向还是正向,这对于用户自己配套液晶屏和触摸板非常管用,如果默认的内核对于你的触摸板有响应,但怎么都校正不过去,就很有可能是方向反向了,在内核的这个位置做选择: Reset Samsung S3C2410 touchscreen coordinate system这个选项选上和不选上对应2种状态。 再选择 6.3.4 如何配置USB 鼠标和键盘 在Device Drivers 菜单里面,找到并选中 <*>USB supoort 然后回车进入 - 51 - 找到并选中: <*> Support for Host-side USB <*> OHCI HCD support - 52 - 接着向下移动方向键,寻找USB 键盘和鼠标部分 在 --- USB Input Devices 部分,我们可以找到并选中: <*> USB Human Interface Devices (full HID) support [*] HID input layer support 这样就选择配置了USB 键盘和鼠标,然后选择 6.3.5 如何配置两个usb主口的支持 - 53 - 如果要把2440 CPU的其中一个USB从口变为主口使用,请在开发板上设置好跳线(注意:仅YC2440-F开发板提供了这个选择,utu2440,yc2440-sbc开发板均没有这个功能)。然后选上:Device Drivers->USBsupport里面的s3c2440 2 USB HOST,再编译,如上图。 6.3.6 如何配置优盘的支持 因为要优盘用到了SCSI 命令,所以我们先增加SCSI 支持。 在Device Drivers 菜单里面,选择SCSI device support,按回车进入 - 54 - 选中: [*] legacy /proc/scsi support <*> SCSI disk support - 55 - 然后选择 <*> USB Mass Storage support 然后选择 6.3.7 如何配置网眼和中芯微等USB 摄像头 在Device Drivers 菜单里面,选择 Multimedia devices,回车进入 - 56 - 选中 <*> Video For Linux 并选择 Video For Linux,按回车进入 - 57 - 选中<*> OmniVision Camera Chip support: 选择 <*> USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras - 58 - 其中OV511 是支持基于OV511 芯片的摄像头,SPCA5XX 是支持中芯微301 系列的摄像头,目前市场上大部分摄像头都是使用该芯片设计的。 选择 6.3.8 如何配置网卡驱动 要配置网卡驱动,首先要配置网络协议支持 在主菜单中,选择Netwoking,回车进入 - 59 - 选中 [*] Networking support 并选择Networking options,按回车进入 - 60 - 推荐使用我们缺省配置的几个选项,如图 选择完毕,一直退回到主菜单,并选择进入Device Drivers 菜单。 找到Network device support,选择进入 - 61 - 找到并进入 Ethernet (10 or 100Mbit) 选项 - 62 - 扬创2440开发板V4.1及其以后版本使用的是DM9000的100M网卡,如下图配置: 扬创2440开发板V4.1之前的版本使用的是cs8900的10M网卡,选中: <*> CS8900 support - 63 - 选择 6.3.9 如何配置声卡驱动 在Device Drivers 菜单中,选择L3 serial bus supprt,并进入 - 64 - 选中里面的所有选项,如图 - 65 - 返回到 Device Drivers 菜单,并选择 Sound - - -> 进入 - 66 - 选择进入Open Sound System - - -> 选中如图所示选项 返回到Device Drivers 菜单 6.3.10 如何配置SD/MMC 卡驱动 在Device Drivers 菜单中,选择进入MMC/SD Card support - - ->,并做如图选择 - 67 - 返回到Device Drivers 菜单。 - 68 - 6.3.11 如何配置LED 驱动 在Device Drivers 菜单中,选择进入 Character devices - - -> 找到并选中LEDs 驱动支持,如图。 - 69 - 6.3.12 如何配置串口驱动 依然在Character devices 菜单中,选择进入Serial drivers - - ->,并做如图选择。 包含三个串口驱动0,1,2,对应设备名: /dev/s3c2410_serial0 /dev/s3c2410_serial1 /dev/s3c2410_serial2 6.3.13 如何配置RTC 实时时钟驱动 依然在Character devices 菜单中,选中RTC 驱动支持,如图。 注意:不要选中Enhanced Real Time Clock Support - 70 - 6.3.14 如何配置yaffs 文件系统的支持 选择进入File Systems - - ->菜单,再选择进入Miscellaneous filesystems --->,如图: - 71 - 如图选择yaffs 文件系统相关选项: - 72 - 返回到File systems 菜单。 6.3.15 如何配置EXT2/VFAT/ NFS 等文件系统 在File System 菜单中,如图选择EXT2 文件系统的支持。 - 73 - 选择内核启动后自动挂接支持,如图: 选择进入DOS/FAT/NT Filesystems,如图选择对VFAT 的支持。 - 74 - 返回File System 菜单,然后选择进入Pseudo filesystems - - ->,如图进行选择 注意:该项必须选择,否则yaffs 文件系统不会正确运行。 - 75 - 返回File System 菜单,然后选择进入Network File Systems - - ->,如图选择以配置网 络文件系统(NFS)。 注意:只有正确选择了网络文件系统的支持选项才能使用网络文件系统。 - 76 - 至此,您已经了解内核的大部分常用选项的配置,更多的内核选项需要您在学习中逐步 实践和摸索。 6.3.16 开机画面的logo文件 进入内核目录utu-linux_for_s3c2440_V1.2/drivers/video/logo, 里面有各个logo文件,想要修改开机logo,对应修改图象文件就可以。 - 77 - 七、编译Qtopia和QT应用程序Hello,World 提醒:请使用光盘附带的arm-linux-gcc-3.3.2 交叉编译器编译ARM 平台的Qtopia,否则有可能会不能通过! 7.1 编译Qtopia 因为配置编译Qt/Embedded 的过程比较复杂,为了方便,我们把配置和编译的步骤制作成一个build 脚本,执行该脚本即可“一键搞定”。解压移植好的Qtopia源码包: tar –xjvf qtopia-1.7-tp.tar.bz2 /utuLinux/ 然后进入解压的目录,直接. build 就可以编译好qtopia。 注意这里.后面有个空格。 7.2 编译基于Qtopia的Hello World应用程序 cd /utuLinux/qtopia-1.7-tp/ 运行. setenv 设置好环境变量(.与setenv中有空格) 进入hello目录运行make后在当前目录得到可执行文件hello 将Hello World放到整个QT界面中去 将可执行文件hello拷贝到文件系统中/opt/qtopia/bin下面 将hello.desktop拷贝到文件系统中/opt/qtopia/apps/Applications下面,运行QT后便可看到Applications(中文:应用程序)中多出一个hello 如何把文件传送到开发板上,请查看2.1、2.2、2.3章节描述的方法 详细的基于qtopia的应用程序开发,请客户参考专门讲Qtopia的书籍详细研究。 - 78 - 八、如何建立yaffs文件系统映像 把光盘里面的mkyaffsimage文件拷贝到/utuLinux/s3c2440所在目录,并用 chmod 777 mkyaffsimage 命令修改权限。 1、新建一个文件夹,将nfs恢复系统s3c2440_recover中的 utu2440-qtopia-1.7-touchscreen.tar.gz 解压到该文件夹。 cd /utuLinux/s3c2440 mkdir yaffs-files tar –xzvf /utuLinux/s3c2440/s3c2440_recover/ utu2440-qtopia-1.7-touchscreen.tar.gz -C /utuLinux/s3c2440/yaffs-files ./mkyaffsimage yaffs-files test.yaffs 回车以后,少等片刻,一个yaffs的映像文件test.yaffs在当前目录下生成了。 关于/utuLinux/s3c2440/s3c2440_recover/目录下的各个gz文件说明: utu2440-qtopia-1.7-touchscreen.tar.gz: 使用qtopia1.7触摸版本 utu2440-qtopia-1.7-mouse.tar.gz: utu2440-nogui.tar.gz: mizi-2440-tar.gz: opie-2440.tar.gz: 使用qtopia1.7鼠标版本 没有GUI的 使用Mizi公司的GUI版本 使用OPIE的GUI版本 结束语 到此为止,本开发手册的内容就要结束了;我们的努力只能帮助你快速的跨过linux 开发这一道门槛;要想深入到linux 的广阔世界,您的面前还有很长的路要走,需要您对linux 系统本身有深刻的理解, 这些只能靠你自己去学习,去研究了。 也欢迎用户来到我们的技术交流论坛http://www.arm9bbs.com ,共同讨论,共同发展! - 79 - 附录A、utu-bootloader常用命令 a)nand flash坏点检查 nand bad b)nand flash擦除 nand scrub 输入 y ,然后再输入回车键:(注意:这里输入y是没有显示的,直接再回车就可以了) 上面的命令是擦除全部nand flash内容,注意utu-bootloader对uboot标准版做了修成,nand scrub具 - 80 - 备擦除flash的时候自动修复假坏点的功能。首次更新系统的时候,请运行一下这个指令。 c)设置开发板IP地址方法:setenv ipaddr ×××.×××.×××.××× setenv ipaddr 192.168.1.121 d)设置要使用哪个ip地址的tftp服务器:setenv serverip ×××.×××.×××.××× setenv serverip 192.168.1.102 e)设置linux的CMD_LINE setenv bootargs 例如设置从nandflash启动: s3c2410 CPU的2.6.11内核版本utu Linux用这个指令: setenv bootargs ‘noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,115200’ s3c2440 CPU的2.6.13内核版本utu Linux用这个指令: setenv bootargs ‘noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200’ f)环境变量保存 设置好环境变量以后,需要保存,不然掉电以后会丢失,保存的方法: saveenv 使用命令后返回 Saving Environment to NAND... Erasing Nand...Writing to Nand... done g)显示环境变量 printenv h) 删除设置的环境变量,恢复最原始的环境变量设置 run erase-env - 81 - 附录B、Linux常用命令 1、文件列表 – ls ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 2、目录切换 – cd cd dir #切换到当前目录下的 dir 目录 cd / #切换到根目录 cd .. #切换到到上一级目录 3、复制 – cp cp source target #将文件 source 复制为 target cp /root/source #将/root 下的文件 source 复制到当前目录 cp –av soure_dir target_dir #将整个目录复制,两目录完全一样 cp –fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当 source 目 录带 有符号链接时,两个目录不相同 4、删除 – rm rm file #删除某一个文件 rm -fr dir #删除当前目录下叫 dir 的整个目录 5、移动 – mv mv source target #将文件 source 更名为 target 6、比较 – diff diff dir1 dir2 #比较目录 1 与目录 2 的文件列表是否相同,但不比较文件的实际内 容,不同则列出 diff file1 file2 #比较文件 1 与文件 2 的内容是否相同,如果是文本格式的文件,则 将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的 7、回显 – echo echo message #显示一串字符 echo \"message message2\" #显示不连续的字符串 - 82 - 8、容量查看 – du du #计算当前目录的容量 du -sm /root #计算/root 目录的容量并以 M 为单位 9、文件内容查看 – cat cat file #显示文件的内容,和 DOS 的 type 相同 cat file | more #显示文件的内容并传输到 more 程序实现分页显示,使用命令 less file 可 实现相同的功能 10、分页查看 – more more #分页命令,一般通过管道将内容传给它,如 ls | more 11、时间日期 – date date #显示当前日期时间 date -s 20:30:30 #设置系统时间为 20:30:30 date -s 2002-3-5 #设置系统时期为 2002-3-5 12、查找 – find find -name /path file #在/path 目录下查找看是否有文件 file 13、搜索 – grep grep -ir “chars” #在当前目录的所有文件查找字串 chars,并忽略大小写,-i 为大小写,-r 为下一级目录 14、设置环境变量 – export export LC_ALL=zh_CN.GB2312 #将环境变量 LC_ALL 的值设为 zh_CN.GB2312 15、编辑 – vi vi file #编辑文件 file vi 原基本使用及命令: 16、压缩与解压 – tar tar xzvf file.tgz #将文件 file.tgz 解压 tar zcvf file.tgz source_path #将文件 source_path 压缩为 file.tgz - 83 - 17、挂接 – mount mount -t yaffs /dev/mtdblock/0 /mnt #把/dev/mtdblock/0 装载到/mnt 目录 mount -t nfs 192.168.0.1:/2440/root /mnt # 将 nfs 服务的 共享 目录/2440/root挂接到/mnt 目录 18、启动信息显示 – dmesg dmesg #显示 kernel 启动及驱动装载信息 19、改变文件权限 – chmod chmod a+x file #将 file 文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file 才能执行 chmod 666 file #将文件 file 设置为可读写 20、创建节点 – mknod mknod /dev/tty1 c 4 1 #创建字符设备 tty1,主设备号为 4,从设备号为 1,即第一个 tty 终端 21、进程查看 – ps ps ps –ef #显示当前系统进程信息 #显示系统所有进程信息 22、杀死进程 – kill kill -9 500 #将进程编号为 500 的程序杀死 - 84 - 因篇幅问题不能全部显示,请点此查看更多更全内容