青与鱼博客

@青与鱼

October 10th 2019 / 玩玩编程

ARM汇编学习--1

每行语句由3个可选部分

label:instruction@comment

label表示地址位置
以:结尾的,都认为是个标号
instruction表示汇编指令
@表示后面是注释
comment为注释内容


阅读更多......

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

阅读更多......
x