LinkPi评估板使用指南
1. 概述
1.1 前言
欢迎您选用LinkPi的产品,如果您第一次使用我的产品,建议您按照以下顺序开展工作:
- 接通电源和网络,通过网页访问板上预置的开源系统,如2.2访问系统所述,初步了解该方案可实现的基本功能。
- 通过若干个小的示例工程,熟悉LinkSDK,熟悉该方案的开发流程。
- 阅读
Encoder
工程的源码,参考该工程,实现您自己的产品。
1.2 关于 LinkSDK
LinkSDK是一个基于海思平台的快速开发工具,致力于降低嵌入式音视频产品的开发门槛,缩短产品研发周期,增强产品扩展性与灵活性,提升产品稳定性。 LinkSDK 的设计灵感来自于 Gstreamer ,只要按照业务流程将模块与模块依次连接起来,并配置各个模块的少量参数即可。即使是没有嵌入式开发经验的软件人员,甚至是 web 前端开发者,都可以使用 LinkSDK 开发出成熟的音视频产品。
LinkSDK统一了海思各芯片方案的接口,使用 Lin kSDK ,你可以做到一套代码在不同的方案中无缝切换。 除了对于海思基本功能的封装外,还包括了常用驱动对接,以及 流媒体传输、多格式录制、多画面导播、图像调优、特效叠加、美颜、音频降噪 、移动侦测、 UI 框架 等。
在线文档:https://gitee.com/LinkPi/LinkLib/wikis/pages
当然,对于已经非常熟悉海思方案开发的工程师,LinkSDK 也不是必选的, LinkPi 的产品可以完美兼容海思官方的内核、 uboot 等原生开发环境。除了可以参考1.4 音视频资源分布的内容外,开发者可以使用 LinkSDK 快速搭建 产品 原型,再通过 proc 系统信息 编写、修正自己的程序。
1.3 方案介绍
C3531D 是一款基于 Hi3531DV100 芯片的全接口 评估板 ,支持 SDI 、 AHD 、 HDMI 2.0等接口。同时还支持 wifi 和 4g 无线网络。 C3531D 可以直接用于开发录播、视频会议、导播等产品,广泛应用于教育、医疗、体育、媒体等领域。
使用 LinkPi 的评估方案,借助简单易用的 LinkSDK ,可以快速搭建产品原型,缩短产品开发周期,为企业节省大量研发成本。
更多介绍请访问 http://linkpi.cn/product/c3531d_evb.html
1.4 音视频资源分布
对于使用 LinkSDK 开发的用户,可以忽略该章节, SDK 已经包含了底层驱动对接的所有工作,开发者无需关注资源的内部分布情况,只需要按照接口名称调 用即可。
视频资源:
接口 | 通道 | 其他 |
---|---|---|
SDI-1 | VI0 | 8bit BT.1120I |
SDI-2 | VI1 | 8bit BT.1120I |
SDI-3 | VI2 | 8bit BT.1120I |
SDI-4 | VI3 | 8bit BT.1120I |
AHD | VI4 | 8bit BT.656 |
HDMI-A | VI8 | 16bit BT.1120S |
HDMI-B | VI6 | 16bit BT.1120S |
HDMI-C & VGA | VI5 | 8bit BT.656 |
对于有经验的 海思 SDK 开发者,如果对以上视频资源分布有 任何不清楚的,可以在Encoder 工程运行时执行:
cat /proc/umap/vi
可以从系统打印信息中获取完整的配置参数。
音频资源:
接口 | 通道 | 其他 |
---|---|---|
HDMI-A | AI0 | L:cid=0, R:cid=2 chnCnt=16, 单声道48K |
HDMI-B | AI0 | L:cid=12, R:cid=14 chnCnt=16, 单声道48K |
HDMI-C | AI0 | L:cid=8, R:cid=10 chnCnt=16, 单声道48K |
HDMI-OUT | AO2 | 立体声48K,cid=0 |
Mini-In | AI2 | tlv32 |
Mini-out | AO0 | tlv32 |
同理,如果对于音频资源有任何不明确的地方,可以通过执行:
cat /proc/umap/ai
cat /proc/umap/ao
可以从系统打印信息中获取完整的配置参数。
2. 开始使用
2.1 准备事项
- 该评估板由核心板和底板两部组成,请确保核心板连接稳固。
- 请使用配送的 12V 5A 电源适配器。
- 由于评估板没有外壳保护,请使用配送的螺柱将板卡垫高,以保护板上器件。
- 不可带电触摸板卡,不可带电插拔串口。
2.2 访问系统
接通 电源 与网线之后,系统启动并进入评估系统,可以通过默认IP 192.168.1.217
访问,网页登陆账号为admin
,密码为 admin
。
这是一个通用的编码器系统,登陆后可以看到各功能的设置页面,大部分功能简单易 懂,如遇问题,可以阅读《编码器使用说明》。
该系统的主程序、后台网页、文件系统等, 完全开源!!!
项目主页: https://gitee.com/LinkPi/Encoder
后面的章节将详细 讲解如何在这个系统的基础上进行OEM或二次开发。但是对于初学者,并不需要急于从这个完整的工程入手,下一章节将介绍如何从简单的工程开始熟悉
在评估板上的开发工作。
telnet
用户名 root
,密码为空
3. 开始开发
3.1 虚拟机导入
网盘中的虚拟机镜像已经包含了一个完整的开发环境,建议用VMware 15 以上版本导入 LinkPi.ovf 。具体过程如下:
1.鼠标右键点击 LinkPi. ovf 文件,使用 VMware 打开
2. 选择一个你希望导入的路径
3. 如果导入过程中出现如下提示,点击重试即可
4. 等待导入结束
![](/qrcode.jpg)
3.2 虚拟机使用
该镜像基于 Ubuntu 16.04 用户名: linkpi
密码: 1
虚拟机目录结构
~/work
主工作目录
~/work/cross
系统可能用到的各种交叉编译库
~/work/LinkLib
LinkSDK库存放的位置
~/work/tftp
tftp根目录,主要用来放内核镜像
~/work/3531D
3531D方案的主目录
~/work/3531D/fs
3531D嵌入式文件系统(包含编码器系统和demo)
~/work/3531D/3531D
演示程序源码
~/work/3531D/Encoder
编码器主程序源码
切换开发环境类型
由于虚拟机中集成了多种板卡的运行环境,需要在使用之前进行切换,选择您所购买的板卡类型。具体操作为:
cd ~/work/3531D/
./board.sh
运行效果如下图:
更新SDK
cd ~/work/LinkLib
git pull
cp HI3531D/lib/* ../3531D/fs/usr/lib/ -d
更新Demo
cd ~/work/3531D/3531D
git pull
更新可执行测试程序
已经在3531D项目中增加了自定义步骤,每次编译完成,所有的测试程序都会自动更新到~/work/3531D/fs/root/demo
目录。
3.3 编译第一个程序
双击打开~/work/3531D/3531D/3531D.pro
文件,自动开启QtCreator
,可以看到改工程包含若干子工程,可以直接 build 全部工程 快捷键(ctrl+B),或者单独选取某一个工程进行编译。
查看左侧Project 标签页,可 以看到已经设置好了一个自定义构建步骤,将编译好的程序自动拷贝到嵌入式文件系统的 root/demo
目录。
关于各子工程的介绍,可以在以下页面查看:
项目主页:https://gitee.com/LinkPi/3531D
说明文档:https://gitee.com/LinkPi/3531D/wikis/pages
额外说明
如果创建新的项目,请参考Demo
程序中各项目的.pro
文件,其中chip
是必填项目,HOME CROSS MPP
为选填,默认值指向/home/zc
,虚拟机中已经将/home/zc
软链接到/home/linkpi/work,所以默认情况下不需要填写这三个值,如目录结构发生变化,以上三个值需要正确填写。
3.4 连接板卡
1.找到调试串口 J17 所在位置
2.按照丝印指示接好ttl转usb模块
,设置为115200 8n1
模式 ,虚拟机中已经安装并配置好 minicom
程序,可以将usb转ttl模块
接入虚拟机,并执行 sudo minicom w
,即可 。
配送的 usb转ttl模块
线序如下:
3.5 设置网络启动
为了使得开发过程更便捷,建议使用nfs
启动的方式来运行评估板。具体方法如下:
- 设置你的虚拟机网络,使用桥接网卡的方式,并设置或获取一个固定的 IP
- 参照 3.4 连接板卡 的描述,在虚拟机中打开
minicom
终端 - 接好网络,评估板上电,看到串口输出后,立即按空格键,进入
uboot
,如下图
- 参考如下形式设置启动参数,其中
192.168.1.120
为虚拟机 IP192.168.1.206
为评估板 IP ,可以根据实际情况修改
setenv serverip 192.168.1.120
setenv ipaddr 192.168.1.206
setenv gatewayip 192.168.1.1
setenv netmask 255.255.252.0
setenv bootcmd 'mw.b 42000000 ff 400000;tftp 42000000 uImage_3531D;bootm 0x42000000'
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.1.120:/home/linkpi/work/3531D/fs ip=192.168.1.206 init=/linuxrc mtdparts=hinand:1M(boot),4M(kernel),250M(rootfs)'
- 保存参数并重启
saveenv
reset
- 上电,观察串口输出,直到看到海思官方 logo ,即说明板卡已经成功启动并进入系统,如下图
3.4 运行程序
运行Demo程序
进入系统后,root/demo
目录即为上文所述 3531D 工程的各示例程序的拷贝目录,可以在该目录下运行您所编译的示例程序。
无线网络(仅适用于C3531D)
运行wifi 目录的 host .sh
脚本,将创建一个名为“ LinkPi_2G ”的热点,并启用 dhcp
服务供客户端接入; wifi.sh
是用于接入其他热点的脚本,可以通过 wpa.conf 文件进行 ssid和密码的编辑。
进入4g 目录后,执行 ./pppd call gprsdial
即可拨号入网,前提是在上电前已经 插入4G 模块和 SIM 卡。
用户可以参考以上示例,根据自己的业务需求,重新整理、编写适合的脚本或程序。
4. 产品化
4.1 打包文件系统
cd ~/work/3531D
sudo ./ubi.sh
生成的fs.img
即为ubi
文件系统。
4.2 烧写文件系统
4.2.1 使用网络烧写文件系统
提供的开发资料里面包含了“ LinkPi 量产工具”,可用于自动化烧写镜像文件。
目录说明:
MPToolEx.exe
主程序
script
自动化烧写 脚本
kernel
内核目录
led
oled 开机画面 需定制
logo
HDMI& VGA 开机画面
image
文件 系统 镜像
注意事项:
- 程序依赖
.net framework
- 确保系统防火墙没有拦截
MPTool
的tftp
端口 - 多次烧写后可能出现无法烧写的情况,可以尝试在
uboot
阶段 执行nand scrub
命令后重试(需重刷uboot
)
使用步骤:
- 将开发板的串口连接至本机,确认串口号
- 连接网线,保持开发板的电源在断开状态
- 运行
MPToolEx.exe
如下图
- 通过 下拉框 选 择正确的串口号 、 有线网卡IP 选择你需要使用的脚本、开机画面 、内核 、文件系统 点击“ RUN ”按钮,按钮变为灰色状态 。
- 接通开发板电源主窗口看到串口输出信息下方状态栏显示当前执行命令 。
- 等待烧写脚本执行完毕,“ RUN ”按钮重新亮起。
4.2.2 使用 U 盘 烧 写文件系统
对于已经装配好外壳的产品,使用网络加串口的方式烧写系统非常不方便 ,因此可以考虑使用U盘烧写文件系统,烧写速度更快 。 步骤 如下:
- 将U盘格式化为
FAT32
格式 - 将目录中的全部文件拷贝到 U 盘中
- 板卡断电状态下插入U盘,将
HDMI
输出口接入显示器或电视 。 - 按住
DEF
按键,上电 - 当 看到
HDMI
显示系统升级中的时候,可以松开DEF
按键,等待烧写完成后,“系统升级中
“的提示会消失。
4.2 制作升级包
如果您的产品基于"编码器系统"定制,那么可以使用网页升级功能进行产品 升级 。 其实质是一个tar压缩包的上传与解压 。 您只需要按照板上文件系统的目录结构,把需要更新
的 文件 放入 ~/work/3531D/update
目录,随后执行~/work3531D/makeUpdate.sh
脚本会生成 update.bin
文件,通过网页上传该文件并重启即可 。