构建ROC-RK3328-CC固件(Ubuntu 18.04.1)
本帖最后由 topillar 于 2019-10-25 10:42 编辑8G存储卡
Ubuntu 18.04.1 LTS
VMWARE + WINDOWS10
一、 安装编译包:
sudo apt-get install bc bison build-essential curl \
device-tree-compiler dosfstools flex gcc-aarch64-linux-gnu \
gcc-arm-linux-gnueabihf gdisk git gnupg gperf libc6-dev \
libncurses5-dev libpython-dev libssl-dev libssl1.0.0 \
lzop mtools parted repo swig tar zip
sudo apt-get install qemu qemu-user-static binfmt-support debootstrap
二、下载 Linux SDK
# create project dir
mkdir ~/roc-rk3328-cc
cd ~/roc-rk3328-cc
下载 Linux SDK:
# U-Boot
git clone -b roc-rk3328-cc https://github.com/FireflyTeam/u-boot
# Kernel
git clone -b roc-rk3328-cc https://github.com/FireflyTeam/kernel
# Build
git clone -b debian https://github.com/FireflyTeam/build
# Rkbin
git clone -b master https://github.com/FireflyTeam/rkbin
三、编译 U-Boot
(1)编译 U-Boot:
./build/mk-uboot.sh roc-rk3328-cc
输出:
out/u-boot/
├── idbloader.img
├── rk3328_loader_ddr786_v1.06.243.bin
├── trust.img
└── uboot.img
• rk3328_loader_ddr786_v1.06.243.bin: DDR 初始化文件。
• idbloader.img: DDR 初始化与 miniloader 结合的文件。
• trust.img: ARM trusted 固件。
• uboot.img: U-Boot映像文件。
(2)相关文件:
• configs/roc-rk3328-cc_defconfig: 默认 U-Boot 配置
四、编译 Kernel
(1)自定义内核配置和更新默认配置:(不执行这一步编译内核会出错)
# 这非常重要!
export ARCH=arm64
cd kernel
# 首先使用默认配置
make fireflyrk3328_linux_defconfig
# 自定义你的 kernel 配置
make menuconfig
特别说明:
Device Drivers > Network device support > Wireless LAN > Rockchip Wireless LAN support
> Rockchip Wireless LAN support下的除“*”其他都去掉
evice Drivers > Network device support > Wireless LAN > Realtek rtlwifi family of devices
> Realtek rtlwifi family of devices 下的都去掉
# 保存为默认配置
make savedefconfig
cp defconfig arch/arm64/configs/fireflyrk3328_linux_defconfig
(2)编译 kernel:
./build/mk-kernel.sh roc-rk3328-cc
输出:
out/
├── boot.img
└── kernel
├── Image
└── rk3328-roc-cc.dtb
• boot.img: 包含 Image and rk3328-roc-cc.dtb 的映像文件, 为 fat32 文件系统格式。
• Image: 内核映像。
• rk3328-roc-cc.dtb: 设备树 blob。
(3)相关文件:
• arch/arm64/configs/fireflyrk3328_linux_defconfig: 默认内核配置。
• arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts: 开发板设备树描述。
• arch/arm64/boot/dts/rockchip/rk3328.dtsi: CPU 设备树描述。
五、编译根文件系统
(1)下载Ubuntu root 包
wget -c https://mirrors.tuna.tsinghua.ed ... 1-base-arm64.tar.gz
(2)创建一个大小为 1000M 的根文件系统映像文件(可以根据需要调整大小),并使用 Ubuntu 的基础包去初始化:
dd if=/dev/zero of=rootfs.img bs=1M count=0 seek=1000 注:官方的fallocate法不好使
sudo mkfs.ext4 -F -L ROOTFS rootfs.img
mkdir mnt
sudo mount rootfs.img mnt
sudo tar -xzvf ubuntu-base-18.04.1-base-arm64.tar.gz -C mnt/
sudo cp -a /usr/bin/qemu-aarch64-static mnt/usr/bin/
注:qemu-aarch64-static是其中的关键,能在 x86_64 主机系统下 chroot 到 arm64 文件系统
(3)Chroot 到新的文件系统中去并初始化:
sudo chroot mnt/
# 这里可以修改设置
USER=firefly
HOST=firefly
# 创建用户
useradd -G sudo -m -s /bin/bash $USER
passwd $USER
# 输入密码
# 设置主机名和以太网
echo $HOST /etc/hostname
echo "127.0.0.1 $HOST" >> /etc/hosts
echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts
echo "a.b.c.dproxy">>/etc/hosts注:有代理的需要在这里处理下
mkdir /etc/network
mkdir /etc/network/interfaces.d注:这两行是官方没有的,需要加上
echo "auto eth0" > /etc/network/interfaces.d/eth0
echo "iface eth0 inet dhcp" >> /etc/network/interfaces.d/eth0
echo "nameserver 127.0.1.1" > /etc/resolv.conf
echo "nameserver 8.8.8.8 " >> /etc/resolv.conf注:需要加域名解析,否则无法执行后面的操作
# 安装包
apt-get update
apt-get upgrade
apt-get install ifupdown net-tools network-manager
apt-get install udev sudo ssh
apt-get install nano
dpkg --add-architecture armhf 注:增加 armhf支持,稍后测试过,但未在此处测试,待验证
apt-get update
apt-get install libc6:armhf
# 使能串口注:与官方指南不同,这步到这里才行得通
ln -s /lib/systemd/system/serial-getty\@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service
exit注:官方没写出来
sudo sync
# <enter user password>
sudo umount mnt/
六、打包原始固件
把你的 Linux 根文件系统映像文件放在 out/rootfs.img
mv rootfs.img out/
out 目录将包含以下文件:
$ tree out
out
├── boot.img
├── kernel
│ ├── Image
│ └── rk3328-roc-cc.dtb
├── rootfs.img
└── u-boot
├── idbloader.img
├── rk3328_loader_ddr786_v1.06.243.bin
├── trust.img
└── uboot.img
2 directories, 8 files
打包原始固件:
./build/mk-image.sh -c rk3328 -t system -r out/rootfs.img
这条命令根据《存储映射》所描述的布局,将分区映像文件写到指定位置,最终打包成 out/system.img,
七、烧写原始固件
参考官方方法使用SDCard Installer烧写。
烧写完成后使用Live版GParted调整一下分区
八、享用roc-rk3328-cc
推荐体验seafiel、frp等。
https://www.jianshu.com/p/9c629fdd2566
{:4_131:} 能否实现自动扩展根目录呢? 我没掌握自动调整的技术。所以
“烧写完成后使用Live版GParted调整一下分区”
个人觉得可控度更高。
你好, 我的uboot起不来是怎么回事呢?
log显示 DRAM的大小都读取不到?
DDR version 1.06 20170424
In
DDR3
786MHz
Bus Width=32 Col=10 Bank=8 Row=15/15 CS=2 Die Bus-Width=16 Size=2048MB
ddrconfig:6
OUT
Boot1 Release Time: 2017-05-18, version: 2.43
ChipType = 0x11, 125
SdmmcInit=2 0
BootCapSize=2000
UserCapSize=14910MB
FwPartOffset=2000 , 2000
SdmmcInit=0 2
StorageInit ok = 20770
Raw SecureMode = 0
SecureInit read PBA: 0x4
SecureInit read PBA: 0x404
SecureInit read PBA: 0x804
SecureInit read PBA: 0xc04
SecureInit read PBA: 0x1004
SecureInit ret = 0, SecureMode = 0
LoadTrustBL
No find bl30.bin
No find bl32.bin
Load uboot, ReadLba = 2000
Load OK, addr=0x200000, size=0xa7fec
RunBL31 0x10000
NOTICE:BL31: v1.3(debug):f947c7e
NOTICE:BL31: Built : 09:28:45, May 31 2017
NOTICE:BL31:Rockchip release version: v1.3
INFO: ARM GICv2 driver initialized
INFO: Using opteed sec cpu_context!
INFO: boot cpu mask: 1
INFO: plat_rockchip_pmu_init: pd status 0xe
INFO: BL31: Initializing runtime services
WARNING: No OPTEE provided by BL2 boot loader, Booting device without OPTEE initialization. SMC`s destined for OPTEE will return SMC_UNK
ERROR: Error initializing runtime service opteed_fast
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x200000
INFO: SPSR = 0x3c9
U-Boot 2017.09-gc58a816-dirty (Oct 19 2018 - 00:39:34 +0800)
Model: Firefly ROC-RK3328-CC
DRAM: 楼主这个方法您确认是成功的吗?18.04连网络配置方式都不对哦 我按照你这样 系统是烧好了,但是串口无法调试,反复提示输入用户名密码,但是又无法输去
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
Ubuntu 16.04.5 LTS ZFJ ttyFIQ0
ZFJ login:
https://smczoz.jimdo.com/
https://szdaiyun100.jimdo.com/
https://whdaiyunw114.jimdo.com/
https://jndaiyunw.jimdo.com/
https://rsrlay.jimdo.com/
http://zzdaiyunw.jimdo.com/
http://wmsrpr.jimdo.com/
https://ahtxos.jimdo.com/
页:
[1]