STM32也会遇到这样的绝对定位的问题如下:

uint8_t   UART_RX_BUF[1024]   __attribute__ ((at(0X20001000)));   //就是将串口接收的数据定位到RAM中起始地址为0X20001000;

绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明。

MDK如何实现将数据存储到FLASH指定地址?

我们在烧录数据的时候,一般是从0x08000000开始按照顺序烧录到flash里面的,如何让数据能够定义到绝对地址如0800F000,就必须保证文件内数据也是存储在该地址,为了实现这个目的,MDK在生成文件时会填充0x00字段,从而确保能够将数据定义到

从实际情况也能验证这个原理,我以我的测试代码为例:

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

可以看到Code+ReadOnly= 15236+47228 = 62464
而gFlashDefValue4占绝对地址F000+512*2 = 62464

从生成的BIN文件也可以证实该观点:

如果你自己查看生成文件也可以发现中间填充了大量的0x00.但有一点要注意, FLASH定义绝对地址时要考虑ZI-Data的长度,否则可能会导致FLASH溢出。

最新文章

  1. AjaxUpload跨域上传问题
  2. mysql远程快速导出csv格式数据工具
  3. javascript-单例模式
  4. 攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍
  5. Liferay 6.2 改造系列之十六:关闭OpenID模式的单点登录
  6. Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯
  7. kail新手安装
  8. window下编译ffmpeg 比较简单
  9. PLSQL 看连接数据库的用户
  10. POJ 2774 最长公共子串
  11. c# winform读取xml创建菜单
  12. 扩展jquery easyui datagrid编辑单元格
  13. ldd获得可执行程序的所有库并输出到指定目录
  14. F#周报2019年第11期
  15. [持续交付实践] Jenkins 中国用户大会参会见闻
  16. javascript的介绍、javascirpt的存在形式、javascript注释
  17. python tar 打包
  18. jvm学习二:类加载器
  19. 【转】linux中执行外部命令提示" error while loading shared libraries"时的解决办法
  20. FastFel解析一个公式的步骤

热门文章

  1. Ansible 小手册系列 十二(Facts)
  2. 1.spring cloud eureka server配置
  3. 将封装了envi功能的IDL类导出成java类,方便java调用
  4. Prism5.0开发人员指南内容(纯汉语版)
  5. yum 认知及使用
  6. jstack 分析程序性能
  7. Python3安装(二)
  8. mac下初始化eclipse的安卓开发ndk开发环境
  9. 安装Spring报错An error occurred while collecting items to be installed
  10. 深入浅出down_interruptible