2022年linux实验报告 .pdf
《2022年linux实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年linux实验报告 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验十三: LED点阵驱动一、实验目的:编写一个针对总线操作的硬件驱动程序。二、实验内容:编写一个针对硬件LED点阵的驱动程序。三、实验原理及步骤实验原理:Linux 将所有外部设备看成是一类特殊文件,称之为“设备文件”, 如果说系统调用是 Linux 内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux 内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。本实验中采用的 8X8点阵数码管发光原理:, 8X8点阵共由 64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1 电平,
2、某一行置 0 电平,则相应的二极管就亮。在本开发板上,整个LED 显示模块是作为一个 I/O 进行控制的。 DATA0.7, DATA8.15 分别对应系统数据线的低 16 位, LED_LOCK 信号是由系统总线的写信号和地址信号经简单的逻辑组合而得。在本实验中, ssize_t SIMPLE_LED_write ()这个函数很关键,在这个函数中定义了两个数组来控制LED阵列的行和列。 通过前几个实验的操作, 我对驱动程序的编写又有了更进一步的认识。在本实验中,我将没有完成的程序补充完全,实验步骤如下。实验步骤:1 硬件连接:连接宿主PC机和一台 PXA270-EP 目标板。2 在宿主机上编
3、写编译驱动程序:需要在宿主PC机端编辑三个文件,分别是驱动程序、编译驱动程序时用的Makefile 、测试程序。3 在终端输入 vi pxa270_led_ary_drv.c后开始编辑驱动程序,添加的代码部分截图及说明如下:(1)补充 showversion ()函数用于显示版本号;补充read() 函数,对字符型设备进行读操作。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - (2)补充 ioctl( ) 函数,可实现读写之外
4、的控制;补充open( ) 函数,打开设备时调用。补充 showversion 函数用于显示版本号补充read() 函数,对字符型设备进行读操作补充 ioctl( ) 函数,可实现读写之外的控制补充 open( ) 函数,打开设备时调用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - (3)补充file_operations()函数 , 指出设备驱动程序所提供的入口点位置,包括open, read,write,ioctl,rel
5、ease.(4)补充编写模块程序时必须提供的两个函数, 一个是 int init-module(void),供 insmod 在加载此模块的时候自动调用, 负责进行设备驱动程序初始化工作.init_module 返回 0 以表示初始化成功 , 返回负数表示失败 . 另一个函数是void cleanup_module(void),在模块被卸载时调用 , 负责进行设备驱动程序的清除工作 . 补充 file_operations ()函数 ,指出设备驱动程序所提供的入口点位置补 充intinit-module(void),供insmod在加载此模块的时候自动调用补 充cleanup_module(v
6、oid),在模块被卸载时调用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - (5)实验需要写编译驱动时使用的Makefile 文件, 其实不必重新编写,可以继续使用之前实验的 Makefile 文件,但是必须作如下修改TARGET = pxa270_led_ary_drv.o modules:$TARGET all:$TARGET pxa270_led_ary_drv.o: pxa270_led_ary_drv.c 用来声明目
7、标文件。(6)输入make modules命令编译驱动程序,看到如下信息:(7)编写并编译测试程序:在上面打开的同一个终端窗口中,输入下列2 条命令:vi simple_test_driver.c /*输入测试程序清单16.2 */ arm-linux-gcc -o test simple_test_driver.c /*编译测试程序 */ (8)在PXA270-EP 目标板运行测试程序:配置超级终端,输入mount -o soft,timeo=100 ,rsize=1024 192.168.0.100:/ /mnt /* 将宿主 PC 机的根目录挂载到PXA270-EP 目标板的 mnt目录
8、下 */ cd /mnt/home/LED_Array insmod pxa270_led_ary_drv.o /*加载驱动程序 */ 运行测试程序,看到如下信息:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 可以看到 LED 点阵有规律的闪烁了。四、实验总结通过本次实验,我成功通过控制LED 点阵的亮灭,修改测试程序中控制行列的两个数组buf0,buf1 参数可以改变 LED 点阵的点亮顺序, 实现作业要求的按横的方向隔行
9、顺序扫描LED 点阵数码管及按竖的方向顺序扫描LED 点阵数码管。驱动程序使某个特定的硬件可以响应一个定义良好的内部编程接口,同时完成隐藏设备的工作。 本次试验使我对驱动程序的编写流程有了更深刻的认识,在系统内部, I/O 设备的存取通过一组固定的入口点来进行,这组入口点是由每个设备的设备驱动程序来提供的,一般包括 open 入口点, Close入口点, Read入口点, Write 入口点, ioctl 入口点, select 入口点。在 file_operations 结构中需指出程序所提供的入口点位置。编辑好驱动程序后,还需编写Makefile 文件,用交叉编译工具gcc 进行编译,通过
10、测试文件测试驱动程序能否正确运行,通过此次试验, 我对驱动程序的重要性的理解更加深刻,使用驱动程序可以实现对设备的统一的控制与管理。实验十七: AD 驱动实验一、实验目的:1、了解模数转换的基本原理;2、掌握模数转换的编程方法。二、实验内容:1、编程对模拟量输入进行采集和转换,并将结果显示在超级终端上; 2、通过改变模拟量输入,观察显示结果。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 三、实验原理及步骤:实验原理:AD又称
11、为模数转换器,其作用是将模拟量转变成数字量,它在信号处理中是十分有用的一个模块,真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易储存、 处理和发射的数字形式。 模数转换器的工作过程是一个滤波、采样保持和编码的过程。模拟信号经带限滤波,采样保持电路,变为阶梯形状信号,然后通过编码器,使得阶梯状信号中的各个电平变为二进制码。,在 Linux 2.4 的内核代码中,已经提供了一些对AD 转换器进行控制的函数,我们可以直接调用这些函数来对AD 转换器进行操作。void ucb1x00_adc_enable(struct ucb1x00 *ucb)函数的作用是使能AD 转换。void
12、 ucb1x00_adc_disable(struct ucb1x00 *ucb)函数的作用是停止AD转换。unsigned int ucb1x00_adc_read(struct ucb1x00 *ucb, int adc_channel, int sync) 这个函数的作用是读取AD 后的数据。其中 adc_channel 这个参数是选择哪个通道。在 XA270-EP 目标板上,电位器对应通道0,温度传感器对应通道1,DA 的输出对应通道 2。在本实验中,只提供了程序框架,实验步骤及补充完全的驱动程序截图如下。实验步骤:1 硬件连接:连接宿主PC机和一台 PXA270-EP 目标板。2 在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年linux实验报告 2022 linux 实验 报告
限制150内