AnyCloud 37 E 开发指南

一、准备

物品清单:

  1. 开发板(屏幕、摄像头、SDIO WIFI 小板)× 1;
  2. UART 转 Type A 数据线 × 1;
  3. Micro-B 转 Type A 数据线 × 2;

二、启动

  1. 找到带有“DC 电源座”字样的 USB 插口,插入 Micro-B 数据线,另一端插入电脑或者电源;
  2. 找到 SW 1 电源开关按钮,按下按钮即供电开机;

三、配置

在配置交叉编译环境之前,需要先在电脑上装一个 Ubuntu 系统,这里提供两种思路:

  1. VMware 虚拟机或者 VirtualBox 虚拟机
  2. Windows Subsystem For Linux(WSL)

具体的安装方法可以自己去查阅。

系统安装完成之后,需要安装编译环境,具体安装命令有:

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo apt-get install gcc-multilib
sudo apt-get install libstdc++6
sudo apt-get install make cmake
sudo apt-get install zlib1g-dev lib32z1-dev
sudo apt-get install liblzo2-dev liblzo2-2 liblzo2-dev:i386
sudo apt-get install u-boot-tools
sudo apt-get install lib32ncurses6 libncurses5-dev
sudo apt-get install libmpfr-dev libmpfr6 libmpfr6:i386
sudo apt-get install mtd-utils
sudo apt-get install libtool
sudo apt-get install cpp g++
sudo apt-get install gawk
sudo apt-get install gcc perl

如果安装之后还有报错缺少什么东西,根据报错的内容去安装对应的包即可。

在编译之前,我们还需要将交叉编译器添加到环境变量中,理论上,交叉编译器应当位于 SDK 的 tool 文件夹下的 arm-anykav500-linux-uclibcgnueabi 压缩包内,只需要执行 tar xvf arm-anykav500-linux-uclibcgnueabi.tar.bz2 解压压缩包,里面的 bin 目录就是交叉编译器的所在目录了,将该 bin 目录的绝对路径添加到环境变量即可。如果想就只使用一次,可以执行 export PATH=$PATH:这里改为你的交叉编译器路径 以设置临时变量,如果想设置永久变量,可以前面的命令放到 ~/.bashrc 文件的最后一行,这样每次打开一个 Shell 都会设置一遍环境变量。

四、编译

解压官方给的压缩包文件(或者去我的 Github 仓库下载),找到 AK37E_SDK_V1.05.tar.gz 文件,使用 tar xvf AK37E_SDK_V1.05.tar.gz 命令来解压 SDK,解压完成之后,找到 auto_build.sh 文件,运行该文件即可成功编译。

需要注意的是,使用 auto_build.sh 脚本自动化编译可能会导致难以看出是哪一部分出现了报错,所以如果编译脚本很快就执行结束了,

可能会出现 error while loading shared libraries:libmpfr.so.4: cannot open shared object file: No such file or directory. 一个链接库无法链接的问题,运行 sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4 命令即可。

五、烧录

  1. 在烧录之前,确保开发板上的 JP 1 和 JP 2 跳线已配置为 USB_DP -> AK_DP,USB_DM ->AK_DM;
  2. 在电脑上(Windows 系统)运行 Burn Tool 工具,暂不需要改动配置;
  3. 用数据线插上开发板上带有“串口”字样的 Micro-B 接口,另一头插入电脑;
  4. 打开 Burn Tool 烧录软件,按下开发板的 BOOT 按钮,不要松手,然后短按 RESET 按钮一次,等待 Burn Tool 软件设备 0 通道变黄,然后点击开始,便可开始烧录;

burn tool

六、调试

  1. 在供电的同时,使用 USB 转 UART 数据线连接电脑与开发板,启动 MobaXterm,找到对应的串口号,选择 Shell 进行连接;
  2. 按下开发板的 RESET 按键,要求输入用户名和密码:
    • 用户名:root
    • 密码为空,回车即可
  3. 操作过程会一直弹出 udhcpc:,这是应为没有网络连接导致,可通过 killall udhcpc 命令来终止这个进程;

七、LCD 开发

1. 视频(图像)文件转换

由于该开发板 LCD 屏幕不能直接显示 JPG、PNG 或 MP 4 等常见文件,我们需要借助工具来将这些文件转化为该 LCD 支持的 RGB 或 YUV 等格式(具体内容请见《中间件接口说明》文档“视频输出”部分)。

在本文中我们将借助 FFmpeg 工具来执行格式转换工作:

  • Windows:在 Microsoft Store 中直接下载即可;
  • Linux:各大 Linux 发行版基本都可以直接通过包管理器安装 FFmpeg,例如 Debian 系的 Ubuntu 可以使用 sudo apt install ffmpeg 进行安装,Arch 系可以使用 sudo pacman -S ffmpeg 进行安装。

安装完成之后,就可以在命令行中使用 FFmpeg 了(该软件没有 GUI 图形界面)。

// todo
首先我们创建一个名为 image 的文件夹和一个 yuv 文件夹(其实随便什么名字都可以),然后使用 ffmpeg -i input.mp4 -r 10 -f image2 yuv/%05d.yuv 命令将 input. Mp 4 分解成一帧一帧的 yuv 文件且保存在 yuv 文件夹下。

通过以上操作,我们得到了一个名为 yuv 的文件夹,且该文件夹内容为 input. Mp 4 视频的逐帧 yuv 文件。

2. 挂载 TF 卡

因为开发板的存储空间非常小且是只读的,所以我们无法通过烧录的形式将上述的 yuv 文件夹导入开发板内部存储器中,因此我们需要借助 TF 卡这一外部存储器。

首先我们将 TF 卡插入读卡器然后接入到 PC 中,将 yuv 文件夹复制到 TF 卡内,然后将 TF 卡插到开发板上即可。

开发板启动之后,登录进入系统,运行 tf_card.sh 来加载相关驱动,然后查看 /dev 目录下有无 mmcblk0p1 文件,如果有就算是识别出来 TF 卡了,紧接着执行 mount /dev/mmcblk0p1 /mnt 将 TF 卡挂载到 /mnt 目录下,这样我们就能在 /mnt 目录下读写 TF 卡内的文件了。

3. 显示图像

在让屏幕显示图像之前,我们还需要加载屏幕相关驱动,具体步骤为:

  1. 进入 /usr/modules 目录内;
  2. 执行 insmod ak_fb.koinsmod ak_gui.ko

屏幕驱动加载完毕后,进入 /usr/bin 目录下,找到 ak_vo_sample 程序,该程序的作用就是在屏幕上输出视频或图像,使用 ak_vo_sample -h 命令可查看帮助信息。

输出帮助信息后,能够看到 ak_vo_sample -w 1024 -e 600 -x 0 -r 1920 -s 1080 -f /mnt/yuv -n 1 -i 4 -o 1 -l /mnt/anyka.logo.577.160.rgb 这一条示例命令。在这条命令中我们只需要将 /mnt/anyka.logo.577.160.rgb 替换为 /mnt/yuv 目录下的任一文件名即可,也可以执行 ak_vo_sample -w 1024 -e 600 -x 0 -r 1920 -s 1080 -f /mnt/yuv -n 1 -i 4 -o 1 -l /mnt/yuv*

注:
前提是你的 /mnt 目录下已经按照上文要求的放置好了 yuv 文件夹。

执行完该命令之后便可以看到屏幕中出现一帧一帧的动态图像了。