第4章 系统实验及测试
4.1 测试环境
硬件:S3C2410实验平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。
软件:PC 机操作系统 REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境
目的是为后续实验搭建好软、硬件环境,配置好相关的协议、服务,并通过编写最简单的HelloWorld程序进行测试。由于实验都要依靠前面的配置,本段只着重叙述实验的具体实现。
4.2 系统实现
4.2.1 建立工作目录
[root@zxt smile]# mkdir hello
[root@zxt smile]# cd hello
4.2.2 编写程序源代码
用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:
[root@zxt hello]# vi hello.c
按“i ” 或者“a ” 进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq” 保存并退出。这样我们便在当前目录下建立了一个名为 hello.c 的文件。
进入/arm2410cl/exp/basic/10_led 目录,使用 vi 编辑器或其他编辑器阅读理解源代码
4.2.3 编译应用程序
运行 make 产生 test_led 可执行文件 test_led
在 hello 目录下运行“make” 来编译我们的程序了。如果进行了修改,重 新编译则运行:
[root@zxt hello]# make clean
[root@zxt hello]# make
4.2.4 下载调试
在宿主 PC 计算机上启动 NFS 服务,并设置好共享的目录,在建立好 NFS 共享目录以后,我们就可以进入 MINICOM 中建立开发板与宿主 PC 机之间的通讯了。
其步骤如下:
(1)服务器设置
输入命令”setup”分别进行对系统服务及防火墙配置。
(4.2.4-1) 服务器配置
(2)为宿主PC机配置了NFS服务
NFS(Network File System)指网络文件系统,它实现了文件在不同的系统间使用。当我们想用远端档案时,只需调用“mount”就可以远端系统挂接在自己的档案系统之下。每次重启宿主PC机时,先输入命令”service portmap restart”和”service nfs restart”,以启动nfs服务。
(3)启动vi编辑器查看网段
输入命令”Vi /etc/exports”查看网段为”192.168.0.*”,按键”ESC”,输入”: wp”存盘退出。
(4)重新启动NFS服务
输入”ifconfig eth0 192.168.0.110”完成主机IP地址设置。
(4.2.4-2) NFS服务器配置
(5)进入共享文件”cd /root/share/exp/basic/10_led”,输入”ls”查看10_led下的两个.c文件。
输入”make clean”,”make”生成两个.0文件。转入超级终端
(1)硬件连接:连接宿主机和UP-TECH S2410/P270 DVP 嵌入式实验平台。
(2)打开宿主PC 机电源,进入 Linux操作系统。
4.2.5 启动实验平台
(1)硬件连接:连接电源,将12V电源线的连到UP-NETARM2410-CL的电源接口;连接串口线,一端连接PC的串口,另一端连接到UP-NETARM2410-CL的串口(RS232-0);连接网线,将随机附带的交叉网线把UP-NETARM2410-CL靠近于电源接口的网口和PC机的网口连接好。
(2)建立超级终端:运行Windows系统下(以WindowsXP为例)开始→所有程序→附件→通讯→超级终端(HyperTerminal)。
(3)新建一个通信终端。如果要求输入区号、电话号码等信息请随意输入,出现如图所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。单击“确定”按钮
(4.2.4-3) 新建超级终端
(3)在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),按确定后出现如图所示的属性对话框,设置通信的格式和协议。这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。按确定完成设置。完成新建超级终端的设置以后,可以选择超级终端文件菜单中的另存为,把设置好的超级终端保存在桌面上,以备后用。用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了。
(4.2.4-4) 超级终端端口设置
(4)启动实验平台 ::打开电源开关,系统会由VIVI开始引导。正常启动时会显示启动信息到“Press Return to start the LINUX now, any other key for vivi”,按除回车键外的其它键则进入vivi控制台。
(4.2.4-5) 启动超级终端平台
(4.2.4-6) 超级终端命令输入
(5)输入”ping192.168.0.122”和”192.168.0.121”查看是否连通,若成功连接,”Ctrl+C”结束,在进行挂载后,查找根目录下的文件”cd /host/exp/basic/10_led”,通过“ls”查看文件,然后使用“insmod s3c2410-led.o ”命令完成将一个可动态加载的模块加载到内核中。输入” lsmod” 显示当前内核加载的模块,输入命令”./test_led”进行程序测试。
(4.2.4-7) 下位机运行
4.3 模拟测试
4.3.1、阅读理解源码
进入/arm2410cl/exp/basic/10_led 目录,使用 vi 编辑器或其他编辑器阅读理解源代码
4.3.2 编译应用程序
运行 make 产生 test_led 可执行文件 test_led
[root@BC exp/basic]# cd 10_led
[root@BC 10_led]# make
armv4l-unknown-linux-gcc -c -I.. -Wall -O -D__KERNEL__ -DMODULE
-I/home/kernel/linux-2.4.18-2410cl/include s3c2410-led.c -o s3c2410-led.o
armv4l-unknown-linux-gcc -I.. -Wall -O -D__KERNEL__ -DMODULE
-I/home/kernel/linux-2.4.18-2410cl/include -c -o test_led.o test_led.c
[root@BC 2410-Classics LED]# ls
Makefile readme s3c2410-led.c s3c2410-led.o test_led test_led.c
test_led.o
4.3.3 下载调试
切换到 minicom 终端窗口,使用 NFS mount 开发主机的/arm2410cl 到/host 目录,然后进入/host/exp/basic/10_led 目录,用 insmod s3c2410-led.o 命令插入 led 驱动,并用 lsmod命令查看是否已经插入。
[/mnt/yaffs]mount -t nfs -o nolock 192.168.0.189:/arm2410cl /host
[/host/exp/basic]cd 10_led/
[/host/exp/10_led]ls
Makefile readme s3c2410-led.c s3c2410-led.o test_led test_led.c
test_led.o
[/host/exp/10_led]insmod s3c2410-led.o
Using s3c2410-led.o
0-numeric tube : Dprintk device open
s3c2410-hc273 initializedUsing exio.o
[/host/exp/10_led]lsmod
Module Size Used by Tainted: P
s3c2410-led 2048 0 (unused)
[/host/exp/10_led]./test_led
即可以看到8字数码管和点阵数码管工作。
第五章 总结
经过一段时间的努力却得了小小的成果,基于LINUX的点阵式LED广告屏终于点亮了,虽然只能运行很简单的图片和文字,但这个小小的进度也是傲人的。从大的方面讲,这次的设计是失败的,理想情况下是设计出一个低成本,高效率的LED点阵式广告屏,不仅仅可以显示出简单的文字和图片,更多的是可以播放小的视频,但受限于ARM及运行处理能力,每次发射相对比较复杂的信号和帧数比较高的频率时,系统就会产生很大的延时,从而导致画面定格,没办法做到小视频的播放。虽然只是在小小的一个单元LED点阵式实现了图片跟文字的显示。更大画面的实现只是拼接更大的显示屏,发射更复杂的信号,但ARM的性能不能拼接,这个也是限制LINUX的点阵式LED广告屏的发展因素。期待性能更高,功耗更低的ARM处理器来实现真正的完美的LED广告屏。