程序是这么写的:
STACK .usect "STACK",10H ;引号中的STACK是段名,对应CMD文件中的一个段
.bss a,4 ;定义一个数组
.bss x,4 ;第二个数组
.def start ;定义一个可被别的模块找到的符号,作为程序入口
.data ;开始放入数据
table .word 1,2,3,4
.word 5,6,7,8
.text ;数据定义完毕,开始程序代码
。。。。代码
.end
cmd文件里边是这么放的:
.text :>EPROM PAGE 0
.data :>EPROM PAGE 0
其他东西都放在PAGE1 里边了
编译时候,出现这样的错误:
error: can't allocate .text, size 00000018 (page 0) in EPROM (avail:00000010)
就是说我分配了10个空间给text,但是text需要18个空间。
这个空间是怎么算出来的?
另外,关于算空间的。哪个高手,比如halibote,看看我这么算对不对:
堆栈使用10H个空间。
bss 使用两次,每次4个空间 一共8个
上边两个空间按照现编的CMD放置:
.bss :>SPRAM PAGE 1
STACK :>DARAM PAGE 1
也就是说,这两处使用了PAGE 1的24个空间。
data段的word使用两次,每次申请4个数据8个空间,一共使用了PAGE0 里边的16个空间
这种计算方法有问题吗?
共5条
1/1 1 跳转至页

2楼
编译后查看map文件,发现我的计算方法是错误的。
MAP文件中关于空间使用情况的统计如下:
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.text 0 00000e00 00000018
00000e00 00000018 ex43.obj (.text)
.data 0 00000e18 00000008
00000e18 00000008 ex43.obj (.data)
.bss 1 00000060 00000008 UNINITIALIZED
00000060 00000008 ex43.obj (.bss)
STACK 1 00000080 00000010 UNINITIALIZED
00000080 00000010 ex43.obj (STACK)
.data中有8个word类型数据,占据8个空间
.text是汇编后的程序正文,空间不能那么简单地运算。
【新问题】.text使用的空间怎么算?
MAP文件中关于空间使用情况的统计如下:
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.text 0 00000e00 00000018
00000e00 00000018 ex43.obj (.text)
.data 0 00000e18 00000008
00000e18 00000008 ex43.obj (.data)
.bss 1 00000060 00000008 UNINITIALIZED
00000060 00000008 ex43.obj (.bss)
STACK 1 00000080 00000010 UNINITIALIZED
00000080 00000010 ex43.obj (STACK)
.data中有8个word类型数据,占据8个空间
.text是汇编后的程序正文,空间不能那么简单地运算。
【新问题】.text使用的空间怎么算?



5楼
CMD是用来分配rom和ram用的,告诉链接程序怎样计算地址和分配空间
所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的
芯片进行修改.
以2407A为例,0×40-0×43是加密位,一般编写CMD时最好错开此位,以免误加密。如果使用我这里的示例代码,那就应该在代码中以.word之类预留出加密位位置!!!
所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的
芯片进行修改.
以2407A为例,0×40-0×43是加密位,一般编写CMD时最好错开此位,以免误加密。如果使用我这里的示例代码,那就应该在代码中以.word之类预留出加密位位置!!!
共5条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 |