|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
不跪不求,芝麻開門 |
| 作者:hotpower 欄目:ARM技術(shù) |
哈哈,自己研究已經(jīng)... 2個問題已解決1個... |
| 2樓: | >>參與討論 |
| 作者: boy123 于 2006/2/17 21:53:00 發(fā)布:
什么問題??? |
|
| 3樓: | >>參與討論 |
| 作者: 云中月8888 于 2006/2/17 21:56:00 發(fā)布:
恭喜.... 恭喜hotpower!
|
|
| 4樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/18 3:09:00 發(fā)布:
暈到~~~在RV/C++下調(diào)用malloc()就死機 不知為何跑到SWI中斷中,中斷號0xab.故死機(死循環(huán)). 文件:main.cpp #include <ARTX.h> #include <LPC213x.H> // PHILIPS Peripheral Registers #include <LPC213xDEF.H> //ARM菜鳥HotPower創(chuàng)建定義文件(新版) #define __cplusplus #include <stdlib.h> #include <string.h> #include <stdio.h> #include "main.h" ................... int main (void) { int i, j, k; CHAR * m; m = (CHAR *)malloc(10);//死機 if (m == NULL) return 0; i = 1; j = 2; k = add (i, j); if (k == 0) return 0; os_sys_init (MainTask);//啟動ARTX,此函數(shù)并不返回main() } 文件:SWI.S ; /*------------------- User SWI -------------------------------*/ User_swi STMDB SP!,{R8,LR} ;SWI1~SWI7 LDR R8,SWI_Count CMP R12,R8 BCS SWI_Dead;R12>R8,非法的SWI,直接退出 ADR R8,SWI_Table LDR R12, [R8,R12,LSL #2] ; Load SWI Function Address MOV LR,PC BX R12 ; Call SWI function LDMIA SP!,{R8,PC}^;返回SWI命令調(diào)用處 ;非法SWI命令在此處死機 SWI_Dead B SWI_Dead ; None Existing SWI |
|
| 5樓: | >>參與討論 |
| 作者: yyccaa 于 2006/2/18 10:49:00 發(fā)布:
問一下 SWI_Count是多少,是malloc的大小嗎(就是10)?看起來malloc是用swi實現(xiàn)的,是不是malloc語句直接就跳到swi了?r12怎么來的,誰給它賦值的? 暫時沒接觸到在arm上用c++寫程序(菜鳥里的菜鳥了),不過c++里不是用new更多嗎? |
|
| 6樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/18 12:46:00 發(fā)布:
new/malloc都不行 郁悶...自己重載new也不行...c是可以的. |
|
| 7樓: | >>參與討論 |
| 作者: 云中月8888 于 2006/2/18 18:22:00 發(fā)布:
啟動代碼的問題? keil給出的keil arm的啟動代碼和realview的啟動代碼不同,所以keil arm用malloc可以,realview不行 將啟動代碼中的: Heap_Size EQU 0x00000000 改為: Heap_Size EQU 0x00001000 ;根據(jù)需要設(shè)置 就可以了 啟動代碼堆的長度為0,當然不行了,進入realview自定義的swi中??? * - 本貼最后修改時間:2006-2-18 22:00:05 修改者:云中月8888
|
|
| 8樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/18 22:16:00 發(fā)布:
謝謝云中月!!! 仔細看了RV的例子,啟動代碼和KARM有很大區(qū)別. 看來要學3種匯編了...KARM,ADS,Realview...暈到... Realview的STARTUP.S ![]() Realview的STARTUP.S ![]() * - 本貼最后修改時間:2006-2-18 22:18:17 修改者:hotpower |
|
| 9樓: | >>參與討論 |
| 作者: 云中月8888 于 2006/2/18 22:21:00 發(fā)布:
用數(shù)組比較好 用malloc如果處理不好,容易引起系統(tǒng)崩潰. 用數(shù)組簡單,安全,也不用關(guān)心啟動代碼 |
|
| 10樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/18 23:05:00 發(fā)布:
我主要是想發(fā)揮C++的優(yōu)勢 在C++中,一般肯定都用new/delete. 在C用處理字符串是件極為痛苦和郁悶的事情,故構(gòu)造String類是C++較C之"美德". String s,s1,s2; s1 = "痛苦"; s2 = "郁悶"; s = s1 + s2; 哈哈,s即為"痛苦郁悶"... 總之,我這次玩ARM就是要玩C++,C早已沒興趣,也打動不了我的心. 我之所以首個選擇LPCARM,主要是有你們這些"暈友"...我玩的很開心... |
|
| 11樓: | >>參與討論 |
| 作者: eleven11 于 2006/2/19 12:25:00 發(fā)布:
C++的new/delete會不會引起內(nèi)存碎片? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |