硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1159|回复: 6
收起左侧

[MDK] 使用ac6编译器如何将一个字节变量定义到非4字节对齐的地址

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2023-5-14 19:38:59 | 显示全部楼层 |阅读模式
ac6时,使用__attribute__((section(".ARM.__at_......")))可以将变量定义到指定地址,但使用时候发现,地址必须是4字节对齐,即使字节变量也不例外。这就引起一个问题,如果我要在0x20000000定义一个word时,可以
short var_short __attribute__((section(".ARM.__at_0x20000000")));
但想在0x20000002定义一个字节时,
char var_char __attribute__((section(".ARM.__at_0x20000002")));编译器就会报错,要求4字节对齐,这如何是好?
回复

使用道具 举报

1

主题

66

回帖

69

积分

初级会员

积分
69
发表于 2023-5-15 09:15:36 | 显示全部楼层
我好奇,为啥有这个需求?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2023-5-15 11:37:44 | 显示全部楼层
换个玩法就好了,此贴玩法

像使用内部SRAM一样定义使用SDRAM和CCM RAM,可以随意定义到指定的RAM区域且无需具体地址
https://www.armbbs.cn/forum.php?mod=viewthread&tid=89275

下载.png

var_char                                 0x24000000   Data           1  main.o(.RAM_D1)
var_char1                                0x24000001   Data           1  main.o(.RAM_D1)


回复

使用道具 举报

5

主题

165

回帖

180

积分

初级会员

积分
180
发表于 2023-5-15 11:57:17 | 显示全部楼层
__attribute__((aligned(x)))
x里填需要对齐的字节数,其实即使不4字节对齐,也要对齐到4的整倍数,要不然编译器可能报错
回复

使用道具 举报

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2023-5-15 14:57:38 | 显示全部楼层
逻辑上支持这么做,我手边没有条件验证。


To place a section at a specific address, use the function or variable attribute __attribute__((section("<name>"))) with the special name .ARM.__at_<address>.
To place ZI data at a specific address, use the variable attribute __attribute__((section("<name>"))) with the special name .bss.ARM.__at_<address>.


回复

使用道具 举报

210

主题

1044

回帖

1684

积分

至尊会员

More we do, more we can do.

积分
1684
发表于 2023-5-17 00:10:05 | 显示全部楼层
Warning: L6918W: Execution region RW_IRAM1 placed at 0x24000000 needs padding to ensure alignment 2 of main.o(.ARM.__at_0x24000002).
试了下我这里警告这个,提示有空间未使用;也算合理,使用后就没警告了。


[C] 纯文本查看 复制代码
uint16_t Paddding __attribute__((section(".ARM.__at_0x24000000")));
uint16_t Fixed_Addr_Flag __attribute__((section(".ARM.__at_0x24000002")));

回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2023-5-19 17:53:15 | 显示全部楼层
JIAYU 发表于 2023-5-15 09:15
我好奇,为啥有这个需求?

数据按照固定结构存在FLASH中,按照对应顺序定义变量可以直接COPY过来用。前后数据又不是一类,用结构体名字都不好起
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 01:19 , Processed in 0.249242 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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