增加一个Linux系统调用[嵌入式系统]

l  实验要求:

修改RPi上的Linux源码,增加一个带参数的系统调用,具体如课内所讲

实验过程:

1、             从github上下载RPI源码,下载地址

https://github.com/raspberrypi/linux

2、             修改源码,进入linux 源码文件夹后,在arch/arm/kernel 添加mysyscall.c,

 

3、              

修改arch/arm/kernel文件夹下的call.S,我将自己的新系统调用加在了0x900000+378位置上:

 

修改 arch/arm/kernel 文件夹下的Makefile:

 

4、             将树莓派现在系统上的内核配置文件(/proc/config.gz)拷贝到源码目录下,命名为.config:  (这里我遇到了一个问题,sudo的权限居然还不够,必须进入超级用户才能成功执行。)

 

5、             设置两个后面要用到的环境变量

编译器

 

模块存放路径

 

6、             确保配置文件已经更新

make ARCH=arm CROSS_COMPILE=${ARMGCC} oldconfig

 

 

7、             编译内核以及安装模块

 

编译完成后继续安装模块

 

8、             接下来是安装新内核,将 arch/arm/boot/Image 拷贝到树莓派SD 卡的/boot 目录下,新内核命名为new.img

 

9、             修改 bootloader 配置文件,config.txt:将kernel_new.img 作为内核镜像。

#最后一条语句改为:kernel = new_kernel.img

 

10、       将安装完模块后的lib 目录全都拷贝到树莓派的/目录下,

 

11、       重启树莓派

uname –a查看当前内核版本号

12、       编译运行测试程序用dmesg查看日志文件中的输出情况

 

最后在dmesg 输出日志的末尾看到了预想的结果!

原文地址:https://www.cnblogs.com/zxRPI/p/3014154.html