|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
一條自增語(yǔ)句需要108個(gè)處理器時(shí)鐘? |
| 作者:kkkkdan 欄目:ARM技術(shù) |
T1TC = 0; T1PR = 0; //使用外設(shè)時(shí)鐘,不分頻 T1TCR = 0X01;//開(kāi)啟定時(shí)器 num_cycle ++; T1TCR = 0X00;//關(guān)閉定時(shí)器 time = T1TC; //取出時(shí)間 結(jié)果time的結(jié)果為0x1B,十進(jìn)制就是27,也就是說(shuō)27個(gè)外設(shè)時(shí)鐘周期,好像是108個(gè)處理器時(shí)鐘周期吧 不太可能阿,ARM不是基本上一個(gè)機(jī)器周期執(zhí)行一條指令嗎?num_cycle ++;轉(zhuǎn)化為匯編也沒(méi)幾條語(yǔ)句阿,怎么可能需要108個(gè)呢 到底哪里出錯(cuò)了呢?還是我這種考慮方式不對(duì)啊? |
| 2樓: | >>參與討論 |
| 作者: foyyof 于 2006/12/19 15:36:00 發(fā)布:
VPB總線速度問(wèn)題,時(shí)間消耗在讀取寄存器中了。 你可以做如下的測(cè)試: unsigned LONG varible; //此處要考慮varible是否縊出哦。 while(1) varible++; 定時(shí)1s,然后查看varible的值。這樣才準(zhǔn)確。 |
|
| 3樓: | >>參與討論 |
| 作者: kkkkdan 于 2006/12/19 16:16:00 發(fā)布:
用的smartarm開(kāi)發(fā)平臺(tái) 用的smartarm開(kāi)發(fā)平臺(tái) 在片外ram中調(diào)試 已經(jīng)把BCFG0配置為0x10001460 了 也就是所,訪問(wèn)外部ram的速度已經(jīng)是最快了 |
|
| 4樓: | >>參與討論 |
| 作者: foyyof 于 2006/12/19 16:30:00 發(fā)布:
-_-! |
|
| 5樓: | >>參與討論 |
| 作者: lpc2000 于 2006/12/19 16:41:00 發(fā)布:
this will be a very GOOD interview question:-) |
|
| 6樓: | >>參與討論 |
| 作者: yang_tch 于 2006/12/19 17:12:00 發(fā)布:
是在調(diào)試方式,還是CPU自主方式? 是在調(diào)試方式,還是CPU自主方式? |
|
| 7樓: | >>參與討論 |
| 作者: kkkkdan 于 2006/12/19 17:27:00 發(fā)布:
在什么方式下很重要么? 現(xiàn)在是在JTAG仿真方式,片外ram 用的ADS開(kāi)發(fā)環(huán)境,AXD調(diào)試器 我現(xiàn)在的問(wèn)題,就是程序執(zhí)行的太慢 所以用這種方式看看整個(gè)程序執(zhí)行一邊到底需要多少時(shí)間 每次測(cè)出來(lái)的結(jié)果都比我想象中的要偏大 于是,干脆,就測(cè)一條簡(jiǎn)單的自增語(yǔ)句執(zhí)行的時(shí)間 想不到就花了108個(gè)處理器時(shí)周期 大家有什么提高程序執(zhí)行速度的好方法嗎? 我要在170us的時(shí)間里執(zhí)行一個(gè)程序,170us也就是7650個(gè)處理器周期(系統(tǒng)頻率是45M),單單一個(gè)自增語(yǔ)句就可以花費(fèi)108個(gè)周期,這怎么得了阿 |
|
| 8樓: | >>參與討論 |
| 作者: lpc2000 于 2006/12/20 8:54:00 發(fā)布:
好奇:我有點(diǎn)不相信,自己試了試 停到37的時(shí)候,time的值是16(0x10),所以我看這好像沒(méi)什么錯(cuò)嘛? 反匯編程序看看用了多少指令。沒(méi)用什么中斷吧。看看你優(yōu)化怎么設(shè)的。 我的是最低或者說(shuō)沒(méi)優(yōu)化。 我的環(huán)境是,57.6Mhz CCLK, PPCK是1/2 CCLK,Keil MDK, 程序運(yùn)行在IRAM中。 31: T1TC = 0; 0x40000160 E3A00000 MOV R0,#0x00000000 0x40000164 E59F1050 LDR R1,[PC,#0x0050] 0x40000168 E5810008 STR R0,[R1,#0x0008] 32: T1PR = 0; 0x4000016C E581000C STR R0,[R1,#0x000C] 33: T1TCR = 0X01; 0x40000170 E3A00001 MOV R0,#0x00000001 0x40000174 E5810004 STR R0,[R1,#0x0004] 34: num_cycle++; 0x40000178 E59F0040 LDR R0,[PC,#0x0040] 0x4000017C E5900000 LDR R0,[R0] 0x40000180 E2800001 ADD R0,R0,#0x00000001 0x40000184 E59F1034 LDR R1,[PC,#0x0034] 0x40000188 E5810000 STR R0,[R1] 35: T1TCR = 0X00; 0x4000018C E3A00000 MOV R0,#0x00000000 0x40000190 E59F1024 LDR R1,[PC,#0x0024] 0x40000194 E5810004 STR R0,[R1,#0x0004] 36: time = T1TC; 0x40000198 E1C10000 BIC R0,R1,R0 0x4000019C E5900008 LDR R0,[R0,#0x0008] 0x400001A0 E59F101C LDR R1,[PC,#0x001C] 0x400001A4 E5810000 STR R0,[R1] 37: T1TC = 0; 0x400001A8 E3A00000 MOV R0,#0x00000000 0x400001AC E59F1008 LDR R1,[PC,#0x0008] 0x400001B0 E5810008 STR R0,[R1,#0x0008] |
|
| 9樓: | >>參與討論 |
| 作者: winfeng 于 2006/12/20 10:21:00 發(fā)布:
你用片內(nèi)ram試試! |
|
| 10樓: | >>參與討論 |
| 作者: kkkkdan 于 2006/12/20 14:55:00 發(fā)布:
用片內(nèi)ram試了一下 芯片是LPC2210 time的值是6 也就是說(shuō)用了6個(gè)外設(shè)時(shí)鐘 即:24個(gè)cclk 比使用片外ram快多了 但我還是覺(jué)得有些慢 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |