一. 摘要已经拿到了平头哥Sipeed LicheeRV 86 开发板, 今天简单的为大家做个开箱, 并且完成waft的环境搭建和开发一个简单的应用 二. 开发板介绍
开发板基本参数介绍 - 适配 Lichee RV 核心板,全志 D1 主芯片,512MB DDR3 内存. 系统需要存放在TF卡中
- 支持运行 Linux 系统,支持 WAFT 开发环境. 本次开发最终的成品需要使用到Linux系统.
- 搭载一块分辨率为 480*480 的 4 英寸电容触摸屏,支持人机交互应用. 但是目前在Debian系统下面是默认是无法使用触摸屏的, 需要使用到键盘鼠标
- 板载百兆以太网与 Wi-Fi+BT 模组,支持以太网与无线网络连接. 优先网络连接需要使用到RJ45转接线配件
- 板载 DC-DC 电路,支持外部 9~12V 电源输入
- 板载扬声器功放与两路数字麦克风,支持音频播放与双麦克风降噪
- 板载 GPIO+供电扩展排针,可通过 GPIO 扩展应用场景
- 板载 USB 转 UART 与 USB-HOST 电路,便于串口调试与外接 USB 设备
三. 开箱
配件全家福, 可以说是非常豪华了, 基本开发所有要的配件已经囊括了. 包含: - 开发板主体, 包含核心板, IOT拓展板, 电容触控屏
- RJ45+电源延长线
- Type C数据线
- 3.0 TF卡读卡器
- USB Host OTG转接头
- 32G TF卡
为了更好的开发, 我另外自己准备了两个配件 - USB Hub分线器
- USB鼠标
- USB键盘
- 12V供电先
- RJ45网线
开发板背面
四. waft开发体验1. waft介绍Waft(WebAssembly Framework for Things) 是一个面向 AIoT 的高性能应用研发框架,基于 WebAssembly 和自研的渲染引擎威廉希尔官方网站
打造,适用于智能终端的软件应用研发场景. 应该是阿里自研的开发框架. 具有高性能, 原子化, 跨平台, 多语言的特点. - 高性能: 支持动态化AOT运行模式,能接近原生应用体验,可在非常低配的IoT设备上运行
- 原子化: 面向原子化的服务。化整为零,超级应用的核心内容短平快直达;化零为整,多源化的服务重组成场景化应用
- 跨平台: 支持Android, Linux, RTOS, MacOS、Windows等多平台,并能实现UI自适应与样式的跨端一致性
- 多语言: 面向广大开发者群体:前端、终端、传统IoT端、后端,各领域的开发者,可使用他们熟悉的编程语言
2. 硬件设置- 开发板主体
- Type数据线:用于供电以及adb数据连接
- 32G TF卡
- TF卡读卡器: 用于烧写镜像
- Windows操作系统的PC一台: 使用全志的烧写工具, 烧写镜像
- Linux操作系统的PC/虚拟机一台: 用于搭建waft开发环境
如下图: 数据线连接请连接到核心板上的Type接口, 方可以使用adb的数据传输. 使用uart接口也可以进行命令行操作, 但是无法进行文件传输, 因而选择adb作为调试接口
3. 软件设置- LicheeRV_tina_86panel_480p_waft.7z: 镜像文件
- [Windows]PhoenixCard: 全志镜像烧写工具
- [Linux] Node.js: waft开发环境依赖. Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台.
- [Linux] waft-cli: waft应用编译调试工具
- [Linux] adb: adb调试工具
五. 在Windows PC中烧写文件镜像1. 下载安装软件并烧录
- 下载安装软件
- 选择对应的镜像文件
- 选择启动卡
- 插上TF卡读卡器
- 选择对应的盘符
- 点击烧卡即可: 烧写过程中不要拔出盘, 烧写过程大约需要15分钟, 完成后弹出读卡器, 将TF卡连接到开发板上.
- 连接Type C数据线
2. waft视频播放体验
ffmpeg -i /root/video.mp4 -pix_fmt bgra -f fbdev /dev/fb0 -f alsa hw:0,0
六. 在Linux PC中安装waft环境搭建 1. 通过一下命令安装node.js以及waft开发调试工具
- sudo npm i waft-cli -gsudo npm i waft-cli -g
- 因为我实现已经通过二进制安装包的形式安装过node.js, 因为没有额外安装node.js. 然而装了几次都发现会报错.
- npm WARN deprecated @types/table@6.3.2: This is a stub types definition. table provides its own type definitions, so you do not need this installed.
- npm WARN deprecated @types/stylelint@14.0.0: This is a stub types definition. stylelint provides its own type definitions, so you do not need this installed.
- npm WARN deprecated @types/ora@3.2.0: This is a stub types definition. ora provides its own type definitions, so you do not need this installed.
- npm WARN deprecated @types/colors@1.2.1: This is a stub types definition. colors provides its own type definitions, so you don't need this installed.
- npm WARN deprecated har-validator@5.1.5: this library is no longer supported
- npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
- npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
- npm WARN deprecated loadsh@0.0.4: This is a typosquat on the popular Lodash package. This is not maintained nor is the original Lodash package.
- changed 644 packages, and audited 887 packages in 3m
- 63 packages are looking for funding
- run `npm fund` for details
- 5 moderate severity vulnerabilities
- To address all issues, run:
- npm audit fix
复制代码
解决方案, 不能使用官网二进制包的安装方式, 依然有报错
- sudo apt-get install node.js npm
复制代码
报错
- sudo npm install -g n
- npm does not support Node.js v10.19.0
- You should probably upgrade to a newer version of node as we
- can't make any promises that npm will work with this version.
- You can find the latest version at https://nodejs.org/
- /usr/local/lib/node_modules/npm/lib/npm.js:32
- #unloaded = false
- ^
- SyntaxError: Invalid or unexpected token
- at Module._compile (internal/modules/cjs/loader.js:723:23)
- at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
- at Module.load (internal/modules/cjs/loader.js:653:32)
- at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
- at Function.Module._load (internal/modules/cjs/loader.js:585:3)
- at Module.require (internal/modules/cjs/loader.js:692:17)
- at require (internal/modules/cjs/helpers.js:25:18)
- at module.exports (/usr/local/lib/node_modules/npm/lib/cli.js:22:15)
- at Object. (/usr/local/lib/node_modules/npm/bin/npm-cli.js:2:25)
- at Module._compile (internal/modules/cjs/loader.js:778:30)
复制代码
解决方案 参考
- curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash -
- sudo apt-get install -y nodejs
复制代码
2. 再次安装waft开发调试工具
3. 初始化通过命令初始化waft开发项目, 完成后会生成项目工程目录
4. 启动交互界面
4. 编译在交互界面通过.build命令进行项目编译, 编译完成的文件会存放在build目录中 3. 通过adb命令上传并启动程序
- $ adb push ./* /mytest
- $ adb shell
- # killall -9 waft_app
- # waft_app /mytest/app_wifi.wasm
复制代码
七. waft开发入门参考 waft的开发有点类似与Vue的开发, 这次我就在官方样例的基础上简单的进行修改, 体验一下waft的开发 1. 样例修改:在工程目录中找到mock.json, 修改其中的参数
2. 打包进入waft交互见面, 输入命令.build进行打包
3. 上传文件并运行
- apt install adb -y
- adb shell rm -rf /mytest/*
- adb push ./build/* /mytest
- adb shell waft_app /mytest/app.wasm
复制代码
4. 效果展示
8. 总结1. 优势- 硬件方面, 这次提供的开发板非常豪华, 拓展板做工尽量, 加上一个外壳基本上就可以作为一个产品出售了. 好像官方也有加外壳的版本. 配件包含了所有开发过程中需要到的配件. 板载也包含了UART芯片, 无需额外购买UART转接器, 降低了开发的难度.
- 上手即用, 拿到手的时候已经刷好了waft天气样例, 接上电源之后即可进行使用
- 资料完整, 官方提供了充分的说明文档和开发例程, 简单阅读即可上手. 同时也开源了完整的SDK, 为深度定制提供了可能性
- waft框架的体验也非常好, 大大降低了IOT的开发门槛, 使得开发人员可以专注于应用层面的开发而无需关注与底层的实现. 特别是图形化的应用, 前端人员基本上可以直接上手
2. 不足- waft开发调试工具的模拟器工具似乎只有mac系统才可安装, 对于使用Windows和Linux的开发不是特别友好
0
|
|
|
|