linux专题

RK3399快速熟悉(基于AIO-3399C开发板)

2019-09-30  本文已影响0人  Mr_Michael

一、简介

1.规格参数

~$ arch
aarch64
~$ cat /proc/version
Linux version 4.4.154 (daijh@tchip14) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #28 SMP Mon Mar 4 12:21:30 CST 2019
~$ uname -a
Linux firefly 4.4.154 #28 SMP Mon Mar 4 12:21:30 CST 2019 aarch64 aarch64 aarch64 GNU/Linux
~$ head -n 1 /etc/issue
Ubuntu 16.04.5 LTS \n \l
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3845         204        3297          34         344        3554
Swap:             0           0           0
$ df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/root          14643  2002     12026  15% /
devtmpfs            1922     0      1922   0% /dev
tmpfs               1923     1      1923   1% /dev/shm
tmpfs               1923    18      1906   1% /run
tmpfs                  5     1         5   1% /run/lock
tmpfs               1923     0      1923   0% /sys/fs/cgroup
tmpfs                385     0       385   0% /run/user/0
tmpfs                385     1       385   1% /run/user/1000

2.接口描述

二、固件烧写

1.固件类型

固件有两种格式:

分区映像是分区的映像数据,用于存储设备对应分区的烧写

固件分类

2.支持的系统列表

3.烧录工具

不同系统对应的烧录工具和固件

4.启动模式

AIO-3399C 有 32KB 的 BootRom 和 200KB 的内部 SRAM,支持从以下设备加载系统:

另外 AIO-3399C 支持从 USB OTG 接口下载系统代码。

启动次序

  1. 主控上电初始化
  2. BootRom 代码在 SRAM 上运行,校验存储设备里的 bootloader
  3. 校验通过,加载并运行 bootloader 引导代码
  4. bootloader 引导代码负责初始化 DDR 内存,加载 bootloader 完整代码到 DDR 内存中并运行
  5. bootloader 加载存储设备上的 Linux 内核,并将执行权交给 Linux 内核

AIO-3399C 有三种启动模式

5.升级步骤

通过Type-C升级到eMMC ,参考固件升级

1)问题总结

6.串口调试

AIO-3399C 使用以下串口参数:

连接图

image

三、Linux系统编译

可以包括创建Buildroot根文件系统、Debian操作系统、Ubuntu根文件系统。

1.手动制作Ubuntu根文件系统镜像

参考创建 Ubuntu 根文件系统RK3399从零制作ubuntu

1)准备工作
2)修改根文件系统
3)制作根文件系统

依据temp文件夹的大小来修改count值

dd if=/dev/zero of=linuxroot.img bs=1M count=2048
sudo mkfs.ext4 linuxroot.img
mkdir  rootfs
sudo mount linuxroot.img rootfs/
sudo cp -rfp temp/*  rootfs/
sudo umount rootfs/
e2fsck -p -f linuxroot.img
resize2fs  -M linuxroot.img
file linuxroot.img
linuxroot.img: Linux rev 1.0 ext4 filesystem data, UUID=dde2c956-e165-436b-b4f7-25c35f11e063 (extents) (64bit) (large files) (huge files)
4)更新根文件系统
5)分区介绍
uboot 分区: 烧写 uboot 编译出来的 uboot.img.
trust 分区: 烧写 uboot 编译出来的 trust.img
misc 分区: 烧写 misc.img。开机检测进入recovery模式.(可省略)
boot 分区: 烧写 kernel 编译出来的 boot.img.包含kernel和设备树信息
recovery 分区: 烧写 recovery.img.(可省略)
backup 分区: 预留,暂时没有用。后续跟 android 一样作为 recovery 的 backup 使用.(可省略)
oem 分区: 给厂家使用,存放厂家的 app 或数据。只读。代替原来音箱的 data 分区。挂载在/oem 目录.(可省略)
rootfs 分区: 存放 buildroot 或者 debian 编出来的 rootfs.img,只读.
userdata 分 区 : 存 放 app 临 时 生 成 的 文 件 或 者 是 给 最 终 用 户 使 用 。 可 读 写 , 挂 载 在/userdata 目录下.(可省略)

2.使用官方Linux SDK编译分区镜像和统一固件

为了方便用户的使用与开发,官方提供了Linux开发的整套sdk。

1)下载源码
2)Linux_SDK 目录介绍
├── linux_sdk
│   ├── app
│   ├── buildroot buildroot根文件系统的编译目录
│   ├── build.sh -> device/rockchip/common/build.sh 全自动编译脚本
│   ├── device 编译相关配置文件
│   ├── distro debian根文件系统生成目录
│   ├── docs 文档
│   ├── envsetup.sh -> buildroot/build/envsetup.sh
│   ├── external
│   ├── 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
3)搭建SDK编译环境
4)编译buildroot

注意:manifest的buildroot分支编译是会出错,所以不建议使用

./build.sh BoardConfig.mk
#文件路径在device/rockchip/rk3399/BoardConfig.mk
5)编译ubuntu 整合固件
6)固件打包

3.问题发现与调试

上一篇 下一篇

猜你喜欢

热点阅读