Firefly-RK3288学习笔记2-Linux开发

一、编译内核

1、准备工作

  (1)安装开发包

sudo apt-get install build-essential lzop libncurses5-dev libssl-dev
sudo apt-get install libc6:i386

(2)安装 mkbootimg 工具

git clone https://github.com/neo-technologies/rockchip-mkbootimg.git
cd rockchip-mkbootimg
make && sudo make install

(3)获取内核源码和安装交叉编译工具链

如果没有下载 SDK,则需要下载内核源码及 Android 的 arm-eabi-4.6 交叉编译工具链。

下载内核源码:

git clone https://bitbucket.org/T-Firefly/firefly-rk3288-kernel.git

内核下载之后的内容如下所示:

下载交叉编译工具链,内核编译用到arm-eabi-4.6交叉编译工具链,下载链接为:

 http://pan.baidu.com/s/1sl7v1EX

下载完成之后创建toolchain目录,并将交叉编译工具链拷贝到此目录下

解压文件

 sudo tar -xzvf arm-eabi-4.6.tar.gz 

2、编译内核

(1)编译内核映像

进入内核目录,设置ARCH环境变量,告诉编译器目标平台的架构; 设置交叉编译器。这两步需要一次执行,不然会报错

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

在内核源码目录里执行:

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

make firefly-rk3288-linux_defconfig

 编译

make -j8 firefly-rk3288.img

出现错误:

 进入Makefile,修改以下内容:

从中可以看出编译器的路径不正确,修改编译器的路径

 修改之后的路径:

 重新编译之后,编译成功。

(2)编译内核模块

在内核源码目录里执行:

make modules
mkdir modules_insatll
make INSTALL_MOD_PATH=./modules_install modules_install

内核模块是需要拷到根文件系统中即可:

3、创建 boot.img

(1)创建内存盘

内核启动时会加载内存盘作为初始的根文件系统,再加载实际的根存储设备,最后切换过去。因为开发板使用的是 eMMC 存储,不需要特别的驱动,因此实际上可以跳过此步。但内存盘可以做得非常灵活和强大,例如可以做多系统启动。

git clone https://github.com/TeeFirefly/initrd.git
make -C initrd

        initrd中包含了实现这个目标所需要的目录和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod工具。

在桌面或服务器Linux系统中,initrd是一个临时的文件系统。其生存周期很短,只会用作到真实文件系统的一个桥梁。

(2)打包内核和内存盘

将 kernel 和 initrd 打包成 boot.img:

Firefly官方发布的Ubuntu系统都是只有boot分区的,所以要将 kernel 和 initrd 打包成 boot.img,生成boot镜像用到了一个新工具mkbootimg,给mkbootimg增加可执行属性:

sudo mkbootimg --kernel arch/arm/boot/zImage --ramdisk ../initrd.img -o boot.img

产生的boot.img如下所示:

4、修改 parameter 文件

Linux 的根文件系统(RFS)可能在不同的分区或存储设备上(eMMC、TF 卡或 U 盘),所以需要在内核的参数中指定。修改 parameter 文件中的 CMDLINE 行:

5、烧写到设备

选择生成的 boot.img 和修改过的 parameter 文件,分别烧写到"boot" 和 "parameter" 分区,则可完成内核的更新。

参考资料:

https://jingyan.baidu.com/article/ff42efa9d39efec19e2202ad.html

https://jingyan.baidu.com/article/359911f5b8af4f57fe0306dc.html

发布了141 篇原创文章 · 获赞 194 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/kenjianqi1647/article/details/89055444
今日推荐