您的当前位置:首页正文

YC2440开发指南-utuLinux篇-V1.5.8

2023-07-15 来源:客趣旅游网
 YC2440开发指南-utuLinux篇-V1.5.8 本手册适用于扬创科技YC2440-F,YC2440-SBC,utu2440-s,utu2440-F等系列2440开发板产品,详细产品信息请参见公司网站:http://www.yctek.com/ 1.5.3软件包新增内容: 1、LCD液晶屏背光的控制! 参见2.15 如何在程序中控制液晶屏的背光关闭和打开 2、增加了套餐4三星800×480分辨率7寸和套餐5的三星480×272分辨率4.3寸液晶屏驱动 3、增加了光盘里面编译好的内核文件的默认配置文件,用户可以直接加载编译

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 -

选择完毕,按回车退回到上一层菜单,再选择返回Device Drivers 菜单。

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种状态。

再选择返回Input device support 菜单,再选择返回Device Drivers 菜单。

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 键盘和鼠标,然后选择返回 Deice Drivers 菜单。

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 -

然后选择返回Device Drivers 菜单,再选择 USB support,按回车进入USB support 菜单,找到并选中

<*> USB Mass Storage support

然后选择返回Device Drivers 菜单

6.3.7 如何配置网眼和中芯微等USB 摄像头

在Device Drivers 菜单里面,选择 Multimedia devices,回车进入

- 56 -

选中

<*> Video For Linux

并选择 Video For Linux,按回车进入

- 57 -

选中<*> OmniVision Camera Chip support:

选择返回Multimedia devices,再按返回Device Drivers 菜单。 在Device Drivers 菜单里面选择 USB support,回车进入,在列表中找到并选中 <*> USB OV511 Camera support

<*> USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras

- 58 -

其中OV511 是支持基于OV511 芯片的摄像头,SPCA5XX 是支持中芯微301 系列的摄像头,目前市场上大部分摄像头都是使用该芯片设计的。

选择返回Device Drivers 菜单,再选择返回到主菜单。

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 -

选择一直返回到Device Drivers 菜单。

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 -

因篇幅问题不能全部显示,请点此查看更多更全内容