ok6410linux usb驱动,linux OK6410 LED驱动

之前都是做单片机开发,以为转到linux来写驱动程序会轻轻松松,当去真正写的时候才发现不是那么容易,就感觉东西太杂太多。所以还是注册了一个博客来记一下,方便查询。

国嵌给的OK6410内核自带LED驱动,在内核目录的drivers/char/s3c6410_leds.c,他是直接操作的物理地址,而新的教学视频是通过虚拟地址映射来实现的,但是新的教学视频里给的led.c直接貌似不是6410的驱动,好吧那只能在此基础上改了。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

里面只有led.c 没有led.h,所以得注释掉,然后自己宏定义

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

然后就是修改LEDCON和LEDDAT的值,之前是这样的

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

我们查询一下s3c6410手册,发现这两个地址是GPK的引脚

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

所以要将其改为6410硬件连接的GPM引脚

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

然后就是led初始化的地方之前因为不知道他接的是哪几个引脚,之前是这样的

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

而我们用的是GPM0~3,要将其设置为输出就要按照下面的来配置

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

每4位控制一个引脚,0~3都配置为0001即为输出

0818b9ca8b590ca3270a3433284dd417.png

换算为16进制为0x4369,所以将open函数里改为换算出的值

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

好的,到这里这个驱动貌似可以用了耶,写个测试程序试试

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

这只是点亮了第一个LED的测试程序,但是测试程序编译后好不能直接放板上运行,显然还有很多东西要做,首先写驱动程序的Makefile,如下

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

然后make一下得到led_sun.ko放到板里,执行

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

接下来就是需要建立相应的字符设备文件用以下命令看一下刚安装的模块的设备号

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

好的,我们的led驱动的设备号为252,接下来该建立设备文件了

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

252为主设备号而次设备号因为我们相同的设备只有一个,所以随便写一个非负值且小于255的就行,这里为0,好的到这里我们的工作就快完成了,编译一下测试程序

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

将测试程序拷贝到板上测试,由于我的板是通过tftp挂载宿主机的nfs文件系统,只需将led_test拷到/nfsfile/下面,然后运行

0818b9ca8b590ca3270a3433284dd417.png

咦!输出success了,再看看板上的灯,居然第一个灯奇迹般的点亮了,呵呵。有点意思!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OK6410USB是一款嵌入式开发板,移植指的是将适用于其他平台的软件或操作系统移植到OK6410USB上。由于OK6410USB采用了ARM架构的处理器,所以需要对软件进行相应的适配,以确保软件能够在该平台上正常运行。 首先,移植过程中需要对硬件驱动进行适配。OK6410USB的硬件包括处理器、内存、外设等,需要根据其硬件特性编写相应的驱动程序,以支持软件在OK6410USB上的运行。这包括了处理器的中断处理、内存管理、外设驱动等方面的工作。 其次,还需要对操作系统进行移植。OK6410USB可以运行多种不同的操作系统,如Linux、Android等。对于不同的操作系统,移植过程也会有所不同。通常需要编译操作系统的源代码,并进行一些配置,以适应OK6410USB的硬件环境。同时,还需要对操作系统内核进行修改,以支持OK6410USB的特殊功能和特性。 最后,还需要对应用软件进行移植。对于已经编写好的应用软件,需要根据OK6410USB的硬件环境进行相应的修改,以确保应用程序在OK6410USB上运行稳定且高效。这包括了对应用软件中与硬件相关的部分的适配工作。 综上所述,OK6410USB的移植工作需要对硬件驱动、操作系统和应用软件进行相应的适配和修改,以确保软件能够在OK6410USB上正常运行。移植工作需要深入了解OK6410USB的硬件特性和软件平台的工作原理,具备一定的编程和调试能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值