C51–在main__之前到底做了什么.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C51–在main__之前到底做了什么

C51–在main()之前到底做了什么?? 用C 写过东西的都知道,程序是从main()函数开始执行的,在main()之前会有一系列的初始化工作,那么这些初始化到底做了些什么了?? 大家也都知道在MCU 中,程序是在Flash 里面,而数据是在RAM 里面,掉电之后,Flash 里面的东西还在,RAM 里面的东西就没有了. 那么你把程序下载到芯片里面之后,数据是在哪里了?你会想,它当然是在Flash 里面的.那数据又是在什么时候跑到RAM 里面了呢? 结合C51 生成的M51 文件,大概的说一下main()函数之前,到底都做了哪些初始化的工作. 程序编译(assembly,compile),连接(link)过后会生成HEX 文件.整个HEX 文件是由程序和数据(主要是global 和static 的数据)组成的.当然程序和数据会放在不 同的地址,这些地址是绝对的地址.绝对的地址是在连接(link)过程中生成的.如果是C51 的话,何以看一下他的M51 文件.M51 文件就是link 的MAP 文件. 例如:MCU 是C8051F340,IDE 是uVersion4,C51 是v9.01,main()函数如下: //main.c unsigned int a = 0; unsigned int b = 0xff; void main(void) { unsigned int c; unsigned int d; d = c; while(1); } build output 的信息是: Build target ‘Target 1′ assembling STARTUP.A51… compiling main.c… linking… Program Size: data=17.0 xdata=0 code=160 “test” – 0 Error(s), 0 Warning(s). 1    可以看到,data 用里 17Byte,code 是 160Byte,没有用到xdata. 查看M51 文件: BL51 BANKED LINKER/LOCATER V6.22 04/25/2010 11:27:23 PAGE 1 BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\BL51.EXE STARTUP.obj, main.obj TO test RAMSIZE (256) MEMORY MODEL: SMALL INPUT MODULES INCLUDED: STARTUP.obj (?C_STARTUP) main.obj (MAIN) D:\PROGRAM FILES\KEIL\C51\LIB\C51S.LIB (?C_INIT) LINK MAP OF MODULE: test (?C_STARTUP) TYPE BASE LENGTH RELOCATION SEGMENT NAME —————————————————– * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE “REG BANK 0″ DATA 0008H 0004H UNIT ?DT?MAIN DATA 000CH 0004H UNIT _DATA_GROUP_ IDATA 0010H 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 008CH

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档