概述
在家上课真的是。。作业太多了,仿佛回到了高中生活,天天忙于提交作业,就连体育课都要上传运动照片。
对于实验8、9、10以后再搞把,,因为这周二远程开组会给我安排了个基于ARM的项目(主要是应用层开发),所以我再学学驱动开发就要去学应用层的开发了。实验8、9、10毕竟对项目帮助不大。
诶,,今天来记录记录前几天忙里偷闲学习的字符驱动开发。
回顾给自己安排的实验:
1.搭建PC端和开发板系统:PC端就用虚拟机装个ubuntu18.04,开发板上用rk3399-typec-friendlydesktop-bionic-4.4-arm64-20191227(带图形界面的)。
2.把网络搞通。连接wifi,与电脑端处于同一网段。方面后面搭建samba服务器、挂载NFS或者用tftp传输数据等操作。(暂时使用网线代替)
3.在虚拟机Linux下搭建Samba服务器。
4.在虚拟机Linux挂载NFS。
5.下载内核代码并且导入Sourceinsight。
6.在虚拟机Linux进行内核配置和编译。
7.在虚拟机Linux进行内核模块的开发。
8.板子的Uboot制作。
9.板子的内核制作。
10.板子的根文件系统制作。
11.字符驱动的开发(新加)
1.记录第十一个实验
前提要求:虚拟机Linux搭建好了交叉编译环境,虚拟机Linux和板子搭建好了NFS。
内容包括:对虚拟内存的读写操作和对设备的控制指令(我还未使用硬件,就先在NanoPC-T4上打印个信息把)。
(1)编写memdev.h 进行设备操作的宏定义
_IO为不带参数的控制、_IOW为带写入参数的控制、_IOR为带读入参数的控制
(2)编写字符驱动代码memdev.c(参考别人的)
缺什么头文件 就“man 函数”查找需要什么头文件
a.驱动初始化包括分配cdev设备描述符(静态分配)、初始化cdev、设备号的分配(动态分配)和cdev的注册。
b.驱动注销包括cdev的注销和设备号的注销。
c.设置操作函数集(file_operation):llseek、read、write、open、release和ioctl。
d.虚拟内存的初始化
e.分配实现各个操作函数
(3)编写驱动程序的Makefile并make
注意:modules CROSS_COMPILE=aarch64-linux- 和ARCH=arm64
编译成功。
(4)编写写虚拟内存的应用程序write_mem.c并编译
/dev/memdev0 是待会在板子上用mknod创造的字符设备文件
(5)编写写虚拟内存的应用程序read_mem.c并编译
(6)编写执行设备控制的应用程序ctrl_mem.c并编译
(7)把memdev.ko、write_mem、read_mem、ctrl_mem全部通过NFS拷到板子上。然后
a.挂载内核模块
insmod memdev.ko
b.通过读取/proc/devices里面的信息,查找memdev的主设备号
cat /proc/devices
是240
c.创建字符设备文件
mknod /dev/memdev0 c 240 0
d.执行write_mem、read_mem、ctrl_mem看到相应现象。
最后
以上就是酷炫蓝天为你收集整理的NanoPC-T4学习记录---(8)基于NanoPC-T4的字符驱动的开发1的全部内容,希望文章能够帮你解决NanoPC-T4学习记录---(8)基于NanoPC-T4的字符驱动的开发1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复