最新资讯

  • Ubuntu下的STM32开发环境搭建(VScode+CubeMX+arm-none-eabi-gcc交叉编译工具链),使用JLink进行烧录(非OpenOCD),使用Ozone进行调试

Ubuntu下的STM32开发环境搭建(VScode+CubeMX+arm-none-eabi-gcc交叉编译工具链),使用JLink进行烧录(非OpenOCD),使用Ozone进行调试

2025-05-20 19:01:34 2 阅读

写在前面:

        我是南昌航空大学洪鹰战队22级电控组成员,在学习和备赛的过程中使用过很多开发环境,从Keil到CubeIDE,再到VScode,最后还是觉得VScode使用起来比较方便。在24赛季的备赛过程中,我们接触并使用了湖南大学跃鹿战队的开源电控框架basic_framework,感受到了使用Ozone进行调试的方便性,由此产生了探索的小兴趣。

        在联盟赛结束后我开始探索Ubuntu系统下的STM32开发环境的搭建,并在一次次试错中总结出了一个较为方便的开发环境搭建过程,故写下此篇博客用以记录,方便后面重装系统后能够快速重建开发环境,也为从事相关开发工作的同学们提供一个思路。

在此感谢湖南大学跃鹿战队电控开源框架basic_framework提供的环境搭建思路,附上框架链接:basic_framework: Hey this is the basic frame work for robomaster standard infantry Robots! enjoy using it, have fun developing Robot with ushttps://gitee.com/hnuyuelurm/basic_framework

仓库链接更新:

Gitee链接:STM32-development-environment-configuration-in-Ubuntu-environment: Ubuntu下的STM32开发环境搭建,使用VScode编写代码,使用CubeMX生成工程,使用arm-none-eabi-gcc交叉编译工具链进行编译,使用JLink进行烧录(执行JLinkExe)https://gitee.com/nchu-hongying-rm/stm32-development-environment-configuration-in-ubuntu-environment.git

Github链接:

GitHub - Mondrian-Amoron/STM32-development-environment-configuration-in-Ubuntu-environment: Generate code using CubeMX, edit code using VScode, compile using arm none eabi gcc cross compilation toolchain, burn using JLink (non OpenOCD), debug using OzoneGenerate code using CubeMX, edit code using VScode, compile using arm none eabi gcc cross compilation toolchain, burn using JLink (non OpenOCD), debug using Ozone - Mondrian-Amoron/STM32-development-environment-configuration-in-Ubuntu-environmenthttps://github.com/Mondrian-Amoron/STM32-development-environment-configuration-in-Ubuntu-environment.git

 一、Ubuntu系统的安装

1、启动盘的制作和双系统的安装

这里推荐一个b站的视频,这个UP主讲的非常细,Ubuntu的启动盘制作可以参考这个视频

建议:关于内存分布这块,建议至少120G,且直接挂载一个根节点,能提高内存空间利用率

Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibiliWindows 和 Ubuntu 双系统的安装和卸载共计16条视频,包括:双系统启动效果、下载Ubuntu系统镜像、下载安装镜像工具等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1554y1n7zv/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=db1d1f91faddd9a92b98355deb2f94a6建议:自备一个大容量高速U盘,每隔一段时间将自己重要的资料或工程文件都在U盘里备份一份,因为永远不知道Ubuntu会在什么时候突然崩溃

2、拯救者BIOS启动

因为我的电脑是拯救者的,所以当时启动安装时,为保险起见专门找了拯救者的BIOS启动相关注意事项,以供大家参考

联想拯救者Y7000P双系统Ubuntu安装记录_哔哩哔哩_bilibili-, 视频播放量 11288、弹幕量 1、点赞数 98、投硬币枚数 34、收藏人数 131、转发人数 42, 视频作者 Astra-github, 作者简介 谁能赐我一篇SCI,相关视频:Windows11 安装 Ubuntu 避坑指南,手把手教你安装双系统 windows11+ubuntu 22.04(1),Windows 和 Ubuntu 双系统的安装和卸载,这个双系统太美了!!,一步解决联想拯救者R9000p 5800h安装ubuntu后屏幕无法调节亮度的问题!!!,几分钟让你学会安装Windows双系统,无需U盘和PE,ros安装成功~联想拯救者r7000p win10和Ubuntu双系统,windows+ubuntu双系统详细安装教程,互不冲突,3分钟安装ubuntu20.04显卡驱动(大学生亲试一整个白天),联想Y7000安装ubuntu18.04系统https://www.bilibili.com/video/BV1j34y1y7iy/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=db1d1f91faddd9a92b98355deb2f94a6

3、更改Ubuntu的时间

双系统会导致Ubuntu比Windows的时间快8小时,而Windows的时间比Ubuntu慢8小时,所以需要解决系统时间同步的问题。还是第一次分享的那个视频,后面有一节讲到了时间同步的问题。

建议:打开字幕观看,因为有些莫名出现的问题,会在弹幕里有解答

系统时间同步问题_哔哩哔哩_bilibili系统时间同步问题是Windows 和 Ubuntu 双系统的安装和卸载的第9集视频,该合集共计16集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1554y1n7zv?p=9&vd_source=db1d1f91faddd9a92b98355deb2f94a6

二、配置C/C++环境

打开终端,以此输入以下命令来安装gcc、g++、gdb

1、安装gcc

sudo apt-get install gcc

2、安装g++

sudo apt-get install g++

3、安装gdb(调试用)

sudo apt-get install gdb

4、运行以下三条命令来看是否安装成功

gcc -v

g++ -v

gdb -v

5、可以使用vim或gedit来编写一段简单的代码运行一下(可跳过)

        对于代码或一个工程,最好是使用专属的文件夹来进行分类管理,这样会显得很有条理,管理起来也方便。例如在此处,我在主目录下创建了/Project/CxC++/test,test即是我的工程文件名,在这里面我们写一个C++程序来进行简单的验证。(以vim为例)

(1)使用vim创建hello.cpp

vim hello.cpp

(2)如果没有vim则先安装vim

sudo apt-get install vim

(3)成功创建hello.cpp后,进行代码编写:

关于vim的操作,感兴趣的同学可以上网搜索相关资料进行学习,在这里我就不班门弄斧了,简单的操作一下:

1、使用vim创建hello.cpp后,可以看到如下的场景

2、按下“i”键,进入编辑模式(左下角也有提示“插入”)

3、进行简单的代码编写

4、编辑完成后,先按一次“ESC”,此时左下角的“插入”会消失,然后同时按下“Shift”和“:”键,待下方出现“:”后,输入wq,然后按下回车。(wq表示保存并退出)

5、编写完成后,执行下面的命令对cpp文件进行编译

g++ -o hello hello.cpp

6、执行编译好的.o文件,验证运行效果

三、安装、配置VScode

1、前往VScode的官网进行下载,注意选择下载.deb

Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.https://code.visualstudio.com/

2、下载完成之后,在所属文件夹打开终端(一般默认是在“下载”里的)

3、执行如下命令,安装VScode,注意后面的.deb文件版本要对应自己所下载的版本,我这里以1.89为例(dpkg是Debian 系统中的软件包管理工具,感兴趣的可以自己去了解,这里就不多赘述了)

sudo dpkg -i code_1.89.0-1714530869_amd64.deb

4、打开VScode,安装必要的插件

(1)简体中文插件,一般首次进入后都会在右下角提示你安装的,如果没有提示就自己去搜索安装(注:安装完后需要重启软件才会生效)

(2)在左侧扩展商店中搜索“C/C++”,选择第一个进行安装

5、 创建一个新工程,并使用VScode打开,创建第一个.cpp文件进行测试

(1)我这里以创建一个test1文件夹为例(新建“test1”文件夹,右键选择“使用其它程序打开”,选择使用VScode打开)

(2)创建一个main.cpp

(3)编写测试代码

#include
using namespace std;

int main()
{
    cout << "Hello VScode ubder Ubuntu!!" << endl;
    return 0;
}

(4)配置.vscode里的相关.json文件,可以选择右键新建名为“.vscode”的文件夹,然后手动创建以下三个.json文件

launch.json:
{
    "version": "0.2.0",
    "configurations": [
    {
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/${fileBasenameNoExtension}.out",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": true,
        "MIMode": "gdb",
        "preLaunchTask": "build",
        "setupCommands": [
            {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
            }
        ]
    }
    ]
}
settings.json:
{
    "files.associations": {
        "ostream": "cpp",
        "iostream": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "bit": "cpp",
        "*.tcc": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "compare": "cpp",
        "concepts": "cpp",
        "cstdarg": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "deque": "cpp",
        "string": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "exception": "cpp",
        "algorithm": "cpp",
        "functional": "cpp",
        "iterator": "cpp",
        "memory": "cpp",
        "memory_resource": "cpp",
        "numeric": "cpp",
        "random": "cpp",
        "string_view": "cpp",
        "system_error": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "initializer_list": "cpp",
        "iosfwd": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "new": "cpp",
        "numbers": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "typeinfo": "cpp"
    }
}
tasks.json:
{
    "version": "2.0.0",
    "tasks": [
    {
    "label": "build",
    "type": "shell",
    "command": "g++",
    "args": ["-g", "${file}", "-std=c++11", "-o", "${fileBasenameNoExtension}.out"]
    }
    ]
}

(5)回到main.cpp,按下F5进行编译运行(实际上是调试,如果打了断点的话会停在断点)

四、安装、配置arm-none-eabi-gcc交叉编译工具链

关于交叉编译工具链的下载,有很多种方法,可以前往官网下载

Downloads | GNU Arm Embedded Toolchain Downloads – Arm DeveloperDownload the GNU Embedded Toolchain for ARM, an open-source suite of tools for C, C++, and Assembly programming for 32-bit ARM Cortex-A, ARM Cortex-M and Cortex-R familieshttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

(推荐)或者直接使用我上传在天翼云盘的资源(因为百度网盘没有会员的话下载会非常慢)访问码:pgn6

arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi编译工具链下载天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.189.cn/web/share?code=nMv6Bn67b2Az%EF%BC%88%E8%AE%BF%E9%97%AE%E7%A0%81%EF%BC%9Apgn6%EF%BC%89再附上百度网盘的下载链接:(访问码m9vi)

arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi编译工具链下载http://xn--gzu811i//pan.baidu.com/s/17r_5awLRDtE-ehpPEQuJ2w?pwd=m9vi%20%E6%8F%90%E5%8F%96%E7%A0%81:%20m9vi%20%E5%A4%8D%E5%88%B6%E8%BF%99%E6%AE%B5%E5%86%85%E5%AE%B9%E5%90%8E%E6%89%93%E5%BC%80%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E6%89%8B%E6%9C%BAApp%EF%BC%8C%E6%93%8D%E4%BD%9C%E6%9B%B4%E6%96%B9%E4%BE%BF%E5%93%A6下载结束后,打开所在文件夹终端(建议将该压缩包转移到一个不常更改的文件夹里,可以新建),输入以下命令进行解压:

tar -xvf arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz

解压后得到一个同名文件夹

复制可执行文件“bin”的路径,操作如下:

(1)进入“arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi”文件夹

(2)进入“bin”文件夹

(3)在空白处右键,选择“在终端打开”

(4)输入以下指令查看路径

pwd

如图白色部分所示就是bin文件的路径,选择后按住“Shift”+“Ctrl”+“c”进行复制

打开终端,输入下面的指令,打开profile文件(不加sudo的话只能以“只读”打开)

sudo vim /etc/profile

在打开的文件末尾输入以下内容(注:$PATH:后面的链接为我们刚复制的bin的链接,配置时需要根据实际情况进行修改)

步骤:

(1)输入“i”进入插入模式

(2)将光标移动到末行后,回车另起一行

(3)输入前面的export PATH=$PATH:

(4)按住“Shift”+“Ctrl”+“v”进行粘贴

(5)按下Esc,然后按下“Shift”+“:”,输入“wq”,保存修改并退出

export PATH=$PATH:/home/yml/mondrian/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi/bin

执行如下命令,然后重启电脑/虚拟机使环境变量生效

source profile

重启完成后执行以下命令看是否配置成功

五、安装JLink驱动

1、安装libreadline库

我们烧录会用到JLinkExe的命令,而JLinkExe会用到libreadline库,所以要安装libreadline库,执行如下命令安装:

sudo apt-get install libreadline-dev

2、进入SEGGER的官网,下载JLink驱动(选择Linux下的64-bit DEB Installer)

SEGGER - The Embedded Experts - Downloads - J-Link / J-TraceDownload the latest SEGGER trial versions, eval packages and user manuals!https://www.segger.com/downloads/jlink/

点击Download

左下角勾选同意,然后“Download software”

速度应该会特别慢,这里可以选择我上传到云盘的资源(v792o版本):

天翼云盘(访问码b4oi):

JLink驱动天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.189.cn/web/share?code=FzyMRvYFz2ye%EF%BC%88%E8%AE%BF%E9%97%AE%E7%A0%81%EF%BC%9Ab4oi%EF%BC%89百度网盘(访问码k365):

JLink驱动https://pan.baidu.com/s/1DZm-yv6eYUxakmD4R5_kBA?pwd=k365

3、安装JLink驱动

下载好后,打开.deb文件所在的文件夹,打开终端,执行以下命令进行安装:

sudo dpkg -i JLink_Linux_V792o_x86_64.deb

因为我之前已经安装过了,所以这里显示“覆盖”

4、查看JLink版本

执行如下命令来查看Jlink版本,验证是否安装成功

jlink --version

5、进入SEGGER查看相关可执行文件

输入以下命令,然后执行“ls”查看相关的可执行文件(一般默认安装位置都是在/opt下的)

cd /opt/SEGGER/JLink

六、J-Link Commander交互模式初体验

1、直接执行JLinkExe命令

主要是为了验证一下是否安装成功,执行以下命令,进入J-Link Commander交互模式

JLinkExe

此时如果没有链接Jlink的话会出现这个界面:

我们点击No,然后会进入Commander交互模式,在这种模式下,我们可以执行各种 J-Link Commander 提供的命令来连接、配置调试器,下载程序或文件到目标设备等操作,感兴趣的同学可自行学习。

执行“q”指令退出该模式。

2、初次尝试使用JLinkExe来与设备建立连接

连接A板(XH2.54转MX1.25的转接线需要自己焊接,注意查看手册,对上线序)

当然,如果我们接入Jlink设备后,再执行这个命令会提示你执行“connect”来与设备进行链接,或者输入“?”来查看更多的指令帮助。

我们输入“connect”后,会返回我们连接的开发板芯片的信息,并让我们确认。

我们输入芯片型号来设置Device(这里以STM32F427IIH6为例)

选择连接接口为SWD(或JTAG,根据实际需求来看)

选择传输速度,默认4000kHz,我们可以自行修改,比如我这里设置2000kHz

按下回车后,等待几毫秒便会提示连接成功了(会打印检测到的芯片以及寄存器信息等,例如我们可以找到熟悉的“Cortex-M4”)

假设这里我们已经编译得到了一个test.bin或test.hex文件,那么到这一步后,我们就可以使用下面两条命令来实现烧录.bin文件或.hex文件了(这里不做演示,只做说明)

loadbin ./test.bin,0x08000000
loadfile ./test.hex

然后执行“q”退出Commander模式。

七、安装CubeMX

1、安装Java环境

打开终端,输入下面的指令安装Java运行环境

sudo apt install default-jre

安装完成后,输入下面的指令验证是否安装成功

java --version

2、安装CubeMX

前往官网下载CubeMX软件包(点击获取软件)

STM32CubeMX软件下载https://www.st.com/zh/development-tools/stm32cubemx.html#overview

选择第一个下载(Linux版本)

之后会弹出一个许可协议,我们选择同意后,会弹出选择下载身份的界面,可以右下角选择访客下载,也可以注册一个ST账号后再登录下载,这里建议注册一个账号后再下载

注:无论是选择访客下载还是注册后下载,软件的下载链接都会发送到你填写的邮箱里,所以请确保你的邮箱是在电脑上打开的

将下载好的包解压后,进入,双击运行“SetupSTM32CubeMX-6.11.1”(以实际下载的版本为主)

然后根据向导一步步进行安装,注意选择一个能容得下的盘

安装完成后,打开刚刚选择的安装位置(例如我这里是/home/yml/STM32CubMX),双击“STM32CubeMX”启动程序

登录之后,点击右边栏的"INSTALL/REMOVE"或“Help”->“Manage embedded sofeware packages”

选择自己需要的芯片型号的HAL库包,选好之后点击“INSTALL”,想移除某软件包也可以在这个界面选择,然后点“REMOVE”

(关于工程的创建过程,可以自行搜索学习,这里就不赘述了,只需注意一点:Project Maneger那里的Toolchain/IDE要选择Makefile)

八、编写JLink烧录脚本并修改Makefile

1、打开工程

使用VScode打开一个新建好的工程

2、编写代码

打开main.c,随便写点什么,比如这里来个经典点灯

3、编译

在底部的终端栏里执行以下指令进行编译("-j16"这里的16对应电脑核心数,我的是16核的,所以是-j16,根据电脑实际硬件配置进行修改,例如CPU是20核的就改为-j20)

make -j16

执行后可以看到编译好的.elf、.hex、.bin文件

4、编写JLinkScript脚本

在工程主目录下创建一个.JLinkScript脚本文件,并编写以下内容

speed 2000
device STM32F103C8
r
loadfile ./build/Jlink_test.hex
q

解释:

speed 2000: 设置J-Link与目标设备之间的通信速度为2000 kHz(这个速率可自行修改)。
device STM32F103C8: 指定目标通信设备的型号为STM32F103C8,如果是其他芯片需要修改为对应的型号。
r: 通过DEMCR.VC_CORERESET来在复位后暂停核心的执行。在ARM Cortex-M系列微控制器中,DEMCR是一个调试与监控寄存器,而VC_CORERESET是其中的一个位(bit)。将这个位设置为1会导致在复位后暂停核心的执行。
loadfile ./build/Jlink_test.hex: 加载指定的hex文件(位于"./build/Jlink_test.hex"路径下)到目标设备的Flash存储器中。(注:这里的Jlink_test.hex是上一步“编译”后得到的,工程名称不一样,所得到的.hex文件名也不一样,需要根据实际情况进行修改)。
q: 退出J-Link调试工具,一次烧录结束。

修改(只是举例,可跳过不看):

如果想要修改生成的.elf、.hex、.bin文件名,可以打开Makefile文件,在Target这里进行修改(例如,把Jlink_test修改为test1后,再次编译就会生成test1.elf、test1.hex、test1.bin)

注:修改名称后,记得将STM32.JLinkScript里的.hex文件名也修改了。

5、修改Makeflie

打开Makefile后,滑动至最底下,添加下面这条命令

Flash:
	JLinkExe -if SWD -CommanderScript STM32.JLinkScript

解释:调用JLinkExe(J-Link调试工具),选择SWD接口(当然你也可以设置为JTAG)与目标设备进行通信,然后执行名为"STM32.JLinkScript"的J-Link脚本文件。

到这一步后,你就可以使用“make”指令来进行编译,然后插上开发板,使用“make Flash”指令来进行烧录了。

make Flash

部分烧录日志的截图:

6、创建烧录task

配置.vscode里的相关.json文件,可以选择右键新建名为“.vscode”的文件夹,然后手动创建“tasks.json”文件,添加下面的内容:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "jlink_Flash", 
            "type": "shell",
            "command":"make Flash",
            "group": {
                "kind": "build",
                "isDefault": false,
            }
        }
    ]
}

保存之后,就可以点击“终端->运行任务->jlink_Flash”来进行烧录操作了

当然,也可以配置的更加方便一点,比如使用快捷键“F5”实现一键烧录下载,可以自行去尝试。

九、安装Ozone

        Ozone是一款功能强大的调试和系统分析工具,也是SEGGER开发的,支持多种微处理器架构和调试接口,并与SEGGER的J-Link调试器兼容。

1、下载Ozone的软件包

官网:Ozone – The Performance AnalyzerThe SEGGER Ozone J-Link Debugger & Performance Analyzer is an “All-In-One” software solution for debugging and performance analysis.https://www.segger.com/products/development-tools/ozone-j-link-debugger/进去官网后点击“Downloads”

进去之后等一等,网页加载完成后会下滑到“ Ozone - The J-Link Debugger”这一栏,在“Linux”那一栏选择下载“64-bit DEB Installer

同意SEGGER的软件安装协议(忘记的可以回看第五节里安装JLink驱动那块的流程),然后就开始下载了

老样子,官网下载比较慢,我在云盘也上传了相关软件包(V326版本),需要的可以下载

天翼云盘(提取码:tv8u):

Ozone_Linux_V326天翼云盘是中国电信推出的云存储服务,为用户提供跨平台的文件存储、备份、同步及分享服务,是国内领先的免费网盘,安全、可靠、稳定、快速。天翼云盘为用户守护数据资产。https://cloud.189.cn/web/share?code=aINf6rmaUnye%EF%BC%88%E8%AE%BF%E9%97%AE%E7%A0%81%EF%BC%9Atv8u%EF%BC%89百度网盘(提取码:np6y):

Ozone_Linux_V326https://pan.baidu.com/s/1Lq2iSv_zSqz_0Q9vOcYNRA?pwd=np6y

2、安装Ozone

打开包含软件包的文件夹

从这里打开终端,执行以下命令进行安装(注:这里的软件包版本要修改为自己实际下载的)

sudo dpkg -i Ozone_Linux_V326_x86_64.deb

十、Ozone的配置及初次体验

1、基础调试配置

打开终端,执行下面的命令,打开Ozone

ozone

在弹出的小框中,配置Device为自己开发板的芯片型号(首次打开应该是不会显示的,需要手动搜索,我这里显示C8是因为之前配置过)

选择好芯片型号后,Register Set会自动设置好,我们需要设置的是Peripherals,选择对应芯片的.svd文件

(插曲).svd文件的寻找

这个文件可以在ST的官网下载到,流程如下:

进入官网,在搜索栏里搜索想要寻找的芯片型号

ST意法半导体官网https://www.st.com/content/st_com/zh.html

点击搜索出来的芯片,进去后点击“CAD资源”这一栏

在全部资源里可以找到SVD(System View Description)文件包

下载解压后就可以得到这一系列的各种型号的.svd文件了

选择好.svd文件后,点击右下角的“Next”,在这个界面,我们需要选择“Target Interface”为“SWD”,点击识别到的JLink设备,然后点“Next”。

在这一步需要选择.elf文件,这是由Makefile生成的(第八节的第3小节里提到过)。这个文件通常在我们的工程文件的build目录下。

点击“Open”进行选择,选择好后我们点击“Next”进行下一步配置。

这一步我们保持默认就好,点击“Finish

下面这个界面就是配置完成后的界面了,我们可以点击左上角的绿色按钮开始启动调试

2、常用调试配置

Ozone中提供了非常多的控件,在这里介绍两个调参常用的,其它控件的功能大家可以自行探索

(1)Watched Data

单击左上角的“View”,在“General”一栏找到“Watched Data”,选择“New Watched Data Window”,就会生成一个下图所示的小窗口,我们可以在这个窗口里查看变量的值。

例如:我们定义一个静态全局变量Test_Data,然后把它添加进来,看看它的值

注:watch里的变量不会实时更新,只有在暂停或遇到断点的时候才会更新,如果想让它自动刷新的话,可以右键变量名->将“Refresh Rate”设置为“5Hz”(一秒刷新5次),或者添加到Graph里实时更新(刷新率更高)

(2)Break&Tracepoints

单击左上角的“View”,在“General”一栏找到“Break&Tracepoints”,单击后就会生成一个下图所示的小窗口,我们可以在这个窗口里查看和管理设置的断点。

(3)Timeline

单击左上角的“View”,在“Advanced”一栏找到“Timeline”,单击后就会生成一个下图所示的小窗口,我们可以在这个窗口里查看变量随时间的变化过程,并且可以自行设置采样频率(PID调参神器)。

我们可以简单写一个小例子看看效果:

    HAL_Delay(1000);
    Test_Data = Test_Data + 20;
    HAL_Delay(1000);
    Test_Data = Test_Data - 20;

Watchd Data窗口里的“Test_Data”右键,选择“Graph”后,就能在“Timeline”窗口看见它的变化了,我们将时间滚动设置的慢一点(比如设置为1秒钟),就能看到“Test_Data”的可视化变化情况了。

(4)Data Sampling

单击左上角的“View”,在“Advanced”一栏找到“Data Sampling”,单击后就会生成一个下图所示的小窗口。这也是一个类似于“Watched Data”的变量监视窗口,它的优点在于可以自行设置更高的采样频率,例如这里设置了采样频率为1kHz。

3、调试文件的保存

        完成一次调试后,可以将这次调试的文件保存起来,下次再打开的时候,就可以紧接着上次调试的工程继续调试了(就不用每次都繁琐的添加变量设置采样时间了)

点击左上角的“File”,然后点击“Save Project as...”,此时会弹出一个会话框,让你选择调试工程保存的位置以及名称。(建议单独创建一个文件夹用来保存调试文件,文件夹命名最好加上芯片名称用以区分,找起来也方便找

当你没有保存的时候,点击右上角的红色“X”退出时也会提示你让你进行保存的。

4、调试文件的加载

再次启动Ozone时,会弹出小对话框让你选择,我们点击“Open Existing Project”后就会弹出一个对话框,选择上次保存的“.jdebug”文件打开,就能恢复上次调试时的场景。

当我们选择“Create New Project”后,就会弹出熟悉的配置界面了,当我们想要调试其它工程或其它芯片的时候可以选择这个。

5、关于代码修改与调试

        在这个环境下,我们是使用VScode来编写代码,使用Ozone来进行调试,当我们在调试过程中发现了问题,想要修改代码的时候,可以直接暂停Ozone中正在调试的进程,然后打开VScode进行修改。在修改完执行make指令进行编译后,Ozone会检测到代码发生了改变并重新加载.elf文件。

如下图,在VScode中做了修改后,Ozone会检测到变化,并提示你加载新的修改,点击“Yes”即可将新修改的内容加载进来。

结束语:

        本想着是作为一次配置流程的记录,以方便日后如果系统出了问题,需要重装时,我能快速的重新搭建起来开发环境。但是在慢慢记录的过程中,我想到或许发表了后会有其他小伙伴也来看,所以重头又详细的补充了一些,最后发现洋洋洒洒的写了1万2千多字。这样配置可能不是最优的,会有人觉得又臭又长,网上有更多更好的配置流程,我只是摸索着把自己总结出来的东西进行了一个记录,并且尽量详细的说明每一个步骤。不仅是给自己看吧,也希望能够帮到有需要的人。

最后,再次感谢湖南大学跃鹿战队的电控开源框架basic_framework提供的开发环境搭建思路!

本文地址:https://www.vps345.com/11517.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP docker 容器 运维 java-rabbitmq java 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 人工智能 自动化 centos python linux 机器学习 服务器 深度学习 Deepseek Deepseek-R1 大模型 私有化部署 推理模型 deepseek DeepSeek-R1 API接口 ubuntu 游戏 云计算 c++ javascript 前端 chrome edge 数据库 oracle 关系型 安全 分布式 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 开发语言 DNS ddos android 网络安全 web安全 神经网络 计算机视觉 卷积神经网络 镜像源 tcp/ip 网络 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 华为 语言模型 自然语言处理 FTP服务器 redis ai nlp arm开发 架构 macos MacMini Mac 迷你主机 mini Apple stm32 嵌入式硬件 单片机 harmonyos ssh 物联网 AIGC 人工智能生成内容 Dify https 无人机 机器人 windows 远程桌面 nginx 负载均衡 flutter Google pay Apple pay YOLO conda pytorch vscode yolov5 Ollama 模型联网 API CherryStudio php Flask FastAPI Waitress Gunicorn uWSGI Uvicorn 笔记 C 环境变量 进程地址空间 进程 django CH340 串口驱动 CH341 uart 485 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 RTSP xop RTP RTSPServer 推流 视频 数据库系统 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 git npm springsecurity6 oauth2 授权服务器 前后端分离 github 游戏引擎 学习 计算机外设 bug 指令 kubernetes prometheus grafana 云原生 udp 策略模式 c语言 node.js 网络结构图 YOLOv8 NPU Atlas800 A300I pro asi_bench 华为云 华为od cursor 信息与通信 mysql llama deepseek-r1 大模型本地部署 mcp iventoy VmWare OpenEuler 算法 opencv unix oracle fusion oracle中间件 交互 网络协议 ROS 自动驾驶 gcc centos 7 gnu ip协议 spring boot outlook 错误代码2603 无网络连接 2603 操作系统 进程控制 Ubuntu agi Qwen2.5-coder 离线部署 rpc pycharm ide 英语 学习方法 经验分享 程序人生 腾讯云 远程工作 串口服务器 Ubuntu20.04 GLIBC 2.35 react.js 前端面试题 持续部署 qt arm Linux xrdp 远程连接 环境迁移 UEFI Legacy MBR GPT U盘安装操作系统 gitea microsoft ACL 流量控制 基本ACL 规则配置 dify 知识库 本地化部署 数据分析 adb qps 高并发 opengl 快捷键 旋转屏幕 自动操作 ansible 阿里云 kafka axure 富文本编辑器 ui 面试 职场和发展 eureka ipython 服务器配置 生物信息学 apache ollama 压力测试 大模型压力测试 EvalScope mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 智能体开发 AI grub 版本升级 扩容 mysql离线安装 ubuntu22.04 mysql8.0 SRS 流媒体 直播 ssh漏洞 ssh9.9p2 CVE-2025-23419 fstab 银河麒麟 智能路由器 dell服务器 ip 本地环回 bind USB转串口 ArkUI 鸿蒙系统 ArkTS typescript 鸿蒙 rust腐蚀 iftop 网络流量监控 程序 编程 内存 性能分析 科技 个人开发 jvm 虚拟机 spring cloud compose react next.js 部署 部署next.js 外网访问 内网穿透 端口映射 CPU 使用率 系统监控工具 linux 命令 缓存 性能优化 cron crontab日志 交换机 硬件 设备 GPU PCI-Express adobe AutoDL tomcat linux环境变量 rsyslog IM即时通讯 QQ 微信 企业微信 剪切板对通 HTML FORMAT 计算机网络 mcu 目标跟踪 目标检测 OpenVINO 推理应用 MCP virtualenv gitlab unity gitee selenium 雨云 NPS pygame webdav C语言 fastapi mcp-proxy mcp-inspector fastapi-mcp agent sse Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 debian PVE live555 rtsp rtp 自定义客户端 SAS 后端 数据结构 http flask word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 intellij-idea matplotlib fonts-noto-cjk 开发环境 大数据 spark hive uni-app 数据挖掘 list FTP 服务器 vnc 媒体 websocket Linux 维护模式 jellyfin nas RAID RAID技术 磁盘 存储 svn 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 JDK Java LInux Windows ffmpeg 音视频 视频编解码 pip vue3 excel 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 并查集 leetcode c# 开源 rdp 远程服务 postman 测试工具 devops elasticsearch k8s rocketmq perf jenkins maven dash json 正则表达式 工具分享 ubuntu 18.04 安装教程 浪潮信息 AI服务器 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 实时音视频 实时互动 嵌入式 Alexnet kylin visualstudio AI编程 阻塞队列 生产者消费者模型 服务器崩坏原因 asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 虚拟现实 VMware glibc cuda 华为OD 华为OD机试真题 可以组成网络的服务器 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 vite 教程 环境搭建 Maven milvus IMM spring 灵办AI centos-root /dev/mapper yum clean all df -h / du -sh burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 gpu算力 nvm 计算生物学 生物信息 基因组 vim maxkb ARG ue4 着色器 ue5 虚幻 程序员创富 Hyper-V WinRM TrustedHosts 冯诺依曼体系 多层架构 解耦 Kali Linux 黑客 渗透测试 信息收集 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 postgresql hadoop 微信分享 Image wxopensdk 网易邮箱大师 运维开发 ssrf 失效的访问控制 编辑器 chatgpt oneapi grep 微信小程序 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 eclipse 系统安全 防火墙 端口号 开放端口 访问列表 C++ 华为认证 VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 集成学习 集成测试 知识图谱 LLM 大模型教程 AI大模型 直播推流 cpu 实时 使用 Qualcomm WoS Python QNN AppBuilder pillow 驱动开发 HarmonyOS Next 升级 CVE-2024-7347 漏洞 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 虚拟显示器 远程控制 C# MQTTS 双向认证 emqx 前端框架 爬虫 VMware安装mocOS macOS系统安装 Ubuntu 22.04 MySql 算家云 算力租赁 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 ssl diskgenius EtherCAT转Modbus EtherCAT转485网关 ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口网关 ECT转Modbus串口服务器 Cursor iot 多线程服务器 Linux网络编程 bash aws 1024程序员节 jupyter python2 ubuntu24.04 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 WSL2 IP 地址 MobaXterm 文件传输 AI-native gpt 链表 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 镜像下载 freebsd efficientVIT YOLOv8替换主干网络 TOLOv8 TCP WebServer openvpn server openvpn配置教程 centos安装openvpn 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 llm transformer 课程设计 nohup 异步执行 私有化 本地部署 IIS .net core Hosting Bundle .NET Framework vs2022 IIS服务器 IIS性能 日志监控 区块链 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 图像处理 DeepSeek sql mongodb 一切皆文件 大模型技术 本地部署大模型 firewall rust stm32项目 命名管道 客户端与服务端通信 zotero WebDAV 同步失败 代理模式 mac ollama api ollama外网访问 反向代理 DevEco Studio 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 ubuntu20.04 开机黑屏 硬件工程 大语言模型 LLMs remote-ssh windows 服务器安装 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 zabbix mariadb 电脑 NVML nvidia-smi golang 统信 国产操作系统 虚拟机安装 建站 linux驱动开发 JAVA Chatbox LDAP samba QT 5.12.12 QT开发环境 Ubuntu18.04 wsl jar 孤岛惊魂4 ros ros1 Noetic 20.04 apt 安装 asm ios 虚拟局域网 高级IO epoll notepad 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 ci/cd 代码规范 vue 软件需求 big data 国产数据库 瀚高数据库 数据迁移 下载安装 大模型入门 ragflow IPMI rag 大模型部署 visual studio code 思科 SSH Xterminal ecmascript nextjs reactjs DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 sqlserver DevOps 软件交付 数据驱动 应用场景 数据安全 智慧农业 开源鸿蒙 团队开发 程序员 系统架构 sublime text kotlin android studio iphone GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 压测 ECS RDP Docker Docker Compose Kubernetes ESP32 camera Arduino 电子信息 大模型微调 信号处理 tcpdump 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 vu大文件秒传跨域报错cors MQTT 消息队列 Docker Desktop 热榜 xcode protobuf 序列化和反序列化 安装 odoo 服务器动作 Server action kubeless yolov8 shell springboot termux 微服务 回显服务器 UDP的API使用 chatbox Agent n8n 工作流 RustDesk自建服务器 rustdesk服务器 docker rustdesk 进程优先级 调度队列 进程切换 css css3 html5 vr HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 KylinV10 麒麟操作系统 Vmware web3.py 执法记录仪 智能安全帽 smarteye yum docker-compose docker compose vmware 卡死 桌面环境 移动端开发 GCC aarch64 编译安装 HPC ECT转Modbus协议 EtherCAT转485协议 ECT转Modbus网关 ip命令 新增网卡 新增IP 启动网卡 多线程 HP Anyware oceanbase 传统数据库升级 银行 es6 qt6.3 g726 tcp webrtc flash-attention 报错 jmeter Ubuntu22.04 虚拟化 开发人员主页 话题通信 服务通信 macbook 磁盘监控 Linux PID burp suite 抓包 券商 股票交易接口api 类型 特点 温湿度数据上传到服务器 Arduino HTTP WLAN Trae IDE AI 原生集成开发环境 Trae AI go file server http server web server java-ee 蓝桥杯C++组 蓝桥杯 嵌入式实习 shell脚本免交互 expect linux免交互 Mermaid 可视化图表 自动化生成 系统 黑苹果 ufw Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 命令 硅基流动 ChatBox Kylin-Server 服务器安装 智能体 autogen openai coze CrewAI KingBase Cline 网络爬虫 zip unzip rc.local 开机自启 systemd 麒麟 PX4 express p2p 监控k8s集群 集群内prometheus Hive环境搭建 hive3环境 Hive远程模式 常用命令 文本命令 目录命令 安卓模拟器 mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 NFS Redis Desktop ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 matlab arkUI arkTs localhost 毕设 openEuler open webui cnn 智能合约 哈希算法 高效I/O powerpoint 通信工程 毕业 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 Maxkb RAG技术 本地知识库 clickhouse Linux Vim Invalid Host allowedHosts 实战案例 智能手机 iTerm2 云电竞 云电脑 todesk 安全威胁分析 MCP server C/S CNNs 图像分类 openjdk dubbo html web lighttpd安装 Ubuntu配置 Windows安装 性能测试 服务器优化 CPU 主板 电源 网卡 googlecloud rustdesk vSphere vCenter 软件定义数据中心 sddc 聚类 昇腾 大模型训练/推理 推理问题 mindie ocr 硬件架构 软件测试 大模型应用 jdk .netcore linuxdeployqt 打包部署程序 appimagetool kali 共享文件夹 MacOS录屏软件 7z gateway Clion Nova ResharperC++引擎 Centos7 远程开发 桥接模式 windows虚拟机 虚拟机联网 kernel 3d 数学建模 王者荣耀 etcd RBAC python3.11 pyside6 界面 openssl firefox frp java-rocketmq 安全漏洞 信息安全 实验 ruoyi intellij idea numpy pdf vasp安装 安卓 磁盘挂载 新盘添加 partedUtil 源码剖析 rtsp实现步骤 流媒体开发 中间件 iis 管道 匿名管道 读写锁 vm 其他 动静态库 产品经理 sqlite3 物联网开发 arcgis 换源 国内源 Debian 显卡驱动持久化 GPU持久化 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 echarts 远程看看 远程协助 银河麒麟操作系统 国产化 EMQX 通信协议 conda配置 conda镜像源 pyautogui 数据可视化 推荐算法 ragflow 源码启动 kind laravel export env 变量 tar r语言 内网环境 onlyoffice Trae叒更新了? visual studio cudnn anaconda bot api WSL resolv.conf vmamba mysql安装报错 windows拒绝安装 宝塔面板无法访问 nohup后台启动 大文件秒传跨域报错cors AD域 进程间通信 京东云 分析解读 zerotier openwrt 显示器 进程信号 软件开发 信任链 su sudo sudo原理 su切换 ROS2 VMware创建虚拟机 Claude Desktop Claude MCP Windows Cli MCP 锁屏不生效 langchain deep learning 创意 社区 MS Materials db Kali 渗透 Windsurf ftp服务 文件上传 游戏程序 设置代理 实用教程 日志分析 系统取证 .net WSL2 上安装 Ubuntu 离线部署dify armbian u-boot GameFramework HybridCLR Unity编辑器扩展 自动化工具 wps netty 权限 k8s部署 MySQL8.0 高可用集群(1主2从) 状态管理的 UDP 服务器 Arduino RTOS win11 无法解析服务器的名称或地址 WebUI DeepSeek V3 ftp systemctl composer Mac内存不够用怎么办 log4j gradle cmos React Next.js 开源框架 lvm 磁盘分区 远程 执行 sshpass 操作 考试 统信UOS bonding 链路聚合 云计算面试题 远程过程调用 Windows环境 UOS 统信操作系统 LLM Web APP Streamlit 文心一言 keepalived DocFlow 数码 联机 僵尸毁灭工程 游戏联机 开服 llama3 Chatglm 开源大模型 iBMC UltraISO windows日志 Bug解决 Qt platform OpenCV Linux的权限 笔灵AI AI工具 OpenCore redhat Dell R750XS 域名服务 DHCP 符号链接 配置 k8s集群资源管理 云原生开发 fork wait waitpid exit VSCode 工具 Docker Hub docker pull daemon.json 监控k8s 监控kubernetes 测试用例 功能测试 IP配置 netplan 内网渗透 靶机渗透 linux上传下载 ShapeFile GeoJSON Nginx v10 软件 搜索引擎 全文检索 图搜索算法 webpack ECS服务器 大屏端 数据集 VPN wireguard rabbitmq AnythingLLM AnythingLLM安装 宝塔 edge浏览器 alias unalias 别名 WebVM MAVROS 四旋翼无人机 基础环境 博客 自动化运维 流水线 脚本式流水线 rpa 混合开发 环境安装 word 僵尸进程 图文教程 VMware虚拟机 macOS系统安装教程 macOS最新版 虚拟机安装macOS Sequoia VMware安装Ubuntu Ubuntu安装k8s 源码 毕业设计 网卡的名称修改 eth0 ens33 需求分析 提示词 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 语音识别 linux内核 源代码管理 web3 区块链项目 gpt-3 多产物 NAT转发 NAT Server mac设置host NAS Termux Samba webgl iperf3 带宽测试 make命令 makefile文件 SSE 用户管理 database docker run 数据卷挂载 交互模式 迁移指南 SWAT 配置文件 服务管理 网络共享 自动化编程 服务器扩容没有扩容成功 nuxt3 软件卸载 系统清理 selete scikit-learn ros2 moveit 机器人运动 rancher 矩阵 harmonyOS面试题 教育电商 环境配置 xml 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 信息可视化 umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt import save load 迁移镜像 客户端 Linux24.04 deepin 低代码 单例模式 网络用户购物行为分析可视化平台 大数据毕业设计 论文阅读 EVE-NG nftables Linux权限 权限命令 特殊权限 拓扑图 5G nvidia 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 vscode 1.86 服务器部署 本地拉取打包 openstack Xen KVM GPU训练 可信计算技术 智能电视 nacos 豆瓣 追剧助手 迅雷 P2P HDLC 弹性计算 云服务器 裸金属服务器 弹性裸金属服务器 ESXi 密码学 deepseak 豆包 KIMI 腾讯元宝 unity3d 自动化测试 TRAE Mac软件 互信 镜像 photoshop H3C dns 飞腾处理器 弹性服务器 云服务 软件工程 软件构建 threejs 3D ICMP 框架搭建 HCIE 数通 Web应用服务器 政务 分布式系统 监控运维 Prometheus Grafana 深度求索 私域 Attention NLP 沙盒 mamba Vmamba 个人博客 联网 easyconnect 代理 pyicu SSH 密钥生成 SSH 公钥 私钥 生成 主从复制 elk kamailio sip VoIP seatunnel 腾讯云大模型知识引擎 c ukui 麒麟kylinos openeuler Netty 海康 计算机科学与技术 bcompare Beyond Compare zookeeper Carla 智能驾驶 隐藏文件 K8S k8s管理系统 图论 TrueLicense autoware 开发 top Linux top top命令详解 top命令重点 top常用参数 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos VPS kylin v10 麒麟 v10 具身智能 Isaac Sim 虚拟仿真 Reactor 设计模式 DrissionPage Office trae 键盘 SecureCRT YOLOv12 sublime text3 视频监控 网站 WebRTC 中兴光猫 换光猫 网络桥接 自己换光猫 sysctl.conf vm.nr_hugepages HiCar CarLife+ CarPlay QT RK3588 单一职责原则 网络编程 聊天服务器 套接字 Socket Masshunter 质谱采集分析软件 使用教程 科研软件 嵌入式系统开发 计算机系统 initramfs Linux内核 Grub GRE fpga开发 kvm 安装MySQL firewalld stable diffusion 数据采集 Crawlee Playwright Cookie nfs 服务器部署ai模型 图形化界面 wireshark 小智 IO hosts hosts文件管理工具 开源软件 x64 SIGSEGV xmm0 腾讯云服务器 轻量应用服务器 linux系统入门 linux命令 隐藏目录 文件系统 管理器 通配符 ShenTong 浏览器自动化 开机自启动 wsl2 WireGuard 异地组网 三级等保 服务器审计日志备份 运维监控 机架式服务器 1U工控机 国产工控机 ldap Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer 分子对接 autodock mgltools PDB PubChem MVS 海康威视相机 飞牛nas fnos Docker快速入门 监控 支持向量机 空间 查错 黑客技术 yum源切换 更换国内yum源 音乐服务器 Navidrome 音流 流式接口 springcloud less minio 文件存储服务器组件 DeepSeek r1 Open WebUI 磁盘清理 cd 目录切换 实时内核 gunicorn 跨平台 健康医疗 OpenManus 网工 充电桩平台 充电桩开源平台 版本 交叉编译 Echarts图表 折线图 柱状图 异步动态数据 鸿蒙开发 可视化效果 计算机 Unity Dedicated Server Host Client 无头主机 apt ELF加载 小艺 Pura X 办公自动化 pdf教程 CentOS thingsboard 终端 ollama下载加速 xpath定位元素 服务器繁忙 NFC 近场通讯 智能门锁 跨域 免费 视觉检测 webstorm 宠物 免费学习 宠物领养 宠物平台 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 强制清理 强制删除 mac废纸篓 linux 命令 sed 命令 机柜 1U 2U iNode Macos mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 gaussdb 华为机试 相差8小时 UTC 时间 微信公众平台 风扇散热策略 曙光 海光 宁畅 中科可控 Ark-TS语言 软链接 硬链接 自动化任务管理 命令行 基础入门 ArkTs c/s 框架 RagFlow RAG tensorflow AI写作 加解密 Yakit yaklang LVM lvresize 磁盘扩容 pvcreate minicom 串口调试工具 云耀服务器 fd 文件描述符 蓝耘科技 元生代平台工作流 ComfyUI Wi-Fi DenseNet perl 我的世界 我的世界联机 EasyConnect 输入法 client-go k8s二次开发 prompt AimRT 跨域请求 重启 排查 系统重启 日志 原因 xshell termius iterm2 Xinference RAGFlow neo4j 数据仓库 数据库开发 数据库架构 cmake vscode1.86 1.86版本 ssh远程连接 lio-sam SLAM massa sui aptos sei 影刀 chromium dpi mybatis DOIT 四博智联 Ubuntu共享文件夹 共享目录 Linux共享文件夹 js mq 玩游戏 CosyVoice gitee go 车载系统 设备树 SSL证书 linux子系统 忘记密码 华为证书 HarmonyOS认证 华为证书考试 docker命令大全 深度优先 并集查找 换根法 树上倍增 ArcTS 登录 ArcUI GridItem java-zookeeper HistoryServer Spark YARN jobhistory iDRAC R720xd harmonyosnext rtc 系统开发 binder framework 源码环境 powerbi 相机 树莓派 VNC esp32 蓝牙 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 Python基础 Python教程 Python技巧 beautifulsoup HarmonyOS OpenHarmony 小游戏 五子棋 sdkman 双系统 FunASR ASR 金仓数据库 2025 征文 数据库平替用金仓 金仓数据库概述 金仓数据库的产品优化提案 Claude playbook 剧本 大模型面经 大模型学习 deepseek-v3 ktransformers X11 Xming 银河麒麟服务器操作系统 系统激活 ebpf uprobe 终端工具 远程工具 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 curl wget prometheus数据采集 prometheus数据模型 prometheus特点 CentOS Stream 群晖 llamafactory 微调 Qwen AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 rime 信号 内核 强化学习 Xshell 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 负载测试 显示管理器 lightdm gdm scapy AI作画 jetty undertow 远程登录 telnet embedding wordpress Typore 3GPP 卫星通信 CUPS 打印机 Qt5 考研 在线office MNN USB网络共享 ssh远程登录 dns是什么 如何设置电脑dns dns应该如何设置 单元测试 网络文件系统 DeepSeek行业应用 Heroku 网站部署 浏览器开发 AI浏览器 玩机技巧 软件分享 软件图标 PyQt PySide6 游戏机 RAGFLOW 即时通信 NIO chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 rclone AList fnOS 技术 NVM Node Yarn PM2 etl 打不开xxx软件 无法检查其是否包含恶意软件 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 mvc 网络攻击模型 向日葵 micropython mqtt Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 视频平台 录像 视频转发 视频流 Linux的基础指令 LLaMA-Factory 飞牛NAS 飞牛OS MacBook Pro AI提示词优化 算力 授时服务 北斗授时 服务器管理 宝塔面板 配置教程 网站管理 邮件APP 免费软件 g++ g++13 免密 公钥 私钥 TCP服务器 qt项目 qt项目实战 qt教程 Ubuntu Server Ubuntu 22.04.5 dity make okhttp 显示过滤器 Wireshark安装 国标28181 监控接入 语音广播 流程 SIP SDP copilot safari k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 社交电子 工业4.0 searxng docker desktop PPI String Cytoscape CytoHubba 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 hibernate ajax netlink libnl3 DBeaver kerberos W5500 OLED u8g2 SEO element-ui 上传视频并预览视频 vue上传本地视频及进度条功能 vue2选择视频上传到服务器 upload上传视频组件插件 批量上传视频 限制单个上传视频 同步 备份 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 直流充电桩 充电桩 微信开放平台 微信公众号配置 线程 junit cfssl 7-zip ping++ fpga nac 802.1 portal Webserver 异步 网络穿透 Nuxt.js c/c++ 串口 ubuntu安装 linux入门小白 恒源云 可执行程序 模拟实现 servlet Web服务器 多线程下载工具 PYTHON 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 网络原理 CORS ceph 边缘计算 Reactor反应堆 路径解析 AI代码编辑器 半虚拟化 硬件虚拟化 Hypervisor 能力提升 面试宝典 IT信息化 SenseVoice yaml Ultralytics 可视化 Kylin OS 程序化交易 量化交易 高频交易 CDN 安防软件 切换root MAC 显卡驱动 桌面快捷方式 code-server mosquitto springboot容器部署 springboot容器化部署 微服务容器化负载均衡配置 微服务容器多节点部署 微服务多节点部署配置负载均衡 网页设计 WINCC 软考设计师 中级设计师 SQL 软件设计师 序列化反序列化 IPv4 子网掩码 公网IP 私有IP CLion AISphereButler vsxsrv fiddler 金融 retry 重试机制 大数据平台 端口开放 Github加速 Mac上Github加速 Chrome浏览器插件 医疗APP开发 app开发 服务器ssl异常解决 概率论 底层实现 分布式账本 共识算法 卸载 列表 产测工具框架 IMX6ULL 管理框架 云桌面 微软 AD域控 证书服务器 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 Pyppeteer Ardupilot pyqt 大版本升 升级Ubuntu系统 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 pppoe radius linux安装配置 ux 鲲鹏 npu uv RTMP 应用层 OD机试真题 服务器能耗统计 cpp-httplib opensearch helm EMUI 回退 降级 服务器主板 AI芯片 代理服务器 生活 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 自学笔记 小米 澎湃OS Android csrf 代码调试 ipdb 多进程 shard 智能音箱 智能家居 Node-Red 编程工具 流编程 动态规划 IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 DIFY ubuntu24.04.1 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 安全架构 SVN Server tortoise svn workflow 文件分享 图片增强 增强数据 移动云 雨云服务器 MQTT协议 消息服务器 代码 token sas dba rnn notepad++ SSL 域名 saltstack 无桌面 crosstool-ng GIS 遥感 WebGIS IMX317 MIPI H265 VCU 稳定性 看门狗 ai工具 阿里云ECS easyui 可用性测试 YashanDB 崖山数据库 yashandb 多个客户端访问 IO多路复用 TCP相关API 创业创新 数据库管理 IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 CPU架构 服务器cpu bootstrap ranger MySQL8.0 顽固图标 启动台 联想开天P90Z装win10 钉钉 解决方案 宕机切换 服务器宕机 hdc accept autodl triton 模型分析 抓包工具 NLP模型 工厂方法模式 风扇控制软件 数据管理 数据治理 数据编织 数据虚拟化 logstash gru broadcom vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 轮播图 Linux环境 qt5 客户端开发 火绒安全 mybase bat 图形渲染 d3d12 源代码 百度云 矩池云 数据下载 数据传输 vpn es docker部署Python docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 mapreduce 定义 核心特点 优缺点 适用场景 信创 信创终端 中科方德 商用密码产品体系 VR手套 数据手套 动捕手套 动捕数据手套 risc-v SoC SSH 服务 SSH Server OpenSSH Server 佛山戴尔服务器维修 佛山三水服务器维修 can 线程池 swoole 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Qwen3 qwen3 32b vllm web开发 SPI SystemV GeneCards OMIM TTD Linux的基础开发工具 xfce 匿名FTP 邮件传输代理 SSL支持 chroot监狱技术 RAGflow 技术共享 glm4 av1 电视盒子 机顶盒ROM 魔百盒刷机 vue在线预览excel和编辑 vue2打开解析xls电子表格 浏览器新开页签或弹框内加载预览 文件url地址或接口二进制文档 解决网页打不开白屏报错问题 我的世界服务器搭建 wpf ruby tailscale derp derper 中转 线性代数 电商平台 SysBench 基准测试 服务器时间 ecm bpm sonoma 自动更新 Minecraft 服务网格 istio HarmonyOS NEXT 原生鸿蒙 ubuntu24 vivado24 裸机装机 linux磁盘分区 裸机安装linux 裸机安装ubuntu 裸机安装kali 裸机 idm chrome devtools chromedriver 免费域名 域名解析 cocos2d 3dcoat MDK 嵌入式开发工具 论文笔记 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 合成模型 扩散模型 图像生成 Dell HPE 联想 浪潮 脚本 Ubuntu 24.04.1 轻量级服务器 #影刀RPA# XFS xfs文件系统损坏 I_O error Helm k8s集群 archlinux kde plasma 聊天室 欧拉系统 本地部署AI大模型 VGG网络 卷积层 池化层 惠普服务器 惠普ML310e Gen8 惠普ML310e Gen8V2 实习 Bandizip Mac解压 Mac压缩 压缩菜单 cpolar muduo PTrade QMT 量化股票 飞牛 RockyLinux #STC8 #STM32 Spring Security csrutil mac恢复模式进入方法 恢复模式 qemu libvirt regedit 开机启动 增强现实 沉浸式体验 技术实现 案例分析 AR System V共享内存 进程通信 GoogLeNet IPv4/IPv6双栈 双栈技术 网路规划设计 ensp综合实验 IPv4过渡IPv6 IPv4与IPv6 电视剧收视率分析与可视化平台 Zoertier 内网组网 流量 virtualbox GPUGEEK 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 问题解决 nano 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 idea openvino 虚幻引擎 HTTP 服务器控制 ESP32 DeepSeek llama.cpp 银河麒麟桌面操作系统 Sealos OpenGL 对比 meld DiffMerge 思科模拟器 Cisco 计算机学习路线 编程语言选择 Charles 性能调优 安全代理 技能大赛 文件共享 node MinIO Apache Beam 批流统一 案例展示 数据分区 容错机制 网页服务器 web服务器 solidworks安装 PostgreSQL15数据库 模拟退火算法 eNSP 网络规划 VLAN 企业网络 银河麒麟高级服务器 外接硬盘 Kylin UOS1070e VS Code miniconda 代码托管服务 历史版本 下载 finebi pycharm安装 pthread UDP TCP协议 chfs ubuntu 16.04 抗锯齿 postgres Dify重启后重新初始化 材料工程 jdk11安装 jdk安装 openjdk11 openjdk11安装 AD 域管理 deepseek r1 网站搭建 serv00 swift 动态库 GCC编译器 -fPIC -shared banner 互联网医院 GRUB引导 Linux技巧 rsync 医院门诊管理系统 Logstash 日志采集 内网服务器 内网代理 内网通信 备选 调用 示例 用户缓冲区 bigdata 毕昇JDK 致远OA OA服务器 服务器磁盘扩容 支付 微信支付 开放平台 实时云渲染 云渲染 3D推流 Linux find grep pyscenic 生信教程 飞书 uniapp anythingllm open-webui docker国内镜像 物理地址 页表 虚拟地址 cocoapods lb 协议 dock 加速 Obsidian Dataview 流程图 mermaid sqlite pgpool 业界资讯 端口测试 田俊楠 wsgiref Web 服务器网关接口 容器技术 企业风控系统 互联网反欺诈 DDoS攻击 SQL注入攻击 恶意软件和病毒攻击 skynet Python学习 Python编程 jina 星河版 软件商店 livecd systemtools OpenManage 检索增强生成 文档解析 大模型垂直应用 seleium 配置原理 NTP服务器 模拟器 做raid 装系统 Jellyfin Java Applet URL操作 服务器建立 Socket编程 网络文件读取 lvs LORA trea pxe h.264 端口聚合 windows11 comfyui comfyui教程 android-studio 达梦 DM8 URL 项目部署到linux服务器 项目部署过程 集成 子系统 open Euler dde 自定义登录信息展示 motd 美化登录 嵌入式Linux IPC MI300x 大模型推理 软负载 多端开发 智慧分发 应用生态 鸿蒙OS image 导航栏 能源 Alist mount 挂载 网盘 fast 端口 查看 ss XCC Lenovo 繁忙 解决办法 替代网站 汇总推荐 AI推理 Radius 内存管理 webview ubantu Anolis nginx安装 linux插件下载 LSTM 僵尸世界大战 游戏服务器搭建 LVS 知行EDI 电子数据交换 知行之桥 EDI 集群管理 环境 非root 查看显卡进程 fuser ArtTS paddle deekseek 架构与原理 IDEA 语法 AzureDataStudio tar.gz tar.xz linux压缩 网络建设与运维 实时日志 logs 超级终端 多任务操作 提高工作效率 tidb 机械臂 vmware tools sentinel 搭建个人相关服务器 midjourney post.io 企业邮箱 搭建邮箱 GKI KMI IO模型 h.265 企业网络规划 华为eNSP 动态域名 MacOS Putty 花生壳 OpenSSH 规格说明书 设计规范 学习路线 干货分享 黑客工具 密码爆破 RK3568 EMC存储 NetApp存储 能效分析 带外管理 静态IP 流量运营 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 事件驱动 issue OS 欧标 OCPP 鸿蒙NEXT lua 手机 命令模式 AI员工 向量数据库 安装部署 milvus安装 音乐库 模板 泛型编程 基本指令 移动开发 漏洞报告生成 Web3 Telegram Multi-Agent react native janus sequoiaDB GRANT REVOKE 捆绑 链接 谷歌浏览器 youtube google gmail yum换源 蜂窝网络 频率复用 射频单元 无线协议接口RAN 主同步信号PSS docker search Qwen2.5-VL aac MLLMs VLM gpt-4v 线程同步 线程互斥 条件变量 figma 计算虚拟化 弹性裸金属 VM虚拟机 solr 极限编程 nosql ISO镜像作为本地源 游戏开发 easyTier 组网 Erlang OTP gen_server 热代码交换 事务语义 粘包问题 xss access blocked 破解 win服务器架设 windows server minecraft hugo brew finalsheel proxy模式 烟花代码 烟花 元旦 本地知识库部署 DeepSeek R1 模型 查询数据库服务IP地址 SQL Server 分布式训练 anonymous AI agent Modbus TCP whistle 状态模式 UFW bert 网络搭建 神州数码 神州数码云平台 云平台 移动魔百盒 根服务器 web环境 hexo 小智AI服务端 xiaozhi TTS 接口返回 多路转接 输入系统 homeassistant watchtower 项目部署 isaacgym NVIDIA navicat Headless Linux flink 青少年编程 三次握手 红黑树封装map和set 大大通 第三代半导体 碳化硅 mcp协议 go-zero mcp服务器 智能问答 Spring AI Milvus 存储维护 fabric win向maOS迁移数据 超融合 Async注解 网络库 qtcreator devmem 烟雾检测 yolo检测 消防检测 北亚数据恢复 oracle数据恢复 接口优化 制造 deployment daemonset statefulset cronjob Python 视频爬取教程 Python 视频爬取 Python 视频教程 nginx默认共享目录 Qt QModbus AI Agent 字节智能运维 client close 元服务 应用上架 通用环境搭建 MySQL nmcli 网络配置 pythonai PlaywrightMCP 搜狗输入法 Ubuntu 24.04 搜狗输入法闪屏 Ubuntu中文输入法 李心怡 appium orbslam2 数字证书 签署证书 火山引擎 数字比特流 模拟信号 将二进制数据映射到模拟波形上 频谱资源 振幅频率相位 载波高频正弦波 vCenter服务器 ESXi主机 监控与管理 故障排除 日志记录 caddy 华为鸿蒙系统 ArkTS语言 Component 生命周期 条件渲染 Image图片组件 qwen2vl 服务器正确解析请求体 Unity插件 零售 java毕业设计 微信小程序医院预约挂号 医院预约 医院预约挂号 小程序挂号 进程池实现 socket 代码复审 影视app rtcp mujoco Metastore Catalog scrapy HAProxy macOS 站群 多IP 容器化 Serverless wifi驱动 lrzsz authing 苹果电脑装windows系统 mac安装windows系统 mac装双系统 macbook安装win10双 mac安装win10双系统 苹果电脑上安装双系统 mac air安装win ABAP ardunio BLE 中文输入法 STL 西门子PLC 通讯 BCLinux 4 - 分布式通信、分布式张量 AWS 华为昇腾910b3 CAD瓦片化 栅格瓦片 矢量瓦片 Web可视化 DWG解析 金字塔模型 ANDROID_HOME zshrc 证书 签名 静态NAT MCP 服务器 JADX-AI 插件 互联网实用编程指南 sse_starlette Starlette Server-Sent Eve 服务器推送事件 AppLinking 应用间跳转 python高级编程 Ansible elk stack IP地址 计算机基础 系统内核 Linux版本 5分钟快速学 docker入门 自定义shell当中管道的实现 匿名和命名管道 树莓派项目 光电器件 LED 排序算法 选择排序 RNG 状态 可复现性 随机数生成 linq rtmp 大厂程序员 硅基计算 碳基计算 认知计算 生物计算 AGI 系统架构设计 软件哲学 程序员实现财富自由 Linux的进程概念 jQuery