增加一个Linux系统调用[嵌入式系统]
l 实验要求:
修改RPi上的Linux源码,增加一个带参数的系统调用,具体如课内所讲
l 实验过程:
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 输出日志的末尾看到了预想的结果!