- 8
- 0
- 约1.35千字
- 约 4页
- 2017-09-05 发布于浙江
- 举报
d IAR FOR AVR 编译环境几个要点
IAR FOR AVR 编译环境中启动代码和堆栈设置的分析
例子1
程序中仅包含一个空的main()函数,代码如下:
#include ioavr.h
int main(void)
{
}
此时对应的map文件显示:
表中CSTACK的区域由编译环境中DATA STACK的值确定,起始位置是0060H,而RSTACK区域的起始地址就是CSTACK的最大地址+1,即RSTACK紧接着CSTACK,其大小由编译环境则为Return address stack中的值*2。
从0000-0025都是中断向量表的区域,从0026-0049才是程序代码
中断向量表的区域如下图所示:
从表中可以看出,上电复位后的第一条指令就转移到启动代码?C_STARTUP中。
程序代码如下图所示:
在启动代码中,首先设置堆栈指针SP位009FH,这个值就是MAP文件中给出的RSTACK区域的最大地址。
然后将(R29,R28)寄存器对设置成0080H,这个值就是MAP文件中给出的RSTACK区域的最小地址。
由于在AVR中,当压栈时,堆栈指针进行减法,出栈时进行加法,所以栈顶就是009FH,实际上堆栈可使用的区域为0080到009FH。这部分区域主要用来保存返回地址,因此在编译环境中也被称为返回地址的堆栈,而CSTACK则称为数据堆栈。这个部分区域应该是用于局部变量的操作,因
您可能关注的文档
最近下载
- 医务工作者学习2026全国卫生与健康大会精神PPT.pptx VIP
- CECS59-94《水泵隔振技术规程》.pdf VIP
- 13003《数据结构与算法》课后习题 答案 解答-自考计算机科学与技术.pdf VIP
- 2026年全国卫生与健康大会PPT.pptx VIP
- Web渗透测试与防护-全套PPT课件.pptx
- 2026年高考化学一轮复习:选必修3默写小纸条(35天,含答案).pdf VIP
- 医院学习宣贯2026全国卫生与健康大会精神PPT.pptx VIP
- 2024年“铸牢中华民族共同体意识”知识竞赛测试题库及答案.doc VIP
- 2027高中生物《默写小纸条》选择性必修2(默写+背诵版).pdf VIP
- 高新技术企业认定政策培训课件.ppt
原创力文档

文档评论(0)