stm32在linux编译,远程调试

发布者:快乐旅途最新更新时间:2020-03-25 来源: eefocus关键字:stm32  linux编译  远程调试 手机看文章 扫描二维码
随时随地手机看文章

背景

本人笔记本太渣,使用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编译的性能好。

关键字:stm32  linux编译  远程调试 引用地址:stm32在linux编译,远程调试

上一篇:stm32 usb和安卓手机的通讯过程
下一篇:STM32-Flash做为存储器储存数据

推荐阅读最新更新时间:2024-11-11 17:46

STM32芯片连接电脑出现的问题与解决方法
当我们使用STM32芯片进行开发时,往往需要将其连接到电脑以进行编程、调试等操作。然而,这个过程中可能会遇到一些让人头疼的问题,比如无法正常连接、连接不稳定等。 这些问题不仅影响了我们的开发效率,还可能让我们卡在关键的调试阶段。那么,遇到这些问题时,我们应该如何解决呢? 1.问题:无法识别芯片。 解决方法:检查芯片是否正确连接,USB线是否完好无损。尝试更换USB线或更换端口。同时,确保芯片的供电正常,供电电压应在3.3V左右。 2.问题:连接不稳定,经常出现断开现象。 解决方法:这可能是由于USB线质量不好或者端口供电不足导致的。尝试更换高质量的USB线或使用供电充足的端口。另外,检查芯片的配置文件是否正确。 3.问题:无法
[单片机]
stm32 起步 gpio操作
在工程中增加gpio lib.h和stm32头文件,如下: #include “stm32f10x.h” // Device header #include “stm32f10x_gpio.h” 调用lib配置gpio工作方式,先开启时钟,选GPIO,设置GPIO mode,gpio speed,主要看GPIO_InitTypeDef 结构体,芯片不同结构体不同,开始不清楚具体使用可以参考系统自带的example code,my setting如下: void GPIO_Initmain(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure all
[单片机]
基于TCP的STM32 IAP bootloader初步设计
最近研究了下IAP bootloader的实现方法,这在产品设计中是非常有用的。所谓IAP就是在线应用编程,可以用于远程程序升级。比如我们设计了一个产品,使用较为复杂的工艺被封装在精美的外壳中,或者被用于偏远的场景,如果在使用过程中需要修改程序,使用烧写器烧写是非常麻烦的,费时费力。真正的工业产品几乎都会有自己的bootloader。 其实,实现自己的bootloader在原理上并不复杂,就是通过MCU的接口把外部新的程序文件烧写到其内部的flash中,然后去运行新程序。以前怎么也没想过如何在同一个flash里面运行毫无关系的两个程序,bootloader就可以实现。其核心跳转代码就只有三行: app_pro
[单片机]
STM32 f103 实现命令终端
文件说明 uart.c 实现输入反显及命令识别 cmd.c 实现命令函数及命令查找 main.c 进入shell模式 uart.c #include usart.h /**************************************************************************** * 名 称:void USART1_Configuration(void) * 功 能:配置USART1参数 * 入口参数: * 出口参数:无 * 说 明: * 调用方法:无 ************************************************
[单片机]
STM32—ADC单通道采集模拟量
前言: 最近在调试STM32L152芯片ADC单通道采集数据程序,总结下STM32L152芯片ADC单通道采集模拟量的使用方法。 硬件平台:STM32L152 软件平台:keil v5+cubeMX 函数库:HAL库 ADC配置过程: 1.先初始化ADC的管脚,本例中ADC对应PA1管脚。 ADC_HandleTypeDef hadc; void ADC_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /*Configure GPIO pin : PA1 */ GPIO_InitStructure.Pin = GPIO_PIN_1;
[单片机]
STM32笔记记录3
高级控制定时器(TIM1 和TIM8)   TIM1和TIM8定时器的功能包括: ● 16位向上、向下、向上/ 下自动装载计数器 ● 16位可编程( 可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535 之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA : ─ 更新:计数器向上溢出/ 向下溢出,
[单片机]
<font color='red'>STM32</font>笔记记录3
从自定义的库函数到STM32官方标准库
  在上一节的基础上,进一步改写代码,再引入官方标注库函数。虽然官方标准库慢慢式微,有一些别的库可能会取代它,但是并不妨碍我们继续拿官方库来写代码,吸取里边好的写法,强化下C语言技能,加深对寄存器的理解也是不错的。   本文模仿库函数,首先自定义库函数,然后一步一步改写代码,最终引入官方标准库函数。 实现流水灯 void delay(unsigned int a) { while(a--); } int main(void) { RCC- APB2ENR |= RCC_APB2ENR_IOPBEN; GPIOB- CRH &= ~(0xf (0*4)|0xf (1*4)); GPIOB- CRH |= 0x
[单片机]
从自定义的库函数到<font color='red'>STM32</font>官方标准库
STM32串口通信基础:单片机串口与PC串口通信的连接方式
按照数据传送方向分类 单工:数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端 分别如下图中的a、b、c所示。 按照通信方式分类 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线 在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中
[单片机]
<font color='red'>STM32</font>串口通信基础:单片机串口与PC串口通信的连接方式
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved