码迷,mamicode.com
首页 > 其他好文 > 详细

再战树莓派内核编译

时间:2018-02-14 13:24:29      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:文件   安装   shu   测试   href   ken   time   mil   速度   

最近想学习ARM9,板子还没到,先拿树莓派体验一下,以前看教程编译过一次,这一次想写的更加详细一点。

我不是技术的生产者,我只是技术的搬运工。

以下所有知识均来至网络上的高手分享的。

所有链接如下:

 

 

感谢前辈们的无私分享。

 

说一下用到的所有软硬件。

操作系统:Ubuntu15.04(64) win7(64)

树莓派:B+,Raspbian

FileZilla

 

 

开始:先看看树莓派IP

技术分享图片

先看一下树莓派上要做的:

先烧好系统,把配置文件 复制到 /home/pi 路径下,顺便看看内核版本。

uname -a

sudo cp /proc/config.gz .

技术分享图片

树莓派上要做的就这些,

看下Ubuntu 要做的 (用的最新版本 15.04 所以有些问题要解决)

先下载 树莓派 的 源码、工具和固件。

以下操作均在 root 权限下进行 注意 路径!!

在 /home/你的用户名 创建文件夹 名称自定

mkdir rpi

cd rpi

git clone git://github.com/raspberrypi/firmware.git PRiFirmware 固件

git clone git://github.com/raspberrypi/tools.git RpiTools 工具

wget https://github.com/raspberrypi/linux/archive/rpi-3.18.y.tar.gz

源码 刚才我们看到我们烧写的镜像也是3.18的 所以这里也下载3.18的

 

技术分享图片

技术分享图片

技术分享图片

所有的工具源码下载完毕后,解压下载的源码

tarxvfz rpi-3.18.y.tar.gz

顺便换个名字

mv rpi-3.6.y RpiLinux

接下来把刚才备份的 配置文件 config.gz 复制到 Ubuntu上来

192.168.1.31 是我的树莓派IP

scp -p pi@192.168.1.31:config.gz /home/liu/rpi/RpiLinux

下载后解压一下

zcat config.gz > .config

技术分享图片

至此准备工作就差不多了

 

下面还要配置或者安装一下 编译必须的 库 因为Ubuntu是64位的

先安装一下 32位的 一些库

用来解决

arm-bcm2708hardfp-linux-gnueabi- menuconfig 找不到命令的错误

 

sudo apt-get install lib32z1 lib32ncurses5

 

然后解决 curses.h:No such file or directory 问题

安装 Ncurses

 

sudo apt-get install libncurses5-dev

技术分享图片

 

 

所有准备工作完毕 可以编译内核了

先看看配置是不是正确

 

make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- menuconfig

 

技术分享图片

 

技术分享图片

技术分享图片

 

 

 

 

 

 

 

编译的时候 顺便 添加一内核调用,然并卵 我也不知道具体操作但是体验一把 还是很必要的

/*****************************************************************************/

不需要的 跳过 这些

在RpiLinux/arch/arm/kernel/目录下新建mysyscall.c文件,输入以下内容

技术分享图片

技术分享图片

/arch/arm/kernel/calls.S中添加新的系统调用,

这里我替换的是原本为sys_ni_syscall的0×900000+223号系统调用,

这是因为223号是内核默认未使用的(/*Demo_liu*/)

技术分享图片

技术分享图片

 

 

修改arch/arm/kernel/目录下的Make?le文件,在obj-y后面添加mysyscall.o,

技术分享图片

 

技术分享图片

不需要的 跳过这些

/*****************************************************************************/

 

 

下面内核编译开始

 

make ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- -j4

 

-j4 开启线程编译 加快编译速度

技术分享图片

大概 30分钟

技术分享图片

 

编译结束

查看一下

zImage 就是我们所编译获得的文件。zImage 是 Compressed kernel image 文件,要转换为 kernel.img 还需要进一步处理。

 

cd ../RpiTools/mkimage/

./imagetool-uncompressed.py ../../RpiLinux/arch/arm/boot/zImage

 

可以看到当前目录中多了kenrel.img文件

 

新的Kernel要正确运行,还需要编译所需的module,主要对应"/lib"目录下的内容。编译时,使用"INSTALL_MOD_PATH"参数指定目标路径。

 

cd ../..

mkdir modules

cd RpiLinux/

make modules_install ARCH=arm CROSS_COMPILE=../RpiTools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi- INSTALL_MOD_PATH=../modules

 

技术分享图片

 

技术分享图片

 

树莓派断电 把内存卡 插到Ubuntu 的电脑上

挂载 SD卡

先看一下 文件系统

df –h

 

sudo mkdir /media/agu/SD

sudo mount /dev/sdb2 /media/agu/SD/

sudo umount /media/agu/SD

技术分享图片

 

 

 

 

 

备份 Firmware

升级RPi的kernel、Firmware、lib

 

cd ..

mkdir backup

sudo mount /dev/sdb1 /media/agu/SD/

cd /media/agu/SD/

mv *.elf *.bin /home/liu/rpi/backup/

 

 

sudo cp /home/liu/rpi/RpiTools/mkimage/kernel.img kernel_new.img

cd /home/liu/rpi/RPiFirameware/boot

cp bootcode.bin fixup.dat fixup_cd.dat start.elf /media/agu/SD/

cd ../hardfp/opt/

sudo umount /media/agu/SD

sudo mount /dev/sdb2 /media/agu/SD/

将挂载点换成SD卡的第2分区,即"/"分区。

 

sudo cp -r vc/ /media/agu/SD/opt/

将新的vc库复制到SD卡,因为之前选用的工具链是hardfp(硬浮点),所以现在所选用的vc库也是硬浮点的版本(RPiFramware/hardfp/opt/vc)。

 

cd ../../..

sudo cp -r modules/lib /media/agu/SD/

技术分享图片

 

 

 

 

 

 

下面修改一下 kernel_new. 的 文件名 替换一下

技术分享图片

 

插到树莓派 运行 看看 内核 版本

技术分享图片

自此内核编译成功。

下面我们看一下 刚才插入的 调用

编写测试程序调用新的系统调用:

 

 

技术分享图片

技术分享图片

看到调用成功 我测试了两次 所以有两个

 

 

顺便在Ubuntu 上 编译个模块 试试

写一个最简单的内核模块 hello.c, 这个内核只会在加载的时候输出 helo,word,移除时输出goodbye

在树梅派上找个地方新建一个目录,创建文件hello.c:

技术分享图片

技术分享图片

 

创建Makefile文件:

技术分享图片

 

编译:

技术分享图片

传到树莓派

技术分享图片

 

运行:

技术分享图片

技术分享图片

 

 

结束 END

再战树莓派内核编译

标签:文件   安装   shu   测试   href   ken   time   mil   速度   

原文地址:https://www.cnblogs.com/liuyunxiang/p/8448184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!