RISC-V生态开发套件解析(六):LicheeRV 86开发板搭建Waft运行环境

简介: 随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。

编辑语:

随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。


有关LicheeRV 86开发板的硬件介绍已告一段落,从本期内容开始我们将为大家讲解该开发套件的配套软件——Waft。本文是软件部分的首篇文章,将介绍如何快速搭建Waft运行环境,旨在帮助开发者快速上手Waft。


01 调试接口说明


图片.png


1.1 adb通道

该type-c usb口支持adb通道,支持adb命令(push、shell)


1.2 串口通道

该type-c usb口是串口通道,安装ch340驱动后,可以使用串口工具(如SecureCRT)登入调试。


驱动下载链接:https://sparks.gogo.co.nz/ch340.html


串口参数设置:

图片.png


02 更新waft容器


Waft引擎也在持续迭代开发中,板子系统自带的waft容器固件相对较老,可以通过下载链接获取Waft容器固件,链接如下:


https://occ.t-head.cn/vendor/detail/download?spm=a2cl5.14293893.0.0.9ecd707aKGYdRr&id=3978884137347461120&vendorId=3895463451199475712&module=3#sticky

图片.png


下载waft固件包,解压后,按如下说明push到开发板

  • bin目录

存放waft容器二进制运行文件,waft_app放到/usr/bin目录


  • lib目录

存放waft_app运行时依赖的共享库,统一放到/usr/lib目录


  • resource目录

存放waft依赖的资源文件,如字库文件。把resource目录放到根目录/,保持目录内容不变


  • waftapps目录

存放waft字节码文件。把waftapps目录放到根目录/,保持目录内容不变


推送方式参考adb或者scp的使用方法。


03 WIFI连接


waft的运行、更新均需要依赖网络,所以需要在开发板上配置好wifi网络:


方法一

更新完waft容器后,运行如下命令:


waft_app /waftapps/app_wifi.wasm


点击wifi信号位置进入wifi连接设置界面,搜索wifi、输入密码连接即可。

图片.png


方法二

方法一直接修改wpa_supplicant的配置文件,增加如下内容到/etc/wifi/wpa_supplicant.conf文件中,直接用vi编辑,vi /etc/wifi/wpa_supplicant.conf


ctrl_interface=/etc/wifi/sockets
ctrl_interface_group=0
disable_scan_offload=1
update_config=1
network={
  ssid="YourSSID"
  psk="YourPassword"
}


YourSSID替换成自己的wifi网络名,YourPassword改为自己的密码。


方法三

方法二使用wpa_cli工具,熟悉的用户可以选择这种方式


  • 扫描wifi网络


wpa_cli -iwlan0 scan


  • 获取扫描结果


wpa_cli -iwlan0 scan_result


  • 添加网络


wpa_cli -iwlan0 add_network


记住返回的数字,这个是网络配置序号,后续要用到,假如返回的是“1”,后面以“1”为举例。


  • 设置ssid


wpa_cli -iwlan0 set_network 1 ssid '"YourSsid"'


注意:无线网络名需要用一个单引号加一个双引号包含住。


  • 设置密码


wpa_cli -iwlan0 set_network 1 psk '"YourPassword"'


注意:密码需要用一个单引号加一个双引号包含住。


  • 激活网络


wpa_cli -iwlan0 enable_network 1


  • 保存配置


wpa_cli -iwlan0 save_config


用于下次开机自动重连


  • 查看是否已经完成连接


wpa_cli -iwlan0 status


  • 有COMPLETED字段表示ok


freq=2437
ssid=xxxxxx
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=172.16.0.167
address=94:f7:f9:9a:40:68
uuid=53f24614-85b0-5e32-b3d1-9bac85a5958c


  • 分配ip


udhcpc -iwlan0


04 开发环境搭建


MacOS, Linux,(Windows支持中)


4.1 vscode安装

vscode安装请自行下载安装


4.2 脚手架安装


npm i waft-cli -g


如果有权限问题,加上sudo ,sudo npm i waft-cli -g。


05 创建项目


通过waft脚手架初始化项目,会引导您进行项目命名等,您将得到一个新project


waft init


输入project name及选择模版

图片.png


5.1 启动调试环境


cd my-waft-project
npm run start


5.2 REPL命令行模式

启动后自动开启REPL模式,您可以通过.help查询支持哪些命令列表,一般最常用的:


  • 打包


.build --aot=true --aotTarget=riscv64


  • 获取编译产物

编译后的产物在工程目录的build目录下,app.aot。


ps:其他命令参考《开发手册》--快速开始章节,https://www.yuque.com/waft/docs/ubi8k4


5.3 开发第一个waft应用

开发自己的waft应用(页面),可以在创建的模版基础进行修改,详细的目录结构介绍、页面开发、样式、语法请参考《开发手册》--快速开始https://www.yuque.com/waft/docs/ubi8k4


06 推送waft应用


推送waft应用(app.aot)到开发板有如下三种方式:


  • adb push

电脑与开发板用type-c数据线连接,注意使用adb push通道,参考下图标注

图片.png


adb push build/app.aot /mnt/UDISK/wasm/


  • scp

pc及开发板需要在同一个局域网内。


scp build/app.aot root@172.16.1.36:/mnt/UDISK/wasm


172.16.1.36替换为开发板的ip地址,ssh的登陆密码为:tina。


07 运行waft


通过adb shell或者串口接入开发板,在adb shell终端或者串口工具终端输入如下命令:


waft_app /mnt/UDISK/wasm/app.aot


运行界面如下:

图片.png


08 下期预告


有关如何搭建Waft运行环境就介绍到这里,下期我们将带大家快速开始Waft应用开发。欢迎大家持续关注RISC-V生态开发套件系列内容。

相关文章
|
21天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
51 1
|
29天前
|
机器学习/深度学习 安全 搜索推荐
中国CRM市场深度解析:本土化定制开发的领军厂商与未来趋势
国内CRM软件企业正面临日益增长的本土定制需求,这不仅考验服务商的综合水平,也推动了市场的快速发展。本文将深入解析中国CRM市场的现状,探讨领军厂商的优势,并预测未来趋势,包括智能化、集成化、本土化与国际化并行及云服务模式的普及。
|
12天前
|
开发工具 Android开发 数据安全/隐私保护
探索移动应用的世界:从开发到操作系统的全面解析
【10月更文挑战第33天】在数字化时代,移动应用已成为我们日常生活中不可或缺的一部分。本文将深入探讨移动应用的开发过程,包括编程语言、开发工具和框架的选择,以及如何构建用户友好的界面。同时,我们还将分析移动操作系统的核心功能和安全性,以帮助读者更好地理解这些应用程序是如何在各种设备上运行的。无论你是开发者还是普通用户,这篇文章都将为你揭示移动应用背后的奥秘。
|
18天前
|
机器学习/深度学习 Android开发 UED
移动应用与系统:从开发到优化的全面解析
【10月更文挑战第25天】 在数字化时代,移动应用已成为我们生活的重要组成部分。本文将深入探讨移动应用的开发过程、移动操作系统的角色,以及如何对移动应用进行优化以提高用户体验和性能。我们将通过分析具体案例,揭示移动应用成功的关键因素,并提供实用的开发和优化策略。
|
5天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
17 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
67 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
52 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
60 0
|
1月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
80 0
|
5天前
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。

推荐镜像

更多