Linux下驱动开发之一-------Tiny 6410

原创 2013年12月02日 20:51:33

  内核:linux-2.6.38

  编译器:arm-linux-gcc4.5.1

         主机:VMware 7.0 + Fedora9-i386

 

         首先,由于笔者的NAND FLASH是MLC2的,通过u-boot不能启动,所以只好用友善提供的superboot工具,但能启动起来就OK了,现在还是菜鸟,等学习Linux够格了,再来解决这个问题。

         6410下裸机程序玩的已经差不多了,开始学习Linux下驱动程序,对这个一直怀有敬畏之心,内核70%~80%的代码都是由驱动组成的,而且玩驱动玩到极致的都是大牛,比较崇拜。。。

        

         1.      搭建环境,编译内核

                   解压缩下载的内核linux-2.6.38-2012-8-30.tar.bz2到目录opt/FriendlyARM/mini6410/linux下,命令:

                   tar-xjvf linux-2.6.38-2012-8-30.tar.bz2

                   cp config_linux_mini6410.config

                   makemenuconfig

         2.      构建NFS服务器

                   前提将根文件系统rootfs_qtopia_qt4.tar.tgz解压缩到/opt/FriendlyARM/mini6410/linux/目录下,

                   gedit/etc/exports

                   在里面增加一句:

                   /opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4*(rw,sync,no_root_squash)

                   意思是导出目录/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 

                   rw 可读写 sync 将内存内容直接写入到磁盘上,不等待

                   no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份

                   保存后退出,启动nfs服务:service nfs restart

                   设置开发板的IP地址为10.0.5.113,设置虚拟机的IP地址为10.0.5.111,具体在虚拟机里面配置方法可以参考另一篇博文   http://blog.csdn.net/jefbai/article/details/16908709然后使用ping命令测试两者是否通了,若通,则在开发板命令行下输入:

                   mount -tnfs -o nolock 10.0.5.111:/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4 /mnt

                   nolock表示禁用文件锁,这个命令将主机的/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4挂载到开发板的/mnt目录上

                   NFS功能非常强大,在主机上修改源码,编译,然后就可以在开发板上直接使用,而不需要像FTP那样下载运行,太方便了。。。。。。。~_~

         3.      编写简单的hello_world测试代码测试是否可通

                  注意:确认开发板运行的内核和源码一致

                   测试代码很简单,是从linux设备驱动上扒下来的,只是在加载和卸载时弹出消息.

                   代码如下:

#include <linux/init.h>
#include <linux/module.h>


//#define GPKDAT 

MODULE_LICENSE("GPL");
MODULE_AUTHOR("jefby");
static int __init hello_init(void)
{
	printk("Tiny 6410 hello module init.\n");
	return 0;
}

static void __exit hello_exit(void)
{
	printk("Tiny 6410 leds module exit.\n");
}


module_init(hello_init);
module_exit(hello_exit);

其中Makefile如下:

ifneq ($(KERNELRELEASE),)
	obj-m := hello.o
else
	KERNELDIR ?= /opt/FriendlyARM/mini6410/linux/linux-2.6.38
	PWD := $(shell pwd)
default:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
	rm -rf *.ko *.o *.order *~ *symvers *.mod.c
endif

4.编译并测试代码

在目录(在/opt/FriendlyARM/mini6410/linux/rootfs_qtopia_qt4中)下make然后按第2步所示挂载到开发板上运行,具体如下:

>cd /mnt

>cd hello

>insmod ./hello.ko@加载hello驱动模块,会弹出消息如下图1所示

>lsmod @此时可以看到hello模块已经被加载到内核上了,如下图1所示

>rmmod@删除模块,此时会打印消息如下图所示


图1

5.如此基本流程已经通了,以后可以按顺序开发字符、块和网络驱动了!!!

 

Linux下驱动开发之二(LED驱动)-------Tiny6410

裸机下控制LED灯非常方便,只需要配置好GPIO引脚功能,然后向GPIO引脚映射的内存地址处写入数据即可,但linux下驱动就不那么简单了,需要结合字符设备驱动的架构,然后将功能实现添加进去,笔者参考...
  • jefbai
  • jefbai
  • 2013年12月02日 21:45
  • 1192

Linux驱动开发之三----按键驱动(Tiny6410)

Linux内核版本:2.6.38 编译器:arm-linux-gcc-4.5.1 有了操作系统后,对于中断的处理比较简单,因为操作系统已经为你搭建好了中断体系结构,并且对它进行了初始化,而普通的程...
  • jefbai
  • jefbai
  • 2013年12月04日 14:21
  • 1507

Linux驱动开发----块设备驱动(内存模拟)Tiny6410

写了好久的字符设备驱动,是时候看下块设备驱动程序设计方法了,块设备驱动和字符设备不同,字符设备是直接和虚拟文件系统进行交互,而块设备驱动则是通过块缓冲/调度层间接和虚拟文件系统交互;块设备驱动数据访问...
  • jefbai
  • jefbai
  • 2013年12月18日 00:11
  • 1052

Tiny6410驱动开发心得(一)

工具: 1.光盘A中linux-2.6.38-20150708.tgz 2.交叉编译器arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 3.tiny6410开发板(自带的...

搭建tiny6410驱动开发环境_ftp服务器

http://download.csdn.net/detail/dl0914791011/4747991 点击打开链接

①tiny4412 Linux驱动开发之蜂鸣器

本次主要是通过讲解蜂鸣器的开发来讲述驱动开发的流程,平台是三星猎户座4412. 本次使用的是板载蜂鸣器为有源蜂鸣器,在这里我们先看电路图: 从电路图中我们可以看出我们的电平信号会控制NPN...

②tiny4412 Linux驱动开发之KEY

今天写一下按键驱动,本次并没有用输入子系统,但仍然不适合新手直接学,建议先看一下其他人写的按键驱动,然后再看这个,本博文主要是为了复习一下之前的知识. 硬件平台:tiny4412(Cortex A9...

s3c6410 Linux 驱动开发环境搭建

s3c6410 Linux 驱动开发环境搭建 —— 既然你是做Linux开发的,你还用虚拟机?         很多人都在win下做开发,于是SD_writer.exe之类的烧写工具“大行其道”,...

Linux驱动开发--S3C6410GPIO的配置

S3C6410的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制G...

Linux驱动程序开发之三----按键驱动(Tiny6410)

在Linux驱动程序开发之三----按键驱动(Tiny6410)博文中讨论了使用中断来实现按键驱动,毫无疑问,中断方式效率相当高,但是在此之前,CPU要想获知按键的状态都是通过查询方式来实现的,查询方...
  • mish84
  • mish84
  • 2014年06月18日 11:36
  • 332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下驱动开发之一-------Tiny 6410
举报原因:
原因补充:

(最多只允许输入30个字)