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

概述

诶,,英语作业实在是太多了,感觉周一至周五天天在做英语作业,周末要去姐姐的串串店送外卖帮忙。才发现时间很少!
今天把前几天的驱动开发总结一下,主要是基于NanoPC-T4写了一个LED的驱动。

回顾给自己安排的实验:
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.字符驱动的开发(虚拟内存,LED,按键)

1.记录第十一个实验-LED

后面就是要涉及对硬件的访问的操作了,需要下载rockchip的rk3399的芯片资料,为了正确配置寄存器。芯片资料如下图

在这里插入图片描述
本次实验为编写LED的驱动,并编写一个应用程序测试测试。我参考了别人的驱动程序,感觉思路很好。把驱动程序分为一个适用于所有板子的程序A(位于硬件操作和应用程序之间) 和 一个对应特定板子(针对硬件)的程序B。优点为:对于不同的芯片,只需要更换程序B集合。
(1)确定LED连接的管脚

查看NanoPC-T4的原理图
在这里插入图片描述
发现有一个可控制的灯,管脚为GPIO0_B5。

(2)确定要使用的寄存器及如何配置
a.PMUCRU_CLKGATE_CON1 用于使能GPIO0
b.PMUGRF_GPIO0B_IOMUX 用于设置GPIO0_B5用于GPIO模式
c.GPIO0_SWPORTA_DDR用于设置GPIO0_B5的方向(output)
d.GPIO0_SWPORTA_DR用于设定GPIO0_B5输出电平
注意PMUGRF_GPIO0B_IOMUX 和GPIO0_SWPORTA_DDR有write_mask

定义变量
在这里插入图片描述
设置地址(ioremap把物理地址转换为虚拟地址)
在这里插入图片描述
配置
在这里插入图片描述

(3)编写位于硬件操作和应用程序之间的程序,

与虚拟读写内存的差不多,但是注意
a.open函数需要初始化硬件
b.write读取次设备号需要如下操作:
在这里插入图片描述
c.自动创捷节点为如下操作:
在这里插入图片描述

(4)编写针对RK3399的硬件程序:
步骤2已经写的差不多了。

(5)编写应用程序
这个比较简单,,主要设计open、write和close

(6)注意因为NanoPC-T4烧写的系统已经在使用这个灯了。。所以我们需要去把他配置一下,归我们用。
进入/sys/class/leds/status_led 发现有一个trigger文件。
我们在上面的目录下 输入 echo none > trigger 就可以发现灯不闪了。
后面通过应用程序就可以操控灯的亮灭了。

最后

以上就是彩色黄豆为你收集整理的NanoPC-T4学习记录---(9)基于NanoPC-T4的字符驱动的开发2的全部内容,希望文章能够帮你解决NanoPC-T4学习记录---(9)基于NanoPC-T4的字符驱动的开发2所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部