匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“Firefly-rk3288 build linux”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
Firefly-rk3288 build linux
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
=编译firefly linux-SDK系统= <div style="color:#F00; font-size: 1.1em">注意:此章节操作均在我们提供的资料光盘以及vmware ubuntu18.04进行过测试,确保其可用。</div> ==获取源码== *下载源码 使用浏览器打开 https://pan.baidu.com/s/14Zpf2-QSQYxhqM9OcxyuAQ 保存资料光盘中的 Firefly-sdk_v1 到自己的网盘中,让后进行下载。 *解压源码 使用FileZilla或其它软件上传下载后的<code>linux-sdk</code>源码包,让后通过7z工具进行解压。 7z x linux3288-sdk.7z.001 *同步源码 repo sync -c 如果提示<code>repo</code>命令不存在,请使用手动下载安装,或者使用我们提供的。 ==编译前配置:== 在device/rockchip/rk3288/目录下,选择对应的板型的配置文件,本文例子:确定选用rk3288/firefly-rk3288.mk *firefly-rk3288.mk 相关配置介绍: **Target arch 指定编译目标架构,这里指定 32位ARM架构 export RK_ARCH=arm **Uboot defconfig 指定 u-boot配置文件 export RK_UBOOT_DEFCONFIG=firefly-rk3288 **Kernel defconfig 指定kernel配置文件 export RK_KERNEL_DEFCONFIG=firefly_linux_defconfig **Kernel dts 指定使用那个dts文件 export RK_KERNEL_DTS=rk3288-firefly ** parameter for GPT table 指定系统镜像的分区表 export RK_PARAMETER=parameter-ubuntu.txt **rootfs image path 根文件系统生成的路径 export RK_ROOTFS_IMG=buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.$RK_ROOTFS_TYPE ==配置Rootfs== 源码中默认的Linux rootfs是buildroot,如果rootfs使用buildroot,跳过此步,如果用户需要使用Ubuntu,需要通过以下步骤来配置: #下载根文件系统:ubuntu16.04 根文件系统(32位),放到SDK路径下; #该文件为7z压缩包,解压该文件; 7z x ubuntu1604armhf-rootfs.7z #完成上述后,得到ubuntu1604armhf-rootfs.img(2.6G),拷贝根文件系统到rootfs目录下; cp ubuntu1604armhf-rootfs.img rootfs/ #在device/rockchip/rk3288/firefly-rk3288.mk中, 将“# rootfs image path”修改为: export RK_ROOTFS_IMG=rootfs/ubuntu1604armhf-rootfs.img ===配置板型=== 根据各个板型和配件的差别,内核中使用的DTS也有差别,如果是标配板型,跳过此步,如果板型有VGA或者LCD等支持,需要在.BoardConfig.mk中做对应的修改。 Firefly-rk3288 * 标配: export RK_KERNEL_DTS=rk3288-firefly * 带VGA: export RK_KERNEL_DTS=rk3288-firefly-vga ==编译配置文件:== ./build.sh firefly-rk3288.mk 运行完上述脚本后,在device/rockchip/目录下,生成.BoardConfig.mk 软链接 device/rockchip/rk3288/firefly-rk3288.mk *完全编译 完全编译运行如下命令,包含 kernel 、uboot、buildroot、recovery。 如果用户使用buildroot,可以使用完全编译。如果用户使用Ubuntu系统,则不需要使用完全编译。 ./build.sh 注意:该脚本默认编译<code>buildroot</code>根文件系统,若用户需要用的根文件系统是Debian或者Ubuntu16.04时,<br> 请!先!将!对应的根文件系统准备好,不然在执行该build.sh脚本时,会在整理分区镜像、打包固件时出错,这部分操作在以下的'''部分编译'''中'''编译rootfs'''有详细说明,按照操作执行即可! <code>build.sh</code>脚本运行完成后,会将分区镜像和统一固件update.img放在<code> rockdev/ </code>目录下,同时创建IMAGE/目录备份。 ==模块化编译:== ===编译u-boot:=== ./build.sh uboot ===编译kernel:=== ./build.sh kernel ==编译rootfs:== 本SDK支持三种根文件系统,分别是buildroot、Debian、Ubuntu; ===编译Buildroot系统镜像=== 编译 Buildroot 环境搭建所依赖的软件包安装命令如下: <syntaxhighlight lang="bash"> sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \ gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools \ autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash \ patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev \ libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib \ libc6:i386 libssl-dev texinfo liblz4-tool genext2fs </syntaxhighlight> 搭建环境完成后,编译buildroot,执行如下命令: ./build.sh rootfs ===编译Ubuntu16.04=== *1.下载根文件系统:ubuntu16.04 根文件系统(32位),放到SDK路径下; *2.该文件为7z压缩包,解压该文件; 7z x ubuntu1604armhf-rootfs.7z *3.完成上述后,得到ubuntu1604armhf-rootfs.img(2.6G),拷贝根文件系统到rootfs目录下; cp ubuntu1604armhf-rootfs.img rootfs/ 补充说明: ./build.sh --help ====USAGE: build.sh modules==== uboot -build uboot kernel -build kernel rootfs -build default rootfs, currently build buildroot as default buildroot -build buildroot rootfs yocto -build yocto rootfs, currently build ros as default ros -build ros rootfs debian -build debian rootfs pcba -build pcba recovery -build recovery all -build uboot, kernel, rootfs, recovery image cleanall -clean uboot, kernel, rootfs, recovery firmware -pack all the image we need to boot up system updateimg -pack update image sdbootimg -pack sdboot image save -save images, patches, commands used to debug default -build all modules BoardConfig -select the corresponding BoardConfig.mk file recovery分区在Ubuntu系统中不会用到,若有需要,可运行如下命令: ./build.sh recovery ==打包固件== ===parameter分区表=== parameter.txt文件中包含了固件的重要信息,如以rk3288为例: 路径:device/rockchip/rk3288/parameter-ubuntu.txt FIRMWARE_VER: 8.1 固件版本 MACHINE_MODEL:rk3288 固件板型 MACHINE_ID:007 MANUFACTURER:RK3288 MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: 3288 CHECK_MASK: 0x80 PWR_HLD: 0,0,A,0,1 TYPE: GPT 分区类型 CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00010000@0x0000a000(boot),0x00010000@0x0002a000(backup),-@0x0005a000(rootfs:grow) uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9 CMDLINE属性是我们关注的地方,以uboot为例 0x00002000@0x00004000(uboot)中0x00004000为uboot分区的起始位置0x00002000为分区的大小,后面相同,用户可以根据自己需要增减或者修改分区信息,但是请最少保留uboot,trust,boot,rootfs分区,这是机器能正常启动的前提条件。 *分区介绍: uboot 分区: uboot编译出来的 uboot.img. trust 分区: uboot编译出来的 trust.img misc 分区: misc.img开机检测进入recovery模式.(可省略) boot 分区: 编译出来的 boot.img包含kernel和设备树信息. recovery 分区: 烧写 recovery.img.(可省略) backup 分区: 预留,暂时没有用。后续跟 android 一样作为 recovery 的 backup 使用. oem 分区: 给厂家使用,存放厂家的 app 或数据,只读,代替原来音箱的 data 分区,挂载在/oem 目录.(可省略) rootfs 分区: 存放 buildroot 或者 debian 编出来的rootfs.img只读. userdata 分区: 存放app临时生成的文件或者是给最终用户使用。可读写,挂载在/userdata目录下.(可省略) 在parameter.txt文件中,仅仅保留了5个不可缺少的分区。 注意:若发现根文件分区大小异常时,执行如下命令: resize2fs /dev/mmcblk2p5 ===package-file=== package-file文件用于打包统一固件时确定需要的分区镜像和镜像路径,同时它需要与parameter.txt文件保持一致。 路径tools/linux/Linux_Pack_Firmware/rockdev/目录下,以package-file为例: # NAME Relative path # #HWDEF HWDEF package-file package-file bootloader Image/MiniLoaderAll.bin parameter Image/parameter.txt trust Image/trust.img uboot Image/uboot.img boot Image/boot.img rootfs:grow Image/rootfs.img backup RESERVED ===打包=== 整理分区镜像到rockdev/目录下 ./mkfirmware.sh 提示:在运行./mkfirmware时,可能会遇到如下报错: error: /home/ljh/proj/linux-sdk/buildroot/output/rockchip_rk3288_recovery/images/recovery.img not found! 表示recovery分区没有找到,类似的如oem.img、userdata.img,上文提到,这些属于可省略分区镜像,可以不用理会。 *整合统一固件 ./build.sh updateimg 注意:每次打包固件前,需要运行mkfirmware.sh脚本更新rockdev/下的分区镜像 [[Category:ROCKCHIP]][[Category:Rk3288]] [[Category:LinuxKernel4.x]]
返回至
Firefly-rk3288 build linux
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志