SPARC VScode EIDE GDB 使用配置

前言

	搞了多年的SPARC 最近接触了VSCODE插件感觉好用。想想看不是能方便调试和编译SPARC,决定使用开源的SPARC仿真环境和编译器来试试。感觉的却不错,借此献给使用SPARC的朋友们。

安装

1.找微软官方的下载VSCODE.
2.电机左边的方块形状的图标,搜索下面的插件点击安装即可在线安装。有的插件是安装插件时附带安装的。必须安装C/C++的插件和Embedded IDE。

在这里插入图片描述

设置编码格式

在这里插入图片描述

设置EIDE嵌入式开发环境的编译器相关内容

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
${userRoot}/.eide/tools/sdcc

#EIDE的配置可以在这修改
在这里插入图片描述

任意其他处理器的编译器设置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

选择编译器和编译器的前缀:
在这里插入图片描述

修改Link Script file .
在这里插入图片描述

GDB调试需要在编译时添加 -g 参数加入符号表

D:***\gcc_mcu\gcc_mcu\ldscripts\sparcleon.x

添加头文件和库文件和编译的宏定义

在这里插入图片描述

DEBUG 配置可以修改

网上有个“Debugging Guide for GDB and VS Code”的文档可以参考

vscode介绍链接

在这里插入图片描述

可以添加自定义的链接工具
在这里插入图片描述
上面是标准JTAG的

    "configurations": [{"cwd": "${workspaceRoot}","type": "cortex-debug","request": "launch","name": "jlink","servertype": "jlink","interface": "swd","executable": "build\\Debug\\gcc_mcu.elf","runToEntryPoint": "main","device": "null"}]

添加的标准模板,

 "configurations": [{"name": "(gdb) Windows 上的 Bash 启动","type": "cppdbg","request": "launch","program": "输入程序名称,例如 ${workspaceFolder}/a.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [],"externalConsole": false,"pipeTransport": {"debuggerPath": "/usr/bin/gdb","pipeProgram": "${env:windir}\\system32\\bash.exe","pipeArgs": ["-c"],"pipeCwd": ""},"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}{"cwd": "${workspaceRoot}","type": "cortex-debug","request": "launch","name": "jlink","servertype": "jlink","interface": "swd","executable": "build\\Debug\\gcc_mcu.elf","runToEntryPoint": "main","device": "null"}]

我使用的模板,

{"version": "0.2.0","configurations": [{"name": "GCC Debug ","type": "cppdbg",//使用C/C++的调试,如果是JTAG 可以选择其他的 ,比如微软的“cppdbg” 或者是直接使用“gdb”,不同类型下面参数不一样"request": "launch","program": "${workspaceRoot}/build/Debug/gcc3.elf",//工程编译的程序"args": [],//调用type 功能 运行的参数,gdb用不上其他调试可以用的上"stopAtEntry": true,"cwd": "${workspaceFolder}","targetArchitecture": "arm",//可以用arm 其实没有关系,屏蔽也行"environment": [],"externalConsole": true,//内置控制台或外置控制台输出externalTerminal"MIMode": "gdb",//MIMode:指示VS代码将连接到的调试器。必须设置为gdb或lldb。"miDebuggerPath": "C:\\Users\\topma\\.eide\\tools\\bcc-2.2.3-gcc\\bin\\sparc-gaisler-elf-gdb.exe",//gdb版不能过低,会出现步匹配建议6以上//"miDebuggerServerAddress": "localhost:12345",//setupCommands运行后连接gdb 服务器的IP和端口 ,不是本地localhost 直接换成IP地址"setupCommands": [{//如果是要下载使用命令手动连接需要用miDebuggerServerAddress"text": "target remote :12345"},   {"text": "file 'D:/**/gcc_mcu/mcu-gcc3/gcc3/build/Debug/gcc3.elf'"},{"description": "下载","text": "load","ignoreFailures": false           }        ],//"preLaunchTask": "make",//launch 前的操作"launchCompleteCommand": "None"},]
}

GDB 模板

{"version": "0.4.2","configurations": [{"name": "Debug gdb","type": "gdb","request": "attach","executable": "${workspaceRoot}\\LPCProject\\bin\\Debug\\LPCProject.elf","target": "localhost:2331","cwd": "${workspaceRoot}","gdbpath": "C:/gccarm/bin/arm-none-eabi-gdb.exe","remote": true,"autorun": ["load ./LPCProject/bin/Debug/LPCProject.elf","break main","monitor reset"]            }]
}

多个操作一起处理

    "compounds": [{"name": "Server/Client","configurations": ["Debug gdb", "GCC Debug"],//前面两个调用的名字"preLaunchTask": "make",}]

点击绿箭头开始GDB调试
在这里插入图片描述

链接上后找到这个浮动的控制TAB可以运行,单步,退出等操作。
在这里插入图片描述

碰到的问题

当前不能通过 “setupCommands” 直接“load”下程序,只能连上后通过再DEBUG CONSOLE 输入下面命令下载后再点击运行。不清楚问什么自动处理不行。报告 vscode gdb -interpreter-exec **错误。
Error: You can’t do that when your target is `exec’ (ExcaliburTM, GDB) ,是没有连接上gdbserver 需要下载必须用命令连接服务器,不能用miDebuggerServerAddress参数。他比较靠后。
-exec monitor gdb reset //有时候傻了可以用改方式复位再连接
-exec load

Monitor 后的命令是server的,需要server 支持’

有时候sh

PostBuild Task 编译后做的处理
O u t D i r / {OutDir}/ OutDir/{ProjectName}.hex

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

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

相关文章

【强训笔记】day8

NO.3 思路&#xff1a;相乘除以最大公约数等于最小公倍数。最小公倍数等于gcd&#xff08;a&#xff0c;a%b&#xff09;递归直到b等于0。 代码实现&#xff1a; #include <iostream> using namespace std;int gcd(int a,int b) {if(b0) return a;return gcd(b,a%b); }…

二叉树的迭代遍历 | LeetCode 144. 二叉树的前序遍历、LeetCode 94. 二叉树的中序遍历、LeetCode 145. 二叉树的后序遍历

二叉树的前序遍历&#xff08;迭代法&#xff09; 1、题目 题目链接&#xff1a;144. 二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]示例 2&#x…

【北京仁爱堂】事出有因,原来是“肝”出现问题,才导致了痉挛性斜颈

痉挛性斜颈是肌张力障碍疾病中的一种&#xff0c;局限于颈部肌肉。由于颈部肌肉间断或持续的不自主的收缩&#xff0c;导致头颈部扭曲、歪斜、姿势异常。一般在30&#xff5e;40岁发病。由于痉挛性斜颈病因不明&#xff0c;西医方面药物及手术的临床疗效不甚理想&#xff0c;而…

PHP 反序列化

一、PHP 序列化 1、对象的序列化 <?php class people{public $nameGaming;private $NationLiyue;protected $Birthday12/22;public function say(){echo "老板你好呀&#xff0c;我是和记厅的镖师&#xff0c;叫我嘉明就行&#xff0c;要运货吗你&#xff1f;"…

Linux查看某一个程序的安装路径

前提 这一方法的前提条件是&#xff1a;必须是运行着的程序。 方法 这里以查找运行的nginx的安装目录为例。 查看nginx运行进程&#xff0c;查看当前进程的PID&#xff0c;例子中的PID就是7992。 nginps -aux|grep nginx执行ls -l /proc/进程号/exe&#xff0c;然后会打印…

android zygote进程启动流程

一&#xff0c;启动入口 app_main.cpp int main(int argc, char* const argv[]) {if (!LOG_NDEBUG) {String8 argv_String;for (int i 0; i < argc; i) {argv_String.append("\"");argv_String.append(argv[i]);argv_String.append("\" ")…

锂电池充放电方式曲线

作为一种“化学能-电能”相互转换的能量装置&#xff0c;锂电池在使用过程中必然会进行充电和放电&#xff0c;合理的充放电方式既能减轻锂电池的损伤程度&#xff0c;又能充分发挥锂电池的性能&#xff0c;具有重要的应用价值。 如《GB/T 31484-2015&#xff1a;电动汽车用动…

Server 2022 IIS10 PHP 7.2.33 升级至 PHP 8.3 (8.3.6)

下载最新版本 PHP 8.3 (8.3.6)&#xff0c;因为是 FastCGI 执行方式&#xff0c;选择 Non Thread Safe(非线程安全)。 若有以下提示&#xff1a; The mysqli extension is missing. Please check your PHP configuration. 或者 PHP Fatal error: Uncaught Error: Class &qu…

Dynamics 365: 从0到1了解如何创建Custom API(1) - 在Power Apps中创建

今天介绍一下如果创建Custom API&#xff0c;我们首先需要知道它和action有什么区别&#xff0c;什么时候使用Custom API或者Action? Custom API和Action的区别 Create your own messages (Microsoft Dataverse) - Power Apps | Microsoft Learn 什么时候使用Custom API或者…

spring框架学习记录(2)

文章目录 注解开发bean相关注解开发定义bean纯注解开发纯注解开发中bean的管理 依赖注入相关依赖注入第三方bean管理第三方bean依赖注入 AOP(Aspect Oriented Programming)面向切面编程AOP简介AOP核心概念AOP工作流程AOP切入点表达式通知类型AOP通知获取数据 注解开发 bean相关…

Idea 自动生成测试

先添加测试依赖&#xff01;&#xff01; <!--Junit单元测试依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.1</version><scope>test</scope><…

2024年手把手教你安装iMazing3 中文版图文激活教程

热门苹果设备备份管理软件iMazing日前正式发布了全新的 3.0 版本。它采用了全新的设计和架构&#xff0c;并且率先支持Apple Vision Pro安装软件和导入数据。团队表示&#xff0c;这是市场首个第三方支持Apple Vision Pro的管理工具。 iMazing是一款兼容Win和Mac的iOS设备管理…

解决Linux中磁盘满/dev/vda1使用率100%问题

发现根目录下占用100%&#xff0c;具体还要排场到底是有哪些大文件占用 那么就在根目录下查询各个子文件夹的占用状态&#xff0c;有过大不用的即可删除 df -h *我的磁盘是100G&#xff0c;但这些总共加起来也接近不了这个数值 那就是有可能出现 已删除空间却没有释放的进程…

(centos)yum安装mysql8.4

1.MySQL官方已经提供了适用于不同Linux发行版的预构建软件包&#xff0c;包括适用于CentOS的Yum Repository MySQL :: MySQL Community Downloads 2.在/usr/local文件夹下创建mysql文件夹&#xff0c;将下载的rpm文件放到目录下 3.执行安装命令 yum install mysql-community-…

Vue3 + Vite + TypeScript + Element-Plus创建管理系统项目

官方文档 Vue3官网 Vite官方中文文档 创建项目 使用npm命令创建项目&#xff1a; npm create vitelatest输入项目名称&#xff1a; ? Project name:项目名选择vue&#xff1a; ? Select a framework: - Use arrow-keys. Return to submit.Vanilla > VueReactPrea…

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

「JavaEE」线程安全2:内存可见性问题 wait、notify

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 内存可见性问题& wait、notify &#x1f349;Java 标准库的线程安全类&#x1f349;内存可见性问题&#x1f34c;volatile 关键字 …

M2M vs. IoT?

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 连接设备已经开辟了创造价值和解决重大世界问题的广泛机会&#xff0c;例如可持续发展。 今天&#xff0c;我们网络设备的方式可…

【linuxC语言】vfork、wait与waitpid函数

文章目录 前言一、函数使用1.1 vfork1.2 wait1.3 waitpid 二、示例代码总结 前言 在Linux系统编程中&#xff0c;vfork()、wait() 和 waitpid() 函数是处理进程管理和控制流的重要工具。这些函数允许我们创建新进程、等待子进程结束并获取其退出状态&#xff0c;从而实现进程间…

GDPU JavaWeb 猜字母游戏

他在对你重定向打卡的大饼与立即跳转到你面前的谎言之间反复横跳。 sendRedirect与forward sendRedirect与forward区别 sendRedirect用于将请求重定向到另一个资源&#xff0c;可以是同一个应用程序内的其他 Servlet&#xff0c;也可以是其他 Web 应用程序的资源&#xff0c;…