首页 > 其他分享 >romcode中可读写段

romcode中可读写段

时间:2022-09-22 16:22:12浏览次数:63  
标签:rom sram 读写 flash romcode image arm

问题

芯片通常会有一段rom flash映射到cpu的0地址,当芯片复位时,直接运行rom flash的代码,既然是rom flash,那么肯定不能往flash写数据。但是我们代码里难免会用到堆和栈,以及一些全局可读写变量,那这些内容该放到哪里呢,在什么时候放的?

放到哪里

  1. 堆栈:可以分配一块sram空间,设置堆和栈指向这块区域
  2. 全局变量:同样是把rom flash中的可读写段搬移到sram中
  3. bss:放到全局变量后面的sram

什么时候放

在最初的启动汇编中,就要执行把这些堆栈、bss、全局变量准备好,然后才能跳转到c函数中

从哪里搬到哪里

可能我们还会有一个疑问,启动汇编怎么知道rom flash的哪些段要搬到sram中?
那这就要看看arm的链接规范了。

ARM® Compiler toolchain Linker

这份文档讲了以下内容

  1. 链接命令及使用
  2. 镜像结构
  3. 链接符号
  4. scatter文件使用

下面这张图说明了rom flash分为ro段和rw段,rw段需要再rom startup阶段copy到ram中。

arm链接器为image中的每个段生成以下类型相关符号,需要通过特殊指令来使load和image地址相同,否则它俩是不一致的。

  • image$$ :代表图中execution的地址
  • Load$$:代表图中load的地址

Reference

https://developer.arm.com/documentation/dui0474/latest/

标签:rom,sram,读写,flash,romcode,image,arm
From: https://www.cnblogs.com/lvzh/p/16719589.html

相关文章

  • mysql07--主从搭建、Django实现mysql读写分离
    1mysql--单主N从搭建https://www.liuqingzheng.top/python/其他/02-MySQL主从搭建基于docker/1.1基本介绍MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,......
  • Django--操作mysql实现读写分离
    django操作mysql读写分离#0mysql主从搭建好了#1在setting中配置DATABASES={#主库'default':{'ENGINE':'django.db.backends.mysql'......
  • ByteArrayOutputStream用法---读写类型数据
    ByteArrayOutputStream用法 字节数组流:ByteArrayOutputStream:  可以捕获内存缓冲区的数据,转换成字节数组。ByteArrayoutputStreambout=newByteArrayOutputStr......
  • 内存管理——记忆集和读写屏障
    记忆集和读写屏障由于对堆使用了分代管理,所以在对新生代进行GC的时候需要将老年代对新生代中对象的引用也当做根来看待,所以在根标记的过程中也需要对老年代的引用进行标记......
  • dd测试读写实时查看带宽输出
    测试ssd带宽写盘操作:sudoddif=/dev/zeroof=./test1.datbs=8kcount=70000000conv=fdatasyncps查看对应线程ID,然后使用命令kill-10ID即可查看磁盘温度:su......
  • MySQL5.7读写分离
    读写分离关闭防火墙systemctlstopfirewalldsetenforce0Amoeba服务器环境安装安装jdkyuminstalljava安装完成后查看版本java-version修改配置文件vi/etc/......
  • 读写文件
    open(filename,mode,encoding=None)f=open('workfile','w',encoding='utf-8')第一个实参是文件名字符串,第二个实参是包含描述文件使用方式字符的字符串,包括:'r'......
  • Python中使用pyyaml对yaml文件进行读写删操作
    安装库pipinstallpyyaml读取yaml/yam格式的文件defget_yaml(filepath)->list:""":paramfilepath:文件路径:return:传入数据的列表"""......
  • python读写文件模板记录
    目录读写模式读文件read(可选:size)一次性读全部内容readline()读取一行内容readlines()读取所有内容,返回列表从file中读取每行等同于readlines()的功能写......
  • qt中json字符串的读写
    1、json字符串: 2、写json:  3读json:  ......