当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Ubuntu嵌入式开发入门系列教程之一 《内核编译》
帖子发表于 : 2016-11-04 11:51 

注册: 2016-11-03 11:19
帖子: 2
系统: win7
送出感谢: 0 次
接收感谢: 0 次
很多朋友在拿到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交叉编译工具链,下载链接为:
http://pan.baidu.com/s/1sl7v1EX
    下载好放到指定目录~/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
git clone https://github.com/T-Firefly/firefly-3.14-kernel

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

    四、编译内核
    进入内核源码目录:
代码:
cd ~/UbuntuDev/firefly-3.14-kernel/

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

    设置交叉编译器:
代码:
export CROSS_COMPILE=./../toolchain/arm-eabi-4.6/bin/arm-eabi-

    载入Firefly RK3288开发板内核配置:
代码:
make firefly-rk3288_defconfig

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

    正常编译结束后,会在arch/arm/boot/目录生成zImage文件.
    编译DTB文件。dtb是.dts被DTC编译后的二进制格式的Device Tree描述,可由Linux内核解析。通常在我们为电路板制作NAND、SD启动image时,会为.dtb文件单独留下一个很小的区域以存放之,之后bootloader在引导kernel的过程中,会先读取该.dtb到内存。
代码:
make firefly-rk3288.dtb

    生成kernel.img文件
代码:
cat arch/arm/boot/zImage arch/arm/boot/dts/firefly-rk3288.dtb > zImage-dtb
mkkrnlimg -a zImage-dtb kernel.img

    当然你也可以这样去编译:
代码:
make -j8 firefly-rk3288.img

    编译出来的firefly-rk3288.img文件和上述步骤编译出来的是一样的。
    请不要问题我为什么要介绍这种编译方式,因为我是活雷锋。

    编译并安装模块,先在kernel目录创建modules_install目录,用于存放编译好的内核模块。
代码:
mkdir modules_install
make INSTALL_MOD_PATH=./modules_install modules_install


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


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Ubuntu嵌入式开发入门系列教程之一 《内核编译》
帖子发表于 : 2017-07-09 0:36 

注册: 2017-07-09 0:34
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
:Haha nnnnnnnnnnnnniiiiiiiiiiuuuuuuuuuu


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译