我是靠谱客的博主 酷炫蓝天,最近开发中收集的这篇文章主要介绍NanoPC-T4学习记录---(8)基于NanoPC-T4的字符驱动的开发1,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在家上课真的是。。作业太多了,仿佛回到了高中生活,天天忙于提交作业,就连体育课都要上传运动照片。

对于实验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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部