Buildroot for RK3399/zh

Firefly rk3399烧录固件记录 1.下载boot失败 在Androidtool软件里面,默认分区配置为rk3399-ubuntu1804.cfg,如果要对Android进行分区烧写请右键倒入rk3399-Android81.cfg。 阅读详情

1 Buildroot简介

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,由Makefile脚本和Kconfig配置文件构成,旨在简化系统制作步骤,可实现一站式生成可烧写的系统固件,最终的固件包含boot-loader、kernel和rootfs,以及rootfs中的各种库和应用程序 (例如qt, gstreamer, busybox等)。

由 FriendlyELEC 提供的 Buildroot 项目是基于Rockchip原厂的 linux-sdk 制作, 项目使用 git 管理,与原厂的linux sdk更新保持同步; 

2 下载体验版固件

访问此处的下载地址下载:

Image Files
rk3399-sd-buildroot-linux-4.4-arm64-YYYYMMDD.img.zip从SD卡启动的固件
rk3399-eflasher-buildroot-YYYYMMDD.img.zip用于烧写到eMMC运行

解压后用 dd 或者 win32image 烧写到 SD 卡。

3 帐户与密码

用户名: root
密码: rockchip
 

4 获取项目源代码

4.1 安装 repo 工具

首先需要安装 repo 工具:

git clone https://github.com/friendlyarm/repo
cp repo/repo /usr/bin/

4.2 下载项目源代码

有以下两种途径获取项目源代码,中国大陆用户建议使用方法1的途径下载:

4.2.1 方法一:使用网盘里的repo压缩包

网盘下载地址: 点击进入
文件位于网盘的以下路径:sources/linuxsdk-friendlyelec-YYYYMMDD.tar (YYYYMMDD表示打包的日期)
从网盘中获取的 repo 压缩包在解压之后,需要执行一下以下命令做一次解包动作:

tar xvf /path/to/netdisk/sources/linuxsdk-friendlyelec-YYYYMMDD.tar
cd linuxsdk-friendlyelec
repo sync -l

用此方法得到的源代码版本是repo打包时的版本,如果想拉取到官方最新的版本,可以去掉 -l 参数,执行一次 repo sync, 例如:

cd linuxsdk-friendlyelec
repo sync --no-clone-bundle

4.2.2 方法二:从github下载

mkdir linuxsdk-friendlyelec
cd linuxsdk-friendlyelec
repo init -u https://github.com/friendlyarm/buildroot_manifests -b master -m rk3399_linux_release.xml --repo-url=https://github.com/rockchip-linux/repo --no-clone-bundle
repo sync -c --no-clone-bundle

4.2.3 同步项目到最新版本

cd linuxsdk-friendlyelec
repo sync -c --no-clone-bundle

同步过程中,由于网络原因出现中断,可以使用下面脚本同步代码:

#! /bin/bash
repo sync -c --no-clone-bundle
while [ $? -ne 0 ]; 
do  
    repo sync -c --no-clone-bundle
done

5 如何编译

5.1 搭建编译环境

在PC的Ubuntu系统下,执下以下命令安装所需的软件:

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 lib32stdc++6

5.2 全自动方式编译

./build.sh

5.3 部分编译

5.3.1 kernel

./build.sh kernel

5.3.2 u-boot

./build.sh uboot

5.3.3 rootfs

./build.sh rootfs

5.4 生成sdcard固件

sudo ./build.sh sd-img

或者直接将固件烧写到sd卡:

./friendlyelec/rk3399/sd-fuse_rk3399/fusing.sh /dev/sdX buildroot

其中,/dev/sdX请替换为真实的SD卡设备文件名。

5.5 生成emmc (eflasher) 固件

sudo ./build.sh emmc-img

5.6 查看帮助

# ./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
ramboot            -build ramboot image
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
sd-img             -pack sd-card image, used to create bootable SD card
emmc-img           -pack sd-card image, used to install buildroot to emmc
save               -save images, patches, commands used to debug
default            -build all module

重点参数说明:
uboot -单独编译uboot
kernel -单独编译kernel
rootfs -单独编译buildroot
buildroot -同上
sdimg -生成用于dd到sd卡的image文件,以及用于eFlasher工具使用的eMMC烧写文件
 

6 Buildroot定制与开发

6.1 目录结构

├── linuxsdk-friendlyelec
│   ├── app
│   ├── buildroot buildroot根文件系统的编译目录
│   ├── build.sh -> device/rockchip/common/build.sh 全自动编译脚本
│   ├── device 编译相关配置文件
│   ├── distro debian根文件系统生成目录
│   ├── docs 文档
│   ├── envsetup.sh -> buildroot/build/envsetup.sh
│   ├── external
│   ├── friendlyelec 用于适配友善电子RK3399开发板的文件
│   ├── kernel 内核
│   ├── Makefile -> buildroot/build/Makefile
│   ├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh rockdev链接更新脚本
│   ├── prebuilts
│   ├── rkbin 
│   ├── rkflash.sh -> device/rockchip/common/rkflash.sh 烧写脚本
│   ├── rootfs debian根文件系统编译目录
│   ├── tools 烧写、打包工具
│   └── u-boot u-boot

6.1.1 更改Buildroot配置

  • 列出当前可用的配置
cd buildroot
make list-defconfigs

显示所下:
rockchip_rk3399_defconfig - Build for rockchip_rk3399

  • 使用menuconfig更改配置
make rockchip_rk3399_defconfig
make menuconfig
make savedefconfig
diff .defconfig configs/rockchip_rk3399_defconfig 
cp .defconfig configs/rockchip_rk3399_defconfig
  • 重新编译
cd ../
./build.sh rootfs

6.2 预装文件到文件系统

将文件放在 friendlyelec/rk3399/fs-overlay-64,然后重新编译 rootfs。

6.3 修改u-boot和kernel

直接修改u-boot和kernel目录下的文件即可。

6.4 使用sdk里的交叉编译器

export PATH=$PWD/buildroot/output/rockchip_rk3399/host/bin/:$PATH
aarch64-buildroot-linux-gnu-g++ -v

显示版本如下:
gcc 版本 6.4.0 (Buildroot 2018.02-rc3-g4f000a0797)

6.5 交叉编译Qt程序

git clone https://github.com/friendlyarm/QtE-Demo.git
cd QtE-Demo
../buildroot/output/rockchip_rk3399/host/bin/qmake QtE-Demo.pro
make

要实现开机自动运行你的Qt程序,可将QtE-Demo拷贝到开发板上,然后修改 /etc/init.d/下的S50launcher,将/usr/local/QLauncher/QLauncher &这一行改为QtE-Demo的文件路径即可。

7 常见问题

7.1 如何获取用于USB Type-C烧写的文件?

执行 build.sh emmc-img 之后,在 friendlyelec/rk3399/sd-fuse_rk3399 下面会有一个 buildroot 目录,使用android_tools工具加载这个目录下的文件即可。

ota升级 rk3399_Toybrick-开源社区-TB-RK3399ProD-rk3399pro OTA在线升级问题 验证环境说明:1、OTA服务器搭建在局域网 Ubuntu 18.04 物理机上2、参考RK SDK Android4.0 OTA服务器搭建及产品OTA功能配置.pdfmanifast.xml 添加如下4、服务端server.xml未做修改,保持默认5、修改device/rockchip/rk3399pro/rk3399pro.mkro.product.version = 1.0.2ro.produ... 阅读详情

相关推荐

firefly-rk3399 开发记录1-环境搭建

1.固件 目前先选择builroot编译,在官方下载最新的固件,这里使用的是firefly-sdk-20200629.7z,校验MD5 通过后,则进行解压http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/buildroot_compile.html,基本编译步骤和教程一样。 这里选择的是docker部署,docker的方式懂的人自认就懂 a).docker pull ubuntu:16.04 b).创建容器,并映射目录,把固件源码目录映射到容器中 c.

huahuang1508的博客 1574

Firefly RK3399 PC pro Android 10下载验证

百度网盘 请输入提取码密码:1234下载后检查md5值,检查下载是否正确:解压编译image的路径:rockdev/Image-rk3399_roc_pc_plus/ROC-RK3399-PC-Pro_Android10_HDMI_221130.img如果中间编译错误,需要根据编译错误解决问题百度网盘 请输入提取码密码:1234烧写image的链接为:2. 使用USB线缆升级固件 — Firefly Wiki我使用的是windows的下载方式,方式如下:下载 Release_DriverAssistant.

朝气蓬勃 3495

别再为乱码头疼!手把手教你给Ubuntu和Buildroot系统配置中文locale(附常见问题排查)

本文详细指导如何在Ubuntu和Buildroot系统中配置中文locale,解决中文乱码问题。从locale的基础概念到具体配置步骤,包括Ubuntu的终端环境设置和Buildroot的特殊问题处理,帮助开发者构建完整的国际化支持体系。特别针对嵌入式开发中的常见问题提供了实用解决方案。

weixin_33742618的博客 127

firefly-rk3399开发板100篇 之 001 编译android代码,给开发板下载固件

firefly-rk3399开发板学习笔记第一篇 下载代码,编译代码。 给开发板下载固件。

sz189981的博客 3312

嵌入式系统中文支持实战——从Ubuntu到Buildroot的locale配置与疑难解析

本文详细解析了嵌入式系统中Ubuntu和Buildroot的中文支持配置与疑难问题解决方案。从locale基础概念到实战配置,涵盖中文字符集选择、Ubuntu环境设置、Buildroot文件系统优化等关键环节,特别针对RK3399等开发板常见乱码问题提供专业排查手册,帮助开发者高效实现嵌入式系统的中文支持。

weixin_33734785的博客 226

告别乱码!保姆级教程:在Ubuntu 22.04和Buildroot嵌入式系统上配置locale支持中文

本文提供在Ubuntu 22.04和Buildroot嵌入式系统上配置locale支持中文的完整教程,解决乱码问题。从locale原理到具体配置步骤,涵盖终端显示、文件系统字符集设置及常见问题排查,帮助开发者快速实现中文环境支持。

weixin_30216561的博客 284

android 脚本 gitk,Buildroot for RK3399/zh

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架,由Makefile脚本和Kconfig配置文件构成,旨在简化系统制作步骤,可实现一站式生成可烧写的系统固件,最终的固件包含boot-loader、kernel和rootfs,以及rootfs中的各种库和应用程序 (例如qt, gstreamer, busybox等)。由 FriendlyELEC 提供的 Buildroot 项...

weixin_39600331的博客 439

告别乱码!手把手教你修复Ubuntu和Buildroot嵌入式系统的中文显示与输入问题

本文详细解析了Ubuntu和Buildroot嵌入式系统中中文显示与输入乱码问题的根源及解决方案。通过配置locale环境变量、安装中文输入法和优化字符集设置,开发者可以有效修复中文乱码问题,确保系统在多语言环境下的稳定运行。特别针对Buildroot嵌入式系统提供了资源优化的实用技巧。

weixin_30252709的博客 239

文件系统(2)——Ubuntu、buildroot通过locale配置中文字符集

命令行中文显示 RK3399 Linux系统命令行默认是不支持中文显示的, [root@rk3399:/]# ls /media/sda1/ LED.pdf 'System Volume Information' ''$'\345\271\263\345\217\260\347\273\264\346\212\244\350\256\241\345\210\222''.txt'

横山郡守的博客 3536

Buildroot嵌入式系统中文配置踩坑记:从环境变量到QT显示的全流程避坑指南

本文详细介绍了在Buildroot嵌入式系统中配置中文环境的全流程避坑指南,涵盖从环境变量设置到QT中文显示的各种常见问题及解决方案。重点解析了locale配置、字符集处理、QT应用中文支持等关键技术点,并提供实用的调试工具和优化策略,帮助开发者高效解决嵌入式系统中的中文显示问题。

weixin_33691700的博客 210

嵌入式AIoT全栈开发:从Linux驱动到边缘AI部署

嵌入式AIoT是融合操作系统、C/C++底层开发、物联网协议与轻量化AI模型的复合型技术体系。其核心原理在于打通Linux内核驱动、实时通信机制与边缘推理闭环,通过寄存器级编程、协议栈穿透和内存可控的模型部署,实现断网、低算力、强干扰环境下的确定性智能响应。该技术具备显著的工业落地价值,广泛应用于智能传感网关、产线缺陷检测、国产工控替代等场景,尤其契合信创背景下对自主可控嵌入式智能终端的迫切需求。本文聚焦Linux系统级编程、C/C++嵌入式开发、物联网协议栈穿透及AI模型轻量化部署四大能力支柱,覆盖职坐标

weixin_34043301的博客 341

RK3399 HDC适配

zhy12345666的博客 758

荔枝派Nano嵌入式Linux实战:从U-Boot到rootfs全链路构建

嵌入式Linux系统启动本质是软硬件协同的确定性过程,其核心在于Bootloader、内核、设备树与根文件系统的精准耦合。理解这一原理,需回归资源受限平台如ARM9级SoC,直面物理层约束——内存仅64MB、无MMU、无复杂电源管理,迫使开发者亲手编译uImage、修改.dts、构建BusyBox rootfs,并处理FAT16分区对齐、console设备节点、init启动流程等底层细节。这类实践不仅夯实Linux启动机制(ROM Boot→SPL→U-Boot→Kernel→init),更培养对交叉编译链

weixin_28278377的博客 196

buildroot output子目录

build/包含所有的源文件,包括 Buildroot 所需主机工具和选择的包,这个目录包含所有 模块源码。 host/主机端编译需要的工具包括交叉编译工具。 images/包含压缩好的根文件系统镜像文件。 staging/这个目录类似根文件系统的目录结构,包含编译生成的所有头文件和库,以及其他开发文件,不过他们没有裁剪,比较庞大,不适用于目...

weixin_30505043的博客 605

嵌入式Linux&Android开发-SDK下载&编译

目录 一、SDK下载 二、SDK编译 2.1 手动编译(一般不用) 2.2 脚本编译(推荐使用) 2.3 编译可能出现的错误 2.4 生成固件说明 2.5 打包统一固件(发布时才用) 一、SDK下载 从网盘下载完成后放到本机位置~/rk3399_embeded 网盘路径为->embeded_sdk->3399_embeded mkdir -p ~/rk3399 cd ~/rk3399 cp rk3399-embeded.tgz ~/rk3399 计算md5sum确认

嵌入式成长手册 1722

rknn3399pro刷机合集(debian10镜像、刷机工具、官方代码等)

官方的下载是在外网,所以帮助大家整理rknn3399pro刷机合集(debian10镜像、刷机工具、官方代码等)

Ubuntu/Buildroot中文显示乱码?别急,手把手教你用locale彻底搞定命令行中文环境

本文详细解析了Ubuntu和Buildroot系统中出现中文乱码的原因及解决方案。从字符编码层、环境配置层到终端模拟层,手把手教你通过locale配置彻底解决命令行中文显示问题,特别针对嵌入式系统提供了特殊处理方案。

weixin_30915951的博客 178

HDMI调试避坑指南:从AVI InfoFrame到通用控制包,这些DataIsland Packet细节千万别忽略

本文深入解析HDMI调试中DataIsland数据包的关键细节,包括AVI InfoFrame、通用控制包和音频时钟再生包(ACR)的配置与故障排查。通过实际案例和寄存器配置示例,帮助工程师快速定位显示异常、色彩失真和音频中断等问题,提升HDMI接口调试效率。

weixin_30897233的博客 630

RDKX5开发板工具链搭建与ARM64嵌入式Linux部署实战

嵌入式Linux开发中,ARM64架构是工业HMI、边缘AI和智能网关等场景的核心技术基础。其原理在于通过Cortex-A系列SoC实现算力、功耗与接口的平衡,技术价值体现在稳定运行、实时控制与低成本集成。典型应用场景包括车载信息娱乐、智能充电桩CAN通信、MIPI-DSI显示驱动及OpenCV车牌识别等。要真正落地,必须掌握交叉编译工具链构建、U-Boot环境配置、eMMC镜像烧录及VSCode远程调试等关键能力。本文聚焦RDKX5这一典型ARM64参考平台,深入解析从Ubuntu宿主机环境搭建到应用部署

weixin_33895475的博客 293

Docker 安装 CentOS7

本文主要介绍了docker 下安装centos7。访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1。可以通过 Sort by 查看其他版本的 CentOS 。默认是最新版本 centos:latest 。 使用以下命令来查看是否已安装了 centos7: 启动centos容器,并把docker上centos的22端口映射到本机60001端口(端口号可以自己指定) 3、进入到Centos容器 4.安装ssh服务和网络必须软件

折腾java的博客 1万+

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 803
上一篇: 搭建nfs调试arm开发板
下一篇: ALSA 音频工具 amixer、aplay、arecord
vx_FJ11080905
博客等级 码龄15年 96粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值