国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 13050|回復: 18
打印 上一主題 下一主題

[提問] 有人碰到過keil c51里的pdata_group問題沒有?

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2009-6-8 18:59:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: group , Keil , pdata
不知道怎么回事,pdata_group好像被限制到了0x80左右大小,稍微加點代碼變量之類的就會報告溢出
請問這是怎么回事?
按道理講應該能達到0xff才對啊
沙發
發表于 2009-6-9 11:05:14 | 只看該作者
2個原因:

1、要使pdata有效,必須在COMPACT編譯模式下。
2、需要修改STARTUP.A51文件中的相關條目。(改了嗎?)
3、填寫BL51 LOCATA下的PDATA項。
4、干脆什么都不動,程序中修改P2=XXXX; 就行了。
板凳
 樓主| 發表于 2009-6-10 20:47:06 | 只看該作者
回復二樓,我在啟動文件中看到的是:

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個原因:

1、要使pdata有效,必須在COMPACT編譯模式下。
2、需要修改STARTUP.A51文件中的相關條目。(改了嗎?)
3、填寫BL51 LOCATA下的PDATA項。
4、干脆什么都不動,程序中修改P2=XXXX; 就行了。
ydz0515 發表于 2009-6-9 11:05
地板
發表于 2009-6-11 11:25:18 | 只看該作者
修改這幾條:其他不動。

PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.       //應該設為 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)
;


最好把相關程序貼上來,我幫你實驗一下。
地下室
發表于 2009-6-11 15:34:26 | 只看該作者
要是片內pdata,可能就不一樣了。

我沒試過。可以試試。
6
 樓主| 發表于 2009-6-12 16:50:55 | 只看該作者
先謝謝樓上,的確是片內ram,目前的困擾是,片上flash比較大,260k的容量,因此想盡可能多的放代碼進去,結果pdata就溢出了,樓上有沒有節省ram的好方法?
7
發表于 2009-6-12 20:46:27 | 只看該作者
用位
8
發表于 2009-6-12 20:59:21 | 只看該作者
這個問題好。phoenixmy可以得一本書了吧,菜農兄?
9
發表于 2009-6-13 03:54:16 | 只看該作者
哈哈~~~這個問題很怪異~~~俺真沒遇到過~~~


估計法國本部的老外就腦漿~~~
10
發表于 2009-6-13 11:08:08 | 只看該作者
“因此想盡可能多的放代碼進去,結果pdata就溢出了,樓上有沒有節省ram的好方法?”

pdata怎么是放代碼的?是 Xdata里的一部分。
11
 樓主| 發表于 2009-6-14 10:21:05 | 只看該作者
可能我說的不清楚,樓上理解有些誤會
增加代碼的同時,肯定要申請跟多的局部和全局變量么,這個沒問題吧
因此pdata也罷,xdata也罷,就會出現不夠的情況

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

編譯結果顯示代碼量大概在155k左右(我們目前只用了128k flash裝載代碼,剩下的是文件系統用),
keil的優化功能已經挺厲害的了,至少把代碼都裝進去,但是內存可就不是那么好省的了
12
發表于 2009-6-15 16:03:45 | 只看該作者
這還不簡單?
Keil中每個函數的參數和局部變量都可以分別指定其存儲器模式的。例如:
#pragma  compact

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

不特別指定的,編譯器按照compact缺省處理。
13
 樓主| 發表于 2009-6-15 16:36:48 | 只看該作者
恩,暫時是按照這種方法處理的,但是使用內存的時候還是得很小心,否則一不小心就會導致pdata溢出,pdata_group也生成不出來
14
發表于 2009-6-16 08:29:01 | 只看該作者
本帖最后由 ydz0515 于 2009-6-16 08:31 編輯

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

缺省使用xdata/data 區,不用pdata 區好了。

不必擔心。
15
 樓主| 發表于 2009-6-16 10:12:10 | 只看該作者
貌似keil不認#pragma  large     ,一編譯就報錯,不知道咋回事
16
發表于 2009-6-16 16:43:05 | 只看該作者
我用的好好的。8K的程序

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

必須放在程序第一條。
17
 樓主| 發表于 2009-6-16 17:05:53 | 只看該作者
很郁悶中
rebuild all返:
Target not created

沒有任何error報告出來
18
發表于 2011-3-26 16:22:50 | 只看該作者
準備學習   看看!
19
發表于 2011-12-9 20:47:33 | 只看該作者
可以試試
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷亚洲激情 | 国产成人综合亚洲欧美在 | 在线精品亚洲欧洲第一页 | 亚洲污视频 | 性欧美久久 | 国产精品色| 我与么公激情性完整视频 | 日韩免费视频 | 久久国产精品高清一区二区三区 | 草草日| 日狠狠 | 亚洲欧洲精品视频在线观看 | 国产成人宗合 | 国产欧美亚洲精品综合在线 | 丁香色综合 | 国产免费av片在线观看 | 国内精品手机在线观看视频 | 99热在线只有精品 | 欧美日韩 在线播放 | 久草新视觉 | 精品特级一级毛片免费观看 | 羞羞视频在线观看网站 | 青青草原国产在线视频 | 日韩欧美视频一区二区在线观看 | 成年黄网站在线观看免费 | 在线免费黄色片 | 日本精品久久久久中文字幕 1 | 四虎网站网址 | 欧美一级黄色片免费看 | 毛片在线不卡 | 欧美日韩欧美日韩 | 欧美乱妇高清正版在线观看 | 日韩国产有码在线观看视频 | 国产手机在线观看视频 | 亚洲欧美激情在线 | 国产精品999视频 | 亚洲欧美日韩高清专区一区 | 蜜桃视频一区二区在线看 | 欧美高清正版在线 | 亚洲视频精品 | 窝窝影院午夜看片 |