程序编译后占用一头一尾地址;数组初始化出现Resricted Memory

[复制链接]
3470|0
 楼主| febspring 发表于 2007-3-8 13:03 | 显示全部楼层 |阅读模式
程序编译后地址空间占用一头一尾;数组初始化不完整,出现Resricted&nbsp;Memory<br /><br />我用的是MPLAB&nbsp;V7.50和HI-TECH&nbsp;的PICC18&nbsp;V9.50,芯片是18F6527。当在Project的PICC-18&nbsp;Linker中不设置Specify&nbsp;offset&nbsp;for&nbsp;ROM时,编译后的地址空间如图1所示,程序占用了地址空间的一头一尾;而如果给Specify&nbsp;offset&nbsp;for&nbsp;ROM设置一便宜量时(例如0x40)编译后占用的地址空间如图2所示,这是为什么呢?我的所有程序都会出现这样的问题。而在MPLAB&nbsp;V7.30和HI-TECH&nbsp;的PICC18&nbsp;V8.35中却不出现这样的问题。因为我的FLASH要存多套程序,所以要求各程序占用的地址空间连续。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;另一问题是,当在Project&nbsp;的Global中设置&nbsp;Complie&nbsp;for&nbsp;MPLAB&nbsp;ICD时,数组data[64]和data1[1500]、data1[512]都能初始化;而不设置Complie&nbsp;for&nbsp;MPLAB&nbsp;ICD时,数组data1[1500]只能初始化到data[1456];而将data1[1500]长度设置为512时,只能只能初始化到data[469];设置长度为64时,只能初始化到data[20],等等;并且data1最后能初始化成功的地址都是EF3。<br />&nbsp;&nbsp;&nbsp;&nbsp;最后是我的一各小程序,也出现了上述问题。请高手指教啊!<br />图1:<br />Psect&nbsp;Usage&nbsp;Map:&nbsp;&nbsp;&nbsp;Psect&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Contents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Memory&nbsp;Range&nbsp;&nbsp;|&nbsp;Size&nbsp;----------|------------------------------------|---------------|--------------&nbsp;&nbsp;init&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Initialization&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0000h&nbsp;-&nbsp;003Bh&nbsp;|&nbsp;&nbsp;&nbsp;60&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;end_init&nbsp;|&nbsp;Initialization&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;003Ch&nbsp;-&nbsp;003Fh&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Program&nbsp;and&nbsp;library&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;B6AAh&nbsp;-&nbsp;B7A3h&nbsp;|&nbsp;&nbsp;250&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;ibigdata&nbsp;|&nbsp;Large&nbsp;initialized&nbsp;RAM&nbsp;variables&nbsp;(R&nbsp;|&nbsp;B7A4h&nbsp;-&nbsp;BD7Fh&nbsp;|&nbsp;1500&nbsp;bytes&nbsp;&nbsp;&nbsp;----------|------------------------------------|---------------|--------------&nbsp;&nbsp;param&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Parameter&nbsp;auto&nbsp;blocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;00FDh&nbsp;-&nbsp;00FFh&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigdata&nbsp;&nbsp;|&nbsp;Large&nbsp;initialized&nbsp;RAM&nbsp;variables&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;08D7h&nbsp;-&nbsp;0EB2h&nbsp;|&nbsp;1500&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;bigbss&nbsp;&nbsp;&nbsp;|&nbsp;Large&nbsp;RAM&nbsp;variables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0EB3h&nbsp;-&nbsp;0EF3h&nbsp;|&nbsp;&nbsp;&nbsp;65&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Temporary&nbsp;RAM&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0000h&nbsp;-&nbsp;0001h&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;bytes&nbsp;&nbsp;&nbsp;----------|------------------------------------|---------------|--------------<br /><br />图2:<br />Psect&nbsp;Usage&nbsp;Map:&nbsp;&nbsp;&nbsp;Psect&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Contents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Memory&nbsp;Range&nbsp;&nbsp;|&nbsp;Size&nbsp;----------|------------------------------------|---------------|--------------&nbsp;&nbsp;init&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Initialization&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0040h&nbsp;-&nbsp;0079h&nbsp;|&nbsp;&nbsp;&nbsp;58&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;end_init&nbsp;|&nbsp;Initialization&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;007Ah&nbsp;-&nbsp;007Dh&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;ibigdata&nbsp;|&nbsp;Large&nbsp;initialized&nbsp;RAM&nbsp;variables&nbsp;(R&nbsp;|&nbsp;007Eh&nbsp;-&nbsp;0659h&nbsp;|&nbsp;1500&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Program&nbsp;and&nbsp;library&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;065Ah&nbsp;-&nbsp;0753h&nbsp;|&nbsp;&nbsp;250&nbsp;bytes&nbsp;&nbsp;&nbsp;----------|------------------------------------|---------------|--------------&nbsp;&nbsp;param&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Parameter&nbsp;auto&nbsp;blocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;00FDh&nbsp;-&nbsp;00FFh&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bigdata&nbsp;&nbsp;|&nbsp;Large&nbsp;initialized&nbsp;RAM&nbsp;variables&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;08D7h&nbsp;-&nbsp;0EB2h&nbsp;|&nbsp;1500&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;bigbss&nbsp;&nbsp;&nbsp;|&nbsp;Large&nbsp;RAM&nbsp;variables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0EB3h&nbsp;-&nbsp;0EF3h&nbsp;|&nbsp;&nbsp;&nbsp;65&nbsp;bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Temporary&nbsp;RAM&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;0000h&nbsp;-&nbsp;0001h&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;bytes&nbsp;&nbsp;&nbsp;----------|------------------------------------|---------------|--------------&nbsp;&nbsp;&nbsp;<br />#include&nbsp;&ltpic18.h&gt<br />#include&nbsp;&ltpic18fxx22.h&gt<br /><br />void&nbsp;Init_SP2539(void);<br />void&nbsp;delay(unsigned&nbsp;int&nbsp;i);<br />void&nbsp;sciint(void);<br />void&nbsp;Send_Char(unsigned&nbsp;char&nbsp;data);<br />volatile&nbsp;unsigned&nbsp;char&nbsp;data[64];<br />unsigned&nbsp;&nbsp;&nbsp;char&nbsp;data1[1500]={0};<br />unsigned&nbsp;char&nbsp;temp;<br />void&nbsp;main&nbsp;()<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;j=0;&nbsp;<br />&nbsp;&nbsp;&nbsp;sciint();//SCI部件初始化子程序<br />&nbsp;&nbsp;&nbsp;delay(1400);<br />&nbsp;&nbsp;&nbsp;Init_SP2539();<br />&nbsp;&nbsp;&nbsp;delay(1000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(RC1IF==0);&nbsp;&nbsp;//接收数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data=temp=RCREG1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(TRMT==0);&nbsp;&nbsp;//将接收的数据发送出去<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG1=data;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==64)&nbsp;break;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(100);<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br />void&nbsp;Init_SP2539()<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC5=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC4=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC3=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(40);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG1=0X04;&nbsp;&nbsp;//禁止看门狗<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(40);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG1=0X15;&nbsp;&nbsp;//子串口2波特率加倍,并禁止子串口3收发数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(40);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG1=0x23;&nbsp;&nbsp;//置子串口2波特率分频系数为1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(40);<br />&nbsp;&nbsp;&nbsp;&nbsp;//发送地址为010B,选择子串口2<br />&nbsp;&nbsp;&nbsp;&nbsp;RC5=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC4=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC3=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC2=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC1=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;RC0=0;<br />}<br />void&nbsp;delay(unsigned&nbsp;int&nbsp;i)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(i--);<br />}<br />void&nbsp;&nbsp;&nbsp;sciint(void)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TRISC6=0;&nbsp;&nbsp;//RC6&nbsp;为TX<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TRISC7=1;&nbsp;&nbsp;//RC7&nbsp;为RX<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISC=TRISC|0X47;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RC0,RC1,RC2,RC7置1,设置为输入<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISC=TRISC&0X47;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RC3,RC4,RC5,RC6置0,设置为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPBRG1=16;&nbsp;&nbsp;//波特率为9600<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXSTA=0x24;//0010&nbsp;0100&nbsp;异步高速方式传输8bit数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RCSTA=0x80;//1000&nbsp;0000&nbsp;SPEN=1;允许串行口工作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXEN=1;&nbsp;&nbsp;//允许发送<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREN=1;&nbsp;//允许数据接受<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1=0X00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIE1=PIE1|0X20;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RC1IP=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//INTCON=0;//清中断<br />}<br />void&nbsp;Send_Char(unsigned&nbsp;char&nbsp;data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!TX1IF);<br />&nbsp;&nbsp;&nbsp;&nbsp;TXREG1=data;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(250);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部