-
程序执行的时候FLASH空间,code + RO data
-
程序执行时SRAM空间,RW data + ZI data
-
程序存储时占用空间,code + RO data + RW data
-
在目录下打开命令行窗口,按shift+鼠标右键,>可以将信息输入到某个文件
Bin文件
- 生成BIN文件有两种方法,D:\Program Files\Keil_v5\ARM\ARMCC\bin先将这个变量添加到环境变量下,目录根据安装路径修改
- 利用MDK里的user选项卡输入命令后自动生成BIN文件,after build填写fromelf --output .\F1_new\file1.bin --bin .\F1_new*.axf(即F1_new.uvprojx所在目录为根目录,然后找到axf文件地址,…为返回上一层目录)
- D:\Program Files\Keil_v5\ARM\ARMCC\bin下有个fromelf.exe,利用他也可以生成bin文件,将命令行切换到MDK-ARM\F1_new(即axf文件夹目录),然后输入fromelf --output file.bin --bin .\F1_new.axf,即可生成文件
Fromelf应用
- 命令行输入fromelf,可以查看他的功能
- 可以用fromelf查看axf文件的详细内容,例如RAM和ROM使用大小
- 也可以对其反汇编,查看代码
Map文件
- map文件最后有flash和ram占用的大小,各部分用========分开
- 第一部分是文件间的互相调用关系
- 第二部分是移除没用的节区,无用文件不会添加到axf文件里
- 第三部分是符号映像表,显示各种符号的内存地址
- 第四部分是存储器映像索引,什么在ROM或者RAM里
- 最后就是flash和ram占用的大小,各个文件占用大小都有,打开后发现ZI占用最大的是startup_stm32f103xb,1024字节,发现是堆空间,可以看output里的html文件,看看堆大小是否超出定义空间,
SCT文件
- 代码段及变量等由该文件分配
- 分散加载文件:linker选项下Use Memory,取消勾选就会使用sct文件,否则按target配置
- u8 USART2_RX_BUF[USART2_REC_LEN] __attribute __((at(0X20001000))); 可以把变量或函数绝对定位到Flash中,或者定位到RAM。attribute和at配合使用
- sct可以配置成attribute的功能
- sct文件语句意义可以看PPT或者PDF查看
- 可以右键c文件,选择option将代码或者变量存储到ROM或者RAM地址(此处不管SCT也可以,同一个文件变量只能放到一个初地址)
- sct使用:一个文件多个变量存储到不同地址,先创建区(*.o (dingyi),.ANY (dingyi)也行),再从程序里调用 “变量名” __attribute __((section(“dingyi”)));,变量名就会存储到dingyi的地址
- at少用,还是sct文件配合attribute(section)不容易覆盖其他变量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)