简单的android驱动-helloworld

简单的android驱动--helloworld

  • 首先进入源码目录下kernel\drivers\创建自己的驱动文件夹如kernel\drivers\hello
  • 进入hello文件夹,创建三个文件 hello.c``Kconfig``Makeflie
  • 分别是.c的驱动和配置文件,其中hello.c的代码如下
#include 
#include 
#include  
#include 

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连接成功。

你可能感兴趣的:(简单的android驱动-helloworld)