树莓派实验四: 增加一个linux系统调用

一、实验目的

       探索RPI的内核

二、实验内容

       修改RPi上的Linux源码,增加一个带参数的系统调用。

 

三、主要仪器设备

       1. RPI 1个(配有电源线、组装塑料外壳、以及一根装用的串口线)

       2. 8G大小的SD卡 1张

       3. 操作系统为Windows7的笔记本电脑1台

 

 

 

四、操作方法和实验步骤

1. 下载并解压缩linux源代码到ubuntu桌面

       具体的下载地址为:

       https://github.com/raspberrypi/linux/archive/rpi-3.6.y.zip

        

         下图为解压缩后的桌面部分截图

 

二、 编写自己的系统调用

       进入linux-rpi-3.6.y/arch/arm/kernel,建立testcall.c文件

       内容如下

      

 

       修改makefile(在obj-y后面添加testcall.o)如下

 

       修改calls.h

 

 

三. 安装交叉编译器

 

用以下命令安装所需软件:

apt-get install gcc-arm-linux-gnueabi make ncurses-dev

 

查看编译器路径:

 

设置环境变量

 

若要进行配置则用以下命令进入如下图所示界面:

make ARCH=arm CROSS_COMPILE=${CCPREFIX} menuconfig

 

 

 

 

 

四、编译内核

 

用以下命令来编译内核,编译完后如下图所示

make ARCH=arm CROSS_COMPILE=${CCPREFIX} -j4

 

用以下命令编译模块,如下图所示

make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules

 

查看/arch/arm/boot路径下生成的Image

 

 

 

五、 树莓派配置新生成内核

      

       用scp将上面生成的img文件拷贝到树莓派/boot目录,并改名为testkernel.img

 

       并且在config.txt后加上kernel=testkernel.img,文件如下

……

Core_freq=250

Sdram_freq=400

Over_voltage=0

Kernel=testkernel.img

 

       把编译好的模块替换原来的lib

       第一步先创建一个临时文件存放模块


  设置一个环境变量方便安装   


  在linux-rpi-3.6.y目录下执行如下命令

  

       此时查看树莓派lib文件夹下将发现一条

      

Drwxr-xr-x 4 root root 4096 4月26 22:11 modules

       修改时间就是刚才

 

 

 

六、测试系统调用

       编写测试代码mytest.c如下

#define sys_testcall(){__asm__ __volatile__ ("swi 0x900000+223\n\t");}while(0)

 

#include <stdio.h>

 

Void main(){

     sys_testcall();

}

 

       编译代码

       gcc mytest.c -o mytest

 

       用dmesg查看内核日志,显示如下

……

   12.815243] bcm2835 ALSA chip created!

……

   27.224751] PPP generic driver version 2.4.2

……

  782.722509] my hello syscall!



 


       本次实验首先让我回顾复习了操作系统实验课上关于内核编译的一些问题,其次就是在树莓派板上将这些知识充分的利用发挥,受益匪浅!

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值