RV1109_RV1126 EVB板使用记录

RV1109_RV1126 EVB板使用记录

  • 在PC端安装虚拟机
  • 解压RV1126开发板SDK源码
    • 板级配置命令
    • 分区
    • 编译U-Boot
    • 编译Kernel
      • 增加驱动
      • 内核增加驱动
        • 增加sc132gs
        • can驱动:输入'/',进入搜索框中,搜索flexcan ,选择 support for FLEXCAN based chips:
      • can usb 驱动
        • 根据ch34x设备,搜索关键字 ch34,出来一下界面:
        • 根据PL2303 Serial Port设备,搜索关键字 PL2303,出来一下界面:
        • 电源域
    • 编译buildroot
      • packages增加
        • iproute2
        • can_utils
        • usbutils
        • 增加iqfile
      • 编译第三方库或者 APP
      • 在app或者external基础增加或者修改
        • 编译
      • 自定义 包
        • 源码目录增加hg_hello文件夹:
        • 加到 buildroot的menuconfig中
        • 编译
      • 开机启动
      • buildroot 下载源码包
    • 烧录
    • window

在PC端安装虚拟机

直接使用正点原子的集成虚拟机。也可以使用docker环境
更新软件,vscode

sudo apt install sshpass

帮助文档:《RV1126/RV1109 Linux SDK 快速入门》

解压RV1126开发板SDK源码

md5sum RV1126_RV1109_LINUX_SDK_V2.2.4_20211019.tar.bz2
# 2232d18ec054f8de7ba8b0067497a324  RV1126_RV1109_LINUX_SDK_V2.2.4_20211019.tar.bz2

mkdir rv1126_rv1109
#tar xvf rv1126_rv1109_linux_release_20211022.tgz -C rv1126_rv1109
tar xjf RV1126_RV1109_LINUX_SDK_V2.2.4_20211019.tar.bz2 -C rv1126_rv1109
cd rv1126_rv1109
.repo/repo/repo sync -l
# 需要rk 秘钥的
.repo/repo/repo sync -c --no-tags

板级配置命令

开发板版本:RV1126_RV1109_EVB_DDR3P216SD6_V13_20200630LXF,以下红框的,都可以使用。
RV1109_RV1126 EVB板使用记录_第1张图片

修改配置文件:device/rockchip/rv1126_rv1109/BoardConfig-hg.mk

# 配置文件进行选择
./build.sh lunch

# 指定通用类
./build.sh device/rockchip/rv1126_rv1109/BoardConfig.mk

# 增加 复制并修改
./build.sh device/rockchip/rv1126_rv1109/BoardConfig-hg.mk

# 修改BoardConfig-hg.mk内容为:
export RK_KERNEL_DTS=rv1126-evb-ddr3-v13-hg
export RK_ROOTFS_TYPE=ext2

分区

# 分区文件选择
export RK_PARAMETER=parameter-buildroot-fit.txt

CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00200000@0x00038000(rootfs),0x00060000@0x00238000(oem),0x00200000@0x00298000(userdata),-@0x00498000(media:grow)

修改固件目录下的分区表parameter.txt,根据需求修改rootfs分区大小。默认为大小为 3G 。
分区表格式:分区大小@所在地址(分区名)。最后的-@所在地址(分区名:grow)的 - 代表将剩余的内存大小拓展该分区,该写法只能放在 CMDLINE 最后。 其中大小和地址都是以块为单位( 1 块 = 512byte),换算成 MByte 可以用以下公式:

MByte = N * 512 / 1024 / 1024

例如我们看 rootfs 这行: 分区大小是 0x00200000,换算成十进制也就是

2097152  块 * 512 字节每块 / 1024 / 1024 = 1024 MByte

所以 rootfs 分区大小就是 3072M 。

特别注意:分区大小 + 所在地址 = 下一个分区的所在地址。

编译U-Boot

### 查看U-Boot详细编译命令
./build.sh -h uboot
### U-Boot编译命令
./build.sh uboot

### 使用menuconfig配置U-Boot,选择需要的模块,最后保存退出。
### rv1126_defconfig 文件在目录 u-boot/configs
### 命令格式:make "RK_UBOOT_DEFCONFIG"_defconfig
### RK_UBOOT_DEFCONFIG 定义在./build.sh选择的BoardConfig*.mk
cd u-boot
make rv1126_defconfig
make menuconfig
### 保存配置到对应的文件rv1126_defconfig
make savedefconfig
cp defconfig configs/rv1126_defconfig

# 会在 u-boot 目录下生成 uboot.img 文件和 rv1126_spl_loader_v1.08.108.bin 文件, uboot.img 文件就是我们要烧录的 img 镜像, rv1126_spl_loader_v1.08.108.bin 是启动引导uboot 的文件

编译Kernel

### 查看Kernel详细编译命令
./build.sh -h kernel
### Kernel编译命令
./build.sh kernel

cd kernel

### 命令格式:make ARCH=arm "RK_KERNEL_DEFCONFIG" "RK_KERNEL_DEFCONFIG_FRAGMENT"
### RK_KERNEL_DEFCONFIG 和RK_KERNEL_DEFCONFIG_FRAGMENT 都定义在./build.sh选择的 BoardConfig*.mk
### RK_KERNEL_DEFCONFIG_FRAGMENT 是可选项,具体看BoardConfig*.mk配置。

# 下面的放进 kernel/build.sh
make ARCH=arm rv1126_defconfig
make ARCH=arm menuconfig
make ARCH=arm savedefconfig
cp defconfig arch/arm/configs/rv1126_defconfig

增加驱动

  • 修改kernel\drivers\media\i2c\sc132gs.c
  • kernel\arch\arm\boot\dts\ 下增加dts及dtsi文件
    rv1126-evb-ddr3-v13-hg.dts
    rv1126-evb-v10-hg.dtsi
    rv1126-evb-v12-hg.dtsi
    rv1126-evb-v13-hg.dtsi

内核增加驱动

增加sc132gs

RV1109_RV1126 EVB板使用记录_第2张图片

can驱动:输入’/',进入搜索框中,搜索flexcan ,选择 support for FLEXCAN based chips:

RV1109_RV1126 EVB板使用记录_第3张图片

can usb 驱动

RV1109_RV1126 EVB板使用记录_第4张图片

按下 1 选项,就可以找到/
RV1109_RV1126 EVB板使用记录_第5张图片

根据ch34x设备,搜索关键字 ch34,出来一下界面:

RV1109_RV1126 EVB板使用记录_第6张图片

根据PL2303 Serial Port设备,搜索关键字 PL2303,出来一下界面:

RV1109_RV1126 EVB板使用记录_第7张图片

电源域

pmuio0-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV

pmuio1-supply 
regulator-min-microvolt =  3300mV
regulator-max-microvolt =  3300mV

vccio2-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  3300mV

vccio3-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV

vccio4-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV

vccio6-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV

vccio7-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV
Running build_kernel succeeded.

编译buildroot

buildroot
├── arch: 存放CPU架构相关的配置脚本,如arm/mips/x86,这些CPU相关的配置,在制作工具链时,编译uboot和kernel时很关键
├── board:在构建系统时,board默认的boot和kernel配置文件,以及一些板级相关脚本,存放一些默认开发板的配置补丁之类
├── boot:bootloader配置脚本目录,可以选择使用uboot作为bootloader
├── build:所有源码包解压出来的文件存放目录和编译过程的发生目录
├── configs: 板级配置文件,该目录下的配置文件记录着该机器平台或者方案使用的工具链,boot,kernel,各种应用软件包的配置
├── dl: download的简写,一些开源包下载后存在该目录;首次下载后,下次不会再从官网下载,而从dl/目录拿开源包,以节约时间 
├── docs: 存放相关的参考帮助文档
├── fs: 各种文件系统的自动构建脚本 
├── linux: 存放着kernel的自动构建脚本
├── output: 是编译出来的输出文件夹
│   ├── build: 存放解压后的各种软件包编译完成后的现场,包括主机上Buildroot所需的工具和针对目标编译的软件包
│   ├── host: 存放着制作好的编译工具链,如gcc、arm-linux-gcc等工具
│   ├── images: 存储着所有镜像(包括内核镜像,引导加载程序和根文件系统镜像),需要放在目标系统上的文件
│   ├── staging:是到内部目标工具链host/的符号链接
│   └── target: 用来制作rootfs文件系统,存放Linux系统基本的目录结构,以及编译好的应用库和bin可执行文件。(buildroot根据用户配置把.ko .so .bin文件安装到对应目录中)
├── package:下面放着应用软件的配置文件,每个应用软件的配置文件有Config.in和soft_name.mk
├── support:公共的支持文档(kconfig code, libtool patches, download helpers, and more)
├── system:根目录主要骨架和相关启动初始化配置,存放文件系统目录的和设备节点的模板,这些模板会被拷贝到output/目录下,用于制作根文件系统rootfs
├── toolchain:目录中存放着各种制作工具链的脚本
├── utils:常用工具
├── CHANGES
├── Config.in
├── Config.in.legacy
├── COPYING
├── DEVELOPERS
├── Makefile
├── Makefile.legacy
└── README
### 查看Rootfs详细编译命令
./build.sh -h rootfs
### Rootfs编译和打包命令
./build.sh rootfs

### 1. 先在SDK根目录查看Board Config对应的rootfs是哪个配置
./build.sh -h rootfs
# ###Current SDK Default [ rootfs ] Build Command###
# source envsetup.sh rockchip_rv1126_rv1109
# make
# source envsetup.sh  选择对应的defconfig
# 所在位置:buildroot/configs/rockchip_rv1126_rv1109_defconfig
# source envsetup.sh rockchip_rv1126_rv1109_hg
# 只包含音视频编解码库、 NPU 库以及头文件 source envsetup.sh alientek_rv1126_libs 编译BSP生成的目录 buildroot/output/rockchip_rv1126_rv1109_libs/BSP
source envsetup.sh rockchip_rv1126_rv1109
### 3. 使用menuconfig配置文件系统,选择需要的模块,最后保存退出。
### 例如:要配置app/ipc-daemon这个工程

cd buildroot
### a. 找到app/ipc-daemon对应的配置文件
### grep -lr "app/ipc-daemon" buildroot/package
### buildroot/package/rockchip/ipc-daemon/ipc-daemon.mk
### 对应的配置文件:buildroot/package/rockchip/ipc-daemon/Config.in
###
### b. 获取配置名称BR2_PACKAGE_IPC_DAEMON
### 查看buildroot/package/rockchip/ipc-daemon/Config.in
make menuconfig # 进入menuconfig后,按“/"进入查找模式,输入BR2_PACKAGE_IPC_DAEMON
### 4. 保存到rootfs配置文件
### ./buildroot/configs/rockchip_rv1126_rv1109_defconfig
make savedefconfig

# Rootfs编译和打包命令
# 编译后在 Buildroot 目录 output/rockchip_芯片型号/images下生成 rootfs.ext4
# 生成oem.img 和 rootfs.ext4软链接
./build.sh rootfs

packages增加

iproute2

RV1109_RV1126 EVB板使用记录_第8张图片

can_utils

RV1109_RV1126 EVB板使用记录_第9张图片

usbutils

RV1109_RV1126 EVB板使用记录_第10张图片

增加iqfile

sc132gs_H_G.xml 复制到external\camera_engine_rkaiq\iqfiles
RV1109_RV1126 EVB板使用记录_第11张图片

编译第三方库或者 APP

# 配置
source envsetup.sh rockchip_rv1126_rv1109
./build.sh external/mpp app/mediaserver
./build.sh rootfs

#或者
source envsetup.sh rockchip_rv1126_rv1109

# 编译
make qplayer
# 重编 qplayer
make qplayer-rebuild
# 删除 qplayer
make qplayer-dirclean
./build.sh rootfs
# 配置
source envsetup.sh rockchip_rv1126_rv1109_recovery
# 进入buildroot
# 编译
make qplayer
# 重编 qplayer
make qplayer-rebuild
# 删除 qplayer
make qplayer-dirclean
./build.sh rootfs

在app或者external基础增加或者修改

这里使用 app/ipc-daemon/ 目录下程序作为修改:

  • 复制并粘贴,修改为app/hg-daemon,把app/ipc-daemon/中文件里面的ipc修改为hg

  • 加到 buildroot的menuconfig中
    在buildroot/package/Config.in中,最后一个 endmenu 前
    添加内容如下:

menu "hg_hello"
source "package/hg_hello/Config.in"
endmenu

RV1109_RV1126 EVB板使用记录_第12张图片
RV1109_RV1126 EVB板使用记录_第13张图片

编译

# 编译器一定要选择对应的配置文件
source envsetup.sh rockchip_rv1126_rv1109
./build.sh app/

RV1109_RV1126 EVB板使用记录_第14张图片

自定义 包

源码目录增加hg_hello文件夹:

在这里插入图片描述
hello.c内容如下:

	```bash
	include 
	int main()
	{
	printf("buildroot helloworld\n");
	return 0;
	}
	```
	Makefile内容如下:
	
	```bash
	Wall -Wno-deprecated
	CFLAGS = $(OPT) $(OTHER)
	INCDIR = -I
	LIBDIR = -L
	LIBS =
	APP=hg_hello
	SRCS=hello.c
	all:
		$(CC) -o $(APP) $(SRCS) $(CFLAGS) $(LIBDIR) $(INCDIR) $(LIBS)
	clean:
		rm $(APP)
	```

加到 buildroot的menuconfig中

在buildroot/package/Config.in中,最后一个 endmenu 前

添加内容如下:
bash menu "hg_hello" source "package/hg_hello/Config.in" endmenu
创建Config.in文件,其内容如下:
bash config BR2_PACKAGE_HG_HELLO bool "hg_hello" help This is a demo to add hg_hello.
RV1109_RV1126 EVB板使用记录_第15张图片

编译

source envsetup.sh rockchip_rv1126_rv1109
make hg_hello

./build.sh app/hg_hello

RV1109_RV1126 EVB板使用记录_第16张图片

开机启动

在之前选的buildroot/configs/rockchip_rv1126_rv1109_defconfig中,
BR2_ROOTFS_OVERLAY=“board/rockchip/rv1126_rv1109/fs-overlay-sysv/”

在文件buildroot/board/rockchip/rv1126_rv1109/fs-overlay-sysv/etc/init.d/S98_lunch_init为开机自启动。

根文件系统打包前所在位置:buildroot/output/rockchip_rv1126_rv1109/target

# 原来 S98_lunch_init
source /etc/profile.d/RkEnv.sh

case "$1" in
	start)
		[ -f /oem/RkLunch.sh ] && source /oem/RkLunch.sh
		#recovery test
		if [ -e "/oem/rockchip_test/auto_reboot.sh" ]; then
			mkdir /data/cfg/rockchip_test
			cp /oem/rockchip_test/auto_reboot.sh /data/cfg/rockchip_test
			source /data/cfg/rockchip_test/auto_reboot.sh &
		fi
		;;
	stop)
		[ -f /oem/RkLunch-stop.sh ] && source /oem/RkLunch-stop.sh
		printf "stop finished\n"
		;;
	*)
		echo "Usage: $0 {start|stop}"
		exit 1
		;;
esac
exit 0

修改为:

#!/bin/sh
case "$1" in
    start)
        printf "start rkmedia_hg_vi_venc_rtsp_test: "
        . /etc/profile
        source /oem/RkLunch-stop.sh
        /oem/usr/bin/rkmedia_hg_vi_venc_rtsp_test &
        ;;
    stop)
        killall rkmedia_hg_vi_venc_rtsp_test
        printf "stop rkmedia_hg_vi_venc_rtsp_test finished"
        ;;
    restart|reload)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: -bash {start|stop}"
        exit 1
        ;;
esac
exit 0

buildroot 下载源码包

tar -axvf ~/dl.tar.gz -C buildroot/

烧录

window

烧录选项 镜像文件 说明 位置
Loader MiniLoaderAll.bin 此文件负责初始化 DDR,引导 Uboot。相当于 SPL 或者 TF-A。
Parameter parameter.txt 分区相关的文件
Uboot uboot.img uboot 镜像
Misc misc.img 系统升级时或者恢复出厂设置时使用
Rootfs rootfs.img buildroot 的文件系统 …/buildroot/output/rockchip_rv1126_rv1109/im
ages/rootfs.ext2
boot zboot.img kernel 镜像
recovery recovery.img 升级相关的文件系统
oem oem.img 厂商用的分区文件
Userdata userdata.img 用户分区 在 device/rockchip/userdata/目录下

你可能感兴趣的:(linux,arm开发,嵌入式硬件)