4057.基于linux ARM9 触摸屏驱动程序设计嵌入式系统课程设计_第1页
4057.基于linux ARM9 触摸屏驱动程序设计嵌入式系统课程设计_第2页
4057.基于linux ARM9 触摸屏驱动程序设计嵌入式系统课程设计_第3页
4057.基于linux ARM9 触摸屏驱动程序设计嵌入式系统课程设计_第4页
4057.基于linux ARM9 触摸屏驱动程序设计嵌入式系统课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录第1章 嵌入式linux触摸屏驱动程序设计11.1 课程设计的目的11.2 课程设计要求1第二章 课程设计平台构建与流程22.1 嵌入式系统开发平台构建22.1.1 cygwin 开发环境22.1.2 Linux 开发环境42.1.3 Embest IDE 开发环境42.2 触摸屏设计流程42.3 课程设计硬件结构与工作原理52.3.1 硬件结构概述52.3.2 触摸屏工作原理6第三章 Bootloader移植与下载83.1 Vivi 源代码的安装83.2 Vivi源代码分析93.3 Vivi 源代码的编译与下载9第四章 Linux内核移植与下载104.1 Linux 内核源代码的安装1

2、14.2 Linux内核源代码分析与移植124.3 Linux内核编译与下载12第五章 触摸屏功能模块程序设计与交叉编译145.1 功能模块驱动程序设计14触摸屏功能模块交叉编译19第六章 根文件系统建立与文件系统下载206.1 Cramfs根文件系统分析206.2 文件系统映像文件生成206.3 功能模块运行与调试22第七章 课程设计总结与体会26第1章 嵌入式linux触摸屏驱动程序设计1.1 课程设计的目的在开发基于Linux的嵌入式系统前需要首先建立嵌入式系统的开发环境,并制定嵌入式系统上的Linux内核。本课程设计的主要目的是:1进一步了解嵌入式开发工具链的构造过程;2掌握开发主机与

3、嵌入式系统通信的方法;3通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高阅读和修改程序的能力;4通过完成一个嵌入式linux系统开发的完整过程,使我们了解开发嵌入式linux应用系统的全过程,为今后学习打下根底,积累实际操作的经验。1.2 课程设计要求1理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;2掌握开发工具链的构建方法,能独立进行系统开发操作;3掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;4熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;5基于Linux操作系统,以及Emest III实验箱,利

4、用触摸屏返回触点坐标值及动作信。坐标及动作的具体显示:触摸笔动作,触点X坐标值,触点Y坐标值。第二章 课程设计平台构建与流程2.1 嵌入式系统开发平台构建 cygwin 开发环境1、运行Cygwin 安装程序,然后选择“Install from Local Directory“,选择“下一步,2、选择Cygwin 的安装目录,注意Cygwin 的安装目录必须位于硬盘NTFS 分区且尽量不要使用系统C 分区,否那么会影响文件属性和权限操作,可能导致错误的结果。选择Unix 文本文件类型进行安装,直接选择“下一步后,那么会把Unix 格式的cygwin 系统安装到NTFS 格式的D 分区中,且安装

5、目录为D:cygwin。选择安装目录安装软件包存放目录。3、选择Cygwin 安装包所在的目录,可以是光盘也可以是本地硬盘分区。如E:/Cygwin。选择“下一步继续安装:4、选择软件安装工程。用鼠标单击在安装工程左边“ Default字样的位置,可以调整该软件工程的安装设置,可能出现的状态有四种:Default - 该工程根据默认状态处理,可能被安装,也可能不安装Install - 安装该工程Reinstall - 重新安装该工程Uninstall - 移除该工程5、对于cygwin 的软件工程,如果完全安装可能需要1GB 以上空间,对于不想安装的工程可以选择状态为Default。通常只选择

6、Linux 开发必要的选项即可,特别地需要全部安装以下工程:Admin 包括启动效劳 cygrunsrv 等工具,NFS 启动必备Archive 压缩解压工具集Base 根本的 Linux 工具集Devel 开发工具集,包括 gcc、make 等开发工具Libs 函数库Net 网络工具集Shells 常用 Shell 工具集Utils 包括 bzip2 等实用工具集Cygwin 软件包的选择注意:由于 cygwin 是Windows 环境下虚拟的Linux 开发环境,一般在ALL 处设置为Install状态,即全部安装。所以要建立一个完整的Linux 开发调试环境,加上存放编译工具和例程的空间

7、,至少需要一个容量在2GB 以上的分区。软件包安装完成后,根据提示信息进行余下的操作,此后可以在PC 机上运行Cygwin 了。6、安装cygwin 安装程序之外的工具软件1cygwin 环境下的NFS 效劳器安装运行 cygwin 开发环境后,拷贝要安装的NFS 效劳器软件包nfs-server-2.tar.bz2 到cygwin/tmp 目录下。按以下进行步骤安装:1解压安装包 $ cd / 􀃅 一定要回到根目录下解压安装 NFS 效劳器 $ tar xvjf /tmp/nfs-server-2配置NFS Server $ /usr/bin/nfs-server-conf

8、ig执行nfs-server-config 命令后会显示安装信息。3设置主机访问控制编辑文件设置任何用户都可以访问nfs 效劳时,在文件中增加行:nfsd: ALL 􀃅文件中只增加这行即可也可以特别指定某个 IP 地址的用户访问nfs 效劳时,只需增加行如:nfsd: 192.192.192.100 􀃅文件中只增加这行即可如果特别指定某个子网地址的用户访问 nfs 效劳时,只需增加行如:nfsd: 1􀃅文件中只增加这行即可。编辑文件如果Cygwin 中没有其他网络效劳,那么注释本文件中的所有行。4设置主机共享目录编辑文件/etc/ expo

9、rts可以分行输入需要共享的路径及目录,共享一个/home/app 目录增加类似以下的行:/home/app 192.192.192.0/255.255.255.0(rw, no_root_squash)表示在192.192.192 子网上共享/home/app 目录,该目录可读写rw。5启动NFS 效劳用户可以在 Cygwin 下执行以下命令启动效劳: $> cygrunsrv -S portmap $> cygrunsrv -S nfsd $> cygrunsrv -S mountd也可以通过翻开Windows 控制面板􀃆管理工具􀃆效劳

10、,选择portmap 、mountd 和nfsd 效劳并启动,这等效以上三条启动命令。启动之后可以使用以下命令检查效劳是否成功运行。 $> /usr/sbin/showmount如果输出报告是某效劳启动失败,请直接回到根目录/重新安装NFS server 软件包。 Linux 开发环境 开发嵌入式 Linux 系统,其实最方便的还是构建一个标准的Linux 开发环境,大大地方便Linux开发中的编译调试等工作。同样地,EduKit2410 的Linux 开发也可以在标准Linux 环境下进行,比方选择Red Hat 等优秀的系统。由于时间关系,我们暂不提供标准Linux 环境下的安装及使

11、用手册。 Embest IDE 开发环境 Linux 的调试通常比拟复杂,可以选择的调试环境也很多。但由于Linux 系统内核有包括全球在内的技术工程师的维护和测试,需要我们在应用产品开发时进行调试的情况比拟少,而且通常需要完成的是比拟简单的调试。在我们编译调试好Linux 的启动代码、内核和文件系统后,还需要把相应的映象文件固化到硬件系统上。像这样的Linux 开发需要可以在Embest IDE for ARM 和Embest JTAG 仿真器组成的开发环境下进行。构建 Embest IDE 进行Linux 调试环境的内容可以参考后面章节。一般需要Embest IDE forARM 软件、E

12、mbest online Flash Programmer for ARM、Embest JTAG 仿真器标准型/增加型/通常型,以及进行调试时所需要的平台初始化文件命令脚本文件和烧写时平台配置文件*.cfg。这些文件在随开发板提供的光盘里一并提供了。2.2 触摸屏设计流程触摸屏设计流程图:2.3 课程设计硬件结构与工作原理 硬件结构概述Embest EduKit-III教学实验平台是一款功能强大的32位的嵌入式开发板,里面采用了SAMSUNG公司的以ARM7TDMI-S为内核的处理器S3C44B0X,同时可以兼容S3C2410,具有JTAG 调试等功能。板上提供了一些键盘、LED和串口等一些

13、常用的功能模块,并且具有IDE硬件接口,CF存储卡接口、以太网接口和SD卡接口等等,对用户在32位ARM嵌入式领域进行开发实验非常方便。 Embest EduKit-III教学实验平台主要功能模块如下: 图 ARM 开发板功能模块S3C2410开发板具有8通道模拟输入的10位CMOS模数转换器ADC。它将输入的模拟信号转换为10位的二进制数字代码。在2.5MHz的A/D转换器时钟下,最大转化速率可到达500KSPS。A/D转换器是循环类型的,其支持片上采样和保持功能,并支持掉电模式。S3C2410开发板的AIN7和AIN5用于连接触摸屏的模拟信号输入。触摸屏接口电路一般由触摸屏,4个外部晶体管

14、和一个外部电压源组成。触摸屏接口的控制和选择信号nYPON,YMON,nXPON和XMON连接切换X坐标和Y坐标转换的外部晶体管。模拟输入引脚AIN7,AIN5那么连接到触摸屏引脚。触摸屏的AIN7连接触摸屏的X+引脚,而AIN5连接触摸屏的Y+引脚的。要控制触摸屏的引脚X+,X-,Y+,Y-,就要应用4个外部的晶体管,并采用控制的信号nYPON, YMON, nXPON和XMON来控制晶体管的翻开与关闭。推荐如下的操作步骤:1采用外部晶体管连接触摸屏到S3C2410A的接口的电路。2选择别离的X/Y轴坐标转换模式或者自动连续的X/Y轴坐标转换模式来获取触摸点的X/Y坐标。3设置触摸屏接口为等

15、待中断模式注意,等待的是INT_TC中断。4如果中断INT_TC发生,那么立即激活相应的AD转换别离的X/Y轴坐标转换或者自动连续的X/Y轴坐标转换。5在得到触摸点的X/Y轴坐标值后,返回到等待中断模式第3步。注意:1外部电压源是3.3V。2外部晶体管的内部阻抗应该小于5 ohm。 触摸屏工作原理触摸屏控制接口包括一个外部晶体管控制逻辑和具有中断产生逻辑的ADC接口逻辑。1普通转换模式普通转换模式(AUTO_PST=0,XY_PST=0)是用作一般目的下的ADC转换。这个模式可以通过设置ADCCON和ADCTSC来进行对AD转换的初始化;而后读取ADCDAT0ADC数据存放器0的XPDATA域

16、普通ADC转换的值来完成转换。 2别离的X/Y轴坐标转换模式:X轴坐标转换和Y轴坐标转换。 X轴坐标转换(AUTO_PST=0且XY_PST=1)将X轴坐标转换数值写入到ADCDAT0存放器的XPDATA域。转换后,触摸屏接口将产生中断源INT_ADC到中断控制器。 Y轴坐标转换(AUTO_PST=0且XY_PST=2)将X轴坐标转换数值写入到ADCDAT1存放器的YPDATA域。转换后,触摸屏接口将产生中断源INT_ADC到中断控制器。 3自动(连续)X/Y轴坐标转换模式。 自动连续X/Y轴坐标转换模式AUTO_PST=1且XY_PST= 0以下面的步骤工作: 触摸屏控制器将自动地切换X轴坐

17、标和Y轴坐标并读取两个坐标轴方向上的坐标。触摸屏控制器自动将测量得到的X轴数据写入到ADCDAT0存放器的XPDATA域,然后将测量到的Y轴数据到ADCDAT1的YPDATA域。自动连续转换之后,触摸屏控制器产生中断源INT_ADC到中断控制器。 4等待中断模式 当触摸屏控制器处于等待中断模式下时,它实际上是在等待触摸笔的点击。在触摸笔点击到触摸屏上时,控制器产生中断信号INC_TC。中断产生后,就可以通过设置适当的转换模式别离的X/Y轴坐标转换模式或自动X/Y轴坐标转换模式来读取X和Y的位置。 5静态Standby模式 当ADCCON存放器的STDBM位被设为1时,Standby模式被激活。

18、在该模式下,A/D转换操作停止,ADCDAT0存放器的XPDATA域和ADCDAT1存放器的YPDATA正常ADC域保持着先前转换所得的值。第三章 Bootloader移植与下载3.1 Vivi 源代码的安装1、拷贝开发板光盘Linux Source 文件夹下的vivi-20030929.tar.bz2 文件和Sourcepatch整个文件夹到$SOURCEDIR/目录下;2、进入cygwin,Vivi 源代码的安装:$> source /tmp/edukit-2410/set_env_linux.sh Linux 编译环境变量设置$> cd $WORKDIR$> tar -

19、xvjf /tmp/edukit-2410/vivi-2$> ls vivi 为$WORKDIR 目录下其他内容正确解压后,可以看到相比之前多了一个vivi目录,即vivi源代码的安装目录,后面的vivi配置及编译都得进入vivi目录进行。3、再为EduKit2410 实验系统打入vivi源代码的补丁文件:$> cd vivipatching file Makefile 为其他输出内容,无错误提示信息3.2 Vivi源代码分析Vivi的代码包括:arch、documentation、drivers、include、init、scripts、test、util等几个目录,共200多条

20、文件。Vivi主要包括下面几个目录:Arch:此目录中包含了vivi支持的没标板的子目录,其中中有s3c2410x一个目录。Drivers:此目录中包含了引脚内核需要的驱动程序,其中只有mtd和merial两个子目录,mtd子目录下又有maps、nand、mor三个子目录,vivi支持从不用的存储器启动。Init:存放初始化代码,这个目录只有main.c和version.c两个文件。和普通的C程序一样,vivi将从main函数开始执行。 Include:此目录是头文件的公共目录,s3c3C2410处理器内部存放器的定义,定义了与开发板相关的资源配置参数,我们往往只需要修改这个文件就可以配置目标

21、板的参数,如波特率、引导参数、物理内存映射等。Lib:各个平台公共接口代码集。比方time.c里的udelay()和mdelay()。SMDK2410文件:General setup选项为常规安装选项,包括版本信息、虚拟内存、进程间通信、系统调用、审计支持等根本内核配置选项。下面介绍常规安装选项下主要子选项的配置方法。Loadable module support即引导模块支持,该选项包括加载模块、卸载模块、模块校验、自动加载模块等引导模块配置相关子选项。本节主要介绍引导模块支持子选项的配置方法。Networking support即网络支持,该选项配置的是网络协议,内容庞杂,这里就不一一介绍

22、了。只要对网络协议有所了解,应该可以看懂相关帮助文件。如果要开发嵌入式系统能像PC一样使用各类网络协议,那么可以使用默认选项,其中,最常用的TCP/IP networking选项当然要选择。3.3 Vivi 源代码的编译与下载然后执行以下命令进行编译:$> source /tmp/edukit-2410/set_env_linux.sh Linux 编译环境变量设置$> cd $WORKDIR/vivi$> make clean$>make menuconfig输入配置smdk2410:Nand boot或smdk2410-amd:Nor Flash boot其中,运行

23、make menuconfig 后,选择Load an Alternate Configuration file,配置文件名称如下:smdk2410:编译vivi 在Nand FlashK9S5608中运行;smdk2410-amd:编译vivi 在Nor FlashAM29LV160DB中运行。这两个配置文件在usrlocalsrcedukit-2410viviarchdef-configs中,须复制到usrlocalsrcedukit-2410vivi中;或者可以在menuconfig 中输入全部路径。编译过程中没有出现错误,那么编译后的执行文件存放usrlocalsrcedukit-24

24、10vivi目录,文件名为vivi。图编译成功截图:图第四章 Linux内核移植与下载4.1 Linux 内核源代码的安装 1、拷贝开发板光盘Linux Source 文件夹下的linux-rmk7-pxa1-mz5.tar.bz2 文件和Sourcepatch 整个文件夹到$SOURCEDIR/目录下; 2、运行cygwin,执行以下命令完成cygwin 环境下的Linux源代码的安装: Linux编译环境变量设置$> cd $WORKDIR$> tar xvjf /tmp/edukit-2410/linux-rmk7-pxa1-mz5-i2c$> ls kernel 为$

25、WORKDIR 目录下其他内容正确解压后,相比之前可以看到多了一个kernel目录,即kernel源代码的安装目录,后面的Linux配置及编译都得在kernel目录进行。 图3、为EduKit2410 实验系统打入Linux 源代码的补丁文件:$> cd kernel$>patch-p1</tmp/edukit-2410/patch/linux-patching file Makefilepatching file arch/arm/boot/Makefile 􀃅 为其他输出内容,无错误提示信息4.2 Linux内核源代码分析与移植Linux提供三个不同的命

26、令进行Linux的配置,效果完全一样: make config 控制台命令行方式配置命令 make menuconfig 文本菜单方式配置命令 make xconfig X窗口图形界面方式配置命令其他局部命令: Make mrproper 命令去除所有的旧的配置和旧的编译目标文件等。 Make dep 命令搜索Linux编译输出与源代码之间的依赖关系、并生成依赖文件。 Make clean 去除以前构造内核时生成的所有目标文件、模块文件和临时文件。 Linux内核的两种启动过程:(1) Flash本地运行方式:内核的未经压缩的可执行映像固化在Flash,系统启动时内核在Flash中开始逐句执行

27、。(2) 压缩内核加载方式:内核的压缩映像固化在Flash上,系统启动时由附加在压缩映像前的解压复制程序读取压缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度更快。4.3 Linux内核编译与下载在Cygwin中依次执行以下命令完成Linux的编译过程:图选择Load confinguration from File项,配置文件smdk2410new1的路径是:tmpedukit-2410linuxkernelkernel,名称为smk2410new1。对内核进行配置:图根据提示加载配置文件后,点击“Save and Exit按钮,然后执行以下命令:图 编译成功截图图 生成内核映像文

28、件: 第五章 触摸屏功能模块程序设计与交叉编译5.1 功能模块驱动程序设计 1程序设计流程图如下:2触摸屏设备驱动中数据结构1触摸屏的file_operationsstatic struct file_operations s3c2410_fops= owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read, release: s3c2410_ts_release,#ifdef USE_ASYNC fasync: s3c2410_ts_fasync,/异步通知#endif poll: s3c2410_ts_poll,/轮询

29、;2触摸屏设备结构体的成员与按键设备结构体的成员类似,也包含一个缓冲区,同时包括自旋锁、等待队列和fasync_struct指针typedef struct unsigned int penStatus; /* PEN_UP, PEN_DOWN, PEN_SAMPLE */ TS_RET bufMAX_TS_BUF; /* protect against overrun环形缓冲区 */ unsigned int head, tail;/* head and tail for queued events 环形缓冲区的头尾*/ wait_queue_head_t wq; /* 等待队列数据结构 s

30、pinlock_t lock; /* 自旋锁#ifdef USE_ASYNC struct fasync_struct *aq;#endif#ifdef CONFIG_PM struct pm_dev *pm_dev; /友善之臂专有的,我后面的代码删除了这段#endif TS_DEV;3触摸屏结构体中包含的TS_RET值的类型定义,包含X、Y坐标和状态PEN_DOWN、PEN_UP等信息,这个信息会在用户读取触摸信息时复制到用户空间 typedef struct unsigned short pressure; /* 压力,这里可定义为笔按下,笔抬起,笔拖曳 unsigned short x

31、; /* 横坐标的采样值 unsigned short y; /* 纵坐标的采样值 unsigned short pad; /* 填充位 TS_RET;4在触摸屏设备驱动中,将实现open()、release()、read()、fasync()和poll()函数,因此,其文件操作结构体定义触摸屏驱动文件操作结构体:static struct file_operations s3c2410_fops= 3触摸屏驱动模块加载和卸载函数1在触摸屏设备驱动的模块加载函数中,要完成申请设备号、添加cdev、申请中断、设置触摸屏控制引脚YPON、YMON、XPON、XMON等多项工作触摸屏设备驱动的模块加

32、载函数:static int _init s3c2410_ts_init(void)触摸屏设备驱动模块卸载函数:static void _exit s3c2410_ts_exit(void)2可知触摸屏驱动中会产生两类中断,一类是触点中断INT-TC,一类是X/Y位置转换中断INT-ADC。在前一类中断发生后,假设之前处于PEN_UP状态,那么应该启动X/Y位置转换。另外,将抬起中断也放在INT-TC处理程序中,它会调用tsEvent()完成等待队列和信号的释放触摸屏设备驱动的触点/抬起中断处理程序static void s3c2410_isr_tc(int irq, void *dev_id

33、, struct pt_regs *reg)当X/Y位置转换中断发生后,应读取X、Y的坐标值,填入缓冲区触摸屏设备驱动X/Y位置转换中断处理程序static void s3c2410_isr_adc(int irq, void *dev_id, struct pt_regs *reg)触摸屏设备驱动中获得X、Y坐标 :static inline void s3c2410_get_XY(void)3tsEvent最终为tsEvent_raw(),这个函数很关键,当处于PEN_DOWN状态时调用该函数,它会完成缓冲区的填充、等待队列的唤醒以及异步通知信号的释放;否那么处于PEN_UP状态,将缓冲区

34、头清0,也唤醒等待队列并释放信号。4在包含了对拖动轨迹支持的情况下,定时器会被启用,周期为10ms,在每次定时器处理函数被引发时,调用start_ts_adc()开始X/Y位置转换过程触摸屏设备驱动的定时器处理函数static void ts_timer_handler(unsigned long data)5在触摸屏设备驱动的翻开函数中,应初始化缓冲区、penStatus和定期器、等待队列及tsEvent时间处理函数指针。触摸屏设备驱动的翻开函数static int s3c2410_ts_open(struct inode *inode, struct file *filp)4触摸屏设备驱动

35、的读函数触摸屏设备驱动的读函数实现缓冲区中信息向用户空间的复制,当缓冲区有内容时,直接复制;否那么,如果用户阻塞访问触摸屏,那么进程在等待队列上睡眠,否那么,立即返回-EAGAIN5触摸屏设备驱动的轮询与异步通知在触摸屏设备驱动中,通过s3c2410_ts_poll()函数实现了轮询接口,这个函数的实现非常简单。它将等待队列添加到poll_table,当缓冲区有数据时,返回资源可读取标志,否那么返回0。触摸屏设备驱动的poll()函数static unsigned int s3c2410_ts_poll(struct file *filp, struct poll_table_struct *

36、wait)。而为了实现触摸屏设备驱动对应用程序的异步通知,设备驱动中要实现s3c2410_ts_fasync()函数,触摸屏设备驱动的fasync()函数static int s3c2410_ts_fasync(int fd, struct file *filp, int mode)6应用程序的调试使用s3c2410_ts.c触摸屏驱动编写应用程序,读取触摸屏的触点坐标值及动作信息触点x坐标值,y坐标及是否有压力值press,并在串口中断打印出来对触摸屏设别的操作有翻开设备,关闭设备,读操作等。编写应用程序读取触摸屏的触点坐标值及动作信息时,只需利用触摸屏驱动程序便可实现,先翻开触摸屏设备,然

37、后调用读函数即可。其中,触摸笔动作取值如下:#define PEN_UP 0 /* 触摸笔抬笔,即触摸屏不被压下 */#define PEN_DOWN 1/* 触摸笔下笔,即触摸屏被压下 */#define PEN_FLEETING 2/* 触摸笔拖动 */结构体定义如下:typedef struct unsigned short pressure;/* 触摸笔动作 */ unsigned short x;/* 触点x座标值 */ unsigned short y;/* 触点y座标值 */ unsigned short pad;TS_RET;将编写好的源文件hello.c假设名称程序放在cyg

38、win目录中 图交叉编译生成文件图第六章 根文件系统建立与文件系统下载6.1 Cramfs根文件系统分析cramfs目录结构介绍:一个完整的根文件系统通常包含以下几个目录:/bin 应用程序存放目录。/sbin 系统管理员效劳程序,其中最重要的就是供内核初始化之后执行的/sbin/init 进程。 /lib 存放程序运行所需要的动态库。 /proc 系统状态文件目录。 /dev 驱动程序存放目录。 /etc 系统配置文件及用户数据存放目录。 /mnt 用于设备安装的目录,通常包含etc子目录和为块设备安装保存目录。 /usr 用于存放用户程序和配置文件的目录,可以根据需要进行设置。一般情况下都

39、要把已经规划好的目录结构转换成一个映象文件,即使用命令工具mkcramcygwin下为mkcramfs.exe,把相应的cramfs目录树压缩为单一的映象文件。其命令格式为: mkcramfs -h -e edition -i file -n name dirname outfile 可以使用我们提供的mkcramfs.exe在cygwin下编译生成文件系统映象文件 root.cramfs,再固化到开发系统FLASH上运行。6.2 文件系统映像文件生成1构建cramfs文件系统按照本节实验原理中自行构建一个cramfs文件系统。将image中的root.cramfs.tar.bz2拷贝到$SO

40、URCEDIR目录,运行cygwin,执行以下命令解压安装:$>source /tmp/edukit-2410/set_env_linux.sh 为Linux编译环境变量设置$>cd $WORKDIR/$>tar $>ls.root. root文件夹中就是我们想要的cramfs文件系统解压成功如下: 图6.2.1在root目录中新建xx文件夹,用于存放应用程序 图 2编译应用程序将编写好的源文件ts.c假设名称程序放在cygwin目录中 图生成文件:ts如以下图所示:3拷贝测试程序到文件系统中,并编译生成文件系统映象新文件系统的制作,把刚刚编译输出的ts文件拷贝到文件系

41、统所在的工作目录root/bin目录下,执行以下命令生成新的文件系统映象:图刚刚编译生成的文件系统映象root.cramfs.new中已经包含应用程序。生成文件:6.3 功能模块运行与调试1vivi 的烧写1首先把SW104短接从Nand Flash启动,运行Embest online Flash Programmer for ARM以上,点击菜单Settings选择Configure项,配置当前使用的Embest JTAG仿真器型号为PowerICEARM9,并设置相应的参数;2点击菜单File 选择Open翻开烧写配置文件S3C,在Flash Programmer的Program页中选择要烧写的文件:;3点击按钮Progarm开始烧写,直到烧写成功;图 4连接串口线到PC 机COM1,运行光盘中提供的Windows超级终端;5把开发板重新加电,程序运行后,在超级终端上可以看到串口输出类似以下信息:图6) 看到以上信息后,表示正在等待用户从超级终端下载文件。这时,请点击超级终端菜单"传送"选择Xmodem方式下载文件,点击OK后等待下载烧写结束即可。图2linux 内核的烧写1首先SW104设为短接从Nand Flash 启动,并确定已经烧写,加电。2在vivi启动等待中,敲入空格键进入vivi界面环境,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论