当前位置: 首页 > wzjs >正文

河北公司网站开发网站建设需要哪些网络技术

河北公司网站开发,网站建设需要哪些网络技术,iis wordpress 403,网站运营的含义VScodeOpenOCDCmakeHTOS栈回溯在国产32芯片上完全调试 说实话用的都是HAL库开发的,flash链接文件用的都是stm32的,只能说国产芯片抄的基本完全一样了。具体芯片是什么就不介绍了,看过文章就能猜出来是哪家的了。代码开源在Gitee上了。https:…

VScode+OpenOCD+Cmake+HTOS栈回溯在国产32芯片上完全调试

说实话用的都是HAL库开发的,flash链接文件用的都是stm32的,只能说国产芯片抄的基本完全一样了。具体芯片是什么就不介绍了,看过文章就能猜出来是哪家的了。代码开源在Gitee上了。https://gitee.com/huayi1234/HTOS/tree/VScode+openocd

基于 VS Code 的 STM32+HTOS 开发环境详解

1. 开发环境概述

本文将详细介绍一个基于 VS Code 的 STM32 开发环境配置,该环境使用 CMake 作为构建系统,OpenOCD 作为调试和下载工具,以及 Ninja 作为构建工具。这是一套专业的嵌入式开发环境,特别适用于 STM32F103 系列微控制器的开发,同时集成了自研的 HTOS 轻量级实时操作系统。

2. VS Code 配置文件详解

在这套开发环境中,.vscode 目录下有三个关键的 JSON 配置文件,它们定义了如何在 VS Code 中构建和调试 STM32 项目。下面将详细介绍这些配置文件。

2.1 launch.json - 调试配置

launch.json 文件定义了如何在 VS Code 中调试 STM32 项目:

{"version": "0.2.0","configurations": [{"name": "Cortex Debug","type": "cortex-debug","request": "launch","servertype": "openocd","cwd": "${workspaceRoot}","executable": "${workspaceRoot}/build/Debug/test.elf","device": "STM32F103C8T6","configFiles": ["${workspaceRoot}/apm32_openocd.cfg"],"svdFile": "${workspaceRoot}/STM32F103xx.svd","runToEntryPoint": "main","preLaunchTask": "build","env": {"LC_ALL": "C"}}]
}

这个配置的主要元素:

  • 调试器类型:使用 cortex-debug 插件,这是一个专为 ARM Cortex 芯片调试设计的 VS Code 扩展
  • 硬件类型:配置为 STM32F103C8T6 芯片
  • 可执行文件路径:指向 test.elf
  • OpenOCD 配置:使用 apm32_openocd.cfg 文件(哈哈哈)
  • SVD 文件:使用 STM32F103xx.svd 文件,提供寄存器级别的调试信息
  • 入口点:设置为 main 函数
  • 预启动任务:在调试前先执行 build 任务确保代码已编译

2.2 tasks.json - 任务配置

tasks.json 文件定义了可在 VS Code 中执行的任务:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "cd ${workspaceFolder}/build/Debug; ninja","group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]},{"label": "download","type": "shell","command": "openocd -f ${workspaceFolder}/openocd.cfg -c \"program ${workspaceFolder}/build/Debug/test.elf verify reset exit\"","dependsOn": "build","problemMatcher": []},{"label": "download-apm32","type": "shell","options": {"shell": {"executable": "cmd.exe","args": ["/c"]}},"command": "openocd -f \"${workspaceFolder}/apm32_openocd.cfg\" -c \"program_apm32\"","dependsOn": "build","problemMatcher": [],"group": "build"},{"label": "debug","type": "shell","options": {"shell": {"executable": "cmd.exe","args": ["/c"]}},"command": "openocd -f \"${workspaceFolder}/apm32_openocd.cfg\"","dependsOn": "build","problemMatcher": [],"isBackground": true,"presentation": {"reveal": "always","panel": "new"}}]
}

主要任务包括:

  1. build:使用 Ninja 构建系统编译项目
  2. download:使用标准 OpenOCD 配置将程序下载到 STM32 芯片
  3. download-apm32:使用特殊的 APM32 配置将程序下载到芯片
  4. debug:启动 OpenOCD 服务器用于调试,这是一个后台任务

2.3 settings.json - VS Code 设置

settings.json 文件包含了 VS Code 的自定义设置:

{"VsCodeTaskButtons.showCounter": true,"VsCodeTaskButtons.tasks": [{"label": "$(tools) 编译","task": "build","tooltip": "编译STM32项目"},{"label": "$(cloud-download) 下载-APM32","task": "download-apm32","tooltip": "编译并下载程序到APM32"},]
}

这个配置使用了 “VsCodeTaskButtons” 扩展,它在 VS Code 界面上添加按钮,方便一键执行常用任务:

  • 一个编译按钮,执行 build 任务
  • 一个下载按钮,执行 download-apm32 任务

3. 调试方法详解

3.1 调试工具链

该项目使用以下调试工具链:

  1. VS Code + Cortex-Debug 扩展:提供 IDE 界面和调试 UI
  2. OpenOCD:提供与调试器硬件的通信
  3. SVD 文件:提供芯片寄存器级别的详细信息,增强调试体验

3.2 调试步骤

在该环境中调试 STM32 项目的步骤:

  1. 编译项目

    • 点击 VS Code 界面上的 “编译” 按钮,或
    • 按下 Ctrl+Shift+B 运行默认构建任务,或
    • 在命令面板中执行 “Tasks: Run Build Task”
  2. 下载程序

    • 点击 VS Code 界面上的 “下载-APM32” 按钮,或
    • 从命令面板中运行 “Tasks: Run Task” 然后选择 “download-apm32”
  3. 启动调试

    • 按下 F5 或点击侧边栏的调试图标,然后点击 “开始调试”
    • VS Code 会自动执行 build 任务,然后启动 OpenOCD 连接目标设备
    • 程序会停在 main 函数入口点
  4. 调试操作

    • 设置断点:点击代码行号左侧
    • 单步执行:F10(逐过程)、F11(逐语句)
    • 查看变量:调试面板中的 “变量” 视图或将鼠标悬停在代码上
    • 查看寄存器:Cortex-Debug 提供的 “寄存器” 视图
    • 查看内存:运行 “Cortex-Debug: View Memory” 命令

3.3 硬件故障调试

该环境特别配置了硬件故障触发和处理机制。在 main.c 中的 task4Function 函数专门设计用来触发硬件故障:

if(counter == 5) {/* 在计数到5时触发硬件故障 */printf("Task4: Trying to trigger hardware fault...\r\n");//HAL_Delay(500); /* 等待消息输出完成 *//* 两种触发硬件故障的方式: *//* 方式1: 访问非法地址 */volatile uint32_t *invalid_ptr = (uint32_t *)0xCCCCCCCC;*invalid_ptr = 0x12345678;  /* 这会触发硬件故障 *//* 方式2: 除零操作 (注释掉,以便上面的方式生效) *//* volatile uint32_t a = 10;volatile uint32_t b = 0;volatile uint32_t c = a / b; /* 这会触发硬件故障 *//* (void)c; /* 避免未使用变量的警告 */
}

通过调试这段代码,可以观察系统如何响应硬件故障,这对测试 HTOS 操作系统的异常处理能力非常有价值。在调试时,可以观察:

  1. 触发硬件故障时的 CPU 寄存器状态
  2. 硬件故障处理程序的执行流程
  3. 系统如何恢复或重置

这个东西的话,其实如果可以在线调试的话倒是没什么用。但是对于无法在线调试的情况下就很有用了,而且整个环境是基于完全开源的场景的,所以可以把代码下载到任何芯片上。任何架构都可以。

4. CMake 构建系统

该项目使用 CMake 作为构建系统,主要配置文件包括:

  • CMakeLists.txt:定义项目的构建规则
  • CMakePresets.json:定义不同的构建预设
  • cmake/gcc-arm-none-eabi.cmake:配置 ARM 交叉编译器的设置

CMake 在项目中的作用:

  1. 自动查找和配置工具链
  2. 定义构建目标和依赖关系
  3. 生成 Ninja 构建文件
  4. 简化交叉编译配置

5. OpenOCD 配置

项目使用了两个 OpenOCD 配置文件:

  • openocd.cfg:标准 STM32 配置
  • apm32_openocd.cfg:针对 APM32 芯片或特定调试器的自定义配置

这些文件定义了:

  1. 调试适配器类型和配置(如 ST-Link)
  2. 目标芯片的配置
  3. 特殊的下载和调试命令

这个下面是用cortex-debug这个插件调试的情况。当然对于RISC-V这种没有插件的应该也可以用OpenOCD的GDB服务器调试。
在这里插入图片描述
如上图可以完全进行在线调试,个人认为调试很方便。另外就是这个debug插件似乎支持一些实时内核,我这个是自己写的内核所以应该不支持,之后可以尝试一些移植来试试。

6. 项目结构

该项目的结构是典型的 STM32CubeMX 生成的项目,增加了 HTOS 操作系统组件:

  • Core/: 包含应用程序代码
    • Inc/: 头文件
    • Src/: 源文件,包括 main.c
  • Drivers/: STM32 HAL 库和 CMSIS 代码
  • HTOS/: 自定义操作系统代码
    • include/: HTOS 头文件
    • kernel/: HTOS 内核实现
    • portable/: 移植层代码
  • build/: 构建输出目录

7. 使用技巧与最佳实践

7.1 高效调试技巧

  1. 断点策略

    • 设置条件断点可以在特定条件满足时才停止
    • 使用日志断点可以在不停止执行的情况下打印信息
  2. 硬件异常分析

    • 设置中断向量表断点来捕获所有异常
    • 使用 SVD 文件查看外设寄存器状态
    • 检查故障状态寄存器了解异常原因
  3. 内存优化

    • 使用内存视图监控栈/堆使用情况
    • 监控 HTOS 任务栈使用情况防止溢出

7.2 常见问题解决

  1. OpenOCD 连接问题

    • 检查 USB 线缆质量
    • 确认 ST-Link 固件是最新版本
    • 尝试降低 SWD 时钟频率
  2. 构建错误

    • 检查工具链路径配置
    • 确认 CMake 和 Ninja 版本兼容
    • 查看详细构建日志
  3. 调试卡死

    • 检查是否进入了无限循环
    • 查看是否触发了硬件故障但没有正确处理
    • 检查硬件连接和供电情况

结语

这套 VSCode + CMake + OpenOCD + Ninja 的开发环境构成了一个功能强大、灵活且高效的 STM32 开发平台。通过本文介绍的 VS Code 配置文件和调试技术,可以充分利用现代工具链的优势,提高嵌入式开发效率。特别是硬件故障调试功能,对于开发可靠的嵌入式系统尤为重要。

希望这篇文章能够帮助开发者更好地理解和使用这套开发环境,构建出更稳定、高效的嵌入式系统!


注:本文中介绍的开发环境和方法可能需要根据具体项目和硬件进行调整,以适应不同的开发需求。


文章转载自:

http://5xkloN9G.sbLgt.cn
http://OlQEcJb6.sbLgt.cn
http://CWWq2juU.sbLgt.cn
http://pUs4ClAv.sbLgt.cn
http://ZcrzhACp.sbLgt.cn
http://sdgOEeCa.sbLgt.cn
http://sTP2L7oo.sbLgt.cn
http://DpbDQRi5.sbLgt.cn
http://IOf4htVv.sbLgt.cn
http://DuLsJtPa.sbLgt.cn
http://vx7lRnCT.sbLgt.cn
http://p437njGZ.sbLgt.cn
http://5dPm89RZ.sbLgt.cn
http://y8Pix90M.sbLgt.cn
http://YGc2R1fq.sbLgt.cn
http://94YTLtU5.sbLgt.cn
http://yeEYYN67.sbLgt.cn
http://mdNkatsp.sbLgt.cn
http://jW7pjhuw.sbLgt.cn
http://B2y40TcF.sbLgt.cn
http://QVsXGVeE.sbLgt.cn
http://VqMEQXsQ.sbLgt.cn
http://adVdSxcq.sbLgt.cn
http://i2fRe6H3.sbLgt.cn
http://mWiZuXai.sbLgt.cn
http://oMmBXgvd.sbLgt.cn
http://jWwU4x5K.sbLgt.cn
http://3BkPsIcG.sbLgt.cn
http://Ro6ygNh0.sbLgt.cn
http://th6Tn9Ub.sbLgt.cn
http://www.dtcms.com/wzjs/657011.html

相关文章:

  • ui设计的推荐网站及网址备案网站主办者承诺书
  • 梅州哪里做网站图书租借网站 开发
  • 网站自动收录如何开网站赚钱
  • 遂宁北京网站建设小规模网站开发税率
  • 厦门做网站seowordpress 自动安装
  • 网站做三方登陆需要注册公司不网站提现功能怎么做
  • 丰县住房与城乡建设部网站宁波百度推广优化
  • 做资讯网站需要哪些资质如何网站推广
  • 收录网站排名新生活cms订货系统下载
  • 房产集团公司网站建设方案延吉市建设局网站
  • 青岛小型网站建设最适合穷人的四种保险
  • 购物网站建设模板图片h5免费制作平台易企秀
  • 重庆市工程建设信息网新网站网页制作与设计在哪搜题
  • 海南专业网站运营托管百度收录网站但首页快照不更新
  • 网站建设 十佳制作老薛主机 wordpress
  • 静态网站开发课程网安徽网站建设制作
  • 用wordpress建站的好处wordpress 更改中文
  • 公司网站域名过期wordpress禁止更新代码
  • 珠海网站建设费用免费公司网站建设
  • 自己做的网站和ie不兼容点击最多的网站
  • 我的网站是面向全国的选哪个公司的服务器比较好佛山搜索引擎推广服务好
  • 网站集群建设的意义学历提升文案
  • 心理学门户网站开发与实现浙江网站推广公司
  • 网站备案用户注销备案申请表wordpress 收费下载资源
  • git做网站根目录网站被百度蜘蛛爬了多久放出来
  • 明星个人网站设计模板哈尔滨网站建设 熊掌号
  • 蓟县集团网站建设网页设计和网站开发哪个好
  • 河北建设厅查询官方网站如何设计制作企业网站
  • 网站建设合同百度文库丹棱县 网站建设
  • 北京网站制作服务佛山新网站建设详细内容