硬汉嵌入式论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: eric2013
收起左侧

[开发工具] AC6使用 __attribute__((at(x)))需要改用__attribute__((section("name")))实现(2022-05-03)

  [复制链接]

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2024-4-17 14:10:28 | 显示全部楼层
eric2013 发表于 2024-4-17 09:44
这样写, 任何其它的前缀后缀都不要加。

uint8_t eepUseRam[1024]  __MEMORY_AT(XXXXXX);  

我意思是__MEMORY_AT(XXXXXX); 这里的XXXXXX用宏定义,而不是用纯数字的地址,纯数字地址是没有问题的,因为不涉及到宏展开
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2024-4-17 16:07:51 | 显示全部楼层
木偶 发表于 2024-4-17 14:10
我意思是__MEMORY_AT(XXXXXX); 这里的XXXXXX用宏定义,而不是用纯数字的地址,纯数字地址是没有问题的, ...

我理解错你的意思了,我以为你说的AT不行。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-5-15 22:27:34 | 显示全部楼层
试了下 生成的.bin后面会有一些不明字节 有两个问题
1.什么原因会出现这些字节
2.怎么规避,看长度不固定,flash空间又比较紧张
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2024-5-16 09:10:26 | 显示全部楼层
lls622 发表于 2024-5-15 22:27
试了下 生成的.bin后面会有一些不明字节 有两个问题
1.什么原因会出现这些字节
2.怎么规避,看长度不固定 ...

使用这个帖子的方案试试。

MDK5 AC6下载提示No Algorithm found for: 30040000H - 300400BFH解决办法
https://www.armbbs.cn/forum.php? ... 3585&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2024-5-21 01:33:43 | 显示全部楼层
如果用AC6仿真是不是进不了?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2024-5-21 14:45:02 | 显示全部楼层
Xiao_bo 发表于 2024-5-21 01:33
如果用AC6仿真是不是进不了?

如果你说的是楼主位的这个测试,仿真不影响。
回复

使用道具 举报

1

主题

380

回帖

383

积分

高级会员

积分
383
发表于 2024-7-5 18:04:14 | 显示全部楼层
本帖最后由 挖东衣宇 于 2024-7-5 18:05 编辑

今天有客户问起固件特定位置指定内容差点找不到这个帖子
附上官方链接
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2025-4-25 06:01:46 | 显示全部楼层
eric2013 发表于 2019-8-28 11:03
这个现在还没有比较好的方案,这块还是AC5用的舒服。

想问一下,cubeide用的是什么编译器啊,应该怎么定义一个数组的地址呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-25 10:54:18 | 显示全部楼层
wenjing 发表于 2025-4-25 06:01
想问一下,cubeide用的是什么编译器啊,应该怎么定义一个数组的地址呢?

CubeIDE用的GCC

这样定义就可以的

uint8_t my_array[1024] __attribute__((at(0x20010000))) = {0};
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2025-4-27 04:40:50 | 显示全部楼层
eric2013 发表于 2025-4-25 10:54
CubeIDE用的GCC

这样定义就可以的

我尝试使用了_at_这个用法,但是却出现了报错,网络上查起来gcc-arm只支持Section用法
---------------------------------------
代码:
int32_t aRecBuff0[AUDIO_BUFFER_SIZE]__attribute__((at(0x30000000))) = {0};
---------------------------------------
报错:
Description        Resource        Path        Location        Type
'at' attribute directive ignored [-Wattributes]        main.c        /H7B0VB2/Core/Src        line 89        C/C++ Problem
---------------------------------------
版本:
STM32CubeIDE

Version: 1.18.0
Build: 24413_20250227_1633 (UTC)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-27 11:34:09 | 显示全部楼层
wenjing 发表于 2025-4-27 04:40
我尝试使用了_at_这个用法,但是却出现了报错,网络上查起来gcc-arm只支持Section用法
---------------- ...

那看来只能Section了
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
发表于 2025-5-12 19:07:10 | 显示全部楼层
我找到一个方法可以使用变量,不知道火星了没有
int addres=0x24008000;

#define xstr(s) str(s)
#define str(s) #s

__attribute__((section(".ARM.__at_"xstr(addres))))
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
发表于 2025-5-27 00:15:36 | 显示全部楼层
fengyun2008 发表于 2022-5-2 02:57
感谢大硬汉的分享,今天用VC6作H750一个网卡的测试,发现直接怼还不行。
Exec Addr      Load Addr      Si ...

果然,我原来也不能用,加了bss编译器就不报错了~感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 04:38 , Processed in 0.297838 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表