Linux开发上手指南
更新时间:2018-06-12 阅读:10851
编译环境搭建
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
生成固件
./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后,显示如图。
3、如图所示,有五种选择:
1)若本地没有需求的操作系统,则需要下载,选择好需要的操作系统后,点击OK即可。
2)若本地有需求的操作系统,点击Browse image后,选择好系统后,点击OK即可。
4、在完成了以上步骤的同时,电脑也识别出了SD卡,点击FLASH,等待完成即可。
注意:在烧写完成到99%或100%时,出现如下图情况,可忽略,并不影响固件烧写进SD卡
5、完成烧写后,将SD卡从电脑拔出后,插入rk3328的TF卡槽,上电即可。
使用DD命令制作启动卡
在Linux, Mac os下,也可以直接使用dd命令,制作TF卡。
插入TF卡设备到PC上, 确认TF设备节点, 通常为/dec/mmcblk0 或者 /dev/sdb,设备节点必须确认,如果写错,可能会导致PC上硬盘数据丢失。
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 数据线的连接:
数据线一端连接开发板。
短接 Flash 的数据脚与地线脚,即板子上预留出来的 CLK 焊盘和 GND 焊盘。
数据线另一端连接主机。
板子上电。
稍候片刻,断开短接,设备就会进入 MaskRom 模式。
烧写固件
windows烧写固件到EMMC使用工具AndroidTool 下载链接:AndroidTool链接
打开AndroidTool后,如下图:
1、升级Loader文件:rk3328_loader_ddr786_v1.06.243.bin
2、选择需要烧写的统一固件 (点击在该行末尾的空白格处,可在本地选择)
提示:在烧写时,一定要先升级Loader文件!
固件需要本地存在。 点击这里 可获取统一固件)
烧写完成后,如下图:
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部分更新:
Uboot下设备模式管理
ROC-RK3328-CC的uboot可以支持多种与PC连接的模式,这些模式可以使用户方便地对设备进行升级、更新操作。特别是在fastboot模式下,用户可以在host pc使用多种操作系统的情况下,对设备进行固件升级更新操作。
通过双公头USB线连接PC,按住Recovery键,上电开机。根据按键时间的长短,设备会依次进入以下几种状态:
-
UMS (USB Mass Storage)
当设备上红色LED灯闪烁1次后,松开按键,设备USB进入UMS模式,设备作为一个USB大容量存储设备连接到电脑。设备上的EMMC、TF卡上的boot、root分区都可以挂载到PC上,用户可以很方便地进行修改。
Debug 串口输出Log: rockchip_dnl_mode = UMS mode
-
Fastboot
当设备上红色LED灯连续闪烁2次后,松开按键,设备USB进入Fastboot模式,通过Fastboot工具,可以对TF卡,EMMC等设备的分区进行升级更新操作。
Debug 串口输出Log: rockchip_dnl_mode = Fastboot mode
-
Rockusb
当设备上红色LED灯连续闪烁3次后,松开按键,设备进入Rockusb模式,此模式主要用于EMMC设备的固件更新操作。
Debug 串口输出Log: rockchip_dnl_mode = Download mode
-
Maskrom
当设备上红色LED灯连续闪烁4次后,松开按键,设备进入Maskrom模式,此模式主要用于EMMC设备的固件更新操作。
Debug 串口输出Log: rockchip_dnl_mode = Maskrom mode