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生态开发套件系列内容。

相关文章
|
16天前
|
JavaScript 前端开发 API
探索移动应用的世界:从开发到操作系统的深入解析
【8月更文挑战第31天】本文将带你走进移动应用的世界,从开发到操作系统,深入探讨移动应用的开发过程、移动操作系统的工作原理以及它们之间的交互。我们将通过代码示例,让你更好地理解移动应用的开发和运行机制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和知识。
|
16天前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
68 0
|
17天前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
30 0
|
17天前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
45 0
|
18天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
53 6
|
3天前
|
存储 缓存 Java
什么是线程池?从底层源码入手,深度解析线程池的工作原理
本文从底层源码入手,深度解析ThreadPoolExecutor底层源码,包括其核心字段、内部类和重要方法,另外对Executors工具类下的四种自带线程池源码进行解释。 阅读本文后,可以对线程池的工作原理、七大参数、生命周期、拒绝策略等内容拥有更深入的认识。
什么是线程池?从底层源码入手,深度解析线程池的工作原理
|
3天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
7天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
25天前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
22 1

热门文章

最新文章

推荐镜像

更多