青与鱼博客

@青与鱼

October 9th 2019 / 玩玩编程

linux设备驱动--2

内核驱动程序也可以接收参数
先看效果图,根据参数打印字符串N次

直接上代码,都有注释

#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
//许可证
MODULE_LICENSE("Dual BSD/GPL");

static char *FLAG="hellop";

static char *message="hello i am driver!";

static int many=1;


//启动代码
static int hellop_init(void)
{
    int i=0;
    for(; i<many; i++)
        printk(KERN_ALERT "%s :%d %s\n",FLAG,i,message);
    return 0;
}

//退出代码
static void hellop_exit(void)
{
    printk(KERN_ALERT "%s :Goodbye, cruel world\n",FLAG);
}

//留给系统的启动接口
module_init(hellop_init);
//留给系统的卸载接口
module_exit(hellop_exit);
//留给系统的参数接口
module_param(many,int,S_IRUGO);
//留给系统的参数接口
module_param(message,charp,S_IRUGO);

October 8th 2019 / 玩玩编程

linux设备驱动--1

既然说道Linux设备驱动,那也不用多介绍了,直接开始吧。
首先是Makefile
这个是在linux下编译多个文件的配置文件,了解一下就行了
Makefile实例:


#如果已经定义KERNELRELEASE,说明是从内核调用的,所以可以直接用内建语句
ifneq ($(KERNELRELEASE),)
 obj-m := hello.o
else
#否则就要调用内核构造系统
    KERN_DIR ?= /usr/src/linux-headers-$(shell uname -r)/
    PWD := $(shell pwd)
default:
    $(MAKE) -C $(KERN_DIR) M=$(PWD) modules
endif
#清除中间产生的文件
clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

阅读更多......

September 15th 2019 / 玩玩编程

调度系统编写有感

在无线信号不好的情况下,注意丢包标识,不然数据可能不是实时的。
多条件判定,尤其是物料对接。

皖ICP备16001584号-2
x
皖ICP备16001584号-2