一、 实验目的和要求 1. 学习嵌入式Linux的GPIO的使用方式; 2. 学习嵌入式Linux的Arduino接口库; 3. 学习使用面包板搭简单的外部电路; 4. 学习Linux设备驱动程序的开发过程; 5. 学习在内核中访问外设寄存器,操作外设的方法
二、 实验器材 1. Linux实验板卡一块; 2. 5V/1A电源一个; 3. microUSB线一根; 4. 面包板一块; 5. MAX7219驱动的8*8 LED矩阵一个; 6. 面包线若干; 7. MacOS一台; 8. USE-TTL串口线一根 9. 以太网线一根; 10. 交叉编译软件
三、 实验内容和原理 1.设计方法,画连接示意图; 2.在面包板上连线,完成外部电路; 3.编写C/C++程序,采用Arduino-ish库或虚拟文件系统访问GPIO,实现在矩阵上显示文字或图案; 4.编写字符设备驱动程序,直接访问GPIO控制寄存器,能将write()送来的单个字符在矩阵上显示出来
四、 实验过程和数据记录 1. 以下是实物连接图 GPIO端口使用bcm编号的23,24,25,对应WiringPi的4,5,6号端口,分别连接到驱动板的DIN,CS,CLK
2. 使用Wiring访问GPIO 在用户级别程序访问GPIO,使用Wiring是个很好的选择。 从以下两个图片来看,显示效果良好
3. Linux字符设备驱动 Linux内核模块能更方便快捷地调整内核功能,而无需重新编译内核花费巨大的时间。通过编写字符设备驱动模块,能够使得系统通过/dev以字符设备的方式来写数据到8*8的led矩阵中显示。
编译后,生成后缀为ko的内核模块,使用insmod插入内核模块时,可以看到内核日志中带有初始化的信息提示,在使用open()打开设备文件后,可以看到其打开的信息提示。而通过write()往设备文件中写入数据时,亦可以看到内核日志中接收到字符的提示。
|