反編譯ram耗盡
A. 我的畢業設計用STC89C52,在keil中用at89C52頭文件編譯時提示ram不夠,怎樣可以解決
RAM不夠明顯是你在RAM使用中太大手大腳了,52差不多有200位元組可以使用,應該能滿足大部分項目的要求了。你看看是不是全局數組開太多了,建議你開個數組後,盡量用指針。變數能用局部的就不要開全局。
另外,這兩個晶元是兼容的,RAM大小也一樣。
B. 哪個朋友們知道ARM反編譯中的關鍵技術的研究
不知道這位朋友是學什麼專業的?對咐團嵌入式有多少了解?
C語言不好的話先學C語言,C語言很好的話就要看arm體系結構及編程、gun/linux編程等書。
要學的東西很多,嵌入式不是一蹴而就的。多看看別人的程序,不過必須肯定一點,就是必須要用C語言,無論什麼都是C編的。
無論做什麼都要對linux內核有足夠的了解,因為他們基本都是編譯在一起的蘆遲,因為arm的ROM空間有衡嘩橘限,不像PC機有那麼大的RAM和磁碟空間。
個人覺得還是做驅動比較好,就多看看驅動方面的程序,成品有很多(都是C語言邊的,嵌入式中很少有匯編,除非必須,如bootloader的第一階段stage1),基本都大同小異,改一改都可以用,主要是看一下他們的設計思想,前途一片光明。
還要多看看linux編程和unix編程,因為他們都支持POSIX,互相兼容,linux也是在unix的基礎上發展起來的。
最主要的是持之以恆,祝你好運!!!
C. 寫單片機程序,變數太多了,無法編譯,但是使用的單片機,RAM是很大的,怎麼辦
加入ABSACC.H頭文件,使用XBYTE關鍵字將部分變數定義到1024位元組的薯做XRAM中散拆。
這樣數掘衡你就有1024位元組的RAM空間使用了。
D. 在電腦中,LDR是什麼意思
LDR文件是ROM里的程序,你反編譯裡面的代碼,是DSP的匯編程序,分析程序那麼
硬碟的結構你就都知道了,就好比電腦里的操作系統WIN98!RAM就是ROM里的
程序運行過程中生成的,比如一些堆棧,狀態等,跟電腦里的內寸一樣!碟片
上面的是叫做固件嗎?就是一個列表,讓ROM中的程序來讀的,就象資料庫一樣。
有朋友說美鑽的硬碟電路板上耐察看不到ROM晶元,(不知道是不是真沒有,還是著位
老兄看差了!)那就一定在DSP晶元內部了。DSP內部也有ROM和RAM,不過都
很小,如果程序放不下就需要擴展,擴展後我們在電路板上看到的ROM晶元了。
如果沒有ROM的話那麼RAM就鉛明一定很大,因為ROM程序應該沒有用途的,它就是一
些跳轉和內存分配的程昌激茄序,將硬碟上的真正的啟動程序讀出來放到RAM里,然後
在RAM里執行!這樣有好處是降低成本。
E. 如何反編譯IMG(內核)文件
先介紹一下編譯核心的選項,希望能對大家消除對內核的神秘感有所幫助。
1.代碼成熟等級
2..處理器類型和特色
3.對模塊的支持
4.基本的選擇
5.即插即用支持
6.塊設備支持
7.網路選項
8.電話支持
9.SCSI設備的支持
10.I2O介面適配器
11.網路設備支持
12.配置業余無線廣播
13.紅外支持
14.ISDN的文件系統
15.舊型的光碟機類型(非IDE界面的光碟機)
16.字元設備
17.USB支持
18.文件系統
19.控制台驅動
20.音效卡驅動
21.Kernel hacking
第二節 內核版本
由於Linux的源程序是完全公開的,任何人只要遵循GPL,就可以對內核加以修改並發布
給他人使用。Linux的開發採用的是集市模型(bazaar,與cathedral--教堂模型--對應
),為了確保這些無序的開發過程能夠有序地進行,Linux採用了雙樹系統。一個樹是穩
定樹(stable tree),另一個樹是非穩定樹(unstable tree)或者開發樹(developm
ent tree)。一些新特性、實驗性改進等都將首先在開發樹中進行。如果在開發樹中所
做的改進也可以應用於穩定樹,那麼在開發樹中經過測試以後,在穩定樹中將進行相同
的改進。一旦開發樹經過了足夠的發展,開發樹就會成為新的穩定樹。開發數就體現在
源程序的版本號中;源程序版本號的形式為x.y.z:對於穩定樹來說,y是偶數;對於開
發樹來說,y比相應的穩定樹大一(因此,是奇數)。確定是以″ root ″的身份簽入,
然後cd 到 /usr/src 。uname -r 這個指令將會顯示版本。內核版本的更新可以訪問<h
ttp://www.kernel.org/>。
第三節 編譯原因
Linux作為一個自由軟體,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了
舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的
系統度身定製一個更高效,更穩定的內核,就需要重新編譯內核。
通常,更新的內核會支持更多的硬體,具備更好的進程管理能力,運行速度更快、更穩
定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是
Linux使用者的必要操作內容。
為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主
要有下面四個考慮:
---自己定製編譯的內核運行更快(具有更少的代碼)
---系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)
---不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞
---將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些
以上是針對成熟的Linux套件如Redhat Linux而言,我的目的是為建造嵌入式Linux操作系
統做准備,也是必由之路。
第四節 准備工作
第一部分 新版本內核的獲取和更新
Linux內核版本發布的官方網站是< http://www.kernel.org/>,國內各大ftp上一般都可
以找到某些版本的內核。新版本的內核的發布有兩種形式,一種是完整的內核版本,另
外一種是patch文件,即補丁。完整的內核版本比較大,比如linux-2.4.0-test8.tar.b
z2就有18M之多。完整內核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分別
是使用gzip或者bzip2進行壓縮的文件,使用時需要解壓縮。patch文件則比較小,一般
只有幾十K到幾百K,極少的會超過1M。但是patch文件是針對於特定的版本的,需要找到
自己對應的版本才能使用。
編譯內核需要root許可權。把需要升級的內 拷貝到/usr/src/下(下文中以2.2.16的內核
的linux-2.2.16tar.gz為例),命令為
#cp linux-2.2.16tar.gz /usr/src
先查看當前/usr/src的內容,注意到有一個linux的符號鏈接,它指向一個類似於linux
-2.2.14(對應於現在使用的內核版本號)的目錄。首先刪除這個鏈接:
#cd /usr/src
#rm -f linux
現在解壓下載的源程序文件。如果所下載的是.tar.gz(.tgz)文件,使用命令:
#tar -xzvf linux-2.2.16tar.gz
如果下載的是.bz2文件,例如linux-2.2.16tar.bz2,使用命令
#bzip2 -d linux-2.2.16tar.bz2
#tar -xvf linux-2.2.16tar
現在再來看一下/usr/src下的內容,發現現在有了一個名為linux的目錄,裡面就是需要
升級到的版本的內核的源程序。還記得那個名為linux的鏈接么?之所以使用那個鏈接就
是防止在升級內核的時候會不慎把原來版本內核的源程序給覆蓋掉了。現在也需要同樣
處理:
#mv linux linux-2.2.16
#ln -s linux-2.2.16 linux
如果還下載了patch文件,比如patch-2.2.16,就可以進行patch操作(下面假設patch-
2.2.16已經位於/usr/src目錄下了,否則需要先把該文件拷貝到/usr/src下):
#patch -p0 < patch-2.2.16
第二部分 准備主機板和相關硬體的說明手冊
其實也不用太詳細,只要知道您的硬體是屬於哪一類型就行了。例如:有一張SCSI卡,
那就要知道這張卡的名字,有一台cd-rom,就要知道這台光碟機是哪一種牌子的,是否為標
準的IDE/ATAPI界面,還是另有專屬介面卡呢?或者,主機版是否有支持Triton晶元(通
常586以上的電腦常有),這些信息能幫助我們,使得設定變得清楚且容易。
因此,不管您有什麼使用手冊,准備好吧。即使現在不用,將來還是會用到的(設X-w
indow system時要顯示卡的手冊)。
第三部分 檢查音效卡的IRQ設定和其種類
如果配有一張音效卡,除了要知道卡的種類外(例如 Sound Blaster)還需要知道這張卡
的IRQ地址。一般來說,盧卡的IRQ地址是5或7而IO地址則為220。DMA則l,不過,有時不
同的音效卡可能會有不同的設定。因為稍後的選項里,就會要填入這些數字。
第四部分 編譯核心的硬體需求
在編譯核心時,確定您的RAM最好在8MB以上, 否則可能會很慢而且問題會很多,記得查
看swap有沒有打開(用free指令)。此外,最好不要超頻,不然很有可能會發生signal
11的錯誤,使得編到一半的核心停了下來,其實編譯核心就好比編譯程序一樣,只是因
為構成核心的程序太多了,因此我們能小心盡量小心。
F. Adobe Flash CS5的反編譯Flash
Flash CS5中包含:矢量圖,聲音,圖片,片段,字體,文本,腳本等復雜元素。我們常說的flash反編譯,就是解析Flash ,把Flash導出的格式(常見的為swf和exe)再編譯成fla格式,提取出swf或exe中的矢量圖,將圖片,片段,聲音,字體,文本,腳本等盡量還原成原來fla格式,即flash可編輯格式。 ·Intel Pentium 4或AMD Athlon 64處理器
·帶有Service Pack 2(建議使用Service Pack 3)的Microsoft Windows XP;帶有Service Pack 1的Windows Vista Home Premium、Business、Ultimate或Enterprise;或者Windows 7。
·1GB的RAM。
·3.5GB的可用於安裝的硬碟驅動器空間;在安裝過程中所需的額外空閑空間(不能安裝在基於可移動閃盤的存儲設備上)。
·1024×768的顯示屏(建議使用1280×800)以及16位的視頻卡。
·DVD-ROM驅動器。
·多媒體特性所需的QuickTime 7.6.2軟體。 ·多核Intel處理器。
·Mac OS X版本10.5.7或版本10.6。
·1GB的RAM。
·4GB的可用於安裝的硬碟驅動器空間;在安裝過程中所需的額外空閑空間(不能安裝在使用區分大小寫的文件系統的卷上或者基於可移動閃盤的存儲設備上)
G. 怎麼看 CCS 編譯後 代碼的ROM 和RAM空間用掉了多少
編譯完後下方信息欄中有個program size,data顯示用了多少片內ram,xdata顯示用了多少片外ram,code顯示用了多少rom
H. 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
I. 怎麼知道單片機的rom ram是否已經用完
程序編譯以後會有RAM和ROM的使用巧襪信息,超過了你就知道了。中斷的存儲空間,現在基本上是中斷那隻存一個跳轉指令,跳轉到中斷服務程序,不過中敬陵斷裡面還是盡量少放指令,減少程序在中斷的耽擱時間,盡量把處理放在主孝稿激程序里。
J. 怎麼看單片機自帶的ROM/RAM夠不夠用
這個主要是看所做項目大小,程啟滾序大小與ROM掛鉤,從程序量上估計ROM是否夠用,變知旁純量的多少與RAM有關,從變數的多少估算RAM是否夠用。單搭咐片機運行是不佔用或很少佔用內存的。