课程设计-基于S3C2440的串口传输及界面设计.doc_第1页
课程设计-基于S3C2440的串口传输及界面设计.doc_第2页
课程设计-基于S3C2440的串口传输及界面设计.doc_第3页
课程设计-基于S3C2440的串口传输及界面设计.doc_第4页
课程设计-基于S3C2440的串口传输及界面设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

一、设计课题:基于s3c2410的设备驱动及其界面设计二、设计目的:1、进一步巩固嵌入式系统的基本知识;2、掌握嵌入式应用系统的基本结构;3、掌握嵌入式系统开发环境建立和使用;4、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;5、学会查阅有关专业资料及设计手册;6、 minigui界面编程。三、设计任务及要求:1、掌握嵌入式系统开发环境建立和使用;2、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;3、minigui在pc上的安装、移植4、linux基本输入输出驱动程序设计编译与移植5、基于minigui的基本输入输出应用编程编译与移植6、编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;7、绘制有关图纸.四、设计内容:1、minigui在x86上安装和运行1.1、准备工作建立工作目录:mkdir /minigui-free cd /minigui-free mkdir /src复制源文件到工作目录:cp /media/disk/src/* ./ cp /mnt/hgfs/linux/src/* /minigui-free解压文件:tar zxvf libminigui-1.6.10.tar.gztar zxvf minigui-res-1.6.10.tar.gztar zxvf mg-samples-1.6.10.tar.gz1.2、 minigui库安装 进入目录:cd libminigui-1.6.10/ 配置:./configure 在x86上运行只需默认配置即可,配置完成后即可生成makefile 编译:make 成功后即可生成必要的库文件等。 安装:make install 在x86上安装库文件。5. 把libminigui加入库搜索路径:进入/etc/ld.so.conf.d建一个minigui.conf,写上/usr/local/lib可以使用命令完成:rootfedora7#echo /usr/local/lib /etc/ld.so.conf.d/minigui.conf(如果你使用的不是fedora7可能没有/etc/ld.so.conf.d这个目录,只有一个/etc/ld.so.conf,不过作用是一样的,在这个文件末尾加上/usr/local/lib)(4)最后要把系统共享库缓存刷新,将libminigui加载上,可以使用命令rootfedora7#ldconfig这个命令执行时要花十多秒,耐心等待。当然不使用刷新命令重启系统也可以。1.3、minigui资源安装进入目录:cd minigui-res-1.6.10/安装:make install必要资源文件的复制安装等操作。1.4、minigui例子编译 进入目录:cd mg-samples-1.6.10/ ./configure 编译:make编译src目录下的例子程序,用于验证minigui是否安装成功。即可在src目录下生成可执行文件1.5、安装qvfb 使用qt的qvfb cd qvfb 1.1 ./configure make make installapt-get install qt3-dev-tools-embedded1.6、配置minigui.cfgvi /usr/local/etc/minigui.cfg 修改如下部分为system# gal engine and default optionsgal_engine=qvfbdefaultmode=800x480-16bpp# ial engineial_engine=qvfbmdev=/dev/input/micemtype=imps2fbcondefaultmode=800x480-16bppqvfbdefaultmode=800x480-16bppdisplay=01.6、 运行minigui例子程序 打开qvfb:qvfb -width 800 -height 480 & 运行helloword:src/helloworld出现此窗口说明运行成功。 1.7、问题错误1:initgui: can not initialize colors of window element!initgui failure when using /usr/local/etc/minigui.cfg as cfg file.解决方法:正确配置minigui.cfg文件错误2:permission denied解决方法:权限不够,使用root用户登录。 错误3:编译出错未找到jpeg,png等解决方法:安装zlib,png,jpeg库。 错误4: 错误5:出现符号未找到等编译错误解决方法:make clean 后在make2、控制面板界面编程1.建立新的zc.c文件,在makefile.am文档里添加zc.source=zc.c2.重新命名helloworld.c文件,将程序写进去,并在/minigui-free/mg-samples-1.6.10目录下执行./configure;再执行make命令。选用对话框方式编程,结构dlgtemplate用来定义对话框本身,结构ctrldata用来定义控件。static dlgtemplate dlgyourtaste = ws_border | ws_caption, ws_ex_none, 0, 0, 720, 480, contrl, 0, 0, 8, null, 0;分别对对话框属性进行定义。static ctrldata ctrlyourtaste = button, ws_visible | bs_defpushbutton | ws_tabstop | ws_group, b1_x, b_y, b_w, b_h, idc_led1, led1, 0 ,等等;在此结构中定义控件,其中包括4个按钮用来控制led,3个静态文本框用来显示提示消息,不允许用户更改,1个编辑框用来输入频率。部分代码省略。 主函数操作:打开设备获得文件描述符,函数连接等。led_fd=open(/dev/led,o_rdonly);if(led_fd 4) return -einval;status = inb(led_base);if(0 = cmd)status &= (0x1 arg);else if(1 = cmd)status |= (0x1 update_mouse = null; input-get_mouse_xy = null; input-set_mouse_xy = null; input-get_mouse_button = null; input-set_mouse_range = null; input-update_keyboard = keyboard_update; input-get_keyboard_state = keyboard_get_state; input-suspend_keyboard = null; input-resume_keyboard = null; input-set_leds = null; input-wait_event = wait_event;只需实现keyboard的相关函数即可,mouse设备不需实现。keyboard_update函数实现state nr_keys数组的更新,使之映射为minigui所提供的键盘定义。static int keyboard_update(void)char *statinfo;int status;int key;statinfo=(btn_state & key_released) ? up:down;status = (btn_state & key_released) ? 0 : 1 ;key=btn_state & key_num;switch(key)case 0:statescancode_0=status;break;case 1:statescancode_1=status;break;case 2:statescancode_2=status;break;case 3:statescancode_3=status;break;case 4:statescancode_4=status;break;return nr_keys; key即为去掉按键状态信息的键值。scancode_x为系统提供的键值,status为状态信息。通过switch实现数组的更新。static const char * keyboard_get_state(void)return (char *)state;直接返回数组地址。wait_event函数是输入引擎的核心,使用select系统调用检查是否有可读取的数据,当可用是读取(e0)。init2410input是ial的入口函数实现设备文件的打开和input结构的初始化,还有一些必要的初始化。term2410input函数实现设备文件关闭和资源释放等。5、minigui在arm开发板上运行5.1、minigui库安装 进入目录:cd libminigui-1.6.10/ 配置:首先make clean,去除x86上的目标文件修改configure.in 启用smdk ial的编译选项build_smdk2410_ial_engine=yes./configure -host=arm-linux -enable-pngsupport=no -enable-gifsupport=no -prefix=/minigui-free/nfsroot 编译:make 成功后即可生成必要的库文件等。 安装:make install 在/minigui-free/nfsroot上安装库文件。5.2、minigui资源安装 进入目录:cd minigui-res-1.6.10/ 配置:修改config.linuxtopdir=/minigui-free/nfsroot 安装:make install 在/minigui-free/nfsroot上安装资源文件。5.3、minigui界面程序编译 进入目录:cd mg-samples-1.6.10/ 复制界面程序到src目录下可替换其中的一个例子程序或在src目录下修改makefile.am添加源文件。 配置:首先make clean 然后./configure -build=i686-pc-linux-gnu -host=arm-linux -prefix=/minigui-free/nfsroot/ ldflags=-l/minigui-free/nfsroot/lib cppflags=-i/minigui-free/nfsroot/include cflags=-i/minigui-free/nfsroot/include 编译 :makesrc目录下生成可执行文件,使用file edit 出现arm字样,即说明可运行于arm处理器上5.4、界面程序运行拷贝交叉编译后的库文件,资源文件,配置文件,和可执行程序到arm开发板上,并修改配置文件。然后运行程序。根据出现的文件反复修改和调试。五、设计总结: 虽然只有短短的2周时间,但是经过我们的努力,还是顺利完成了老师布置的实习任务。过程中进行中还是遇到了许多的问题,通过老师,同学,网络的帮助,最终解决了一个个的问题,因此收获也是蛮多的。回想起从对minigui的懵懂,到学会设计简单的应用程序是何等的开心。俗话说:技不压身。多学一些知识总是对自己的发展有帮助的。 对于这个嵌入式的开发流程,软件开发方法,我们都有了切实的感受,不再是理论课上那干瘪瘪的论述了。在软件编译过程中最为棘手的问题,我觉得就是链接库的问题,每一个都有相当复杂的依赖关系,由于我们对嵌入式开发的经验不足,有时候很难能知道库依赖于那个软件中,比较常用的办法是下载安装与名称相关的软件,如lib*库等等。即可解决大部分在软件编译中,出现的错误。对于配置,也是一个非常容易出错的地方,不同的软件配置是不一样的,常提高查看帮助文件来解决,虽然是英文,但一般大家都能看的懂,只有肯往下看一般都会有收获的。网络上提供的信息,由于与我们开发环境的不同,软件版本的不同等总总原因,应该尽

温馨提示

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

评论

0/150

提交评论