匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“100ask firefly-rk3288”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
100ask firefly-rk3288
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
*开发板购买地址: *资料光盘下载地址: https://pan.baidu.com/s/1Z0ZixglNHDTumyVIAiJl7w =freifly-rk3288简介= ==SOC特征== {| border="0" cellpadding="1" cellspacing="1" style="width: 972px;" |- | style="width: 530px;" | *CPU: **Quad Core Cortex-A17 up to 1.8GHz **32KB L1-Cache **1MB L2-Cache *Internal SRAM **96KB total **First 16KB used by Bootrom when bootup *GPU: **ARM Mali-T764 GPU, with TE, ASTC, AFBC technology **Quad core 3D Graphics engine **Dual core 2D Graphics engine **Comply with OpenGL ES1.1/2.0/3.0, OpenVG1.1, OpenCL, DirectX11 *Display: **4Kx2K@60fpsHDMI2.0 **Up to 3840X2160 display resolution **Support dual-channel LVDS/dual-channel MIPI-DSI/eDP1.1 *Camera: **Support up to 5M pixels **8bits/10bits/12bits raw data interface *Memory: **Dual channels 64-bit DRAM controller **Support DDR3/DDR3L, LPDDR2, LPDDR3 *Connectivity: **Embedded 13M ISP and MIPI-CSI2 interface *Audio: **I2S/PCM with 8 channels | style="width: 429px;" | [[File:RK3288_Block_Diagram.png|RTENOTITLE]] |} ==开发板特征== [[File:100ask_firefly-rk3288_02.png|thumb|right|frameless|750px|正面视图]] [[File:100ask_firefly-rk3288_04.png|thumb|right|frameless|750px|反面视图]] {| border="0" cellpadding="1" cellspacing="1" class="wikitable" style="text-align: left; background-color: rgba(255,255,255,0.2); " |- !colspan="2"| Firefly-RK3288参数 |- | 主控芯片|| *Rockchip RK3288 (28纳米HKMG制程) |- | 处理器|| *ARM® Cortex™-A17 四核 1.8GHz |- | 图形处理器|| *ARM® Mali-T760 MP4 支持OpenGL ES 1.1/2.0 /3.0, OpenVG1.1, OpenCL, Directx11 *内嵌高性能2D 加速硬件 *支持4K H.264 和 10bits H.265视频解码,1080P 多格式视频解码 *1080P 视频编码,支持H.264,VP8 和MVC |- | 内存|| *2GB 双通道DDR3 (Plus版为4GB) |- | 存储器|| *16GB 高速eMMC (Plus版为32GB) *MicroSD (TF) 卡 |- | 电源管理|| *ACT8846 PMU芯片 |- | 以太网|| *10/100/1000Mbps以太网 (Realtek RTL8211E) |- | 无线网络|| *集成二合一WiFi模块(AP6335): *WiFi 2.4GHz/5GHz双频 支持802.11a/b/g/n/ac协议 *Bluetooth 4.0(支持BLE) |- | 视频|| *支持多路视频高清输出: *1 x HDMI 2.0 , 支持4K@60帧输出 *1 x VGA,支持1080P输出 *1 x MIPI、1 x EDP、2 x LVDS 液晶屏显示接口 |- | 音频|| *1 x HDMI音频输出 *1 x 耳麦接口,用于音频输入输出 *1 x SPDIF 数字音频接口,用于音频输出 *1 x 麦克风,用于音频输入 *1 x I2S ,用于音频输入输出 |- | 摄像头|| *1 x MIPI-CSI摄像头接口 (最高支持13Mpixel ) |- | USB|| *2 x USB2.0 HOST,1 x USB2.0 OTG *在板背面保留4组USB2.0接口 |- | 红外|| *1 x 红外接收头,支持红外遥控功能 |- | LED|| *1 x 电源状态LED (蓝色) *1 x 自定义LED (绿色) |- |按键 || *1 x 复位键 *1 x 电源键 *1 x 升级键 |- | 调试 || *1 x 调试串口,用于开发调试 |- |电源 || *DC5V - 2.5A ( 通过DC4.0*1.7mm座供电) |- |尺寸 || *118mm × 85mm |} =快速使用= ==准备工作== [[File:100ask_firefly-rk3288_05.png|thumb|right|frameless|700px|开发板连接示意图]] 要使用你的firefly-rk3288开发板,请提前准备好以下资源: * 一台可以上网的windows电脑 * roc-rk3399-pc开发板 * microSD卡/TF卡: Class10或以上的 8GB SDHC卡 * 一个12v/2A的TYPE C接口电源适配器 * VMware-player-15.1.5.exe * Vmware ubuntu 18.04 64位虚拟机镜像 * win32diskimager-1.0.0-install.exe * MobaXterm_Portable_v11.0.zip 开发板连接示意图请参考右边的连接方式,连接后用<code>MobaXterm</code>串口工具进行登录。<br> =编译100ask linux sdk系统= <div style="color:#F00; font-size: 1.1em">注意:此章节操作均在我们提供的资料光盘以及vmware ubuntu18.04进行过测试,确保其可用。如需自行安装配置vmware ubuntu开发环境请参考[[Configuring_ubuntu ]]</div> 简介:以下资源仅限于在百问网官方购买及百问网授权店铺购买的开发板上使用,我们在官方的基础上做了大量的定制化修改,精简了系统,简化下载以及编译流程,更大的提升开发效率,系统不同于firefly官方。如需为firefly-rk3288编译ubuntu 以及Android系统请参考编译firefly系统章节。 ==获取源码== {| class="wikitable" style="text-align: left; background-color: rgba(255,255,255,0.2)" |- ! 类别 !! 国内coding仓库 !! 国外github仓库 |- |u-boot|| https://dev.tencent.com/u/weidongshan/p/100ask_firefly-rk3288_uboot || https://github.com/100askTeam/firefly-rk3288_uboot |- |linux kernel|| https://dev.tencent.com/u/weidongshan/p/100ask_firefly-rk3288_kernel|| https://github.com/100askTeam/firefly-rk3288_kernel |- |根文件系统|| https://dev.tencent.com/u/weidongshan/p/100ask_firefly-rk3288_buildroot|| https://github.com/100askTeam/firefly-rk3288_buildroot |} git邮箱账号和用户名配置 <syntaxhighlight lang="bash"> book@100ask:~$ git config --global user.email "you@example.com" book@100ask:~$ git config --global user.name "Your Name" </syntaxhighlight> 初次使用,需要配置用户名和密码才可以进行代码同步,用户名和密码根据自己情况设定,也可以随意设定 考虑到代码仓库过多,特使用repo工具管理代码<br> *repo工具获取sdk <syntaxhighlight lang="bash"> book@100ask:~$ git clone https://git.dev.tencent.com/codebug8/repo.git book@100ask:~$ mkdir -p 100ask_firefly-rk3288 && cd 100ask_firefly-rk3288 book@100ask:~/100ask_firefly-rk3288$ ../repo/repo init -u https://dev.tencent.com/u/weidongshan/p/manifests/git -b linux-sdk -m rk3288/firefly-rk3288_linux_release.xml --no-repo-verify book@100ask:~/100ask_firefly-rk3288$ ../repo/repo sync -j4 </syntaxhighlight> 上面使用的repo管理为国内coding仓库 ==设置工具链== 交叉编译工具链主要是用于在ubuntu主机上编译并声称可以在其它平台上运行的系统。设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。 * 永久生效 如需永久修改,请修改用户配置文件, Ubuntu系统下,修改如下: <syntaxhighlight lang="bash"> vim ~/.bashrc </syntaxhighlight> 在行尾添加或修改: export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=$PATH:/home/book/100ask_firefly-rk3288/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin * 临时生效 执行完“export”命令后,该设置只对当前终端有效 <syntaxhighlight lang="bash"> book@100ask:~$ export PATH=$PATH:/home/book/100ask_firefly-rk3288/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin book@100ask:~$ export ARCH=arm book@100ask:~$ export CROSS_COMPILE=arm-linux-gnueabihf- </syntaxhighlight> * 手动指定 Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链 <syntaxhighlight lang="bash"> book@100ask:~$ export PATH=$PATH:/home/book/100ask_firefly-rk3288/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin book@100ask:~$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- </syntaxhighlight> ==编译uboot== <syntaxhighlight lang="bash"> book@100ask:~$ cd ~/100ask_firefly-rk3288/uboot2017.09 book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ make distclean book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ make 100ask_firefly-rk3288_defconfig book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ make book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ ./make.sh trust book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ ./make.sh uboot book@100ask: ~/100ask_firefly-rk3288/uboot2017.09 $ ./make.sh loader </syntaxhighlight> *单独烧写uboot 使用dd命令烧写img镜像文件到TF卡中。 book@100ask:~/100ask_firefly-rk3288/uboot2017.09$ sudo dd if=idbloader.img of=/dev/sdb seek=64 book@100ask:~/100ask_firefly-rk3288/uboot2017.09$ sudo dd if=uboot.img of=/dev/sdb seek=16384 book@100ask:~/100ask_firefly-rk3288/uboot2017.09$ sudo dd if=trust.img of=/dev/sdb seek=24576 * nfs启动系统 => setenv ipaddr 192.168.1.112 => ping 192.168.1.111 => setenv serverip 192.168.1.132 => tftpboot 0x01f00000 rk3288-firefly.dtb; tftpboot 0x02000000 zImage; setenv bootargs root=/dev/nfs nfsroot=192.168.1.132:/work/rootfs_rk3288 rw ip=192.168.1.120; bootz 0x02000000 - 0x01f00000 ==编译linux kernel== <syntaxhighlight lang="bash"> book@100ask:~/100ask_firefly-rk3288$ cd linux-kernel book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make mrproper book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make 100ask_firefly-rk3288_defconfig book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make zImage book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make dtbs </syntaxhighlight> *编译内核模块 <syntaxhighlight lang="bash"> book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules </syntaxhighlight> 安装内核模块到nfs根文件系统 <syntaxhighlight lang="bash"> book@100ask:~/100ask_firefly-rk3288/linux-4.4$ sudo make ARCH=arm INSTALL_MOD_PATH=/media/rootfs modules_install </syntaxhighlight> ==编译根文件系统== {| class="wikitable" |- ! 配置文件 !! 含义 |- | 100ask_firefly-rk3288_defconfig || 文件系统版本(再默认版本支持了qt) |} *编译步骤 <syntaxhighlight lang="bash"> book@100ask:~/100ask_firefly-rk3288$ cd buildroot2018.02 book@100ask:~/100ask_firefly-rk3288/buildroot2018.02$ make clean book@100ask:~/100ask_firefly-rk3288/buildroot2018.02$ make 100ask_firefly-rk3288_defconfig book@100ask:~/100ask_firefly-rk3288/buildroot2018.02$ make menuconfig book@100ask:~/100ask_firefly-rk3288/buildroot2018.02$ make –jN /* N表示CPU的线程数,比如可以写4、8等以加快编译速度 */ </syntaxhighlight> *编译后生成文件介绍 <syntaxhighlight lang="bash" > buildroot2018.02 ├── output ├── images ├── idbloader.img <--u-boot镜像 ├── nfs_rootfs <--打包并压缩的根文件系统,适用于NFSROOT启动 │ └── rootfs.tar.gz ├── rk3288-firefly.dtb <--设备树文件 ├── rootfs.ext2 ├── rootfs.ext4 -> rootfs.ext2 <--ext2格式根文件系统 ├── rootfs.tar <--打包后的根文件系统 ├── sdcard.img <--完整的SD卡系统镜像 ├── trust.img <--u-boot镜像 ├── u-boot.bin ├── u-boot-dtb.img ├── uboot.img <--u-boot镜像 └── zImage <--内核镜像 </syntaxhighlight> ==sd卡启动== 1.安装资料光盘下01_tools/SD Card Formatter 5.0.1 Setup.exe软件,安装完成后打开!<br> 2.使用SdCardFormatter格式化SD卡,格式化步骤如下如所示! {| class="wikitable" width="100%" style="text-align: center" |- | style="width: 33%;" | [[image:100ask_am335x_SD_P_004.png | 300px]] | style="width: 33%;" | [[image:100ask_am335x_SD_P_005.png | 300px]] | style="width: 33%;" | [[image:100ask_am335x_SD_P_006.png | 300px]] |- | (1)选择要格式化的SD卡,选中Quick format,点击Format || (2)在弹出的对话框中点击是(Y) || (3)等待格式化完成,在弹出的对话框中点击确定 |} 3.安装资料光盘下01_tools/ win32diskimager-1.0.0-install.exe软件,安装完成后打开!<br> 4.使用wind32diskimage烧写编译后的系统镜像,烧写步骤如下所示!<br> {| class="wikitable" width="100%" style="text-align: center" |- | style="width: 33%;" | [[image:100ask_am335x_SD_p_001.png | 300px]] | style="width: 33%;" | [[image:100ask_am335x_SD_p_002.png | 300px]] | style="width: 33%;" | [[image:100ask_am335x_SD_p_003.png ]] |- | (1)选中需要烧写的SD卡设备,点击文件图标选择系统镜像文件,最后点击写入按钮开始烧写 || (2)此时弹出烧写对话框,点击Yes按钮,继续烧写, 等待任务进度执行到100%) || 烧写成功后,弹出写入成功,此时点击OK |} =编译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/下的分区镜像 =编译firefly android-5.1系统= <div style="color:#F00; font-size: 1.1em">注意:此章节操作均在我们提供的资料光盘以及vmware ubuntu16.04进行过测试,确保其可用。</div> ==配置编译环境== *下载Android-5.1 SDK 使用浏览器打开 https://pan.baidu.com/s/14Zpf2-QSQYxhqM9OcxyuAQ 保存资料光盘中的 Firefly-sdk_v1 到自己的网盘中,让后进行下载。 *安装jdk7编译环境 <syntaxhighlight lang="Bash" > sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-7-jdk sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 sudo java -version </syntaxhighlight> *安装基本依赖包 <syntaxhighlight lang="Bash" > sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 libc6-dev-i386 \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \ tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \ dpkg-dev libsdl1.2-dev libesd0-dev \ git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib \ lib32ncurses5-dev x11proto-core-dev libx11-dev \ lib32z-dev ccache squashfs-tools libncurses5-dev pngcrush schedtool libxml2 \ libgl1-mesa-dev unzip m4 lzop libc6-dev lib32z1-dev \ libswitch-perl libssl1.0.0 libssl-dev p7zip-full </syntaxhighlight> *使用<code>FileZilla</code>或其它软件上传下载后的 Android-5.1_sdk 源码包,让后通过7z工具进行解压 <syntaxhighlight lang="Bash" > 7z x firefly-rk3288_android5.1_git_20180126.7z.001 </syntaxhighlight> ==手动编译== 手动编译firefly-rk3288和firefly-rk3288-reload,编译内核时,所用的资源文件不同 ===编译uboot=== cd ~/proj/firefly-rk3288-lollipop/u-boot make rk3288_defconfig make -j8 ===内核编译使用Firefly-RK3288 编译内核:=== cd ~/proj/firefly-rk3288-lollipop/kernel make firefly_defconfig make -j8 firefly-rk3288.img ===编译Android=== cd ~/proj/firefly-rk3288-lollipop source build.sh lunch rk3288_box-userdebug make -j8 ./mkimage.sh ===打包成统一固件=== 编译完可以使用Firefly的脚本打包成统一固件,执行如下命令: ./FFTools/mkupdate/mkupdate.sh -l rk3288_box-userdebug 打包完成后固件所在目录及名称<code>rockdev/Image-rk3288_box/Firefly-RK3288_Android5.1.1_Public_190805.img</code> ==构建变体说明== *默认的目标构建变体(TARGET_BUILD_VARIANT)为 userdebug。常用变体有三种,分别是用户(user)、用户调试(userdebug)和工程模式(eng),其区别如下: user 仅安装标签为 user 的模块 设定属性 ro.secure=1,打开安全检查功能 设定属性 ro.debuggable=0,关闭应用调试功能 默认关闭 adb 功能 打开 Proguard 混淆器 打开 DEXPREOPT 预先编译优化 userdebug 安装标签为 user、debug 的模块 设定属性 ro.secure=1,打开安全检查功能 设定属性 ro.debuggable=1,启用应用调试功能 默认打开 adb 功能 打开 Proguard 混淆器 打开 DEXPREOPT 预先编译优化 eng 安装标签为 user、debug、eng 的模块 设定属性 ro.secure=0,关闭安全检查功能 设定属性 ro.debuggable=1,启用应用调试功能 设定属性 ro.kernel.android.checkjni=1,启用 JNI 调用检查 默认打开 adb 功能 关闭 Proguard 混淆器 关闭 DE XPREOPT 预先编译优化 如果目标构建变体为 user,则 adb 无法获取 root 权限。 要选择目标构建变体,可以在 make 命令行加入参数,例如: make -j8 PRODUCT-rk3288_box-user make -j8 PRODUCT-rk3288_box-userdebug make -j8 PRODUCT-rk3288_box-eng ==烧写分区映像== 上一步骤的 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文件拷贝到目录 rockdev/Image-rk3288_box/ 中。 以下列出一般固件用到的映像文件: * boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。 * kernel.img :内核映像。 * misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。 * recovery.img :急救模式映像。 * resource.img :资源映像,内含开机图片和内核的设备树信息。 * system.img :Android 的 system 分区映像,ext4 文件系统格式。 请参照 如何Android 升级固件 一文来烧写分区映像文件。 如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。 在 Windows 下打包统一固件 update.img 很简单,按上一步骤将文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。 update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。 打包成统一固件 *参考链接:http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/compile_android.html *参考链接:http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/custom_firmware.html *参考链接:http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/adb_debug.html =使用扩展模块及编程示例= =更新日志= {| border="1" style="background:transparent;" | style="width:33%; vertical-align:top; border:1px solid #aaa; padding-left:5px;" | {| class="wikitable toccolours mw-collapsible mw-collapsed" style="text-align:left; width:auto; overflow:auto;" !colspan="2" | ===2019.8.1更新说明=== |- | *首次发布 |} {| class="wikitable toccolours mw-collapsible mw-collapsed" style="text-align:left; width:auto; overflow:auto;" !colspan="2" |2019.8.7更新说明 |- | *首次发布 |} | style="width:33%; vertical-align:top; border:1px solid #aaa; padding-left:5px;" | | style="width:33%; vertical-align:top; border:1px solid #aaa; padding-left:5px;" | |} =反馈建议= <div style="border: 1px solid #A7D7F9; "><comments /></div>
该页面使用的模板:
模板:DownloadMethod
(
查看源代码
)
模板:Redtext
(
查看源代码
)
返回至
100ask firefly-rk3288
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志