您的位置 首页 传感器

MDK将数据存储到FLASH指定地址

MDK将数据存储到FLASH指定地址-学习 STM32 也会遇到这样的 绝对定位 的问题如下: uint8_t UART_RX_BUF[1024] __attribute__ ((at(0X20001000))); //就是将串口接收的数据定位到RAM中起始地址为0X20001000; 绝对定位要么定位到flash、要么定位到RAM,这里我们将定位在flash进行说明。

  学习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溢出。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/348004.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部