目录
一、 RV1126 CE 板上的 Buildroot 和 Debian
2.1.3 第一步。下载 Buildroot & Debian 镜像和 flash 下载工具
2.1.5 step 3. 让板子进入maskrom或者rockusb loader模式
2.1.6 步骤四、在主机PC上启动rockchip flash下载工具
2.1.7 step 5. 刷入 buildroot & debian 镜像
3.1 下载 GNU 跨工具链二进制文件并安装所需的软件包(主机 Ubuntu 14.04 或 Ubuntu 16.04)
3.2 获取RV1126 CE Boards Buildroot源代码
3.9 生成 RV1126 CE Boards Buildroot 镜像以供 flash 下载
4.1.1 进入内核驱动补丁,创建hello dir和hello.c:
6.1.1 创建helloworld dir和helloworld.c:
一、 RV1126 CE 板上的 Buildroot 和 Debian
RV1126 CE Boards 软件支持两种操作系统:Buildroot 和 Debian。 RV1126 CE 板的 Debian 映像基于 Debian 9 版本构建。
二、 安装 Buildroot & Debian
当前支持在 RV1126 CE 板上安装 Buildroot 或 Debian 映像的方法:
• 通过 USB 数据线和 Rockchip Flash 下载工具从主机安装映像
以下章节将详细介绍该方法。
2.1 从主机安装镜像 - pc
对于将下载许多自编译操作系统的迭代实验版本的经验丰富的用户,建议使用此方法。如果第一种方法由于无法检测到显示器或鼠标和键盘而失败,这也是一种备用方法。由于此方法使用主机 PC 对电路板进行编程,因此无需将单独的显示器和鼠标/键盘连接到电路板。本指南描述了 Windows 主机系统的过程。
2.1.1 安装前提
此方法需要在Host PC 上安装rockchip flash 下载工具和相应的驱动程序。瑞芯微闪存下载工具是一个与 RV1126 CE 板的引导加载程序通信并允许您将图像闪存到板上的工具。有关如何在您的主机 PC 上安装 Rockchip 闪存下载工具驱动程序的说明,请参见下文。
2.1.2 安装概述
要从主机 PC 安装 Buildroot,只需遵循以下简单步骤:
- 步骤 1. 下载 Buildroot 和 Debian 映像
- 步骤 2. 在主机上安装 Rockchip Flash 下载驱动
- 步骤 3. 将开发板带入 maskrom 或 rockusb 加载器模式
- 步骤 4. 在主机 PC 上启动瑞芯微闪存下载工具
- 步骤 5. 刷新 buildroot 映像步骤
- 6. 重新启动并使用
以下章节更详细地描述了每个步骤:
2.1.3 第一步。下载 Buildroot & Debian 镜像和 flash 下载工具
1. 从以下网盘下载 buildroot 和 debian 镜像: (后面下载好了贴链接)
https://1drv.ms/u/s!AhoFWWcHV7rXklDzYPeAll4WLSRx?e=Ff0usx
2. 从下面的网盘下载rockchip flash下载工具(window & linux版本):
https://1drv.ms/u/s!AhoFWWcHV7rXklDzYPeAll4WLSRx?e=Ff0usx
2.1.4 步骤二、在主机上安装瑞芯微闪存下载驱动
在网盘工具目录:tools\windows\Driver Assitant_v5.0.zip
双击Driver Assitant _ v5.0\ Driver Install.exe,然后自动在你的windows主机上安装rockchip flash下载驱动。
2.1.5 step 3. 让板子进入maskrom或者rockusb loader模式
使用 typec usb 电缆连接 RV1126 CE 板和主机 PC。
然后让您的 RV1126 CE 板进入下载模式(maskrom 或 rockusb 加载器模式)。
下载模式的方法如下:先按开发板的reset键,然后长按recovery键3-4秒左右进入。
2.1.6 步骤四、在主机PC上启动rockchip flash下载工具
主机 PC 操作系统是 Windows:
在网盘工具目录:tools\windows\RK Dev Tool_Release.zip 双击RK Dev Tool_Release\RK Dev Tool.exe。
Flash buildroot 系统映像:
Flash debian 系统映像:
主机 PC 操作系统是 Linux:
在网盘工具目录:tools\linux\Linux_升级_工具_v1.57.zip
解压Linux_升级_工具_v1.57.zip,将镜像解压到Linux_升级_工具文件夹。
如:rv1126-buildroot,rv1126-debian。
2.1.7 step 5. 刷入 buildroot & debian 镜像
主机 PC 操作系统是 Windows:
打开该工具,然后单击“下载镜像”菜单。单击红色箭头标记的每一行结束,会弹出文件选择框,然后选择相应分区的img文件路径。依次设置所有img文件路径。配置完成后,单击“运行”。右侧信息框将显示相关信息。
主机 PC 操作系统是 Linux:
1. Flash buildroot 镜像
sudo ./upgrade_tool ul rv1126-buildroot/MiniLoaderAll.bin
sudo ./upgrade_tool di -p rv1126-buildroot/parameter.txt
sudo ./upgrade_tool di -u rv1126-buildroot/uboot.img
sudo ./upgrade_tool di -misc rv1126-buildroot/misc.img
sudo ./upgrade_tool di -b rv1126-buildroot/boot.img
sudo ./upgrade_tool di -recovery rv1126-buildroot/recovery.img sudo ./upgrade_tool di -oem rv1126-buildroot/oem.img
sudo ./upgrade_tool di -rootfs rv1126-buildroot/rootfs.img
sudo ./upgrade_tool di -userdata rv1126-buildroot/userdata.img
sudo ./upgrade_tool rd
2. Flash debian 镜像
sudo ./upgrade_tool ul rv1126-debian/MiniLoaderAll.bin
sudo ./upgrade_tool di -p rv1126-debian/parameter.txt
sudo ./upgrade_tool di -u rv1126-debian/uboot.img
sudo ./upgrade_tool di -misc rv1126-debian/misc.img
sudo ./upgrade_tool di -b rv1126-debian/boot.img
sudo ./upgrade_tool di -recovery rv1126-debian/recovery.img
sudo ./upgrade_tool di -oem rv1126-debian/oem.img
sudo ./upgrade_tool di -rootfs rv1126-debian/rootfs.img
sudo ./upgrade_tool di -userdata rv1126-debian/userdata.img
sudo ./upgrade_tool rd
2.1.8 第 6 步。重新启动并使用!
镜像下载完成后,请执行以下步骤:
● 断开 USB 电缆
● 按下复位按钮
如果你刷入 buildroot 镜像,重启后你应该会看到 buildroot 启动。
如果你刷入 debian 镜像,重启后你应该会看到 debian 启动。
3.构建Buildroot源码
本节提供从 x86 主机在 RV1126 CE 板上构建和 Buildroot 系统的说明。
3.1 下载 GNU 跨工具链二进制文件并安装所需的软件包(主机 Ubuntu 14.04 或 Ubuntu 16.04)
您需要根据您的主机/目标架构下载正确的 GCC 工具链。通常主机是 Ubuntu 16.04 或 18.04 的标准 Intel x86 - 64 计算机,目标是 Arm ARMHF 的 RV1126 CE 板。
sudo apt-get install repo device-tree-compiler git-core u-bo
ot-tools mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libs
igsegv2 m4 intltool libdrm-dev curl sed make binutils build-es
sential gcc g++ bash patch gzip gawk bzip2 perl tar cpio pytho
n unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-d
ev libgtk2.0-dev libglade2-dev cvs git mercurial openssh-clien
t subversion asciidoc w3m dblatex graphviz python-matplotlib l
ibc6:i386 libssl-dev expect fakeroot cmake flex bison liblz4-t
ool libtool keychain
3.2 获取RV1126 CE Boards Buildroot源代码
# repo init --repo-url=https://gitlab.com/bearkey-tools/repo -u \
https://gitlab.com/bearkey-1126-linux/manifests.git --no-clone-bundle
# repo sync
3.3 选择板配置
$ ./build.sh BoardConfig-rv1126-bearkey-ce.mk
3.4 构建Uboot
$ ./build.sh uboot
3.5 构建Linux内核
$ ./build.sh kernel
3.6 构建 Rootfs
$ ./build.sh rootfs
3.7 构建恢复
$ ./build.sh recovery
3.8 全部构建
$ ./build.sh
3.9 生成 RV1126 CE Boards Buildroot 镜像以供 flash 下载
$ ./mkfirmware.sh
ps:生成的固件在SDK的rockdev目录下。
4. 开发Buildroot驱动示例
4.1 简单驱动示例
4.1.1 进入内核驱动补丁,创建hello dir和hello.c:
$ cd kernel/drivers
$ mkdir hello
$ cd hello
$ vim hello.c
4.1.2 在hello.c中开始编码:
#include <linux/init.h>
#include <linux/module.h> #include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) {
");
printk(KERN_ALERT "hello,I am a simple driver sample\n
return 0;
}
static void hello_exit(void) {
}
printk(KERN_ALERT "goodbye,kernel\n");
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("Beiqi");
MODULE_DESCRIPTION("This is a simple driver example!\n"); MODULE_ALIAS("A simplest example");
4.1.3 创建Makefile和Kconfig:
//Makefile
obj-$(CONFIG_BEIQI_HELLO) += hello.o
//Kconfig
#
#gpio device configuration
#
menuconfig BEIQI_HELLO
bool "support beiqi hello test devices"
default y
---help---
Say Y here if you support beiqi hello device
4.1.4 修改Makefile:
$ cd ..
$ git diff
diff --git a/drivers/Makefile b/drivers/Makefile
index 4fa22d2..62a54d1 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -192,3 +192,4 @@ obj-$(CONFIG_RK_NAND) += rk_nand/
obj-$(CONFIG_RK_HEADSET) += headset_observe/
obj-$(CONFIG_RK_FLASH) += rkflash/
obj-$(CONFIG_BEIQI_ADC) += beiqi_adc/
+obj-m$(CONFIG_BEIQI_HELLO) += hello/hello.o
4.1.5 构建模块:
$ cd ../../
$ ./build.sh kernel
$ ls kernel/drivers/hello/
hello.c hello.ko hello.mod.c hello.mod.o hello.o Kconfig Mak efile
4.1.6 安装模块:
$ sudo insmod hello.ko
4.1.7运行看日志:
$ dmesg | tail -5
4.1.8 卸载模块:
$ sudo rmmod hello.ko
5. 开发 Buildroot 应用示例
Builderroot 添加编译应用,请参考以下内容。
5.1 简单的 Buildroot 应用示例
5.1.1 源码位置
选择SDK中源码的位置,例如:external。以添加hello应用为例。
$ ls external/hello
hello.c Makefile
$ cat external/hello/hello.c
#include <stdio.h> int main(void)
{
printf("hello world,I am a simple linux application sample\n ");
return 0;
}
$ cat external/hello/Makefile
CROSS_COMPILE=arm-linux-gnueabi- CC = ${CROSS_COMPILE}gcc
CXX = ${CROSS_COMPILE}g++
LIBS += -lm
LIBS += -ldl
CFLAGS += -I./include -I$(STAGING_DIR)/usr/include CFLAGS += -O2
#CFLAGS += -fno-stack-protector
LDFLAGS += -L$(STAGING_DIR)/usr/lib -L./
OBJECTS = $(SOURCES:.c=.o) PRJOBJS = hello.c
PRJNAME = hello
all: ${PRJNAME} $(PRJNAME):$(OBJECTS) $(PRJOBJS)
$(CC) -o $@ $(OBJECTS) $(PRJOBJS) $(LIBS) $(LDFLAGS) $(CFLA
GS) .c.o:
$(CC) $(INC) $(CFLAGS) -c -o $@ $<
.cpp.o:
$(CXX) $(INC) $(CFLAGS) -c -o $@ $<
clean:
rm -rf $(PRJNAME) *.so *.o
5.1.2 在builderroot中创建配置
选择buildroot的包配置位置,例如:buildroot/package/rockchip。以添加hello应用为例。
$ ls buildroot/package/rockchip/hello
Config.in hello.mk
$ cat buildroot/package/rockchip/hello/Config.in config BR2_PACKAGE_HELLO
bool "hello" help
All files for hello
$ cat buildroot/package/rockchip/hello/hello.mk HELLO_SITE_METHOD = local
HELLO_SITE = ${TOPDIR}/../external/hello HELLO_DEPENDENCIES =
define HELLO_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CX
X) -C $(@D)
endef
define HELLO_INSTALL_TARGET_CMDS
cp $(@D)/hello ${TARGET_DIR}/usr/bin endef
$(eval $(generic-package))
$(CXX) $(INC) $(CFLAGS) -c -o $@ $<
5.1.3 将Hello应用添加到buildroot菜单
添加以下内容:
$ git diff buildroot/package/rockchip/Config.in
+source "package/rockchip/hello/Config.in"
5.1.4 加入项目配置
工程编译选择rootfs配置。在boardconfig-ce.mk中可以看到rootfs的配置是rockchip_rv1126_rv1109_defconfig。
$ git diff buildroot/configs/rockchip_rv1126_rv1109_defconfig +BR2_PACKAGE_HELLO=y
5.1.5 编译Hello应用
$ ./buildroot/build/envsetup.sh
This script is executed directly...
Top of tree: /home/qianchen/proj/rv1126p2
You're building on Linux Lunch menu...pick a combo:
0. non-rockchip boards
1. rockchip_px30_32
2. rockchip_px30_64
78. rockchip_rv1126_rv1109
79. rockchip_rv1126_rv1109_ab
80. rockchip_rv1126_rv1109_facial_gate 81. rockchip_rv1126_rv1109_libs
82. rockchip_rv1126_rv1109_ramboot_uvcc
83. rockchip_rv1126_rv1109_recovery
84. rockchip_rv1126_rv1109_sl
85. rockchip_rv1126_rv1109_spi_nand
86. rockchip_rv1126_rv1109_spi_nand_recovery 87. rockchip_rv1126_rv1109_systemd
88. rockchip_rv1126_rv1109_tiny
89. rockchip_rv1126_rv1109_toolchain 90. rockchip_rv1126_rv1109_uvcc
91. rockchip_rv1126_rv1109_uvcc_spi_nand Which would you like? [0]: 78
$ make hello //compile
$ make hello-dirclean //clean
$ ls buildroot/output/rockchip_rv1126_rv1109/build/hello //demo hello
以上只是一个例子。需要了解builderroot编译器才能看懂官方文档。
6.开发Linux(Debian)应用示例
Debian 是一个 linux 桌面系统。开发debian应用程序和linux一样。所以我们开发linux应用程序示例如下。
6.1.1 创建helloworld dir和helloworld.c:
$mkdir helloworld
$ vim helloworld.c
6.1.2 在helloworld.c中开始编码:
#include <stdio.h>
int main(void)
{
printf("hello world,I am a simple linux application sample\ n");
}
6.1.3 构建应用程序:
$ gcc helloworld.c -o helloworld
6.1.4 运行应用程序并查看输出:
$ ./helloworld
运行输出为:
hello world,我是一个简单的 linux 应用示例
暂时用不到,有需要的私信
6.2 简单的rga演示
6.2.2 编译演示:
6.2.3 运行demo查看输出:
6.3 简单的mpp演示
6.1.4 mpp demo源码及分析:
6.1.4 编译演示:
6.1.4 运行demo查看输出:
6.4 简单的npu c++演示
6.4.4 npu c++ demo源码及分析:
6.4.4 编译演示:
6.4.4 运行demo查看输出:
附言:
它将生成 out.jpg。该图像标记了已识别的对象。