目录

  • 一、 概述
  • 二、 attribute机制

一、 概述

前面博客里通过QT5实现了一个bin文件合成工具。bin文件为什么要分为IAP、APP、PARA三部分呢?默认参数PARA在芯片第一次上电时,在模块初始化中直接写入flash不就可以了吗?
在程序初始化过程中,通常需要避免写flash。因为如果上电时电源不稳定(如焊接电池),那就有可能擦除flash后,默认参数PARA刚写入一部分,因为断电停止写入了。
通过固化PARA到bin文件中,可以避免上电写flash问题。但每次合成还是有些麻烦的。而且手动合成,可能会导致地址偏移错等问题。
本文记录下程序内将参数直接定义到指定flash地址的方法。

二、 attribute机制

修改之前,程序编译后生成的bin文件大小:

程序内通过attribute,指定参数数组的存储地址为0x1FA00

uint32_t val[12] __attribute__((at(0x1FA00))) = {0x060A01AA, 0x05010703,0x00010500,0x00000000,0x04000103, 0x1a0a0e06, 0x62223212, 0x0082c242,   0x00B53B36, 0X00CADE35, 0X00FEF335, 0x00000000};

再次编译,可以看到生成的bin文件变大:

查看map文件,可以看到val数组已经指定存放到0x0001FA00地址:

通过WinHex查看bin文件内容:

可以看到地址0x1FA00处存放的正是参数数组val的内容。这里也可以看到,芯片是小端模式。数组第一个元素是0x060A01AA,存储到flash中,从低地址到高地址依次为0xAA0x010x0A0x06。也就是高地址放高字节,低地址放低字节。
对程序进行仿真,也可以查看:

更多attribute的用法:C语言__attribute__的使用。

STM32定义数组到flash的指定位置相关推荐

  1. python把光标定义到指定的位置并删除之前的字符_python 批量修改预定字符串并将修改后的字符串插入文件指定位置...

    下面的例子是在文件的指定位置增加指定字符串的例子 修改配置文件: def add_str(pre_str): lines =[] flag= Truef= open("z.txt" ...

  2. python seek到指定行_python文件操作seek()偏移量,读取指正到指定位置操作

    python 文件操作seek() 和 telll() 自我解释 file.seek()方法格式: seek(offset,whence=0) 移动文件读取指针到制定位置 offset:开始的偏移量, ...

  3. 不是python文件处理seek()方法的参数是_python文件操作seek()偏移量,读取指正到指定位置操作...

    python 文件操作seek() 和 telll() 自我解释 file.seek()方法格式: seek(offset,whence=0) 移动文件读取指针到制定位置 offset:开始的偏移量, ...

  4. js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...

    JS定义了一个json数据var test={name:"name",age:"12"};需要给test再添加一个字段,需要什么办法,可以让test的值为{na ...

  5. Windows核心编程_获取鼠标指定位置的RGB颜色值

    Windows核心编程_获取鼠标指定位置的RGB颜色值 大家平常会见到很多屏幕取色工具,其原理都是获取鼠标位置的屏幕像素点颜色! 一般思路都是:获取鼠标位置,然后取出鼠标指向的屏幕像素点颜色! Get ...

  6. 将Python Pandas DataFrame写入docx文档指定位置

    http://www.lzys.cc/p/1168451.html https://www.yinyubo.cn/?p=352 from docx import Document import pan ...

  7. STM32学习笔记:FLASH读写之二

    因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...

  8. U盘GPIO文件系统映射-STM32利用内置FLASH做U盘

    受到linux对一切设备的控制都当成文件对待的启发 于是便有了这个将GPIO映射到U盘中的想法,这样一来便可以在任何支持U盘的设备中扩展系统的硬件功能了 我的QQ是243786753,这属于原创作品, ...

  9. 使用Itext操作PDF,修改文本内容及指定位置插入图片

    参考博客:修改文本的 参考博客:插入图片的 这里基于修改文本的博客编写的,主要解决了几个问题: 1.文件乱码 2.设置区域背景色 3.设置文字字体颜色 4.插入图片空指针 5.指定位置插入偏移 等等问 ...

最新文章

  1. Redis 笔记(13)— scan 和 keys 寻找特定前缀key 字段(命令格式、使用示例、定位大key)
  2. SpringCloud Alibaba微服务实战(一) - 基础环境搭建
  3. Linux下CMake简明教程(九) 添加控制选项
  4. It feels great to know you learned something, isn‘t it?
  5. respberry pi3 上手随记
  6. 【音视频安卓开发 (七)】安卓视频播放窗口去掉标题栏、全屏、横屏
  7. 跨平台的PHP+MySQL_跨平台的PHP+MySQL
  8. 再也不学AJAX了!(三)跨域获取资源 ② - JSONP CORS
  9. java项目收获总结_java开发项目收获心得
  10. Unity 修改asset store下载路径(win10)
  11. 【HLA】初识HLA/RTI
  12. php开发工具ps,小蚂蚁学习PS切图之基础操作(2)——工具栏的介绍
  13. python“~”符号的用法
  14. php excel 进度,在php中生成Excel文件时显示进度条
  15. NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)
  16. intel 服务器最新cpu,英特尔发布至强 Xeon W-3300 系列服务器处理器:最高 38 核
  17. 那些年我们没能bypass的xss filter[from wooyun]
  18. 【Allen方差】计算allen方差
  19. 【LuKS】Vba开发从入门到精通 =.=
  20. 什么是 Ubuntu?

热门文章

  1. qt及qt quick开发实战精解_Qt5实战001:Qt 5.15下载安装详解
  2. php func_get_args(),PHP中func_get_args(),func_get_arg(),func_num_args()有什么不同
  3. java中文件下载的思路(参考:孤傲苍狼)
  4. linux系统 设置网卡ping通主机连上外网
  5. xpath 取标签下所有文字内容_如何理解葡萄酒标签上的所有内容(下)
  6. linux查找以h结尾的文件,linux中文件查找的常用命令
  7. matlab层次分析法代码_基于主成分分析法和层次分析法的工程项目经理胜任力评价研究...
  8. 线性判别用于提取词向量_历年试题公开 | 2017级线性代数(I)期末试题
  9. torchvision.transforms
  10. 拉普拉斯变换公式表_工程数学中的积分变换的总结