历史上的今天
今天是:2025年03月25日(星期二)
2020年03月25日 | stm32在linux编译,远程调试
2020-03-25 来源:eefocus
背景
本人笔记本太渣,使用keil编译时CPU占用率竟然能到%90,实在忍受不了,就想着将stm32 keil的工程port到linux上用makefile来控制(嗯,服务器配置相当豪华)。使用gdb+jlink server的方式进行调试。惊喜的发现jlink竟然可以直接将程序烧写到stm32的内部flash。
移植
记录几个关键地方:
参考工程: https://github.com/embedded2014/freertos-stm32 ,因为需要用到makefile和lds脚本,自己写起来太费劲,就在github上搜了一下,果然有前辈做好的工程。就借鉴一下Makefile和lds,在该基础上进行修改
将MDK的工程源码直接添加后,发现编译没有通过,百度上发现MDK和GCC用的启动文件start.s不同。参考链接:http://bbs.chinaunix.net/thread-4083983-1-1.html
调试
在windows上打开gdbserver,选择目标处理器后界面如下

在linux系统上使用对应gdb连接该server
> cat gdb.sh
#!/bin/bash
~/workspace/stm32/gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gdb -x ./script_gdb/stm32.gdb
> cat ./script_gdb/stm32.gdb
target remote 10.213.37.111:2331
file ./STM32F429.elf
exec-file ./STM32F429.elf
然后手动在gdb中使用load命令即可将程序烧写到stm32的flash中(注意lds是flash版本的而不是sram版本)
关于gdb和Keil的对比
显然keil比较方便,但是gdb可定制性更强,熟悉用起来就比较舒服。
顺便说一下编译器性能,之前测试过coremark大概就是:IAR > MDK > GCC,即同样的程序IAR编译的会比GCC编译的性能好。
史海拾趣
|
求助!!!急!!!51单片机控制两个舵机程序O(∩_∩)O~ 用C51单片机,分别产生两路可独立调节占空比的PWM信号来控制两个舵机,现在单个舵机已经可以按键控制,我想通过上位机通过串口发指令给单片机,单片机识别指令后分别控制两个舵机,调了几天都没办法,现求助各位高手了,先谢谢了。。 ...… 查看全部问答> |
|
插件设计:任何人开发的测试工具将无缝连接到平台中,可以即插即用; 快速开发:插件设计采用定制模板的方法可进行快速开发,避免重复性的劳动; 界面统一:开发、测试、生产和维护人员都使用统一用户界面,所有模块的功能操作类似。 了解更多\" ...… 查看全部问答> |
|
用LM3S811的Timer计时处理的DS18B20时序。工程仅写了DS18B20单点检测温度,暂时没写多点测试读取序列号,选择测温。 函数串口显示值只计算了实数部分,小数部分类似处理~~~ 注意用作时序总线的管脚需要上拉电阻~ 最主要的是要保证DS18B20这个器 ...… 查看全部问答> |
|
最近做一个项目,有两块独立的PCB板,一个为控制板5V供电(是从功能板上12V转换来的),另外一个为功能板12V供电,两板共地,正常工作时,两板相距两米。本来用单片机控制三个NPN型三极管可以控制功能板的正常功能,也就是用5V控制12V电压,总共是5 ...… 查看全部问答> |
|
STM32用定时器输出比较模式来周期定时采集多通道的ADC,并由DMA传输 1、我使用定时器输出比较模式中的timing模式,进行周期定时,并产生中断,但是时间不准确 2、ADC串口输出通道之间发生错位 望高人指点,下面是我的程序 #include \"stm32f10x.h\" #include \"stm32f10x_it.h\" #include \"UART_INTERFACE.h\" ...… 查看全部问答> |




