一.编写helloworld.c程序
驱动框架如下
二.Makefile文件编写如下
以上代码是没问题的,但在编译的时候出现init.h文件不存在的情况
最后发现出错原因在于我使用的是arm-none-linux-gnueabi-gcc的指令,应该使用make指令的!!
交叉工具链和Makefile文件的概念
交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能
运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,
虽然两个平台用的都是Linux系统。
命名规则
举例如下
通过make命令出来的结果如下
其中helloworld.ko(已链接其它头文件)为ARM所需的可执行文件
接下来便是在ARM板上跑起来
首先将SSH与虚拟机进行连接,将helloworld.ko文件拷贝到本机上,再利用U盘将驱动文件转移到ARM板上
使用命令将U盘挂在linux上:mount /dev/sda1 /mnt/udisk (注意:如果没有udisk文件需要自己新建一个)
挂载之后即可看到U盘里的驱动程序了
1.insmod helloworld.ko
2.lsmod
3.rmmod helloworld
可看到驱动程序打印出程序中的字符串