嵌入式系统学习报告.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统学习报告

嵌入式系统学习报告 1.第一题 1.1设计目标 在Linux操作系统和ARM嵌入式实验系统环境下,分析linux下的键盘、LED驱动程序,编写一个应用程序,实现以下功能:在ARM开发板上按下数字键1、2、3、4时,对应启动模拟量AIN0、AIN1、AIN2、AIN3采样,并把AD转换的结果从终端输出和LED显示。显示格式:通道号 转换的电压值;例如:2灭灭3.75 1.2设计思路 1.2.1驱动程序加载 针对我们这个实验,我们需要用到ADC0809芯片,LED显示数码管,小键盘。为此,我们需要加载这三个对应的驱动程序,其驱动程序主要是设置一些寄存器的内容来确定端口的引脚输入输出方式以及键盘的扫描部分代码,LED控制显示函数等等。 1.2.2 打开各个设备 在Linux系统下,各个设备都是通过文件来进行描述的,在这里我们利用open这个函数打开我们需要用到的LED,键盘,以及ADC0809芯片。并且要由对应的出错处理。 1.2.3键盘扫描 驱动程序加载进去以后,我们运行可执行文件以后,代码就进入到了按键按下等待的代码中了。对于用户而言,只是在键盘中按下了某个键,在计算机里,通过驱动得到按下的键值并通过read(fd_kb,&result_kb,1)函数把值赋给变量result_kb中(其中fd_kb为键盘的文件描述符)。 1.2.4 A/D转换 当按下的键是我们要启动A/D转换的命令键的时候,就启动ADC0809芯片对应的通道进行数据转换,这里主要通过iotcl和read这两个函数实现,并把转化后的结果赋给result_ad这个变量。然后利用voltage=5.0*result_ad/255.0这个 1 公式得到电压值并赋给变量voltage。 1.2.5电压整数和其小数截取存放 整数部分容易截取,小数部分截取是这样的:先让电压值乘以10,然后对其强制转化类型再对10求余。具体的转化在这两条语句上面:led[2]=led_map[(char)voltage]; //截取电压的整数部分 led[0]=led_map[((char)(voltage*10))%10]; //截取电压的小数部分 1.2.6 LED数码管显示 我们按下键值的时候,比如说按下的是1数字键,怎样让LED显示为1呢?换句话说,怎样实现1跟要在数码管上显示1的数据进行一一对应呢?这样很容易让人想到数组,我们创建一个数组led_map[10],里面存放的是在LED上显示0-9多对应的数据,然后把我们按下的键值赋给这数组中的下标变量就可以实现一一对应了。最后利用iotcl和write两个函数点亮对应的LED数码管。 1.2.7关闭各个设备 当我们不需要使用了的时候,我们必须利用close函数把工作的设备关闭掉。 1.3流程图 1.3.1 主程序流程图 2 图1 主程序流程图 3 1.3.2 AD转换框图 N 图2AD转换框图 1.4编译与调试的步骤和方法 4 1.5执行结果图 5 6 2.第二题 2.1设计目标 写一个linux下的用户程序,在ARM开发板和PC机上实现以太网服务器,对每一个访问的客户端发一个欢迎通信信息,该服务器模型为并发服务器,选用异步I/O机制、多路复用I/O机制或信号驱动I/O模型。 2.2设计思路 首先分析以太网编程中TCP/IP和套接字接口的编程方法,掌握TCP/IP三次握手协议及socket的内涵。然后,确定客户端和服务器的分工及程序设计,其中服务器则需要选择固定的模型(循环式或并发式),并选用I/O机制(阻塞式或异步),建立socket连接。而客户端需要确定hostname,并在确立socket连接后输入要传输的字符。 7 2.3主程序流程图 服务器 8 2.4编译与调试的步骤和方法 2.5执行结果图 9 3.第三题 3.1设计目标 写linux下的用户程序,其中一个为父进程,它创建了另外2个子进程,这2个子进程通过某种IPC机制实现进程间通信。要求分别在PC机上和在ARM开发板上测试实现。 IPC机制可选a)有名或无名管道、 b)共享内存、c)信号或其它方法。 3.2设计思路 该题使用管道机制实现两个进程之间的通信。管道是单向的、先进先出的、无结构的、固定大小的字节流;只能用于有亲缘关系进程间的通信。首先建立一个管道用pipe()函数,随后建立一父进程和两个字进程用fork()函数,实现两个子进程间的通信。其中一个子进程实现读read()操作。另一个子进程实现写write()操作。 在服务器程序设计阶段,首先需要建立sockfd描述符,填充sockaddr结构,并将sockfd描述符捆绑到IP地址上;然后设置客户端最大连接数,通过阻塞式I/O机制建立通讯连接。在客户端程序设计阶段,首先确定hostname, 然后

文档评论(0)

raojun00005 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档