stm32cubeIde 使用笔记

划分flash空间

需要更改STM32xxx_FLASH.ld文件

输出其他格式文件

代码补全功能

方法1

Cube IDE 实现自动代码补全功能_stm32cubeide代码补全-CSDN博客

太麻烦,不搞

方法2

STM32CubeIDE如何开启代码自动补全功能 - 知乎

打开程序Window菜单下Preferences选项,在 C/C++ --> Editor --> Content Assist --> Advanced 

接下来设置相应快捷键 General --> Keys

搜索content assist

开启contextWindow

未找到该窗口,鼠标点中可以显示函数上下文

添加项目文件夹外的目录源码

相对路径

../

warning: AgingTestSlave.elf has a LOAD segment with RWX permissions

这是 Binutils 2.39 引入的一个新的安全类型的警告, GCC在升级版本时会带着新版本的 Binutils 一起发布. 如果要消除这个警告, 要么修改ld文件, 要么屏蔽掉它.

链接器关于可执行堆栈和段的警告

在嵌入式系统开发中,链接器脚本(ld文件)用于定义输出文件的内存布局。如果某个段被错误地定义为可读写和可执行(RWX),这可能会引发安全警告。以下是一些可能的原因:

  1. 链接器脚本配置不当:链接器脚本中的某些段可能没有被正确地设置为只读或只写。例如,代码段应该被设置为只读和可执行(RX),而数据段应该被设置为只读或读写(RW)。

  2. 编译器选项问题:某些编译器选项可能会导致生成的段具有不适当的权限。例如,使用-z execstack选项会使所有段都具有可执行权限,这可能是导致RWX段的原因。

  3. 自定义段未正确设置权限:如果项目中使用了自定义段,并且这些段在链接器脚本中没有正确设置权限,也可能导致RWX段的出现。

  4. 工具链版本问题:在某些情况下,升级到新版本的工具链(如GCC或Binutils)可能会引入新的安全检查,从而导致之前未被注意到的RWX段问题变得明显。

  5. 代码或数据布局不正确:代码和数据应该被放置在不同的段中,以确保它们具有正确的权限。如果代码和数据混合在同一段中,可能会导致该段被标记为RWX。

解决办法1:修改链接脚本

STM32CubeIDE 1.15.0 LOAD segment with RWX permissions 警告处理_has a load segment with rwx permissions-CSDN博客

在"xx_FLASH.ld"文件中,找到并添加上(READONLY),即可消除

  • .ARM.extab (READONLY) :
  • .ARM (READONLY) :
  • .preinit_array (READONLY) :
  • .init_array (READONLY) :
  • .fini_array (READONLY) :

解决方法2:屏蔽警告

printf浮点型

sprintf警告warning: format '%u' expects argument of type 'unsigned int', but argume

 
 
不同平台下不一样!    下面说的是arm 32位平台的
 
 
%d 输出有符号32位的
%ld 输出有符号32位的
%lld 输出有符号64位的
%u 输出无符号32位的
%lu 输出无符号32位的
%llu 输出无符号64位的
%x 输出32位16进制数的
%lx 输出32位16进制数的
%llx 输出64位16进制数的

清除所有断点

failed to insert all hardware breakpoints

字节对齐

typedef struct{
	uint8_t check;
	uint8_t len;
	uint8_t id;
	uint32_t res;
}SYS_CFG_INFO;

使用1字节对齐后

#pragma pack(1)
typedef struct{
	uint8_t check;
	uint8_t len;
	uint8_t id;
	uint32_t res;
}SYS_CFG_INFO;
#pragma pack()

multiple definition of `errno'; 

已解决:CubeIDE 1.9.0 FreeRTOS 高级设置 -> USE_NE...- STMicroelectronics 社区

问题已经在新版本V6.6中解决

旧版本的解决方法:  

方法1: -fcommon(不建议)

不建议,不清楚会有啥风险

方法2:直接更改MX里面固件库源码(省的每次生成又要改一次)

例如我的路径在:

C:\Users\BANGONG1\STM32Cube\Repository\STM32Cube_FW_F4_V1.26.2\

修改Middlewares\Third_Party\LwIP\system\OS\sys_arch.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值