【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行

  • 系列文章目录
  • 更新日志
  • OpenHarmony技术架构
    • OH技术架构
    • OH支持系统类型
      • 轻量系统(mini system)
      • 小型系统(small system)
      • 标准系统(standard system)
  • 简介
  • 环境准备
    • 安装QEMU
    • 其他
  • 代码
  • 预编译
  • 编译
    • 编译前注意事项
    • 执行编译
    • 编译产物
  • 在Qemu中运行OHOS_Image镜像
    • 不开启gdb调试
    • 开启gdb调试
    • gdb 运行
  • FAQ
    • [OHOS ERROR] ccache: error: Could not find compiler "riscv32-unknown-elf-gcc" in PATH
    • riscv32-unknown-elf-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
  • 参考资料


系列文章目录

【鸿蒙】0x00-OpenHarmony-4.1-Release DAYU200 RK3568开发环境总结(长文版)
【鸿蒙】0x01-LiteOS-M基于Qemu Arm Cortex-m55运行
【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行


更新日志

日期变更内容
2025-01-17完成OpenHarmony轻量系统基于RISCV编译运行第一版

OpenHarmony技术架构

OH技术架构

OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。OpenHarmony技术架构如下所示:
在这里插入图片描述

  • 内核层

内核子系统:采用多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

驱动子系统:驱动框架(HDF)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

  • 系统服务层

系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。

基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。

增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。

硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

  • 框架层

框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。

  • 应用层

应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

OH支持系统类型

轻量系统(mini system)

面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

小型系统(small system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行领域的行车记录仪等。

标准系统(standard system)

面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。

简介

Qemu RISC-V虚拟化平台验证的OpenHarmony kernel_liteos_m的代码,目录名为riscv32_virt。 RISC-V 虚拟化平台是一个 qemu-system-riscv32 的目标设备,通过它来模拟一个通用的、基于RISC-V架构的单板。

这次模拟的配置是:RISC-V架构,1个CPU,128M内存。

提示: 系统内存硬编码为128MB。

环境准备

安装QEMU

sudo apt install build-essential zlib1g-dev pkg-config libglib2.0-dev  binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev virtualenv flex bison
  • QEMU获取源码
wget https://download.qemu.org/qemu-6.2.0.tar.xz
  • 编译安装QEMU
tar -xf qemu-6.2.0.tar.xz
cd qemu-6.2.0
mkdir build && cd build
../configure --prefix=qemu_installation_path
make -j16

等待编译结束, 执行安装命令:
make install
  • 环境变量
    最后将安装路径添加到环境变量中:
vim ~/.bashrc

在~/.bashrc最末尾加入:
export PATH=$PATH:qemu_installation_path

其他

repo、python环境、hb命令安装等, 建议参考: 【鸿蒙】0x00-OpenHarmony-4.1-Release DAYU200 RK3568开发环境总结(长文版)

代码

  • 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入
repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-v5.0.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

  • 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v5.0.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

  • 代码目录
(py3_env) ➜  rv_oh ll
total 76K
drwxrwxr-x   4 bigdark bigdark 4.0K  118 00:02 applications
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:03 arkcompiler
drwxrwxr-x  26 bigdark bigdark 4.0K  118 00:03 base
drwxrwxr-x  20 bigdark bigdark 4.0K  118 00:03 build
lrwxrwxrwx   1 bigdark bigdark   28  118 00:03 build.py -> build/build_scripts/build.py
lrwxrwxrwx   1 bigdark bigdark   28  118 00:03 build.sh -> build/build_scripts/build.sh
drwxrwxr-x   7 bigdark bigdark 4.0K  118 00:03 commonlibrary
drwxrwxr-x  14 bigdark bigdark 4.0K  118 00:03 developtools
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:03 device
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:04 docs
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:04 domains
drwxrwxr-x   7 bigdark bigdark 4.0K  118 00:04 drivers
drwxrwxr-x  19 bigdark bigdark 4.0K  118 00:05 foundation
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:05 ide
drwxrwxr-x   4 bigdark bigdark 4.0K  118 00:05 interface
drwxrwxr-x   6 bigdark bigdark 4.0K  118 00:06 kernel
drwxrwxr-x  10 bigdark bigdark 4.0K  118 00:06 napi_generator
drwxrwxr-x   3 bigdark bigdark 4.0K  118 00:06 productdefine
lrwxrwxrwx   1 bigdark bigdark   28  118 00:10 qemu-run -> vendor/ohemu/common/qemu-run
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:06 test
drwxrwxr-x 116 bigdark bigdark 4.0K  118 00:10 third_party
drwxrwxr-x   5 bigdark bigdark 4.0K  118 00:10 vendor
  • 文件占用空间
(py3_env) ➜  rv_oh du -d1 -h
18G     ./.repo
11G     ./third_party
66M     ./drivers
288K    ./productdefine
669M    ./applications
940M    ./developtools
39M     ./vendor
988K    ./domains
16G     ./prebuilts
12M     ./build
14M     ./commonlibrary
122M    ./interface
445M    ./arkcompiler
1.1G    ./test
2.1G    ./docs
475M    ./base
2.1G    ./foundation
733M    ./device
2.8G    ./kernel
49M     ./napi_generator
2.5M    ./ide
56G

就知道你们喜欢看图片~~
在这里插入图片描述

预编译

下载clang等编译工具链依赖。

bash build/prebuilts_download.sh

效果图:
在这里插入图片描述

编译

编译前注意事项

在开始正式编译之前,建议清空 ~/.ccache 目录, 执行 rm ~/.ccache

  • 开发板: riscv32_virt
  • 内核:liteos_m
  • 产品: qemu_riscv_mini_system_demo

执行编译

  • 在源码所在目录执行
./build.sh --product-name=qemu_riscv_mini_system_demo --device-name=qemu_riscv_mini_system_demo --no-prebuilt-sdk --jobs=4 --ccache
  • 编译过程
[OHOS INFO] [1379/1382] ACTION //build/ohos/packages:packer(//build/lite/toolchain:riscv32-unknown-elf)
[OHOS INFO] [1380/1382] STAMP obj/build/ohos/packages/packer.stamp
[OHOS INFO] [1381/1382] STAMP obj/build/ohos/images/make_images.stamp
[OHOS INFO] [1382/1382] STAMP obj/build/core/gn/images.stamp
[OHOS INFO] end hpm command
[OHOS INFO] The run time for _ninja is 59.1 s
[OHOS INFO] start run hpm command
[OHOS INFO] ccache_dir = /home/bigdark/.ccache, ccache_exec = /usr/bin/ccache
[OHOS INFO] --------------------------------------------
[OHOS INFO] ccache summary:
[OHOS INFO] ccache version: 4.5.1
[OHOS INFO] cache hit (direct): 0
[OHOS INFO] cache hit (preprocessed): 0
[OHOS INFO] cache miss: 1091
[OHOS INFO] hit rate: 0.00% 
[OHOS INFO] miss rate: 100.00% 
[OHOS INFO] Cache size (GB): 8.02 / 100.00 (8.02 %)
[OHOS INFO] ---------------------------------------------
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] unrecognized ninja log format, we need # ninja log v5
[OHOS INFO] 
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem           files NO.       percentage      builds NO.      percentage      overlap rate
[OHOS INFO] ability                   21        1.9%          21        1.9%    1.00
[OHOS INFO] arkui                    218        19.7%        218        19.7%   1.00
[OHOS INFO] bundlemanager             19        1.7%          19        1.7%    1.00
[OHOS INFO] commonlibrary              9        0.8%           9        0.8%    1.00
[OHOS INFO] distributeddatamgr         2        0.2%           2        0.2%    1.00
[OHOS INFO] global                    18        1.6%          18        1.6%    1.00
[OHOS INFO] graphic                   24        2.2%          24        2.2%    1.00
[OHOS INFO] hdf                       84        7.6%          84        7.6%    1.00
[OHOS INFO] hiviewdfx                 12        1.1%          12        1.1%    1.00
[OHOS INFO] kernel                    68        6.2%          68        6.2%    1.00
[OHOS INFO] startup                   26        2.4%          26        2.4%    1.00
[OHOS INFO] systemabilitymgr          15        1.4%          15        1.4%    1.00
[OHOS INFO] thirdparty               554        50.2%        554        50.2%   1.00
[OHOS INFO] 
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO] 
[OHOS INFO] 
[OHOS INFO] end hpm command
[OHOS INFO] qemu_riscv_mini_system_demo build success
[OHOS INFO] Cost Time:  0:01:08
=====build  successful=====
2025-01-18 00:59:40
++++++++++++++++++++++++++++++++++++++++
  • 给你配个图
    在这里插入图片描述

编译产物

构建会产生 OHOS_Image 的镜像文件,在构建完成之后,对应的镜像文件在如下目录:

out/riscv32_virt/qemu_riscv_mini_system_demo
  • 文件目录结构展示
(py3_env) ➜  out tree -L 3            
.
├── hb_args
├── ohos_config.json
├── preloader
│   └── qemu_riscv_mini_system_demo
│       ├── build_config.json
│       ├── build_gnargs.prop
│       ├── build.prop
│       ├── compile_env_allowlist.json
│       ├── compile_standard_whitelist.json
│       ├── exclusion_modules.json
│       ├── features.json
│       ├── mini_system
│       ├── parts_config.json
│       ├── parts.json
│       ├── platforms.build
│       ├── subsystem_config.json
│       ├── syscap.json
│       ├── system
│       └── SystemCapability.json
└── riscv32_virt
    └── qemu_riscv_mini_system_demo
        ├── all_parts_host.json
        ├── all_parts_info.json
        ├── args.gn
        ├── arkui
        ├── binary_installed_parts.json
        ├── build.1737131970.3223417.log
        ├── build.1737132046.1569324.log
        ├── build.1737132120.5011375.log
        ├── build_configs
        ├── build.log
        ├── build.ninja
        ├── build.ninja.d
        ├── build.trace.gz
        ├── bundlemanager
        ├── config.gni
        ├── config.h
        ├── data
        ├── error.log
        ├── etc
        ├── gen
        ├── global
        ├── hiviewdfx
        ├── kconfig_env.txt
        ├── kconfig_files.txt
        ├── libs
        ├── NOTICE_FILE
        ├── NOTICE_FILES
        ├── obj
        ├── OHOS_Image
        ├── OHOS_Image.asm
        ├── OHOS_Image.bin
        ├── OHOS_Image.map
        ├── OHOS_Image.sym.sorted
        ├── packages
        ├── sorted_action_duration.txt
        ├── src_installed_parts.json
        ├── src_sa_infos_tmp.json
        ├── startup
        ├── system
        ├── test_info
        ├── thirdparty
        └── toolchain.ninja

24 directories, 39 files

在Qemu中运行OHOS_Image镜像

a) 如果没有安装 qemu-system-riscv32 ,安装请参考链接:安装QEMU

不开启gdb调试

b) 运行

开启gdb调试

在代码所在目录下:

cd device/qemu/riscv32_virt
vim liteos_m/config.gni

board_opt_flags 中的

board_opt_flags = []

编译选项board_opt_flags修改为:

board_opt_flags = [ "-g" ]

在这里插入图片描述
保存并退出,在OHOS根目录重新编译:

./build.sh --product-name=qemu_riscv_mini_system_demo --device-name=qemu_riscv_mini_system_demo --no-prebuilt-sdk --jobs=4 --ccache

gdb 运行

在窗口①中输入命令:

./qemu-run -g

会卡主在这里

在这里插入图片描述

在另一个窗口②中输入命令:

riscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image
(gdb) target remote localhost:1234
(gdb) b main

详细信息
在这里插入图片描述

同时第一控制台可以看到有窗口①处于运行模式:
在这里插入图片描述

FAQ

[OHOS ERROR] ccache: error: Could not find compiler “riscv32-unknown-elf-gcc” in PATH

参考: 安装riscv-gnu-toolchain交叉编译工具链

Compiler install:gcc_riscv32, Note: Downloadable directly

wget https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
cd gcc_riscv32

编辑.bashrc文件, 我的是 .zshrc

vim ~/.bashrc

将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

export PATH=~/gcc_riscv32/bin:$PATH

生效环境变量。

source ~/.bashrc

shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

riscv32-unknown-elf-gcc -v		

riscv32-unknown-elf-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory


sudo apt install libncursesw5

参考资料

  1. https://gitee.com/openharmony/manifest/tree/OpenHarmony-v5.0.0-Release/
  2. https://blog.csdn.net/bigdarknote/category_12749198.html
  3. https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-3861-tool.md

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言初阶习题【29】杨氏矩阵

1. 题目描述——杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 2. 思路 3. 代码实现1 #include<stdio.h>void fin…

Cloud Foundry,K8S,Mesos Marathon弹性扩缩容特性对比

一、Cloud Foundry 使用Scaling an Application Using App Autoscaler插件&#xff0c;基于资源使用情况触发简单扩缩容 CPU、内存、Http带宽、延时等 监控这些资源的使用情况决定扩缩容策略&#xff1a;实例是增加还是减少 Instance Limits 限制实例数量范围&#xff0c;定义…

中职网络建设与运维ansible服务

ansible服务 填写hosts指定主机范围和控制节点后创建一个脚本&#xff0c;可以利用简化脚本 1. 在linux1上安装系统自带的ansible-core,作为ansible控制节点,linux2-linux7作为ansible的受控节点 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…

【BUUCTF】[GXYCTF2019]BabySQli

进入页面如下 尝试万能密码注入 显示这个&#xff08;qyq&#xff09; 用burp suite抓包试试 发现注释处是某种编码像是base编码格式 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5 可以使用下面这个网页在线工具很方便…

迅为瑞芯微RK3562开发板/核心板应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分类驾驶员辅助系统(ADAS)...

可应用于人脸跟踪、身体跟踪、视频监控、自动语音识别(ASR)、图像分类驾驶员辅助系统(ADAS)、车牌识别、物体识别等。iTOP-3562开发板/核心板采用瑞芯微RK3562处理器&#xff0c;内部集成了四核A53Mali G52架构&#xff0c;主频2GHZ&#xff0c;内置1TOPSNPU算力&#xff0c;RK…

蓝桥杯单片机基础部分——5、DS18B20温度传感器

前言 好久没有更新关于蓝桥杯单片机相关的模块了&#xff0c;今天更新一下数字温度传感器DS18B20的相关应用 单线数字温度计DS1820介绍 DS1820数字温度计提供9位(二进制)温度读数&#xff0c;指示器件的温度。信息经过单线接口送入DS1820 或从 DS1820 送出&#xff0c;因此从…

python爬虫入门(实践)

python爬虫入门&#xff08;实践&#xff09; 一、对目标网站进行分析 二、博客爬取 获取博客所有h2标题的路由 确定目标&#xff0c;查看源码 代码实现 """ 获取博客所有h2标题的路由 """url "http://www.crazyant.net"import re…

nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景&#xff1a;下载发票的版式文件&#xff0c;第三方返回的是url链接地址&#xff0c;但是服务是部署在内网环境&#xff0c;无法访问互联网进行下载。此时需要进行走反向代理出去&#xff0c;如果按照已有套路&#xff0c;就是根据不同的访问前缀&#xff0c;跳转不同的…

EI Scopus双检索 | 2025年第四届信息与通信工程国际会议(JCICE 2025)

会议简介 Brief Introduction 2025年第四届信息与通信工程国际会议(JCICE 2025) 会议时间&#xff1a;2025年7月25日-27日 召开地点&#xff1a;中国哈尔滨 大会官网&#xff1a;www.jcice.org 由黑龙江大学和成都信息工程大学主办&#xff0c;江苏科技大学协办的2025年第四届信…

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介&#xff1a;网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力&#xff1b;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介&#xff1a;系统分…

STM32 FreeRTOS 任务挂起和恢复---实验

实验目标 学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用&#xff1a; start_task:用来创建其他的三个任务。 task1&#xff1a;实现LED1每500ms闪烁一次。 task2&#xff1a;实现LED2每500ms闪烁一次。 task3&#xff1a;判断按键按下逻辑&#xff0c;KE…

YOLO系列代码

Test-Time Augmentation TTA (Test Time Augmentation)是指在test过程中进行数据增强。其思想非常简单&#xff0c;就是在评测阶段&#xff0c;给每个输入进行多种数据增广变换&#xff0c;将一个输入变成多个输入&#xff0c;然后再merge起来一起输出&#xff0c;形成一种ens…

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言&#xff1a;预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4&#xff1a;预积分学 中提到的散装的形式来实现预积分的顶点部分&#xff0c;所以每个状态被分为位姿&#xff08;&#xff09;、速度、陀螺零偏、加计零偏四种顶点&am…

docker 部署confluence

1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042https://do…

前端实习第二个月小结

时间飞快&#xff0c;第一次实习已经过去两个多月&#xff0c;作一些简单的总结和分享。 注&#xff1a;文章整体会比较轻松&#xff0c;提及的经历、经验仅作参考。 一、关于实习/工作内容 1、工作内容 近期做的是管理后台方面的业务&#xff0c;技术栈&#xff1a;前端re…

搭建一个基于Spring Boot的书籍学习平台

搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块&#xff0c;例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…

dl学习笔记:(4)简单神经网络

&#xff08;1&#xff09;单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

OpenHarmony-7.IDL工具

IDL 工具 1.openharmony IDL工具 在OpenHarmony中&#xff0c;当应用/系统服务的客户端和服务端进行IPC&#xff08;Inter-Process Communication&#xff09;跨线程通信时&#xff0c;需要定义双方都认可的接口&#xff0c;以保障双方可以成功通信&#xff0c;OpenHarmony ID…

openssl s_server源码剥离

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

前端小案例——网页井字棋

前言&#xff1a;我们在学习完了HTML、CSS和JavaScript之后&#xff0c;就会想着使用这三个东西去做一些小案例&#xff0c;不过又没有什么好的案例让我们去练手&#xff0c;本篇文章就提供里一个案例——网页井字棋。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可…