嵌入式系统设计大作业
大作业设计报告书(嵌入式系统原理与开发)

大作业设计报告书题目:嵌入式系统原理与开发院(系):物联网工程学院专业: 班级:姓名:指导老师:设计时间: 10-11 学年 2 学期20XX年5月目录1.目的和要求 (3)2.题目内容 (3)3.设计原理 (4)4.设计步骤 (5)4.1 交通指示灯设计 (5)4.2 S3C44B0X I/O 控制寄存器 (6)4.3 红绿灯过渡代码: (8)4.4 电源电路设计 (10)4.5 系统复位电路设计 (11)4.6 系统时钟电路设计 (11)4.7 JTAG 接口电路设计 (12)4.8串口电路设计 (12)5.引脚分类图 (13)6.参考文献 (13)1.目的和要求ARM技术是目前嵌入式应用产业中应用十分广泛的先进技术,课程开设的目的在于使学生在了解嵌入式系统基础理论的前提下能够掌握ARM处理器的汇编语言和c语言的程序设计方法,掌握S3C44B0X芯片的基本硬件结构特点和接口设计方法,同时熟悉ARM开发环境,学习ARM的硬件设计和软件编程的基本方法,为今后从事相关的应用与研究打下基础。
通过大作业要达到如下目的:一、掌握ARM的开发工具使用和软件设计方法。
二、掌握ARM处理器S3C44B0X的原理和GPIO接口设计原理。
三、掌握C语言与的ARM汇编语言的混合编程方法;四、培养学生选用参考,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
五、通过课程设计,培养学生严肃认真的工作作风。
2.题目内容题目:交通指示灯系统设计功能描述:1.用S3C44B0X的GPIO设计相关电路;2.设计相关的软件并注释;3.实现十字路口2组红、黄、绿交通灯交替显示。
编程提示:1.交通灯可用发光二极管代替;2.电路可部分参照实验电路;3.时间控制可以使用软件循环编程解决。
嵌入式大作业红绿灯实验模拟场景交通指示灯,需要东西南北四个方向的红绿灯配合交替显示。
以上海交通指示灯为例,绿灯向黄灯过渡时,绿灯会闪几下,然后绿灯灭,黄灯亮。
2021年下半学期西电嵌入式系统设计大作业

2021年下半学期西电嵌入式系统设计大作业嵌入式系统设计大作业授课老师:孙江敏学院:计算机学院学生姓名:学号:日期:2021年6月12日1 / 17嵌入式系统设计大作业1、判断题( × )1.嵌入式系统调试通常可以分为硬件级调试和在线仿真器调试。
( √ )2.在ARM处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。
( × )3.ROM能够永久或半永久地保存数据,ROM内的数据永远不会丢失。
( √ )4.内建测试系统(BIST)是SoC片上系统的重要结构之一,JTAG测试接口是IC芯片测试方法的标准。
( × )5.VHDL的基本单元描述不包括库。
( × )6.嵌入式ARM架构的嵌入式处理器同时支持大端、小端(Big/Little-Endian)数据类型。
( × )7.嵌入式操作系统通常采用整体式内核或层次式内核的结构。
( × )8.ARM7TDMI中的T代表增强型乘法器。
( × )9.看门狗(Watch Dog)实际是一个简单的定时器,在固定时间内若正常清零,则自动复位处理器。
( √ )10.ARM-CPU由多家不同制造商生产,芯片外部提供的总线是不一致的。
( √ )11.Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。
( √ )12.Linux 内核的中断服务程序运行于与所有进程都无关的中断上下文中。
( √ )13.Linux遵循POSIX标准,意味着绝大多数UNIX应用程序不需要任何改动就可以在Linux系统上编译且运行。
( × )14.Linux内核支持可以裁减的功能,因此它属于微内核架构。
( √ )15.Linux在fork()时采用了写时拷贝(简称COW)技术,允许父进程和子进程同时共享相同的物理页面。
( √ )16.任何一个Linux应用程序都需要调用exit()函数。
( √ )17.当前的Linux调度算法非常高效,但是查找当前最高优先级的可运行程序时,开销会随着可运行程序的多少而变化。
嵌入式系统设计大作业

嵌入式系统设计大作业1、叙述JTAG接口在嵌入式开发中的作用。
答:(1)用于烧写FLASH烧写FLASH的软件有很多种包括jatg.exe fluted flashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所以利用并口来传递信息给目标板的jtag接口。
所以就需要并口转jtag接口的电路。
(2)用于调试程序同时应该注意到jtag接口还可以用来调试程序。
而调试程序(如ARM开发组件中的AXD)为了通过jtag接口去调试目标板上的程序,同样是使用pc的并口转jtag接口来实现与目标板的通信。
这样,并口转jtag接口的电路就有了两种作用。
(3)仿真器根据(1)和(2)的总结,并口转jtag接口的电路是两种应用的关键,而这种电路在嵌入式开发中就叫仿真器。
并口转jtag接口的电路有很多种,有简单有复杂的,常见的仿真器有Wigger,EasyJTAG,Multi-ICE等。
这些所谓的仿真器的内部电路都是并口转jtag接口,区别只是电路不同或使用的技术不同而已。
2、叙述嵌入式平台的搭建过程,以linux为例。
答:1) 一:建立宿主机开发环境建立交叉编译的环境即在宿主机上安装与开发板相应的编译器及库函数,以便能够在宿主机上应用开发工具编译在目标板上运行的Linux引导程序,内核,文件系统和应用程序交叉编译:在特殊的环境下,把嵌入式程序代码编译成不同的CPU所对应的机器代码。
开发时使用宿主机上的交叉编译,汇编及工具形成可执行的二进制代码(该代码只能在开发板上执行),然后下载到开发板上运行2) 下载和安装arm-Linux-gcc编译工具链下载最新的arm-Linux-gcc并解压至当前目录下在系统配置文件profile中设置环境变量方法:直接在profile文件中加入搜索路径立即使新的环境变量生效:运行source命令,检查是否将路径加入到path,测试是否安装成功,编译程序,测试交叉工具链3) 配置超级终端mini mini是宿主机与目标板进行通信的终端:在宿主机Linux终端中输入:mini-s或输入mini然后按ctrl+A+O对超级终端mini进行配置,再选择串口并配置串口,最后保存即可4) 建立数据共享服务:NFS服务是Linux系统中经常使用的数据文件共享服务5) 编译嵌入式系统内核:内核配置,建立依存关系,建立内核6) 制作文件系统3、给出现今有哪些用于嵌入式开发的芯片名称,他们分别是哪些公司的产品?体系结构是什么?S3C2410X基于ARM的Sumsang;XscalePXA255/PXA270基于ARM的Intel;摩托罗拉MC基于68k;Power 601基于Power PC;MIPS32Kc基于MIPS4、现今较流行的嵌入式操作系统有哪些?答:(1) VxWorks(2)wince(3)linux(4)android(5)μC/OS-Ⅱ5、PXA270嵌入式开发板的接口有哪些?答:全双工异步串行口和硬件流控制串行口,10M标准以太网接口10M/100M标准以太网接口,USB接口,红外通讯口,音频接口,存储卡口,视频和触摸屏接口摄像头接口,RTC时钟接口,调试接口,下载接口,电源接口。
嵌入式系统设计期末大作业

标准文案江苏科技大学嵌入式系统设计期末大作业----嵌入式web服务器设计学号:1341901124:武易专业:科技大学2016-12-30嵌入式Web服务器的设计与实现引言近年来,传统上用于办公室和商业的以太网逐渐进入了基于嵌入式设备的控制领域。
Web技术可跨越诸多设备和系统在硬件和软件产品间做到即连即用,只需用Web浏览器通过以太网和TCP/IP协议便可访问各种信息终端。
客户机可任意设置,只要能连上Internet并有权访问Web服务器,便可查阅现场有关信息,给维护和管理工作带来很大的方便。
本文提出的基于ARM Linux的嵌入式Web服务器以S3C2410处理器为核心,以可裁减可移植的Linux为操作系统,为嵌入式系统的Internet接入提供了一种方便、快捷、简单的实现方法。
1 嵌入式web服务器技术嵌入式Web服务器(embedded web server,EWS)是指将Web服务器引入到现场测试和控制设备中,在相应的硬件平台和软件系统的支持下,使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议,Web技术为核心的基于互联网的网络测试和控制设备。
其执行3种基本功能:①静态和动态网页信息发布;②提供接口监测现场设备;③提供接口控制现场设备。
由于Web技术的开放性和独立平台特性,降低了软件系统和通信系统的设计、维护工作量,提高了现场测试和控制设备的管理水平。
嵌入式Web服务器技术提供了异构网络远程管理和监控设备的方法和途径。
在嵌入式Linux系统中,常用的Web Server有Boa、httpd、thttpd和mini-httpd等。
其中Boa是一个运行在类Unix系统中的小型WebServer,适合嵌入式环境。
在Boa中若两个用户同时访问,则其中的一个必须等待,它产生独立进程来处理CGI(通用网关接口)程序,因此占用较少的资源,其体系结构如图1所示。
Boa的优点在于其快速可靠性。
嵌入式系统大作业

嵌入式系统大作业-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII基于嵌入式系统的车载GPS导航系统的设计1 设计目的与功能1.1 设计目的随着人们经济基础增强,安全意识增强的基础上,很多人都会选择车载GPS 导航设备,所以制造功能强大,价格低廉的车载GPS导航设备是有很大市场和发展前景的。
由于导航仪投入小,外壳模块、芯片等材料市场供应量大,这也是我选择设计车载GPS导航设备的理由。
为了满足不同用户的不同需求,我想设计一款内置四维地图系统。
1.2设计功能1提供准确无误的全3D实景导航;2附带全国沿途咨询;3具有视频、音乐播放等娱乐功能。
2.需求分析调研2.1 产品的硬件组成(型号、类型、电气特性、选择的理由等)(1)处理器:S3C2440A 400MHz,S3C2440A 是三星公司生产推出的基于ARM920T的32位RISC嵌入式微处理器,S3C2440A采用了ARM920T的内核,0.13um的CMOS标准宏单元和存储器单元。
采用ARM920T CPU内核支持ARM调试体系结构。
(2)储存模块:SDRAM , K4M561633-75 , 64MByte Nand FLASH,K9F1208G 64MByte同步动态随机存储器,工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;存储阵列需要不断的刷新来保证数据不丢失;数据不是线性依次存储,而是自由指定地址进行数据读写。
(3)音频模块:PHILIPS公司的UDA1341TS是一块功能强大的专用语音处理芯片。
本设计使用的AT91RM9200处理器具有一个IIS音频接口,此接口采用DMA方式传输数据。
用DMA接口传输数据,不仅可以降低CPU负担,还可以节省系统的软件设计时间,降低编程难度。
(4)显示模块:CH7005,是薄膜晶体有源阵列显示器。
一个LCD控制器,液晶显示屏。
功能:具有双通道DMA通道。
嵌入式大作业

嵌⼊式⼤作业嵌⼊式⼤作业项⽬名称:交通指⽰灯系统设计班级:学号:姓名:⽬录⼀、前⾔ (3)1.1、总体介绍 (3)1.2、设计要求 (3)⼆、设计原理 (3)2.1、总体原理 (3)2.2、芯⽚介绍 (4)2.3、GPIO简介 (4)2.4、寄存器介绍 (5)三、设计步骤 (6)3.1、整体程序框图 (6)3.2、程序 (6)3.3、硬件结构设计 (8)四、现象结果及分析 (10)五、设计体会 (11)六、参考⽂献 (11)⼀、前⾔1.1、总体介绍嵌⼊式系统(Embedded system),是⼀种“完全嵌⼊受控器件内部,为特定应⽤⽽设计的专⽤计算机系统”,嵌⼊式系统为控制、监视或辅助设备、机器或⽤于⼯⼚运作的设备。
与个⼈计算机这样的通⽤计算机系统不同,嵌⼊式系统通常执⾏的是带有特定要求的预先定义的任务。
由于嵌⼊式系统只针对⼀项特殊的任务,设计⼈员能够对它进⾏优化,减⼩尺⼨降低成本。
嵌⼊式系统通常进⾏⼤量⽣产,所以单个的成本节约,能够随着产量进⾏成百上千的放⼤。
随着移动设备的流⾏和发展,嵌⼊式系统已经成为⼀个热点。
它并不是最近出现的新技术,只是随着微电⼦技术和计算机技术的发展,微控制芯⽚功能越来越⼤,⽽嵌⼊微控制芯⽚的设备和系统越来越多,从⽽使得这种技术越来越引⼈注⽬。
它对软硬件的体积⼤⼩、成本、功耗和可靠性都提出了严格的要求。
嵌⼊式系统的功能越来越强⼤,实现也越来越复杂,随之出现的就是可靠性⼤⼤降低。
最近的⼀种趋势是⼀个功能强⼤的嵌⼊式系统通常需要⼀种操作系统来给予⽀持,这种操作系统是已经成熟并且稳定的,可以是嵌⼊式的Linux,WINCE等等。
本⽂所要研究的就是基于ARM嵌⼊式系统的交通灯系统的设计与实现。
1.2、设计要求(1)⽤S3C2410或者其他ARM芯⽚的GPIO设计相关电路(2)设计相关的软件并注释(3)实现⼗字路⼝2组红、绿交通灯交替显⽰。
⼆、设计原理2.1、总体原理⼀个嵌⼊式系统装置⼀般都由嵌⼊式计算机系统和执⾏装置组成,嵌⼊式计算机系统是整个嵌⼊式系统的核⼼,由硬件层、中间层、系统软件层和应⽤软件层组成。
嵌入式系统大作业报告(基础题)

目录一、需求分析 (1)1.1 意义 (1)1.2 发展情况 (1)1.3 开发的技术目的 (1)二、系统开发思想和开发环境 (1)2.1 系统开发思想 (1)2.2 开发环境 (2)2.3 采用的技术及特点 (2)三、开发模块划分及之间的接口描述和说明 (2)3.1 模块及功能 (3)3.2 模块说明(流程图) (3)3.3 接口描述 (4)四、核心代码及其说明 (5)五、程序运行 (5)5.1 运行配置 (8)5.2 运行界面 (9)六、系统优化及分析 (12)七、成员工作内容、其他需要描述的部分,如技术创新点、系统特点等 (12)八、心得体会 (12)多媒体软件一、需求分析1.1 意义多媒体技术(Multimedia Technology)是利用计算机对文本、图形、图像、声音、动画、视频等多种信息综合处理、建立逻辑关系和人机交互作用的技术。
如今,多媒体技术得到迅速发展,多媒体系统的应用更以极强的渗透力进入人类生活的各个领域,如游戏、教育、档案、图书、娱乐、艺术、股票债券、金融交易、建筑设计、家庭、通讯等等。
其中,运用最多最广泛也最早的就是电子游戏,千万青少年甚至成年人为之着迷,可见多媒体的威力。
大商场、邮局里是电子导购触摸屏也是一例,它的出现极大地方便了人们的生活。
近年来又出现了教学类多媒体产品,一对一专业级的教授,使莘莘学子受益匪浅。
正因为如此,许多有眼光的企业看到了这一形式,纷纷运用其做企业宣传之用甚至运用其交互能力加入了电子商务,自助式维护,教授使用的功能,方便了客户,促进了销售,提升了企业形象,扩展了商机,在销售和形象二方面都获益。
1.2 发展情况多媒体软件已经成为人们生活中不可或缺的必备品。
1.3 开发的技术目的图片播放器是一个简洁实用的图片自动播放软件,用于欣赏图片的播放。
通过图片播放器这个软件用户可以浏览图片文件,并且图片播放器具有放大图片和缩小图片的功能,以及旋转图片的功能。
嵌入式大作业

嵌入式系统大作业基于嵌入式系统的智能门窗设计一、需求分析1、问题的提出随着21世纪信息化时代的到来, 社会信息化和家居智能化也呈现出了蓬勃发展的趋势,越来越多的家庭开始追求高质量、高科技舒适安全的家具生活,充分享受由信息时代带来的生活上的便利。
作为智能家具系统的子系统——智能门窗,是在传统住宅的基础上,综合利用传感器技术、计算机技术、现代通讯技术和自动控制技术等,实现了门窗各种信息的采集、传输、处理和控制。
安全舒适的家居环境是实现家居智能化的基础和前提,而门窗作为家庭与外界互通的门户,起着尤为关键的作用,实现门窗的智能化是智能家居的第一步,也是非常重要的一步。
2、可行性分析智能门窗属建筑领域的附件, 它包括智能控制系统和门窗开关装置以及报警系统。
该智能门窗实现的主要功能是当室内燃气泄露,CO 和CO2 含量过高, 甲醛、苯等有毒物质超标时,能够控制门窗自动打开,让空气形成对流,并启动排风扇向室外排出有害气体,当室外环境不允许开窗时(比如风雨和沙尘天气)由风光雨传感器传输信号到主控系统,使其发出指令关闭窗户,同时整个系统将以排风扇工作为主。
如果状况仍未缓解,则启动警报装置。
3、需求分析结构图1.信号采集系统框图:说明:该部分主要以传感器为采集信号手段,经转换元件将采集到的信号进行加工,使采集到的模拟信号能够被主控芯片识别。
2.门窗防盗模块框图:说明:该模块主要用于防止门窗打开时,不法分子趁机入室或船户关闭时破窗而入,对房屋主人的人身及财产安全造成威胁。
该模块主要由人体靠近传感器和玻璃破碎传感器组成。
3.流程图:1.任务一流程图说明:读取室内气体传感器的数据,对采集到的信号进行处理,判断室内空气传染是否超标,若超标则进行开窗盒启动排风扇,使室内空气污染浓度降低。
2.任务二流程图说明:主要任务为防盗报警和气体超标报警,读取门窗报警器信号,启动声光报警器,并显示报警原因。
所用到的部分相关函数:1.CO传感器检测电路图说明:有害气体检测电路,在该电路中主要用气敏传感器实现“气-电“转换,在正常情况下,气敏传感器不接触有害气体或有害气体浓度很低时,气敏传感器两端呈现高阻状态,检测信号变小,不能驱动后级电路而使其工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统设计大作业学号:14020520009 姓名:罗翔1、叙述JTAG接口在嵌入式开发中的作用。
答:(1)用于烧写FLASH烧写FLASH的软件有很多种包括jatg.exe fluted flashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所以利用并口来传递信息给目标板的jtag接口。
所以就需要并口转jtag接口的电路。
(2)用于调试程序同时应该注意到jtag接口还可以用来调试程序。
而调试程序(如ARM开发组件中的AXD)为了通过jtag接口去调试目标板上的程序,同样是使用pc的并口转jtag接口来实现与目标板的通信。
这样,并口转jtag接口的电路就有了两种作用。
(3)仿真器根据(1)和(2)的总结,并口转jtag接口的电路是两种应用的关键,而这种电路在嵌入式开发中就叫仿真器。
并口转jtag接口的电路有很多种,有简单有复杂的,常见的仿真器有Wigger,EasyJTAG,Multi-ICE等。
这些所谓的仿真器的内部电路都是并口转jtag接口,区别只是电路不同或使用的技术不同而已。
2、叙述嵌入式平台的搭建过程,以linux为例。
答:1) 一:建立宿主机开发环境建立交叉编译的环境即在宿主机上安装与开发板相应的编译器及库函数,以便能够在宿主机上应用开发工具编译在目标板上运行的Linux引导程序,内核,文件系统和应用程序交叉编译:在特殊的环境下,把嵌入式程序代码编译成不同的CPU所对应的机器代码。
开发时使用宿主机上的交叉编译,汇编及链接工具形成可执行的二进制代码(该代码只能在开发板上执行),然后下载到开发板上运行2) 下载和安装arm-Linux-gcc编译工具链下载最新的arm-Linux-gcc并解压至当前目录下在系统配置文件profile中设置环境变量方法:直接在profile文件中加入搜索路径立即使新的环境变量生效:运行source命令,检查是否将路径加入到path,测试是否安装成功,编译程序,测试交叉工具链3) 配置超级终端minicom minicom是宿主机与目标板进行通信的终端:在宿主机Linux终端中输入:minicom-s或输入minicom然后按ctrl+A+O对超级终端minicom进行配置,再选择串口并配置串口,最后保存即可4) 建立数据共享服务:NFS服务是Linux系统中经常使用的数据文件共享服务5) 编译嵌入式系统内核:内核配置,建立依存关系,建立内核6) 制作文件系统3、给出现今有哪些用于嵌入式开发的芯片名称,他们分别是哪些公司的产品?体系结构是什么?S3C2410X基于ARM的Sumsang;XscalePXA255/PXA270基于ARM的Intel;摩托罗拉MC基于68k;Power 601基于Power PC;MIPS32Kc基于MIPS4、现今较流行的嵌入式操作系统有哪些?答:(1) VxWorks(2)wince(3)linux(4)android(5)μC/OS-Ⅱ5、PXA270嵌入式开发板的接口有哪些?答:全双工异步串行口和硬件流控制串行口,10M标准以太网接口10M/100M标准以太网接口,USB接口,红外通讯口,音频接口,存储卡口,视频和触摸屏接口摄像头接口,RTC时钟接口,调试接口,下载接口,电源接口。
6、请写出Nor Flash和Nand Flash的区别。
7、冯。
诺依曼架构与哈佛架构的区别。
答:他们的主要区别是计算机的存储结构和总线连接形式不同。
在冯·诺依曼的结构中,存储器内部的数据存储空间和程序存储空间是合在一起的,他们共享存储器总线,即数据和指令在同一条总线上通过时分复用的方式进行传输,这种结构在高速运行时,不能达到同时取指令和取操作数的目的从而形成传输过程的瓶颈。
在哈佛总线体系结构的芯片内部,数据存储空间和程序存储空间是分开的,所以哈佛总线体系在指令执行时可以同时存取指令(来自程序空间)和取操作数(来自数据空间),因此具有更高的执行效率,修正的哈佛总线结构还可以在程序空间和数据空间之间相互传送数据。
8、单周期3级流水的情况下,第10个指令周期时,第几条指令执行结束?答:第七条9、下面是linux下的一个简单的设备驱动程序,写出linux设备驱动常用的数据结构,同时阅读下面代码,请给出测试程序中的每条语句加以注释。
设备驱动程序Keypad.c的源代码:#include <linux/module.h>//最基本的文件,支持动态添加和卸载模块。
#include <linux/fs.h>//包含了文件操作相关struct的定义#include <linux/init.h>//初始化头文件#include <linux/poll.h>//轮询文件#include <linux/types.h>#include <linux/fs.h>#include <linux/rtc.h>//可以在芯片上产生周期性的中断#include <linux/delay.h>//延时头文件#include <asm/hardware.h>//与处理器相关的硬件#include <asm/delay.h>//延时头文件#include <asm/uaccess.h>//与处理器相关的入口#define LEDnKEY_MAJOR 251#define KEYPAD_NAME "X-Hyper250 Keypad"#define KEYPAD_VERSION "Version 0.1"#define EXT_KEY_CS EXT_PORT2//宏定义#define EXT_LED_CS EXT_PORT3//宏定义#define LED_SHOW 10//宏定义/*EXT_KEY_CS 为向外部LED进行数值设定,它定义在其它头文件里*/void led_off_on() /**/{int i;EXT_LED_CS = 0xff;for(i =0 ; i<8;++i){EXT_LED_CS = ~((1 << i) & 0xff); //点亮相应LED灯udelay(30000);//调用udelay函数来延迟}EXT_LED_CS = 0xff;}/*应用程序用open来打开设备文件,实际上调用驱动的lednkey_open()函数*/int lednkey_open(struct inode *inode, struct file *filp)//打开设备文件{MOD_INC_USE_COUNT;//模块自身通过return (0); /* success */}int lednkey_release(struct inode *inode, struct file *filp)//释放设备文件{led_off_on();MOD_DEC_USE_COUNT;return (0);}ssize_t lednkey_read(struct file *filp, char *Putbuf, size_t length, loff_t *f_pos)/*按键读取函数*/{unsigned short BottonStatus; //按键状态unsigned char Bottontmp = 0;int i;BottonStatus = ( EXT_KEY_CS & 0xff );for(i = 0 ; i < 8; ++i){if( ((BottonStatus >> i) & 1) == 0 ) //判断哪个按键按下Bottontmp = (i+1);}copy_to_user( Putbuf, &Bottontmp, length);/*将数据从内核态拷贝到用户态,这是由定义在<asm/uaccess.h>里的特殊函数实现在不同的空间传输任意字节的数据*/ return length;}ssize_t lednkey_write(struct file *filp, const char *Getbuf, size_t length, loff_t *f_pos){int num;unsigned char UsrWantLed;copy_from_user( &UsrWantLed, Getbuf, length);//将数据从用户态拷贝到核心态num = ( (UsrWantLed) & 0xff );//确定哪一位要进行设定EXT_LED_CS = ~(1 << (num-1));//点亮相应LED灯return (0);}int lednkey_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,unsigned long arg)//lednkey_ioctl接口函数,主要用于获取或者改变正在运行的设备参数{switch(cmd){case LED_SHOW:{if(arg)led_off_on();break;}}return 0;}//以下这些驱动函数是与用户的应用程序里对设备文件操作的函数相对应的struct file_operations lednkey_fops = {open: lednkey_open,read: lednkey_read,write: lednkey_write,ioctl: lednkey_ioctl,release: lednkey_release,};static int _init xhyper250_keypad_init(void)/*初始化设备函数,在函数名之前加上这个属性之后,系统会在初始化完成之后丢弃初始化函数,收回它所占用的内存,以减小内核所占用的内存空间,它只对内建的驱动起作用*/{int result;result = register_chrdev(LEDnKEY_MAJOR, "lednkey", &lednkey_fops);/*向操作系统注册一个主号为251,设备名为"lednkey",并传递设备驱动程序的指针为lednkey_fops(全局变量),其中register_chrdev()是内核提供的函数,作用是完成注册新的字符设备*/printf("%s %s initialized.\n",KEYPAD_NAME, KEYPAD_VERSION);led_off_on();return 0;}static void _exit xhyper250_keypad_exit(void)//向操作系统卸载设备函数{unregister_chrdev( LEDnKEY_MAJOR, "lednkey" );led_off_on();}module_init(xhyper250_keypad_init); //显式声明初始化设备函数module_exit(xhyper250_keypad_exit); //显式声明卸载设备函数测试文件的源代码如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#define LED_SHOW 10//宏定义int fd;static char *dev_name = "/dev/keypad";int main(int argc, char **argv){int data = 0, pre_data;fd = open( dev_name , O_RDWR );//使用函数open打开设备keypadif( !(fd >=0) ){printf("%s file open failed\n", dev_name );exit(-1);}//打开失败,显示出错信息printf("\nkeypad App : press the push button see show led - Exit Ctrl-C\n",dev_name);//打开成功,提示用户输入ioctl(fd,LED_SHOW,1);//循环显示LED,看LED是否正常while(1){do{pre_data = data;read( fd, (char * )&data, sizeof(data) );data = (data & 0xff);}while(data == 0);if( pre_data == 0){printf("Write %d LED\n",data);write( fd, (const char *)&data, sizeof((const char )data) );/*采用忙等待方式扫描用户输入,传递给write函数*/}}close( fd );//使用函数close关闭设备keypadreturn 0;}10、基于Intel Gilelo开发板,设计一个项目,项目题目自选,给出项目的总体设计图,以及对图中模块的功能分析,若可以,给出实现项目的详细设计和程序及代码,及实物。