STM32学习笔记之__attribute__ ((at())绝对定位分析

[复制链接]
1096|6
 楼主| 東南博士 发表于 2017-11-23 09:59 | 显示全部楼层 |阅读模式
学习STM32也会遇到这样的绝对定位的问题如下:
uint8_t   UART_RX_BUF[1024]   __attribute__ ((at(0X20001000)));   //就是将串口接收的数据定位到RAM中起始地址为0X20001000;

 楼主| 東南博士 发表于 2017-11-23 10:00 | 显示全部楼层
绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明。

MDK如何实现将数据存储到FLASH指定地址?
      我们在烧录数据的时候,一般是从0x08000000开始按照顺序烧录到flash里面的,如何让数据能够定义到绝对地址如0800F000,就必须保证文件内数据也是存储在该地址,为了实现这个目的,MDK在生成文件时会填充0x00字段,从而确保能够将数据定义到
 楼主| 東南博士 发表于 2017-11-23 10:13 | 显示全部楼层
截图如下1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 東南博士 发表于 2017-11-23 10:13 | 显示全部楼层
从实际情况也能验证这个原理,我以我的测试代码为例:

const u16 gFlashDefValue4[512] __attribute__((at(0x0800F000))) =  {0x1111, 0x1111, 0x1111, 0x0111, 0x0111,0x0111};
 楼主| 東南博士 发表于 2017-11-23 10:15 | 显示全部楼层
截图如下2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
god9987 发表于 2017-11-23 13:57 | 显示全部楼层
请问这个也适用于外扩的flash 以及外扩的SDRAM吗?
god9987 发表于 2017-11-23 13:57 | 显示全部楼层
从实际情况也能验证这个原理,我以我的测试代码为例:

const u16 gFlashDefValue4[512] __attribute__((at(0x0800F000))) =  {0x1111, 0x1111, 0x1111, 0x0111, 0x0111,0x0111};

~~~

请问一下 这个事定义了6个数据吗?

但是前面为什么声明的是512?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

6103

帖子

35

粉丝
快速回复 在线客服 返回列表 返回顶部