折腾瑞芯微RV1126嵌入式开发板

2020年前后,当华为海思被美国制裁时,国内安防芯片缺口很大(安防领域,当时海思IPC SoC大约占有70%市场,DVR/NVR SoC大约占有90%市场)。之后群雄逐鹿,瑞芯微也适时推出了两款面向IPC的SoC芯片,RV1126(4K800万IPC)及RV1109(500万IPC)。RV1126采用四核32位ARM Cortex A7架构,有2T算力的NPU,适合用来做视频编解码,跑与视频相关的算法模型。

手边有一块闲置很久的基于RV1126的嵌入式开发板,1G内存,自带8G eMMC硬盘。闲暇之余,想用来安装宝塔面板,搭建nginx等环境,然后跑web应用。厂家提供的固件是基于 buildroot的,如此,需要从源代码开始,编译和配置自己需要各种软件和库。对此我一窍不通,难度太大,只能作罢。

RV1126开发板

最近发现厂家更新了固件,提供了基于Ubuntu的底层固件,之前的想法又冒出来了,试了试,居然成功了,这里做些回顾记录。

刷机

刷机方法与刷安卓手机类似。电脑首先安装usb驱动,瑞芯微有提供驱动安装助手–DriverAssitant_v5.0(下载)。驱动安装好后,开发板通过USB与电脑连接,识别到设备。

瑞芯微的刷机工具–RKDevTool(下载),刷机过程中可能出现的问题与安卓刷机基本一样,包括不限于USB线,设备连接,识别,驱动等方面。

RV1126开发板厂商提供的基于Ubuntu的固件–RV1126-Ubuntu-20.04-firmware_20240227(下载)。

环境搭建配置

刷完机,插上网线,因为设备默认DHCP,搜索查询到设备的IP,然后SSH登录。

SSH 登录

1panel面板

因为时常操作云服务器,此时第一想法是安装宝塔面板。却被提示在线安装的宝塔,不支持这个arm 32位设备。让去试试宝塔5.9。简单搜索了下,不知道去哪弄宝塔5.9的安装包,官方的离线安装服务里可能有旧版的,但要收费。(写此博文时,又在网络搜索一番,发现有好心人搜集整理了旧版本的宝塔,此处

转念想到何不试试其他的面板程序,比如1panel。1panel面板官网写着支持armv7l服务器架构。试了下,果然安装成功。有宝塔的经验在先,1panel面板的安装,使用上手很快。终端SSH及文件管理,很直观,与宝塔的使用基本一致。

frp

为了方便SSH远程登录,及面板的远程管理以及后续web站点能外网访问,首先用上frp。用一台阿里云香港服务器(2C2G30M)做frp的服务端,配置好。虽然第一次使用frp,因工作原因,对p2p,nat穿透,端口映射,DDNS知识了解很多,所以对frp理解,上手,使用起来很容易。

frp的设计理念可能是要保持服务端配置的精简,统一(在客户端做各种区分),比如保持服务端唯一的对外http端口,https端口,ssh端口等。如果有多个对外服务(比如web应用),只需要在frp客户端做配置即可,通过绑定不同域名来区分不同web应用(而非常规的采用不同端口区分不同web应用),如此思路很清晰,就是有点费域名。:-)

持续将近半个月的frp使用下来,很稳定,速度也很好。当然,这可靠性多半要归我这台2C2G30M的阿里云香港服务器。看网上的讨论,这个系列的阿里云香港服务器很抢手,性价比很高。我比较看重的,回国内延时非常低,在广州ping值延时只有8-9ms,比广州服务器ping值还低。(对于我用来科学上网,非常完美)。

说个题外话,我曾持续(从一个月到一年时间不等)测试各种云的香港服务器(比如狗云,马云,鸡云,草云。当然还有大厂的,腾讯云,华为云,天翼云等),回大陆线路,表现最好最稳定,性价比最高的还是阿里云。

应用

解决了服务器远程管理,外网访问问题。剩下的就是搭建网站了。使用宝塔时,习惯一键安装NMP等环境。1panel也有类似功能,不过其提供的默认web环境是OpenResty,安装时却出了点状况,始终安装失败。

1panel的理念是一切皆docker。安装的所有应用均是基于docker的。安装OpenResty失败,起初以为是docker镜像源,网络问题。不过,这个很快排除了。

前段时间网络上讨论很多,docker hub及国内的众多加速服务在国内完全无法用,当然解决办法也很多。我比较喜欢的办法,对于个人用户,可以将常用的镜像通过GitHub action同步到阿里云容器镜像服务 ACR,然后选择公开或者私有,需要时从ACR拉取容器镜像。(见 docker_image_pusher

这种方法,我使用多次,国内服务器上拉取容器镜像,速度很快,也稳定可靠。当然,更常规的做法是使用docker hub镜像加速,比如1panel提供的临时加速地址:https://docker.1panel.live 。目前大环境下,国内的docker hub镜像站几乎都关了。我上面提到的docker image pusher方法对于个人用户是非常实用的。

排除网络问题,查看日志,发现安装OpenResty失败的原因是因为1panel商店里上架的这个版本不支持我使用的armv7l处理器。此时恍然大悟,然后又有点忧心。相较于x86,armv7l算比较小众,很多docker应用可能没有适配。如果通过1panel自带的商店安装,估计很多安装不了。如此,对于这个开发版使用1panel面板作用不大了。当然1G内存,外加4核心处理器,本身有点鸡肋和尴尬。也只能用来跑些简单的web应用。

找到问题以后,手动安装了nginx/1.18.0,PHP 7.4.3-4ubuntu2.23 (cli),这样能来跑静态及PHP站点了。

目前这个开发板上运行的web应用有:

之前在网友小宋的博客看见介绍的用来监控树莓派状态的应用Pi Dashboard,UI比较好看,起初试了在云服务器上跑,但是x86的服务器获取不到CPU温度。如今这个是arm的开发版,安排上。

通过docker安装的twikoo,uptime-kuma可以成功运行。

作为我这个hexo博客节点之一(目前我这个博客节点有:阿里云广州,华为云北京,京东云北京,海外netlify以及此开发板的香港服务器frp反代)。通过Github action构建,然后分发到不同节点服务器上,方法参见我之前的博文:博客网站更新总结-2023–Github-action通过GitHub Action将博客网站等静态文件同步到云服务器

考虑停电,断网,设备重启等意外情况,给相关程序加上开机启动,进程守护。同时因为只有1G内存,加上定时任务,定时清理内存,缓存。此时1panel面板的价值作用体现了。

前面提到frp是通过不同域名区分不同网站的,最后各web网站的访问地址是域名+端口,比如one.jiangyu.org:8090,two.jiangyu.org:8090。给这些源站套上CDN,就能不带端口,直接用绑定的CDN域名访问对应的web站点。只是这样一来,就更费域名了。:-)

还有一个问题。绑定CDN以后,我习惯强制https,如此需要给CDN上传SSL证书。如今SSL证书有效期已缩短到90天(我曾在6个月前的博文 SSL证书,部署及相关知识中总结过与SSL证书相关的知识,彼时证书有效期还多是1年,半年不到普遍都是90天了),如果自己的VPS部署站点,开启https,申请SSL证书,然后绑定,不断更新,这都能自动化完成。可是在CDN应用里,需要自己上传SSL证书,如果过期,需要重新再上传新的证书。如果使用的是大厂CDN,这个问题比较好解决,厂家开放了各种api,基于此很多大神帮忙造好了轮子,SSL证书申请,上传到CDN,部署,更新都能通过脚本自动化完成。可是对于小厂CDN,一般没开放api或者没有现成的造好的轮子,需要自己频繁手动更新SSL证书,是个大问题。

最近看到有某CDN小厂提供了名为证书无忧的服务,能很好解决上述问题。在CDN配置里,第一次先上传自己的SSL证书,在证书到期前,会自动更新有效期为 90 天的免费证书。目前公测期间这个功能免费,以后可能每次成功更新证书收费1-2元。这是个很好的功能,不知道会不会有其他CDN厂家跟进。

其他

这个开发板尺寸100 x 60mm,比树莓派略大,买来一个树莓派的亚格力外壳(外壳整体尺寸与这个开发板相当),重新钻孔,保护起来。买外壳时,看见店家有与外壳配套的散热风扇,也买了一个。测试了一段时间,对比发现,这个5V 0.2A的小风扇能给CPU降温5-6℃。不过因为RV1126这颗SoC面向的是安防,消费类IPC领域,低功耗,温度控制这块做得比较好。即使不加散热风扇,在室温30℃时,一般负载下运行时的最高温度也只在50℃上下,离会降频的85℃还很远。

这个开发板有个40pin 的 gpio接口,厂家文档说兼容树莓派的接口,除此没有更多资料。本来想着如同树莓派一样,接几个诸如温度,湿度这样的传感器,调试一下,资料欠缺,需要补的课很多,只能暂时作罢。

苏联的经验教训 溥仪《我的前半生》

  评论