Linux 在线调试stm32,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,选择目标处理器后界面如下

121d38bba029ee0d84c259a1487e5417.png

在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编译的性能好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值