CH583/2构建工程教程

CH583/2构建工程教程

  • 绪论
  • 资源
  • 移植步骤
    • 准备
    • 移植
      • 步骤一
      • 步骤二
    • 工程配置
      • 修改工程名
        • 修改前
        • 修改后
      • 工程配置
        • 修改资源文件
      • 修改C/C++ general
      • 修改C/C++构建
        • 修改汇编交叉编译
        • 修改C交叉编译
        • 修改GNU RISC-V Cross Linker
      • 修改跟编译
    • 移植注意事项

绪论

资源

CH583/2的SDK下载

移植步骤

准备

以CH583的BLE_UART程序ble_demo为模板创建自己的工程。
1.新建一个属于自己的工程ble_demo,工程名没有要求(可根据自己项目或者自己喜好来,非中文名即可)。本次移植教程以demo命名。
2.本次以CH583EVT\EVT\EXAM\BLE\BLE_UART下的“BLE_UART”工程为模板做移植。
3. 移植相关资源文件
(1)工程依赖的资源有CH583EVT\EVT\EXAM\SRC下Ld、RVMSIS、Startup、StdPeriphDriver文件夹资源;
(2)工程依赖的资源有CH583EVT\EVT\EXAM\BLE\HAL下的文件夹资源;
(3)工程依赖的资源有CH583EVT\EVT\EXAM\BLE\LIB下的文件夹资源;
(4)工程依赖的资源有CH583EVT\EVT\EXAM\BLE\BLE_UART下的文件夹资源;

移植

步骤一

将CH583EVT\EVT\EXAM\BLE\BLE_UART下的所有文件复制到ble_demo文件夹下
在这里插入图片描述

步骤二

将CH583EVT\EVT\EXAM\SRC下的所有文件复制到ble_demo文件夹### 步骤三
将CH583EVT\EVT\EXAM\BLE\HAL下的所有文件复制到ble_demo文件夹下### 步骤四
将CH583EVT\EVT\EXAM\BLE\LIB下的所有文件复制到ble_demo文件夹下

在这里插入图片描述

看到如上图目录结构后,表示工程文件准备完成,剩下就需要进行工程配置。

工程配置

双击“BLE_UART.wvproj”打开工程,进行工程配置。

修改工程名

第一步,点击工程右键找到修改工程名,将工程名改为“ble_demo”,方便我们移植(这一步非必须也可以不修改)。

修改前

在这里插入图片描述

修改后

在这里插入图片描述

工程配置

选中工程名右键单击找到属性选项点击进入,进去后如下:
在这里插入图片描述

修改资源文件

对链接的资源文件进行删除。
(1)删除前
在这里插入图片描述
(2)删除后

在这里插入图片描述

修改C/C++ general

打开路径和符号找到资源位置,将相关文件夹文件路径删除一遍。
(1)删除前
在这里插入图片描述
(2)删除后
在这里插入图片描述

修改C/C++构建

打开设置进入工具设置,如下图。
在这里插入图片描述
下面进行详细配置。

修改汇编交叉编译

修改路径到正确的位置。
(1)修改前
在这里插入图片描述

(2)修改后
在这里插入图片描述

修改C交叉编译

找到右上角的“+”,修改路径到正确的位置。
(1)修改前
在这里插入图片描述

(2)清除干净
删除掉原本的路径
在这里插入图片描述

(3)修改后
将工程下的路径全部引入进来。
在这里插入图片描述

修改GNU RISC-V Cross Linker

(1)更新general
更新Link.ld文件的路径,更新后如图(根据自己放置位置选定即可):
在这里插入图片描述
(2) Librariles
更新LIB、StdPeriphDriver到工程下的正确路径。
更改前:
在这里插入图片描述
更改后:
在这里插入图片描述
到这一步后点击应用跟关闭即可。

修改跟编译

(1)回到工程,进项编译后提示如下错误.
这个过程不是所有工程都会出现报错,如果编译通过则说明文件没有问题。这里报错是因为程序在这复用,我们直接将其排除不参与编辑即可。
在这里插入图片描述
(2)打开SDK的demo对比
在这里插入图片描述
(3)选择不需要参与编译的文件,点击右键选择排除编译,修改后如图。
在这里插入图片描述
(4)重新进行工程编译
重现编译后,可以看到工程可以正常编译了。
在这里插入图片描述
(5) 其他
打开工程hal部分开开,跟原工程对吧,有需要排除编译的可以做排除编译。

移植注意事项

(1)当遇到找不到头文件或者路径提示时,说明路径没有引入完全,找到对象文件夹重新引入即可。

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

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

相关文章

Java课题笔记~ 整合第三方技术

1. 整合JUnit 问题导入 回忆一下Spring整合JUnit的步骤&#xff1f; 1.1 Spring整合JUnit&#xff08;复习&#xff09; 1.2 SpringBoot整合JUnit 【第一步】添加整合junit起步依赖(可以直接勾选) <dependency><groupId>org.springframework.boot</groupId…

flutter对数组中某个数据二次加工成单独的数组

如何将数据[2,1,2,2,2,1,2,2,3,2,2,2,2,3,2,2,2,2,2,3,2,4,2,2,1,2,3,2,4,2]加工成 [[2], 1, [2, 2, 2], 1, [2, 2], 3, [2, 2, 2, 2], 3, [2, 2, 2, 2, 2], 3, [2], 4, [2, 2], 1, [2], 3, [2], 4, [2]]。这是实际工作中遇到的问题&#xff0c;UI要求将某一类型数据&#xff…

Android View截屏长图拼接(RecyclerView)

Android页面View截图&#xff08;分享、保存相册&#xff09; Android View 截屏上下拼接 Android View截屏长图拼接&#xff08;RecyclerView&#xff09; Android View截屏长图拼接&#xff08;NestedScrollView&#xff09; RecyclerView截屏&#xff0c;其实就是遍历每…

前端实习day30

今天又是一个繁忙的一天&#xff0c;加功能&#xff0c;改样式&#xff0c;改得头皮发麻&#xff0c;预定的任务还是没能完成&#xff0c;改起来真得太头疼&#xff0c;代码太乱了&#xff01;&#xff01;昨天那个bug&#xff0c;今天问了一下同事&#xff0c;不到五分钟就解决…

无涯教程-PHP - intval() 函数

PHP 7引入了一个新函数 intdiv()&#xff0c;该函数对其操作数执行整数除法并将该除法返回为int。 <?php$valueintdiv(10,3);var_dump($value);print(" ");print($value); ?> 它产生以下浏览器输出- int(3) 3 PHP - intval() 函数 - 无涯教程网无涯教程网…

nodejs根据pdf模板填入中文数据并生成新的pdf文件

导入pdf-lib库和fontkit npm install pdf-lib fs npm install pdf-lib/fontkit 具体代码 const { PDFDocument, StandardFonts } require(pdf-lib); const fs require(fs); const fontkit require(pdf-lib/fontkit) let pdfDoc let font async function fillPdfForm(temp…

Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X

导读UBports 基金会近日宣布为基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Ubuntu Touch 移动操作系统发布并全面提供 OTA-2 软件更新。 Ubuntu Touch OTA-2 在首次 OTA 更新整整四个月后发布&#xff0c;支持新设备&#xff0c;包括 Fairphone 3、F(x)tec Pro1 X 和 Vollaphone X…

Ubuntu部署PHP7.4

系统版本&#xff1a;Ubuntu22.04 PHP版本: 7.4 Mysql版本&#xff1a;8.0 Nginx版本: 最新 1. 更新系统 首先&#xff0c;确保系统包是最新的&#xff1a; sudo apt update && sudo apt upgrade -y2. 安装 Nginx Nginx 在默认的 Ubuntu 仓库中&#xff0c;因此安装…

libdrm全解析八 —— 源码全解析(5)

接前一篇文章&#xff1a;libdrm全解析七 —— 源码全解析&#xff08;4&#xff09; 本文参考以下博文&#xff1a; DRM 驱动程序开发&#xff08;VKMS&#xff09; 特此致谢&#xff01; 本文继续对include/drm/drm.h中实际功能宏定义进行讲解。 7. DRM_IOCTL_GET_STATS …

HarmonyOS开发第一步,熟知开发工具DevEco Studio

俗话说的好&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;走进HarmonyOS第一步&#xff0c;开发工具必须先行&#xff0c;当然了&#xff0c;关于开发工具的使用&#xff0c;官网和其他的博客也有很多的讲解&#xff0c;但是并没有按照常用的功能进行概述&#xff…

C++信息学奥赛2049:【例5.19】字符串判等

这段代码的功能是比较两个输入的字符串是否相等&#xff08;忽略大小写和空格&#xff09;&#xff0c;并输出 “YES” 或 “NO”。 解析注释后的代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {string arr; // 定义字符串变量arr&…

solidity0.8.0的应用案例9:代理合约

代码由OpenZeppelin的Proxy合约简化而来。 代理模式 Solidity合约部署在链上之后,代码是不可变的(immutable)。这样既有优点,也有缺点: 优点:安全,用户知道会发生什么(大部分时候)。坏处:就算合约中存在bug,也不能修改或升级,只能部署新合约。但是新合约的地址与…

Hive 导入csv文件,数据中包含逗号的问题

问题 今天 Hive 导入 csv 文件时&#xff0c;开始时建表语句如下&#xff1a; CREATE TABLE IF NOT EXISTS test.student (name STRING COMMENT 姓名,age STRING COMMENT 年龄,gender STRING COMMENT 性别,other_info STRING COMMENT 其他信息 ) COMMENT 学生信息表 ROW FORM…

T362598 Glaciaxion

Glaciaxion 题目描述 冰封的世界可以看作是 $ n $ 块初始时冷冻的冰川&#xff0c;这些冰川被编号为 1 ∼ n 1 \sim n 1∼n。 探测器抵达后的 $ m $ 秒&#xff0c;每秒都会探测到一块冰川融化。 当一块冰川第一次融化时&#xff0c;探测器返回 N&#xff0c;否则返回 Y。…

Keepalive+LVS群集部署

一、Keepalive概述 keepalived 软件起初是专为 LVS 负载均衡软件设计的&#xff0c;用来管理并监控 LVS集群中各个服务节点的状态&#xff0c;后来又加入了可以实现高可用的 VRRP 功能。因此&#xff0c;keepalived 除了能够管理 LVS集群外&#xff0c;还可以为其他服务&#…

内网安全:WMI协议与SMB协议横向移动

目录 网络拓扑图 网络环境说明 WMI协议 SMB协议 域内信息收集 WMI协议 - 横向移动 利用方式一&#xff1a;wmic命令 利用方式一&#xff1a;cscript 利用方式一&#xff1a;impacket SMB协议 - 横向移动 利用方式一&#xff1a;psexec 利用方式二&#xff1a;psexe…

debian apt error: Package ‘xxx‘ has no installation candidate

新的debian虚拟机可能会出现这个问题。 修改apt的source.list&#xff0c;位于/etc/apt/source.list&#xff0c;添加两行&#xff1a; deb http://deb.debian.org/debian bullseye main deb-src http://deb.debian.org/debian bullseye main执行&#xff1a; sudo apt-get u…

Linux下的Shell编程——正则表达式入门(四)

前言&#xff1a; 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。 在Linux 中&#xff0c;grep&#xff0c;sed&#xff0c;awk 等文本处理工具都支持…

Ubuntu inotify

inotify 是一个用于监视文件系统事件的机制。它允许你监视文件或目录的变化,如文件的创建、修改、删除、移动等,以及目录的访问权限变化。 安装 在 Ubuntu 中,你需要安装 inotify-tools 包,这是一个包含 inotifywait 和 inotifywatch 等实用工具的软件包。你可以使用以下命…

golang 协程的实现原理

核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…