kdir测试软件,[OK210开发板体验]入门篇(4)编程入门(NFS登录、驱动入门)

前面分别介绍了

【OK210开发板体验】的第一篇:开箱验板

【OK210开发板验】的第二篇:板载资源

【OK210开发板体验】的第三篇:开发环境(软件安装,开发环境,烧写系统)

今天是【OK210开发板体验】的第四篇:编程入门的介绍,主要包括以下内容:

一 NFS环境配置及登录

二 驱动环境搭建三 下阶段安排2015122316414701398.gif一 NFS环境配置及登录

还记得在第三篇中介绍NFS的搭建吗?NFS主要用来通过网线来实现代码的上传,无需通过手动的方式将程序烧写到SD卡中,方便程序的开发及调试,这节简单回顾一下NFS的搭建过程,然后通过实际操作来演示NFS的登录。

(一)NFS搭建:

1 在Ubuntu下的设置

1)NFS服务安装

Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序,执行如下命令:

sudo apt-get install nfs-kernel-server

ps: (安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)

2)NFS服务配置

在终端执行如下命令,打开配置文件

sudo vim /etc/exports

在文件的最下面输入如下

/home/ok210/nfs *(rw,sync,no_root_squash)

然后保存退出。

ps:

/home/ok210/nfs表示共享目录,即我们在上节创建的nfs目录,用来存放调试的程序代码

*:表示主机(NFS客户端)的ip地址(本机终端ifconfig命令就可以获得本机的ip地址),在此表示任意的IP的地址

rw:读/写权限,只读权限的参数为ro;

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。

no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有root的权限。3)重新编译内核

ok210默认的Linux内核是不支持NFS服务器的,所以需要重新编译内核,选择其支持NFS服务,具体见上节的内核烧写部分。

2 在OK210下的设置

1)设置IP地址

使用NFS服务器,首先是使Ubuntu和OK210内核支持NFS服务;其次是使两设备相互可以ping通。默认一般两设备的IP是ping不通的。现假设Ubuntu的IP(使用ifconfig查看)地址为192.168.1.102,那么需要将OK210的IP地址设置为同一网段,即可设置为192.168.1.x(x表示除102,1以外的其他数值,但要小于255)。

打开串口终端,输入如下命令进行设置ifconfig down

ifconfig eth0 192.168.1.113 netmask 255.255.0.0

route add default gw 192.168.1.1

ifconfig upps:也可将上述代码写到板子/etc/init.d/rcS文件的最下面,这样就不用每次挂载时执行上述代码,而是OK210在启动时,自动挂载。

2)挂载NFS

首先使用网线连接OK210和电脑,使Ubuntu和OK210能够实现网络互联,首先检查是否可以ping通,比如出现如下信息,说明可以ping通.

2015122316416786290.jpg

接着执行命令:

mount -n -o nolock 192.168.1.102:/home/ok210/nfs /mnt

3)NFS测试

在串口终端进入/mnt目录,即可以看到在Ubuntu的/home/ok210/nfs下的文件,如下所示,即表示NFS服务成功设置.

2015122316419317108.jpg

2015122316414701398.gif

驱动环境搭建

驱动的编写,大致分为两个过程,第一个过程为测试阶段,即为某一具体的设备,添加必要的驱动模块,为了节省编译时间,需要将代码单独放在一处,在编译时,只需要要调用内核的头文件即可;第二个过程为布置阶段,即为某一具体设备,添加完整、可靠的驱动模块,即该过程将驱动模块编译到内核镜像文件中,它需要将驱动模块的代码,添加到内核源码树中,下面将逐一介绍。

(一)阶段一

1

新建一目录,并编写测试代码

1.cd /home/ok210/nfs/drivers/demo

2.sudo vim demo.c

复制代码

1.// /home/ok210/nfs/drivers/demo/demo.c

2.#include "linux/init.h"

3.#include "linux/module.h"

4.

5.static int hello_init(void)

6.{

7.printk(KERN_ALERT"Hello World linux-driver-module\n");//注意,必须是KERN_ALEAT及以上级别,不然不会打印

8.return 0;

9.}

10.

11.static int hello_exit(void)

12.{

13.printk(KERN_ALERT"Goodbye linux-driver-module\n");

14.return 0;

15.}

16.

17.module_init(hello_init);

18.module_exit(hello_init);

19.

20.MODULE_LICENSE("GPL");

21.MODULE_AUTHOR("gjianw217@163.com");

复制代码

ps:

(1)mkdir的-p选项允许你一次性创建多层次的目录,而不是一次只创建单独的目录。

(2)init.h定义了驱动的初始化和退出相关的函数,几乎每个linux驱动都有个module_init(与module_exit的定义在Init.h (\include\linux) 中)。

(3)module.h定义了内核模块相关的函数、变量及宏。如上面的MODULE_LICENSE("GPL")和 MODULE_AUTHOR("gjianw217@163.com")。其MODULE_LICENSE指定许可,必须指定;MODULE_AUTHOR,声明作者;还有MODULE_DESCRIPTION,对这个模块作一个简单的描述,这个描述是"human-readable"的;MODULE_VERSION,模块的版本;MODULE_ALIAS,模块的别名;MODULE_DEVICE_TABLE,告诉用户空间这个模块支持什么样的设备等。2

添加编译文件

Makefile

sudo  vim Makefile

1.#demo Makefile

2.ARCH=arm

3.CROSS_COMPILE=/home/ok210/arm-2009q3/bin/arm-none-linux-gnueabi-

4.APP_COMPILE=/home/ok210/arm-2009q3/bin/arm-none-linux-gnueabi-

5.#obj-m := app-drv.o

6.obj-m := demo.o

7.#KDIR := /path/to/kernel/linux/

8.KDIR := /home/ok210/android-kernel-samsung-dev/

9.PWD := $(shell pwd)

10.default:

11.make -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules

12.app:app.c

13.$(APP_COMPILE)gcc -o app app.c

14.clean:

15.$(MAKE) -C $(KDIR) M=$(PWD) clean

复制代码

ps:

(1)这个Makefile算是一个通用的模板,其中CROSS_COMPILE和APP_COMPILE=arm-linux-指定交叉编译器的位置,obj-m指定驱动模块的目标文件(如将驱动模块命令为app-drv.c,则此处应该为app-drv.o);KDIR指定内核的位置。

(2)当执行make时,进行内核模块的编译;当执行make app时,进行应用测试程序的编译;当执行make clean时,删除编译的过程文件。

3

编译并加载到板上

sudo make

4

驱动模块的测试

以上

3

步都是在

下执行的,接下来在

OK210

完成

。打开串口终端

SecureCRT

,进入

NFS

挂载目录,执行如下程序,

1.cd /mnt/drivers/demo/

2.insmod demo.ko

3.lsmod   demo.ko

4.rmmod demo.ko

复制代码

最后的结果如下所示,表明成功。2015122316521427472.png

下阶段安排

这样驱动模块的基本环境及驱动开发的基本流程介绍完毕,阶段二的介绍,参考附录部分。自此【OK210试用体验】入门篇的4篇博文已完成:

OK210

试用体验入门篇(

1

):开箱验板【

OK210

试用体验入门篇(

2

):板载资源

OK210

试用体验入门篇(

3

):开发环境(软件安装,开发环境,烧写系统)

【OK210

试用体验】入门篇(

4

):编程入门(

NFS接下来进行第二阶段的检验,即【

OK210

试用体验】功能篇,功能篇现打算从驱动入手,应用提现的原则进行。结合项目要求,主要从以下几个方面进行介绍:

(

1

)

LED

显示

(

2

)

Key

响应

(

3

)

ADC

采集

(

4

)

DS18B20

温度检测

(

5

)

IRAD

红外探测

(

6

)

PWM

驱动

(

7

)串口

通信

2015122316526710798.gif附录:

1将驱动代码按类型放到内核源码树相应目录下(drivers/demo/demo.c)

1.//driver/demo/demo.c

2.#include "linux/init.h"

3.#include "linux/module.h"

4.

5.static int hello_init(void)

6.{

7.printk(KERN_ALERT"Hello World linux-driver-module\n");

8.return 0;

9.}

10.

11.static int hello_exit(void)

12.{

13.printk(KERN_ALERT"Goodbye linux-driver-module\n");

14.return 0;

15.}

16.

17.module_init(hello_init);

18.module_exit(hello_init);

19.

20.MODULE_LICENSE("GPL");

21.MODULE_AUTHOR("lpj");

复制代码

2在当前目录下,分别添加编译文件在

driver/demo/Makefile

文件里,

1.#driver module demo

2.obj-$(CONFIG_HELLODRV) += hello.o

复制代码

在driver/demo/Kconfig文件里

1.menu USER_DEVICE_DRIVERS//4中可以看到它

2.config HELLODRV

3.tristate "Hello"

4.help

5.This is a demo driver programming.

6.endmenu

复制代码

3修改上层目录文件,将其添加到内核中在driver/Makefile文件里obj-$(CONFIG_HELLODRV)+=demo在文件里driver/Kconfig 里source drivers/demo/Kconfig在arch/arm/Kconfig文件里source "drivers/demo/Kconfig"4进行系统配置并编译make menuconfigmake5加载内核镜像文件到板上,使用命令检查lsmod dmesg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值