简单的android驱动--helloworld
- 首先进入源码目录下
kernel\drivers\
创建自己的驱动文件夹如kernel\drivers\hello
- 进入hello文件夹,创建三个文件
hello.c``Kconfig``Makeflie
- 分别是.c的驱动和配置文件,其中hello.c的代码如下
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/delay.h>
static int __init hello_init(void)
{
int i;
for(i=0;i<=10;i++)
{
printk(KERN_ALERT"~~~~~~~~~~~~~~~~~~~~~~~~Hello world~~~~~~~~~~~~~~~~~~~~~~~~ %d\n",i);
mdelay(1000);
}
return 0;
}
static void __exit hello_exit(void)
{
printk("Exit Hello world\n");
}
subsys_initcall(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("HraychQJ");
MODULE_DESCRIPTION("hello world");
MODULE_LICENSE("GPL");
这段代码实现的功能是,在启动时连续打印10条helloworld
- 配置文件如下
Kconfig
config HELLO
tristate "Hello world"
default n
Makefile
# LED Core
obj-y += hello.o
- 注意添加驱动还要修改上层配置文件,在drivers目录下找到Kconfig和Makefile文件,添加如下代码
Kconfig source "drivers/hello/Kconfig"
Makefile obj-y += hello/
- 命令行进入kernel目录下,运行
make menuconfig
,选择Device Drivers选项,再选择列表中最后一行helloworld选项,配置y编译进内核,保存退出。 - 重新编译android,烧入开发板即可
如果烧写完成后发现并没有开机打印helloworld,检查hello文件夹下是否生成了.o文件,没有生成的话说明没有编译进内核。
- ubuntu16的解决方式是删除当前gcc,重新安装4.8版本。
- 卸载重装GCC参考卸载gcc并重新安装gcc
另附 如何查看串口打印log
- 将板子上的rx2和tx2接出到转串口小版上,再随意接出一个3.3v的电源和gnd脚,将转串口usb插入pc端。
windows下使用putty可查看板子的log信息。
- 下载putty打开,Connection type选择Serial(串口选项)
- Serial line填当前设备识别到的串口号,可以在设备管理器中查看,如COM1、COM2、COM3。
- Speed设置为1500000,为板子默认的通讯波特率,其他设置不变,点击Open连接成功。