芯片开放社区
直播中

谭藤先

9年用户 51经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 制造/封装 可编程逻辑 嵌入式技术 制造/封装 可编程逻辑 嵌入式技术 制造/封装
私信 关注
[技术讨论]

【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验


  • 环境搭建

        
    • 更新waft容器
Waft引擎也在持续迭代开发中,板子系统自带的waft容器固件相对较老,可以通过下载链接获取Waft容器固件,链接如下:
https://occ.t-head.cn/vendor/det ... amp;module=3#sticky
解压压缩包,将对应的文件上传到开发板指定位置,分别如下:

  压缩包目录
  
  Linux目录
  
  说明
  
  bin目录
  
  
/usr/bin
  
  waft容器二进制运行文件
  
  lib目录
  
  /usr/lib
  
  waft_app运行时依赖的共享库
  
  resource目录
  
  根目录
  
  存放waft依赖的资源文件,如字库文件
  
  waftapps目录
  
  根目录
  
  存放waft字节码文件
  


推送方式可用adb或者scp指令,当前采用scp指令,指令格式如下:

  • 从本地将文件传输到服务器
scp【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
scp /Users/mac_pc/Desktop/test.png root@192.168.1.1:/root

  • 从本地将文件夹传输到服务器
scp -r【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
scp -r /Users/mac_pc/Desktop/test root@192.168.1.1:/root

  • 将服务器上的文件传输到本地
scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】
scp root@192.168.1.1:/data/wwwroot/default/111.png/Users/mac_pc/Desktop

  • 将服务器上的文件夹传输到本地
scp -r 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】
sup -r root@192.168.1.1:/data/wwwroot/default/test/Users/mac_pc/Desktop
注意,-r指令会在目标路径按源文件件名称新建一个文件夹。
image默认的账户为root,密码为tina。


  • waft开发环境搭建
官方的文档,参考这里 https://www.yuque.com/waft/docs/ubi8k4
waft官方推荐的开发环境在Linux下,且需要依赖nodejs环境。
这里的Linux建议使用自己熟悉的环境,我之前一直在虚拟机上开发,本次想试试wsl2,结果光安装nodejs就遇到各种各样的问题,改为使用虚拟机则一路通畅。
node环境的安装,参考 https://www.runoob.com/nodejs/nodejs-install-setup.html
node环境安装好后,需要安装waft开发环境,使用下面的指令安装waft-cli:
npm i waft-cli -g
如果遇到权限问题,可以加上sudo执行


  • helloworld项目

        
    • 创建项目
按照文档,使用如下指令创建waft项目:
waft init
根据提示输入项目名称,下你给慕模板类型,即可在当前目录下以输入的项目名称创建项目文件夹。
在第一次创建时遇到如下问题:
创建错误.png
原因可能是多样的,我这边按以下方式解决的:

  • 执行 npm cache clear --force
  • 执行 npm     install npm@latest -g,我觉得应该是这一句的原因,将npm更新到最新版本,应该就可以了。
项目创建完成时提示如下:
创建成功.png
  • 编译调试
启动调试,进入到项目文件目录,执行以下指令:
npm run start
其结果如下,这是在ssh远程连接到虚拟机的命令行上执行的结果,提示没有显示变量,以及权限的问题。(抽空试一下不用管理员权限安装waft)
运行出错.png
登录虚拟机,在虚拟机下使用命令行执行“npm runstart”指令,能看到指令在执行后打开了浏览器,但是浏览器窗口没有界面显示,而且过一会必定出现锁屏界面,重新登录,发现之前的窗口都被退出了,既不是屏幕保护程序,而是确实登出了账号。
这《快速开始》章节讲得是真快,我做嵌入式的,对前端技术并不熟悉,这教程搞得我有点难受了,新东西嘛,不完善也正常,希望waft长久之后,能完善一些基础教程吧,让非前端人员也能快速将waft使用起来。


在waft开发文档-开发工具-cli脚手架工具章节中,提到另一个命令:npx waft start,在项目文件目录下执行该指令,得到如下结果,算是成功执行了helloworld项目了。
运行成功.png
另外在测试中发现如下现象:
  • 桥接模式下(虚拟机与宿主机在同一网段),虚拟机不登录的情况下,使用ssh连接到虚拟机,并执行“npx waft start”指令,将会在宿主机的浏览器打开waft工作台的网页(http://127.0.0.1:8080/ui),但是网页马上就会自动关闭。谷歌浏览器和微软edge浏览器均会闪退,ie浏览器不会闪退,但是无法显示工作台界面。
虚拟机登录账户的情况下,在ssh终端中执行npx waft start”指令,则虚拟机和宿主机浏览器都不会打开工作台网页,且终端会提示“waft> Error: no DISPLAY environment variablespecified”。

  • 更改为host-only+网络地址转换的方式,现象同桥接模式一样。
  • 在虚拟机下运行时,大多数情况下需要执行两次“npx     waft start”指令,才能正常的打开waft工作台网页。
看起来,waft的开发,只能在虚拟机上进行了。

源码看起来就真是前端开发了,helloworld字样在“waft_test/src/pages/index/index.axml”文件中定义。
在修改完源码后,可以在waft的repl命令行下执行 .build 触发编译,也可以执行.ui 指令更新浏览器工作台网页(.simulator--wasm=build/app.wasm 以及 .push--wasm=build/app.wasm 指令都执行失败)。

  • 真机运行
将编译之后的可执行文件app.wasm(路径waft_testbuildapp.wasm)上传到开发板,进入可执行文件所在目录,使用如下指令执行程序:
waft_app app.wasm

界面显示如下:
真机运行.png

使用waft的框架,程序员可将注意力完全放到应用逻辑上,无需关注底层硬件,而且所见即所得、在线仿真的特性,可以说是非常友好的功能了,相信熟练掌握之后能极大的加快项目进度。然则前端编程语言甚至编程思维对我来说都极为陌生,需要一段时间去学习才行。

回帖(1)

刘超

2022-5-1 11:46:41
777
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分