vscode+platformIO开发STM32
Posted Sola_Ex
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vscode+platformIO开发STM32相关的知识,希望对你有一定的参考价值。
vscode+platformIO开发STM32
前言
最近可能太忙了哈哈哈哈,没时间写博客,不过看到不少朋友私信问我这个platformIO怎么设置偏移地址,那我就抽时间写一下简单的教程。
什么是.ld文件?
如果熟悉makefile的编译环境,那一定会和.ld这个文件打交道,这是一个link文件,在keil/IAR上是直接设置偏移、内存的,所以长时间依赖keil/iar也许就不太了解这个。.ld实际也是一个描述文件,文件内容有特殊的关键字来描述,这里就不相信解释了,作用:
- 描述如何将输入文件的section映射到输出文件
- 控制输出文件的内存布局
在pio里面,如果按照我前面的工程这样建立,它就会使用默认基础的.ld文件,好的我自己也没发现原始的在哪,不过就算找到了也不可能去修改它的,因为这样会导致别的工程受到影响。
PlatformIO链接自定义.ld
如果你使用的是STM32,并且你不熟悉.ld的语法,但是你有stm32cubemx,那恭喜你,这个就很容易了。你只需要这样:
建立一个makefile的工程。在工程里面,找到这个.ld文件。
在platformIO上建立好文件夹,例如像我这样:
放置好文件之后,开始设置对应的路径:
修改.ld
这个文件没看懂没关系,主要关注这个:
目前程序是在0x8000000的地址开始的,并且大小是512K,那同样的,如果我想让程序下载到0x8008000呢?也就是偏移8000的地址开始,前8000的地址用于bootloader,这应该很常见,那就把地址设置为FLASH对应的ORIGIN设置为0x8008000就可以了。其余的内存操作也类似,比如一些内存映射,或者CCM的使用,都是在这里修改的。pio作为一个相对成熟的编译工具,自然不会缺少这个功能,还专门给了board_build.ldscript这个关键字来供开发者重定向.ld文件,说实在比我自己用makefile的时候良心多了。。。
以上是关于vscode+platformIO开发STM32的主要内容,如果未能解决你的问题,请参考以下文章