【XR806开发板试用】 VSCode + Samba环境搭建

news2024/10/6 12:29:18

概览

考虑到开发环境使用linux,对于我这种初学者还不太习惯使用,而且还需要安装虚拟机。个人感觉挺麻烦的,于是我使用以下方案,达到再Windows下使用开发的目的。
主要思路是:使用WSL(Windows Subsystem for Linux)用来开发,有点便是无需搭建虚拟机,电脑功耗低,运行速度快,占用资源少。在WSL搭建Samba服务,然后使用在Windows资源管理器中映射WSL中的开发目录。就可方便的使用VS Code进行开发。
本人目前还是学生,还需要学习很多,错误在所难免,尽情指出。可联系微信katsu119

WSL安装及配置

打开Microsoft Store,搜索Ubuntu,下载安装即可。可自定义安装位置,参考网络文章即可。
在这里插入图片描述

安装完成之后,命令行输入wsl,显示内容如下,表明安装完成。
在这里插入图片描述

因为每次启动WSL可能导致wsl的IP地址变化,这不便于我们使用samba服务访问wsl内的文件夹。所以建立以下的bat批处理命令,用于固定住wsl的IP地址,并且启动samba服务和ssh服务(前提是已安装好这两个服务)。可以根据自己的需求修改此bat文件来改写wsl的IP地址。

wsl --shutdown 
wsl -u root service smbd start
wsl -u root service ssh start
wsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu -u root ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
wsl -d Ubuntu -u root ip route add 0.0.0.0/0 via 192.168.50.1 dev eth0
wsl -d Ubuntu -u root echo nameserver 192.168.50.1 ^> /etc/resolv.conf
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False;"
powershell -c "New-NetIPAddress -IPAddress 192.168.50.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; "
powershell -c "Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False;"
powershell -c "New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.50.0/24;"

使用Windows资源管理器访问WSL

如下图所示,这里以win11为例,其他window系统操作类似。打开Windows资源管理器,然后选择“映射网络驱动器”,填写网络位置(IP+文件夹名),如图中所示。具体网络位置的填写和samba服务的配置有关,具体见后文。
在这里插入图片描述

samba服务配置

如没有安装 samba服务
课参考这篇文章https://zhuanlan.zhihu.com/p/50753833进行安装

vim /etc/samba/smb.conf


#在文件最后添加如下内容,其中分享的目录path需要自行修改,valid users也需修改。
#方括号内的内容就是上文添加网络驱动器的文件夹地址

 [OpenHarmonyOS_Code]
      path = /home/katsu
      available = yes
      valid users = katsu
      read only = no
      browsable = yes
      public = yes
      writeable = yes

然后重启samba服务程序 sudo /etc/init.d/smbd restart ,就可通过window添加网络驱动器来像本地磁盘一样,访问xr806的开发文件目录了

下载开发相关文件请参考官方教程

使用vscode编写代码

进入添加的网络驱动器,右击XR806鸿蒙开发目录,使用选择使用Vscode打开  

在这里插入图片描述

同时可使用Ctrl + `可以调出终端,在其中输入wsl,便可以进行编译等操作,下载仍然需要使用PhoenixMC工具进行。

项目示例

项目示例文件,在/device/xradio/xr806/ohosdemo可根据各种示例文件进行学习。下面演示PWM生成,来闪烁LED灯。外设相关的接口文件在\base\iot_hardware\peripheral\interfaces\kits中,可以浏览相关文件,了解接口函数的功能,来驱动相关外设。
吐槽一下,我是根据B站小熊派来学习鸿蒙的。这块板子还无法使用CMSIS接口系统函数,如osThreadNew函数等等,会编译错误。需要使用xr-skylark的原生SDK来进行开发。使用的是/device/xradio/xr806/xr_skylark/include/kernel/os的头文件。
下列使用按键控制LED闪烁频率,并创建两个任务

#include <stdio.h>
#include <stdint.h>
//#include "cmsis_os2.h" //无法使用
#include "kernel/os/os.h" // 使用原生的SDK进行RTOS操作
#include "iot_gpio.h"
#include "iot_pwm.h"
#include "ohos_init.h"
#define GPIO_LED_PIN 21
#define GPIO_PWM_LED 2
#define GPIO_KEY_PIN 11

void led_init();
void pwm_led_init();
void led_toggle();
void key_init();
void task1(void *argument);
void task2(void *argument);

// void led_init()
// {
//     IoTGpioInit(GPIO_LED_PIN);
//     IoTGpioSetDir(GPIO_LED_PIN, IOT_GPIO_DIR_OUT);
//     IoTGpioSetOutputVal(GPIO_LED_PIN, IOT_GPIO_VALUE0);
// }
// void led_toggle()
// {
//     static char pin_state = IOT_GPIO_VALUE0;
//     IoTGpioSetOutputVal(GPIO_LED_PIN, pin_state);
//     pin_state = !pin_state;
// }
void pwm_led_init()
{
    IoTPwmInit(GPIO_PWM_LED);
    IoTPwmStart(GPIO_PWM_LED, 50, 8);
}

void key_init()
{
    IoTGpioInit(GPIO_KEY_PIN);
    IoTGpioSetDir(GPIO_KEY_PIN, IOT_GPIO_DIR_IN);
}
void pwm_freq_set(uint8_t freq)
{
    IoTPwmStart(GPIO_PWM_LED, 50, freq);
}
uint8_t key_read()
{
    IotGpioValue ret = IOT_GPIO_VALUE1;
    IoTGpioGetInputVal(GPIO_KEY_PIN, &ret);
    return ret;
}
void task1(void *argument)
{
    uint32_t i = 0;
    while (1)
    {
        printf("Task 1 : %d\r\n", i++);
        OS_MSleep(1000);
    }
}
void task2(void *argument)
{
    uint32_t i = 0;
    while (1)
    {
        printf("Task 2 : %d\r\n", i++);
        OS_MSleep(1500);
    }
}
static OS_Thread_t htask1;
static OS_Thread_t htask2;
int my_app()
{

    printf("Hello Wolrd!\r\n");
    pwm_led_init();
    key_init();

    if (OS_ThreadCreate(&htask1, "Task1", task1, NULL, OS_PRIORITY_NORMAL, 1024) != OS_OK)
        printf("Create Task1 Failed!\r\n");
    if (!OS_ThreadIsValid(&htask2))
        if (OS_ThreadCreate(&htask2, "Task2", task2, NULL, OS_PRIORITY_NORMAL, 1024) != OS_OK)
            printf("Create Task2 Failed!\r\n");
    uint8_t freq = 1;
    while (1)
    {
        if (key_read() == IOT_GPIO_VALUE0)
        {
            pwm_freq_set(freq++);
        }
        if (freq > 15)
            freq = 1;
        OS_MSleep(100);
    }
    return 0;
}
SYS_RUN(my_app);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1601446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos的简介及安装和使用

Nacos的简介及安装和使用 1. Nacos简介1.1 核心特性1.2 常见的注册中心1.3 Nacos结构图 2. 如何安装和配置Nacos&#xff1f;2.1 Nacos的安装2.2 如何使用Nacos&#xff1f; 1. Nacos简介 ​ Nacos是一个开源的动态服务发现、配置和服务管理平台&#xff0c;由阿里巴巴开发和维…

【Android GUI】从总体上了解Android的GUI体系

文章目录 概览Android硬件接口HALGralloc与Framebuffer Gralloc模块的加载Gralloc提供的接口Android原生的Gralloc实现打开framebuffer设备打开gralloc设备 参考 概览 Linux内核提供了统一的framebuffer显示驱动。设备节点/dev/graphics/fb*或者/dev/fb*&#xff0c;其中fb0表示…

深入浅出LLM大语言模型

一. 前言 2022年末&#xff0c;聊天程序ChatGPT的上线&#xff0c;在短短5天被注册用户就破百万。ChatGPT的爆火&#xff0c;在一夜之间&#xff0c;带领人类穿越到了真正的人工智能时代。 本文会从ChatGPT作为切入点&#xff0c;在介绍其底层的GPT模型诞生史后&#xff0c;再…

DAY14|二叉树理论基础、递归遍历、迭代遍历、统一迭代

理论基础、递归遍历、迭代遍历、统一迭代 理论基础递归遍历迭代遍历前序中序后序 统一迭代 理论基础 今天的内容极其基础也极其重要&#xff0c;今天的不掌握好&#xff0c;之后一个半月都要坐大牢… 以前算法课上学的还行&#xff0c;可能还能记得一些&#xff08;希望&#…

机器人视觉软件实现目标检测通常借助深度学习技术和计算机视觉算法

机器人视觉软件实现目标检测通常借助深度学习技术和计算机视觉算法。以下是一般而言的目标检测实现步骤&#xff1a; 1、数据收集与标注&#xff1a;首先需要收集包含目标物体的大量图像数据&#xff0c;并对这些图像进行标注&#xff0c;标注出目标物体的位置和类别信息。这些…

深度强化学习(DRL)算法 附录 6 —— NLP 回顾之预训练模型篇

Self-Attention 模型结构 上图架构以 batch_size 为 1&#xff0c;两个时间步的 X 为例子&#xff0c;计算过程如下&#xff1a; 位置编码 根据 self-attention 的模型结构&#xff0c;改变 X 的输入顺序&#xff0c;不影响 attention 的结果&#xff0c;所以还需要引入额外的…

读《AI营销画布》步骤三 扩场景(八)

前言 扩场景写起来有点吃力和干巴&#xff0c;为了文章的连续性&#xff0c;还是写点。 扩场景实际上是需要考虑在第一步和第二步之后是否增加业务流程、节点和场景。在确定增加场景之前&#xff0c;我们需要确保的是第一二步的成功&#xff0c;而且模式是可以复制的。所以&…

【数据分析面试】22.补充缺失数据(Python:数据插值interpolate()用法)

题目 数据集来自一个气候研究组织&#xff0c;列表里带有不同城市每日温度读数的时间序列数据。该数据框有三列&#xff1a;date、city 和 temperature。 由于数据记录问题&#xff0c;某些日期的温度读数可能丢失。该组织需要每天的温度读数&#xff0c;因此他们要求你用线性…

2024中国内燃机展-北京汽车发动机零部件展

2024第二十三届中国国际内燃机与零部件展览会 由中国内燃机工业协会主办、中国机床专用技术设备有限公司、汽车工艺装备成套开发集团协办的2024中国国际内燃机及动力装备博览会&#xff08;简称“动博会”&#xff09;将于2024年10月11日-13日在亦创国际会展中心隆重举办。本届…

linux@内核@内核版本发展@镜像文件查看内核

文章目录 linux内核介绍简介小结 linux发行版和内核各个linux发行版和内核的关系内核更新追踪GAHWE版的内核 内核版本查看&#x1f60a;linux当前系统内核查看未安装时查看网络搜索内核版本号挂载镜像查看虚拟机启动镜像体验版查看内核版本 linux(内核)版本演进&#x1f60a;相…

Android 自定义SwitchPreference

1. 为SwitchPreference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

计算机网络——实现smtp和pop3邮件客户端

实验目的 运用各种编程语言实现基于 smtp 协议的 Email 客户端软件。 实验内容 1. 选择合适的编程语言编程实现基于 smtp 协议的 Email 客户端软件。 2. 安装 Email 服务器或选择已有的 Email 服务器&#xff0c;验证自己的 Email 客户端软件是否能进行正常的 Email 收发功…

BoostCompass( 查找功能实现 )

阅读导航 一、查找功能基本思路二、详细代码三、代码介绍四、运行结果 一、查找功能基本思路 通过实现一个基于倒排索引的搜索引擎&#xff0c;来提供高效、准确的搜索服务。其核心在于快速准确地从大量文档中检索出与用户查询关键词相关的文档&#xff0c;并按照相关性对结果…

小程序视频怎么保存到mp4

小程序上的视频如何下载成mp4&#xff0c;本文就将教大家如何将小程序视频保存到mp4&#xff0c;这里要用到一个工具:下载高手 下载高手的文件我已经打包好了 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w6DWf-9Nxw?pwdl09r 提取码&#xff1a;l09r -…

项目7-音乐播放器3(删除模块+播放音乐模块设计)

1.播放音乐模块设计 1.1 请求响应设计 请求&#xff1a; { get, /music/get?pathxxx.mp3 } 响应&#xff1a; { 音乐数据本身的字节信息 } 1.2 后端代码 1. Files.readAllBytes(String path) : 读取文件中的所有字节&#xff0c;读入内存 &#xff…

实体识别方法

文章目录 实体识别方法求观测序列的概率 实体识别方法 从文本中识别实体边界及其类型 实体识别的常用方法&#xff1a;基于模板和规则。将文本与规则进行匹配来识别出命名实体“说”、“老师”;“大学”、“医院”。优点&#xff1a;准确&#xff0c;有些实体识别只能依靠规则…

APEX开发过程中需要注意的小细节5.5

oracle保留小数点后两位的函数 在日常开发中经常用到百分比做数据对比&#xff0c;但是有可能得到的数据是一个多位小数&#xff0c;结果如下所示&#xff1a; 如果想截取部分小数如保留小数点后两位可以怎么做呢&#xff1f; 在Oracle中&#xff0c;可以使用ROUND函数来四舍…

Nature Climate Change | CO2施肥效应导致1981-2020年的全球陆地植被光合作用增加

在全球范围内&#xff0c;光合作用是大气和生物圈之间最大的单一CO2通量。因此&#xff0c;光合作用的长期变化&#xff0c;例如对大气CO2上升的响应&#xff0c;可能为气候变化提供重要的反馈。理论预测&#xff0c;CO2的增加增加了全球光合作用&#xff0c;这一过程被称为CO2…

根据 Figma 设计稿自动生成 Python GUI | 开源日报 No.221

ParthJadhav/Tkinter-Designer Stars: 8.0k License: BSD-3-Clause Tkinter-Designer 是一个用于快速创建 Python GUI 的工具&#xff0c;通过使用 Figma 设计软件&#xff0c;可以轻松地生成美观的 Tkinter GUI。 主要功能和优势包括&#xff1a; 拖放界面设计比手写代码更快…

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现POA-TCN-BiGRU-Attention鹈鹕算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考…