首页 > 其他分享 >proteus8 单步调试stm32 外置arm gcc

proteus8 单步调试stm32 外置arm gcc

时间:2024-01-10 17:00:49浏览次数:35  
标签:gcc CMSIS proteus8 外置 单步 proteus device arm

10年前proteus7的时代,51单片机就已经可以用keil和proteus联调了,单步调试,像连接了一个jtag调试口一样。

proteus官方提供的keil调试器驱动有arm 设备,不过我反复尝试,虽然识别到Proteus VSM Simulator设备和端口,但是还是报错,无法成功。

本文只是借助proteus内置的编辑器和单步调试器,做调试。——功能有限,proteus没有好好实现它们,不同的mcu可以调试的还不同。

gcc for arm编译器是自己从arm下载,并没有使用proteus的——下载不到。算是偷梁换柱。

 

1. 关于和keil联调:

请参考这篇:proteus 与 keil 联调 - lsgxeva - 博客园 (cnblogs.com)

      提醒:proteus8那边,需要在debug菜单中勾选 enable remote debug monitor

似乎有人成功过。

 

2. 使用官方例程

软件的安装文件夹下有许多例程,基本都自带或内置源码。

这些文件因为是和软件一起创建的,权限高,要用管理员权限打开proteus,才可以自由的打开这些工程并运行。

建议另存一份

C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\SAMPLES\VSM for Cortex M4\STM32

比如这个fft工程,可以用spi口驱动一个LCD屏幕

 

3. 使用内置IDE和源码,做单步调试

1. mcu上右键,点edit properties,然后点edit firmware按钮,可以调出source code标签页

2. 软件顶部菜单栏也变了。点project,creat project,选择器件。最后compiler只能选gcc for arm

      proteus的官网下载不到gcc for arm,即使我有梯子。估计网络有问题。我是外挂的一个gcc编译器,自己下载了一个:

          https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-win32.exe

图中的代码是新建工程后proteus自动创建的。源码在:C:/Users/xxxx/AppData/Local/Temp/VSM Studio/caee2f051f4b4a8bbe28861049d3748a/STM32F401VE

保存工程,这些代码也会保存到工程文件里。

 

这个功能实现的基础:

1.elf文件里有debug信息,可以指导proteus寻找源码文件

2.源码文件在source code标签页中有导入过

 理论上stm32cube生成的工程也可以拿进来,但是要在下图的project中导入一下,不然proteus找不到。

1. 自己写脚本或任何方式,编译这些源码。

比如:build.bat


SET output_filename=main

SET compiler_path="c:\gcc\bin"

SET include_dirs=-I"./" -I"./CMSIS/core" -I"./CMSIS/device"

SET linker_script=STM32F401XE.ld

SET defines=-DDEBUG -DSTM32F401xx -DPROTEUS_DEMO
SET compile=%compiler_path%\arm-none-eabi-gcc -gdwarf-2 -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 %defines% %include_dirs% -O0 -g3 -Wall -fmessage-length=0 -ffunction-sections -c -MMD -MP

rem call Compiler
%compile% -MF"main.d" -MT"main.o" -o "main.o" "main.c"
%compile% -MF"./CMSIS/device/system_stm32f4xx.d" -MT"./CMSIS/device/system_stm32f4xx.o" -o "./CMSIS/device/system_stm32f4xx.o" "./CMSIS/device/system_stm32f4xx.c"

rem call Assembler
%compiler_path%\arm-none-eabi-as -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 %include_dirs% -g -o "./CMSIS/device/startup_stm32f401xx.o" "./CMSIS/device/startup_stm32f401xx.s"

rem call Linker
%compiler_path%\arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -T"%linker_script%" -Wl,-Map=%output_filename%.map -Wl,--gc-sections -o "%output_filename%.elf" main.o ./CMSIS/device/system_stm32f4xx.o ./CMSIS/device/startup_stm32f401xx.o -lm

rem Printing size information
%compiler_path%\arm-none-eabi-size "%output_filename%.elf"

2. 瞒天过海

mcu上右键,点edit properties,然后点program file,选择到刚刚编译出来的elf文件

然后运行,暂停,就会自动跳转到source code页。该页右上角就有单步调试,点击2~3次会单步一下。

 

标签:gcc,CMSIS,proteus8,外置,单步,proteus,device,arm
From: https://www.cnblogs.com/qmjc/p/17956860

相关文章

  • stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原
    stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)文章目录stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)一、前言二、资料收集三、STM32CubeMX配置按键及蜂鸣器连接口1、按键及LED的IO口配置2、......
  • stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向prin
    stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向printf到串口打印的问题)文章目录stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向printf到串口打印的问题)一、前言二、资料收集三、注意事项四、STM32CubeMX配置五、......
  • AP2813 双路降压恒流驱动 一路内置1A一路外置3A LED储能指示灯线路
    产品描述     AP2813是一款双路降压恒流驱动器,高效率、简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出功率可达12W,电流1.2A。AP2813一路直亮,另外一路通过MODE1切换全亮,爆闪。AP2813工作频率固定在150KHZ左右,同时内置抖频......
  • 世微AP5125 外置MOS管5-100V 8A平均电流型LED降压恒流驱动器 SOT23-6
    产品描述  AP5125是一款外围电路简单的Buck型平均电流检测模式的LED恒流驱动器,适用于8-100V电压范围的非隔离式大功率恒流LED驱动领域。芯片采用固定频率140kHz的PWM工作模式,利用平均电流检测模式,因此具有优异的负载调整率特性,高精度的输出电流特性。AP5125芯......
  • linux下gcc 4.8.5和7.5并存
    有些软件依赖于c++14甚至c++17的特性,比如libpqxx6.4.8版本就需要4.9以上版本,4.8.5不可以,会下列错误,invalidinitializationofnon-constreferenceoftype‘pqxx::connection_base&’fromanrvalueoftype‘<brace-enclosedinitializerlist>’  m_open{C......
  • stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发
    stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发文章目录stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h四、MDK串口收发代码(中断回调接收后发送接......
  • linux编译器:gcc/g++的使用
    原文连接:https://blog.csdn.net/weixin_72060925/article/details/131274627原文链接:https://blog.csdn.net/qq_65207641/article/details/128629904一、编辑器与编译器的区别vim是代码编辑器,代码编辑器的功能是让我们输入代码的。所以从这个角度出发,我们常见的记事本也可以......
  • /opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: 找不到 -lz
    我用的cmake命令是:target_link_libraries(${MyProjectName}-L/usr/lib64/mysql-lmysqlclient-lpthread-lz-lm-lssl-lcrypto-ldl) 将${MyProjectName}这个目标(可执行文件或库文件)链接到以下的库文件:/usr/lib64/mysql/libmysqlclient.so/usr/lib64/libpthread.so/usr/l......
  • configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
    gitclone git://gcc.gnu.org/git/gcc.gitgcc-CXX17gitcheckoutorigin/release/gcc-12./configureconfigure:error:BuildingGCCrequiresGMP4.2+,MPFR3.1.0+andMPC0.8.0+.Trythe--with-gmp,--with-mpfrand/or--with-mpcoptionstospecifytheirlocation......
  • 1835_GCC中C语言typeof的使用
    Grey全部学习内容汇总:GitHub-GreyZhang/c_basic:littlebitsofc.1835_GCC中C语言typeof的使用typeof是C语言中对数据类型的一种引用方法,目前看到的信息来看,并不是标准C中提供或者要求的内容。这个功能,其实是编译器提供的一种便捷的操作模式。而我看的资料中,这个功能在gcc中是......