ROC-RK3328-CC

Firefly首个超小型开源主板,特有的USB3.0与DDR4让其性能更快更稳定,超高性价比的ROC-RK3328-CC是你探索程序世界的首选主板。

Linux开发上手指南

更新时间:2018-06-12 阅读:10959

编译环境搭建

Ubuntu 14.04 软件包安装

$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip tar curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 cmake tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

安装 ARM 交叉编译工具链和编译内核相关软件包

$ sudo apt-get install gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \
libssl1.0.0 libssl-dev

源码下载

在同一个目录下, 下载下面4个git仓库

kernel
git clone https://github.com/FireflyTeam/kernel.git   release-4.4
uboot
git clone https://github.com/FireflyTeam/u-boot.git    release
build
git clone https://github.com/FireflyTeam/build.git     debian
rkbin
git clone https://github.com/FireflyTeam/rkbin.git     master


编译

  • uboot

./build/mk-uboot.sh roc-rk3328-cc

编译生成文件在out/u-boot/下

  • kernel

./build/mk-kernel.sh roc-rk3328-cc

编译生成文件为out/boot.img

  • 编译rootfs

参见《创建 Linux 根文件系统》

  • 生成固件

./build/mk-image.sh -c rk3328 -t system -r out/linaro-rootfs.img

生成文件为out/system.img


启动

roc-rk3328-cc支持从TF卡和EMMC启动。

  • TF卡启动

使用Firefly SDCard Installer制作启动卡

烧写固件到TF卡,推荐使用Firefly SDCard Installer工具,支持linux , windows,  mac os

下载链接:SDCard Installer链接

步骤如下:

1、将 SD 卡插入到电脑中后,打开 SDCard Installer

2、点击 "Choose an OS"按钮,选择ROC-RK3328-CC后,显示如图。

JX4O(T751I{B6%FYD%AJVZ7.png

3、如图所示,有五种选择:

            1)若本地没有需求的操作系统,则需要下载,选择好需要的操作系统后,点击OK即可。
            2)若本地有需求的操作系统,点击Browse image后,选择好系统后,点击OK即可。

4、在完成了以上步骤的同时,电脑也识别出了SD卡,点击FLASH,等待完成即可。

GGDXRK@6O0SSKJZM_2K9U$H.png


注意:在烧写完成到99%或100%时,出现如下图情况,可忽略,并不影响固件烧写进SD卡

UE5C%VXUF@LJGEV8JQ[`})1.png


5、完成烧写后,将SD卡从电脑拔出后,插入rk3328的TF卡槽,上电即可。


使用DD命令制作启动卡

在Linux, Mac os下,也可以直接使用dd命令,制作TF卡。

  1. 插入TF卡设备到PC上, 确认TF设备节点, 通常为/dec/mmcblk0 或者 /dev/sdb,设备节点必须确认,如果写错,可能会导致PC上硬盘数据丢失。

  2. pv -tpreb out/system.img | sudo dd of=/dev/sdb seek=0 conv=notrunc && sync


  • EMMC启动

使用EMMC启动, 在ROC-RK3328-CC上装好EMMC模块。使用双头公对公USB线。

Windows下

连接设备

首先,系统要先安装RockUSB驱动    操作方法见:《升级固件》RK USB操作

设备升级,需要处于MaskROM状态或者rockusb状态。如果emmc是未烧写过固件的,则机器开机后自动进入maskrom状态。如果烧写过固件,机器能够正常启动,可以通过命令行或者按键操作,使机器进入rockusb状态,参见Uboot下设备模式管理》章节

 

如果上述两种情况均异常,则必须通过以下方法使机器进入maskrom状态。

强制maskrom

先使设备断开所有电源,又因 USB数据线也能为开发板提供系统启动电源,所以也需断开 USB 数据线的连接:

  1. 数据线一端连接开发板。

  2. 短接 Flash 的数据脚与地线脚,即板子上预留出来的 CLK 焊盘和 GND 焊盘

  3. 数据线另一端连接主机。

  4. 板子上电。

  5. 稍候片刻,断开短接,设备就会进入 MaskRom 模式。

烧写固件

windows烧写固件到EMMC使用工具AndroidTool      下载链接:AndroidTool链接

打开AndroidTool后,如下图:


TIM图片20180330094443.png

    1、升级Loader文件:rk3328_loader_ddr786_v1.06.243.bin

    2、选择需要烧写的统一固件    (点击在该行末尾的空白格处,可在本地选择)

提示:在烧写时,一定要先升级Loader文件!

            固件需要本地存在。  点击这里 可获取统一固件)

烧写完成后,如下图:

微信图片_20180330113436.png

    3、将USB双公头数据线拔出后,重启板子即可。

Linux下

安装工具

    Linux下烧写固件到EMMC使用工具 rkdeveloptool, 下载链接:  rkdeveloptool

    安装工具运行环境

#apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf -y
升级固件
sudo rkdeveloptool db            out/u-boot/rk3328_loader_ddr786_v1.06.243.bin
sudo rkdeveloptool wl    0x00    system.img
sudo rkdeveloptool rd


更新固件

系统启动后,uboot、kernl、dtb、rootfs等都可以单独更新,而不用重新烧写完整固件。

Linux下

TF卡部分更新:

取出TF卡,插到电脑上。确认TF卡设备节点。

  1.  挂载boot, rootfs分区到本地,替换文件更新

mkdir boot
sudo mount /dev/sdb4 boot
mkdir rootfs
sudo mount /dev/sdb5 rootfs

   2.  通过dd, 将img写入到卡里面

sudo dd if=./out/u-boot/idbloader.img of=/dev/sdb seek=64      conv=sync,fsync 
sudo dd if=./out/u-boot/uboot.img     of=/dev/sdb seek=16384   conv=sync,fsync
sudo dd if=./out/u-boot/trust.img     of=/dev/sdb seek=24576   conv=sync,fsync
sudo dd if=./out/boot.img             of=/dev/sdb seek=32768   conv=sync,fsync
sudo dd if=./out/linaro-rootfs.img    of=/dev/sdb seek=262144  conv=sync,fsync


EMMC部分更新:

sudo rkdeveloptool db           out/u-boot/rk3328_loader_ddr786_v1.06.243.bin
sudo rkdeveloptool wl 0x40      out/u-boot/idbloader.img
sudo rkdeveloptool wl 0x4000    out/u-boot/uboot.img
sudo rkdeveloptool wl 0x6000    out/u-boot/trust.img
sudo rkdeveloptool wl 0x8000    out/boot.img
sudo rkdeveloptool wl 0x40000   out/linaro-rootfs.img

Windows下:

TF 部分更新:

取出TF卡,插到电脑上。系统自动挂载boot, rootfs分区到PC,替换文件更新

EMMC部分更新:

1522391658693955.png



Uboot下设备模式管理

ROC-RK3328-CC的uboot可以支持多种与PC连接的模式,这些模式可以使用户方便地对设备进行升级、更新操作。特别是在fastboot模式下,用户可以在host pc使用多种操作系统的情况下,对设备进行固件升级更新操作。

通过双公头USB线连接PC,按住Recovery键,上电开机。根据按键时间的长短,设备会依次进入以下几种状态:

  1. UMS (USB Mass Storage)

    当设备上红色LED灯闪烁1次后,松开按键,设备USB进入UMS模式,设备作为一个USB大容量存储设备连接到电脑。设备上的EMMC、TF卡上的boot、root分区都可以挂载到PC上,用户可以很方便地进行修改。

    Debug 串口输出Log: rockchip_dnl_mode = UMS mode

  2. Fastboot

    当设备上红色LED灯连续闪烁2次后,松开按键,设备USB进入Fastboot模式,通过Fastboot工具,可以对TF卡,EMMC等设备的分区进行升级更新操作。

    Debug 串口输出Log: rockchip_dnl_mode = Fastboot mode

  3. Rockusb

    当设备上红色LED灯连续闪烁3次后,松开按键,设备进入Rockusb模式,此模式主要用于EMMC设备的固件更新操作。

    Debug 串口输出Log: rockchip_dnl_mode = Download mode

  4. Maskrom

    当设备上红色LED灯连续闪烁4次后,松开按键,设备进入Maskrom模式,此模式主要用于EMMC设备的固件更新操作。

    Debug 串口输出Log: rockchip_dnl_mode = Maskrom mode