全志V853--buildroot 应用交叉编译

2022-12-06 13:34:15 浏览数 (2)

全志V853-高性能边缘AI视觉处理芯片

V853 是一颗面向智能视觉领域推出的新一代高性能、低功耗的处理器SOC,可广泛用于智能门锁、智能考勤门禁、网络摄像头、行车记录仪、智能台灯等智能化升级相关行业。V853 集成Arm Cortex-A7和RISC-V E907 双CPU,内置最大 1T 算力 NPU,使用全志自研 Smart 视频引擎,最大支持5M@25fps H.265编码和5M@25fps H.264编解码,同时集成高性能 ISP 图像处理器,可为客户提供专业级图像质量。V853 还支持 16-bit DDR3/DDR3L,满足各类产品高带宽需求;支持 4lane MIPI-CSI/DVP/MIPI-DSI/RGB 等丰富的专用视频输入输出接口,满足各类AI视觉产品需求;采用先进的22nm工艺,具有更优的功耗和更小的芯片面积。

全志V853开发板介绍

  1. 很荣幸能第一手拿到全志V853的开发板。接下来开始介绍介绍这款开发板。
  2. 全志V853开发板规格参数:

类型

说明

主控

全志V853 (Arm A7 1GHz RISC-V E907 600MHz 1T NPU)

DDR

512MB DDR3

Memory

8GB eMMC

无线网络

2.4G WiFi/BT(型号:全志XR829模组)

有线网络

100Mbps以太网

摄像头

1080P双目摄像头

屏幕

7寸 LCD屏幕

麦克风

模拟麦克风 *2

DEBUG

支持uart串口调试,支持ADB USB调试

USB

Type-C USB * 1, 同时支持供电和数据传输

PMU

全志AXP2101

  1. 全志V853系统配置:官方支持Tina Linux 5.0系统,基于Linux4.9内核和uboot-2018。其中:
  • Tina Linux 是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。
  • Tina Linux v5.0 中包含 Linux 系统开发用到的 boot 源码、内核源码、驱动、工具、系统中间件与应用程序包。可以方便的定制、编译、打包生成Linux固件镜像。
  • Tina Linux v5.0 可以支持构建 openWrt 和 buildroot 不同构建系统;也支持单独编译 BSP(Board Support Package,板级支持包);能够打包生成固件包,烧录到相应设备中并运行。
  1. 全志V853开发板的硬件外设

全志V853--交叉编译

  1. 为啥要写交叉编译呢?是因为全志提供的文档中描述的OpenWRT的构建方式,而我采用的buildroot进行构建。他们两者采用的交叉工具链是不一样的。其中:OpenWRT采用musl工具链,而buildroot采用的glibc工具链。
  2. 为了避免其他人采用buildroot也按照文档进行操作,导致应用编译完无法运行起来。所以我补充一下buildroot构建中,应用的交叉编译。
  3. 编写HelloWorld:
代码语言:javascript复制
#include <stdio.h>

int main(void)
{
   printf("Hello World!");
   return 0;
}

  1. V853的编译工具链的路径:prebuilt/rootfsbuilt/arm/。里面包含了两个工具链:musl和glibc,而buildroot采用了glic。
  2. 所以gcc编译器的路径:prebuilt/rootfsbuilt/arm/toolchain-sunxi-glibc-gcc-830/toolchain/bin/。而编译是需要用到的库文件和头文件路径:prebuilt/rootfsbuilt/arm/toolchain-sunxi-glibc-gcc-830/toolchain/arm-openwrt-linux-gnueabi/
  3. 指定存放交叉编译需要使用的库文件头文件的文件夹
代码语言:javascript复制
v853@v853:~/$ export STAGING_DIR=~/v853/tina-v853/prebuilt/rootfsbuilt/arm/toolchain-sunxi-glibc-gcc-830/toolchain/arm-openwrt-linux-gnueabi/
  1. 编译应用程序:
代码语言:javascript复制
v853@v853:~/$ export STAGING_DIR=~/v853/tina-v853/prebuilt/rootfsbuilt/arm/toolchain-sunxi-glibc-gcc-830/toolchain/bin/arm-openwrt-linux-gcc -o helloworld main.c
v853@v853:~/$ ls
helloworld main.c
v853@v853:~/$
  1. 我是采用挂载SD卡的形式将应用程序拷贝到板子的。所以将编译好的应用程序helloworld拷贝到SD卡。
  2. 板子上验证结果:
代码语言:javascript复制
// 挂载SD卡到test目录上
# mount /dev/mmcblk1 /mnt/test/
// 运行应用
# ./helloworld
Hello World!# 

0 人点赞