谷动谷力

 找回密码
 立即注册
查看: 6669|回复: 0
收起左侧

【平头哥Sipeed LicheeRV 86开发板试用】搭建Waft开发环境调试

[复制链接]
发表于 2022-3-21 15:46:37 | 显示全部楼层 |阅读模式
【平头哥Sipeed LicheeRV 86开发板试用】搭建Waft开发环境初试调试
0 G2 X: N* C' f5 k; |( h% D* R1 F* Y/ `
1. waft介绍' e9 @, b$ A( |7 ?
Waft:为AIoT应用研发而生
Waft(WebAssembly Framework for Things) 是一个面向 AIoT 的高性能应用研发框架,Waft  基于 WebAssembly 和自研的渲染引擎技术打造,适用于智能终端的软件应用研发场景。

* `$ X; U5 Q! ?9 b
它的特点网站从框架特性,技术优势,应用场景几个方面展开。其中强调的AIoT的应用,高性能几乎接近原生应用体验,跨平台等特点令人关注。

( x- x. X. E. U5 z( c% i: ]& i' M2. 准备
: k5 M: L, ^" Y
& K! \! A0 o1 q9 }7 F5 L7 k3. 环境搭建
我使用ubuntu 20.04 物理机作为开发平台。
  • 安装nodejs环境(我之前安装过)
    % v8 Z3 e2 \1 E0 C7 y
再提一下安装命令 :
  1. sudo apt install nodejs
复制代码
- Y/ U; p" H& l. N  ]5 D
+ |; n  ^; c5 z$ C  @
  • 安装waft-cli工具
      a5 u/ N7 o7 T% G8 o- H0 M: f
安装好了nodejs环境后,接下来就是安装waft-cli这个称为脚手架的工具了。
命令为:
  1. sudo npm i waft-cli -g
复制代码
8 h8 f8 Z. K; v; q. L6 d6 y/ M! \
      如果指令顺利执行完成的话,我们就可以开始基本waft的工程创建了。

; I3 a& x7 ^- y
  • vscode 代码编辑器

    ( l1 W! A& _  ~% J" l+ T1 Y6 g5 c0 R8 S
安装VScode 代码编辑器。(地球人都在用,我之用安装过)
可以通过vscode的官网下载安装包
也可以直接使用ubuntu的软件包管理软件搜索vscode安装,这个方法比较简单,一键完成,推荐。
4. 第一个例程测试
一切准备就绪,学编程第一个节课, 就是向编程语言Say hello,  Waft 也从Say hello开始吧, waft say hello, 不简单,  折腾了好几天, 还没Say hello, 官方给升级模板, 各运行库, 还是没成功, 最后是官方给的aot,  才成功Say hello。

' F* A" A* w# R: u- a4.1创建项目
首先我们新建一个目录,就命名为hello_waft吧,进入目录后,运行
  1. waft  init
复制代码
提示输入开发者,可以不写
接下来就是选择模板了,按方向下键选择,我们选择1: Say hello模板。
接下来就是工程项目初始化过程,网络必须畅通,否则就够呛了。我们可以看到他在执行npm install的一个进度条。

9 K9 G% R$ W- b$ F% q8 Q/ @
当进度条走完了,出现init done的字样后,项目创建就完成了。
* N  U* R/ h, B1 T: x
4.2 启动服务和项目预览
1 X0 N5 ?, e" \* m: Y2 q# k) ~
进入刚才创建的项目目录,
  1. cd hello_waft
复制代码
! A1 R8 p: f8 A
; x1 r& B$ E* A: O) \/ ^
然后执行
  1. sudo  npm start
复制代码
/ j# \- Q) O1 ^3 M: C5 o- P6 j
执行后,看版本号,我的目前最新0.7.3,旧版编译aot,会有问题
  H$ d7 W! i0 m5 C! s9 x" o
  1. sun@sun-ubuntu:~/waft/hello_waft$ sudo npm start
    / t' l3 k# X: c: S4 W
  2. : f% A4 f+ P* H' k) S
  3. > hello_waft@0.7.3 start /home/sun/waft/hello_waft
    - u% t+ K, _& a; a
  4. > waft start
    $ ?* }  j  n1 |3 \' P  c) O
  5. & j" u% o9 V; J4 M
  6. web服务已启动
    4 x- E# Z/ q7 D: Q
  7. 静态预览:http://127.0.0.1:8080/web/preview.html?action=preview&path=pages/index/index% {; I$ O/ l) U/ M0 c& I. K
  8. 运行模式:http://127.0.0.1:8080/web/preview.html?action=run
    ( C4 `) u% b( H4 H& q3 i7 [

  9. + P. x: W5 k; N* P& G  m
  10. start success4 Q- h$ B  M: B. j1 N7 E" M& T
  11. & `( t5 t$ ^  r, {* q& Z

  12. & R# ?8 L: O* I
  13. Welcome to waft development.
    6 y1 T3 H+ D! d- x) n" ^" }5 z$ C
  14. Type .help for more information.
    ' f2 L& f* m( D1 N. Q5 P
  15. 2 Q& n7 X3 Y8 u- ]2 I+ I
  16. waft:0.7.38
    , Q* w$ h0 ?" H  R5 \
  17. waft-cli:0.7.19
    ( A2 K# ?, M/ c3 X

  18. ) l9 |) V$ j" c6 J

  19. $ K3 v8 g3 y% ], `( ?2 @9 s' C' E6 ~
  20. waft>  waft工作台已启动
    + `& l% ~9 v; Q9 F% k  W8 @, b! V
  21. http://127.0.0.1:8080/ui# C' J/ [% W7 f. z# E8 S. T
  22. 真机调试可连接到本机ip: 192.168.0.64
    : f$ P+ }! J4 \
  23. waft> /bin/sh: open: command not found
    3 A" ?! o9 W. L$ J3 k# n  q
复制代码
命令执行后,可以看到终端的提示,我们来静态预览一下看看效果,再浏览器中打开
63e4448f81a877ac7d6f791cee086d17.png
动态效果预览(与静态一样画面,区别是静态点图标,无动作,动态有动作)

+ ]( K  Z" t  m2 O% `( x! j
调试模式:http://127.0.0.1:8080/ui
2b73d89464bb4fe7b20717e268082e38.png
! \0 I" n) n1 c8 ^
(build –aotTarget=riscv64参数指定不了平台 , 也没这个参数) 在这个调试平台,可以指定target 为riscv,  点了调试后,同样也在编译(这是原厂升级后结果,不升级点riscv64,会失败)
3 Q; U( d' g* x
7be3967c0b99359340819d4695bc582c.png 1 \8 y3 v' k& O1 s  I6 i0 E
' B  ^( z! `* `+ t

7 ^! Z3 y6 I. K% z3 c4.2 编译
build怎么用,先help4 r% Y4 S; |9 @  _+ Y
  1. build help
    8 ~9 }; S- c. m  E1 C
  2. ....
    & o- F; q0 Q! L9 t. @; l
  3. .build        编译工程 --default=默认页面(可选) --page=指定单页(可选) --card=指定的卡片(可选) --aot=true(可选, 是否输出 .aot 文件) --push=true(可选, 构建完自动推送)
    ; t7 w1 j( o: F& K+ [" z' @
复制代码
(build –aotTarget=riscv64参数指定不了平台 , 也没这个参数)4 |. }' Z' f! B" Y% k. K- o& l

: T* H% n+ {( I: h
官方教程以下命令:
  1. waft>.build  –aot=true –aotTarget=riscv64
复制代码

& Z2 o4 t$ `! ]+ K( w  L5 R% S
(build –aotTarget=riscv64参数指定不了平台 , 也没这个参数)
! e) O' g3 q& l
......
官方教程里写的说明指定target 不是在这个命令里,指定了还是arm的'--aotTarget=riscv64是无效的吧 所以指定不到 target
de5eda3901755c56ae3884539c2a0fb9.png
依据信息,可知编译的目标程序是armv7,  在licheeRV86,  跑肯定会出错, 跑不起来的。。。

, i0 A( ?: }# l) ?& h$ a
可以运行:
  1. waft_app app.aot 192.168.0.64 8030
复制代码

5 v' o3 |3 K) |/ L9 h% ?
  Z' \0 [* D$ g1 b  l3 v/ O
编译后, 直接.pull,(或调试窗口,点推送) 就可以传文件到开发板了,so wasy, 方便
可以运行:waft_app app.aot 192.168.0.64 8030
  1. root@MaixLinux:/waftapps# waft_app app.aot 192.168.0.64 8030
复制代码

( R% N+ g( N3 r6 N1 X" b" S$ ~; h4 u8 H7 o
编译成功后,会出现Compile success字样。同时我们可以察看工程文件的编译结果如下,存放在项目文件夹下的build文件夹内。
  1. sun@sun-ubuntu:~/waft/hello_waft$ ls build
    % s. j2 ~( E, ?8 d# A6 b! n
  2. app.aot   app.wasm.map  cards        _waft_index.ts
    3 `( H& c* d& p( d8 [" [7 W( s
  3. app.wasm  app.wat        index.html
复制代码
6 m. j2 O* {6 G' J& s6 f
  z* M5 t' f; @, b- g+ t: G# V5 w
注: aot与平台相关的 waft应用

5 |- }$ c- `' q, e2 m: X8 J
  • 查看网络连接
    ! X; L3 z1 B+ y* c' R* n2 j
  1. root@MaixLinux:/mnt/UDISK# ifconfig
    " `7 E" H4 J' T4 g( ~) V6 ?
  2. eth0      Link encap:Ethernet  HWaddr 22:77:81:E0:C7:3D; ]- `8 I8 t' ?# G3 [
  3.           UP BROADCAST MULTICAST  MTU:1500  Metric:1! W) x* A7 U0 v5 j. H( ?  p
  4.           RX packets:0 errors:0 dropped:0 overruns:0 frame:0. u1 u1 \* [+ O& H. s" u
  5.           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    ( T9 _; P3 m# v0 t& B
  6.           collisions:0 txqueuelen:1000' i0 s0 R0 {6 W
  7.           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    % @) @' w9 [: Y/ Y, d) z
  8.           Interrupt:620 f, P% p6 R# H1 ^' d1 a

  9. % G$ k: L6 z4 z* p% ]
  10. wlan0     Link encap:Ethernet  HWaddr 08:BE:E0:98:24:70- x4 ^! T/ A: w2 d; U* m1 v0 A' S
  11.           inet addr:192.168.0.20  Bcast:192.168.0.255  Mask:255.255.255.0
    0 J& c+ y; X3 v% k6 f! I
  12.           inet6 addr: fe80::abe:e0ff:fe98:2470/64 Scope:Link
    1 n& J2 J5 Z* F  U7 @& Q
  13.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1) y* C# ]% B" G2 J1 V) t; a
  14.           RX packets:120428 errors:0 dropped:24350 overruns:0 frame:0% C1 q& D' X; M" g) p5 t4 h
  15.           TX packets:27595 errors:0 dropped:0 overruns:0 carrier:0
    & W4 S. V$ x  z. v' B) \: H
  16.           collisions:0 txqueuelen:1000
    3 q1 [% ^7 ]: V, l6 R
  17.           RX bytes:110086034 (104.9 MiB)  TX bytes:2799901 (2.6 MiB)
复制代码

; q6 f: G8 T' T; e$ Y) Q8 [9 L- T! F: b; [* I: u% A: l
  • 推送编译结果

    ; N6 \, w" M6 |0 [5 h' B4 @/ n  l) p
这里采用scp命令推送aot到开发板, 推送前建议先cp名为hello.aot。
  1. sun@sun-ubuntu:~/waft/hello_waft/build$ cp app.aot  hello.aot* k4 @6 n% M( o: X: g+ o6 W
  2. sun@sun-ubuntu:~/waft/hello_waft/build$ scp hello.aot root@192.168.0.20:/waftapps. n8 S2 j0 B; ?8 h9 U6 v* @
  3. root@192.168.0.20's password: - r6 H: U! x1 {% y# u- R3 {3 }
  4. hello.aot                                             100%  566KB   4.1MB/s   00:00
复制代码
0 }8 V! j9 d) t( X, R& l
注意编译结果在build目录 下。

6 ^- O$ Q2 Z& W/ f8 @) J
  • 实测

    6 |+ H3 G" t+ J2 V* m  C. G
再ssh终端中,执行刚刚上传的hello.aot文件。命令为:
  1. waft_app hello.aot
复制代码
0 S7 @" U( c! |0 Q! D8 y: q- T" o

0 M6 j+ M$ X/ K
不巧运行hello, 失败, 群其他开发者同样是运行失败, 在钉钉, 更新了waft_cli, hello模版代码,开板板运行库,还是没有运行起来
6 u( b# Z2 o, q0 x; y$ w0 _3 R: s
最后是原厂给的aot, 运行成功
c05eaf22d169227f1bbb6dcf170685ea.png
0794899c94fdeb210189e2429432f9cb.png
运行大小 1280*800, 很难看, 不知道 怎么改,代码里,480*480, 请指教

5 G! ]! ~6 _6 a, O
# y5 G. v& d8 r) X
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-29 16:59 , Processed in 0.164749 second(s), 37 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表