firefly 单独编译linux,Firefly Ubuntu开发入门之(1)自已编译内核

本帖最后由 牛头 于 2016-9-24 17:34 编辑

很多朋友希望在拿到Firelfy发布的Ubuntu镜像后,会想自己加驱动或自己编译的内核等等,但做的过程中难免出现各种各样的问题。网上各种教程都不那么切题,讲解都不是那么细致,让人感到迷茫,又或许是无助。Firefly团队努力地在帮助开发者打破此困局,整理策划了系列教程,让开发者可以通过Firefly开源平台可以快速上手开发,并快速打造出成熟产品。

“创新 开源 分享 定制”是我们的口号,我们一直在努力。

那么请跟着我的脚步上路吧!

一、Linux主机安装内核开发包

Linux内核编译需要主机安装一些开发包,具体的开发工具有那些可以通过包名自行补脑。安装过程中需要留意开发包是否都有安装成功,若有开发包安装失败可以单独再重新安装。

sudo apt-get install build-essential lzop libncurses5-dev libssl-dev

如果使用的是 64 位的 Ubuntu,还需要安装:

sudo apt-get install libc6:i386

二、安装交叉编译工具链

纯Linux开发的朋友可以通过Github单独下载交叉编译工具链,内核编译用到arm-eabi-4.6交叉编译工具链,下载链接为:

下载好放到指定目录~/UbuntuDev/toolchain后解压:

mkdir ~/UbuntuDev/toolchain

cd ~/UbuntuDev/toolchain

tar -xvf arm-eabi-4.6.tar.gz

如果是android开发者,可以直接按android SDK编译的方法编译SDK里的内核,android SDK里自带交叉编译工具链等。

三、下载Firefly Linux内核源代码

从Firefly github仓库下载kernel源代码:

cd ~/UbuntuDev

至此主机安装了开发包,同时内核源码和交叉编译工具链都准备完毕。可谓是万事具备,只欠编译!GO!

四、编译内核

进入内核源码目录:

cd ~/UbuntuDev/firefly-3.14-kernel/

设置ARCH环境变量,告诉编译器目标平台的架构:

export ARCH=arm

设置交叉编译器:

export CROSS_COMPILE=./../toolchain/arm-eabi-4.6/bin/arm-eabi-

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt1.png (40.95 KB, 下载次数: 282)

2016-9-18 10:40 上传

载入Firefly RK3288开发板内核配置:

make firefly-rk3288_defconfig

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt7.png (11.72 KB, 下载次数: 259)

2016-9-18 10:40 上传

编译zImage,zImage是可以加载执行的二进制代码:

make -j4 zImage

正常编译结束后,会在arch/arm/boot/目录生成zImage文件:

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt2.png (194.69 KB, 下载次数: 270)

2016-9-18 10:40 上传

编译DTB文件。dtb是.dts被DTC编译后的二进制格式的Device Tree描述,可由Linux内核解析。通常在我们为电路板制作NAND、SD启动image时,会为.dtb文件单独留下一个很小的区域以存放之,之后bootloader在引导kernel的过程中,会先读取该.dtb到内存。

makefirefly-rk3288.dtb

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt3.png (12.08 KB, 下载次数: 276)

2016-9-18 10:40 上传

生成kernel.img文件

cat arch/arm/boot/zImage arch/arm/boot/dts/firefly-rk3288.dtb > zImage-dtb

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt4.png (19.55 KB, 下载次数: 260)

2016-9-18 10:40 上传

mkkrnlimg -a zImage-dtb kernel.img

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt5.png (48.06 KB, 下载次数: 264)

2016-9-18 10:40 上传

当然你也可以这样去编译:

make -j8 firefly-rk3288.img

编译出来的firefly-rk3288.img文件和上述步骤编译出来的是一样的。

请不要问题我为什么要介绍这种编译方式,因为我是活雷锋。

编译并安装模块,先在kernel目录创建modules_install目录,用于存放编译好的内核模块。

mkdir modules_install

make INSTALL_MOD_PATH=./modules_install modules_install

6e6f20e78dcac5fbbb063dc3818b2e47.gif

jcjt6.png (19.33 KB, 下载次数: 287)

2016-9-18 10:40 上传

现在的kernel和modules都已经编译完成,但还不能直接烧录到开发板运行,下一篇再讲如何让编译出来的内核在开发板上运行起来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值