色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

電子工程網(wǎng)

標(biāo)題: 有人碰到過keil c51里的pdata_group問題沒有? [打印本頁]

作者: phoenixmy    時(shí)間: 2009-6-8 18:59
標(biāo)題: 有人碰到過keil c51里的pdata_group問題沒有?
不知道怎么回事,pdata_group好像被限制到了0x80左右大小,稍微加點(diǎn)代碼變量之類的就會(huì)報(bào)告溢出
請問這是怎么回事?
按道理講應(yīng)該能達(dá)到0xff才對啊
作者: ydz0515    時(shí)間: 2009-6-9 11:05
2個(gè)原因:

1、要使pdata有效,必須在COMPACT編譯模式下。
2、需要修改STARTUP.A51文件中的相關(guān)條目。(改了嗎?)
3、填寫B(tài)L51 LOCATA下的PDATA項(xiàng)。
4、干脆什么都不動(dòng),程序中修改P2=XXXX; 就行了。
作者: phoenixmy    時(shí)間: 2009-6-10 20:47
回復(fù)二樓,我在啟動(dòng)文件中看到的是:

IDATALEN        EQU    100H     ; the length of IDATA memory in bytes.
;
XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory
XDATALEN        EQU  1000H      ; the length of XDATA memory in bytes.
;
PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.

這樣合理不?



2個(gè)原因:

1、要使pdata有效,必須在COMPACT編譯模式下。
2、需要修改STARTUP.A51文件中的相關(guān)條目。(改了嗎?)
3、填寫B(tài)L51 LOCATA下的PDATA項(xiàng)。
4、干脆什么都不動(dòng),程序中修改P2=XXXX; 就行了。
ydz0515 發(fā)表于 2009-6-9 11:05

作者: ydz0515    時(shí)間: 2009-6-11 11:25
修改這幾條:其他不動(dòng)。

PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.       //應(yīng)該設(shè)為 1 ?
;
PPAGE           EQU     0       ; define PPAGE number.
;
PPAGE_SFR       DATA    0A0H    ; SFR that supplies uppermost address byte
;               (most 8051 variants use P2 as uppermost address byte)
;


最好把相關(guān)程序貼上來,我?guī)湍銓?shí)驗(yàn)一下。
作者: ydz0515    時(shí)間: 2009-6-11 15:34
要是片內(nèi)pdata,可能就不一樣了。

我沒試過?梢栽囋。
作者: phoenixmy    時(shí)間: 2009-6-12 16:50
先謝謝樓上,的確是片內(nèi)ram,目前的困擾是,片上flash比較大,260k的容量,因此想盡可能多的放代碼進(jìn)去,結(jié)果pdata就溢出了,樓上有沒有節(jié)省ram的好方法?
作者: hotpower    時(shí)間: 2009-6-12 20:46
用位
作者: 老郭    時(shí)間: 2009-6-12 20:59
這個(gè)問題好。phoenixmy可以得一本書了吧,菜農(nóng)兄?
作者: hotpower    時(shí)間: 2009-6-13 03:54
哈哈~~~這個(gè)問題很怪異~~~俺真沒遇到過~~~


估計(jì)法國本部的老外就腦漿~~~
作者: ydz0515    時(shí)間: 2009-6-13 11:08
“因此想盡可能多的放代碼進(jìn)去,結(jié)果pdata就溢出了,樓上有沒有節(jié)省ram的好方法?”

pdata怎么是放代碼的?是 Xdata里的一部分。
作者: phoenixmy    時(shí)間: 2009-6-14 10:21
可能我說的不清楚,樓上理解有些誤會(huì)
增加代碼的同時(shí),肯定要申請跟多的局部和全局變量么,這個(gè)沒問題吧
因此pdata也罷,xdata也罷,就會(huì)出現(xiàn)不夠的情況

目前這個(gè)芯片有260K的flash,可能按普通開發(fā)來說的話,空間肯定夠用
但是目前需要增加盡可能多的功能進(jìn)去,因此代碼量可能有些達(dá)到極限了
頭痛的地方就在這里

編譯結(jié)果顯示代碼量大概在155k左右(我們目前只用了128k flash裝載代碼,剩下的是文件系統(tǒng)用),
keil的優(yōu)化功能已經(jīng)挺厲害的了,至少把代碼都裝進(jìn)去,但是內(nèi)存可就不是那么好省的了
作者: ydz0515    時(shí)間: 2009-6-15 16:03
這還不簡單?
Keil中每個(gè)函數(shù)的參數(shù)和局部變量都可以分別指定其存儲(chǔ)器模式的。例如:
#pragma  compact

void funcA( int i, char x) small
{ char abc;  int *ptr;  //分配在data區(qū)
  .....
}
void funcB( int i, char x) large   
{ char abc;   int *ptr;    //分配在xdata區(qū)
  .....
}

不特別指定的,編譯器按照compact缺省處理。
作者: phoenixmy    時(shí)間: 2009-6-15 16:36
恩,暫時(shí)是按照這種方法處理的,但是使用內(nèi)存的時(shí)候還是得很小心,否則一不小心就會(huì)導(dǎo)致pdata溢出,pdata_group也生成不出來
作者: ydz0515    時(shí)間: 2009-6-16 08:29
本帖最后由 ydz0515 于 2009-6-16 08:31 編輯

那就   #pragma  large                //  或者  #pragma  small

缺省使用xdata/data 區(qū),不用pdata 區(qū)好了。

不必?fù)?dān)心。
作者: phoenixmy    時(shí)間: 2009-6-16 10:12
貌似keil不認(rèn)#pragma  large     ,一編譯就報(bào)錯(cuò),不知道咋回事
作者: ydz0515    時(shí)間: 2009-6-16 16:43
我用的好好的。8K的程序

#pragma large
#include
#include
......

必須放在程序第一條。
作者: phoenixmy    時(shí)間: 2009-6-16 17:05
很郁悶中
rebuild all返:
Target not created

沒有任何error報(bào)告出來
作者: 孤獨(dú)小行星    時(shí)間: 2011-3-26 16:22
準(zhǔn)備學(xué)習(xí)   看看!
作者: erds    時(shí)間: 2011-12-9 20:47
可以試試




歡迎光臨 電子工程網(wǎng) (http://www.54549.cn/) Powered by Discuz! X3.4