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 就可以发现灯不闪了。
后面通过应用程序就可以操控灯的亮灭了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值