|
|||||||||||
| 技術(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 |
Keil C編譯器在程序代碼較大時(shí)的問(wèn)題 |
| 作者:aibxyz 欄目:單片機(jī) |
偶的一個(gè)程序,在目標(biāo)代碼50k的時(shí)候還好好的,可是我只是加了一些代碼(沒(méi)動(dòng)原來(lái)的那些) 結(jié)果就出問(wèn)題了,編譯通過(guò)都正常,可是我把程序下載下去運(yùn)行不正常,如t9拼音輸入法在拼"ce"時(shí)前面會(huì)多一個(gè)亂碼,有些菜單進(jìn)去后退出無(wú)法正常顯示,程序跑飛等。這時(shí)目標(biāo)代碼也就53k 我可以保證新加的那些代碼決不會(huì)影響原來(lái)的程序執(zhí)行。 然后我找了好久,試了試把keil編譯的優(yōu)化級(jí)別從6降到1,這時(shí)代碼差不多64k了,下載下去大多數(shù)原來(lái)的問(wèn)題都解決了,就是還有些不對(duì),比如那個(gè)t9的(所有這些出問(wèn)題的地方我都沒(méi)去動(dòng)的。=裉,我又把程序分頁(yè)試了試(分兩個(gè)bank),還是和原來(lái)一樣的問(wèn)題。 難道keil的優(yōu)化等級(jí)高了會(huì)導(dǎo)致程序出問(wèn)題? (我用的是uPSD的3234,51內(nèi)核) |
| 2樓: | >>參與討論 |
| 作者: admin 于 2004/10/19 11:06:00 發(fā)布:
優(yōu)化有時(shí)是有問(wèn)題的,有些明明有用的代碼在某些程況下也會(huì)被優(yōu)化掉! 可以在編譯后看看有那些程序沒(méi)有生成代碼的,找到后看看是什么原因給代化了! |
|
| 3樓: | >>參與討論 |
| 作者: aibxyz 于 2004/10/19 12:56:00 發(fā)布:
不是簡(jiǎn)單的優(yōu)化掉一些代碼 而是優(yōu)化出錯(cuò)誤了,昨天聽(tīng)一位大大說(shuō)了keil的一個(gè)bug 今天改了之后還是不行 郁悶啊 |
|
| 4樓: | >>參與討論 |
| 作者: johnk_yu 于 2004/10/20 14:04:00 發(fā)布:
其實(shí),應(yīng)該還是程序不嚴(yán)密的問(wèn)題。看看定義參數(shù)和實(shí)際使用的是否會(huì)超出定義的范圍。 |
|
| 5樓: | >>參與討論 |
| 作者: aibxyz 于 2004/10/21 14:08:00 發(fā)布:
haha 問(wèn)題終于找到了,是偶使用了指針來(lái)調(diào)用函數(shù) 編譯器無(wú)法計(jì)算出嵌套深度,在優(yōu)化時(shí),某些空間被重疊了 |
|
| 6樓: | >>參與討論 |
| 作者: 我是一條魚 于 2004/10/26 16:25:00 發(fā)布:
優(yōu)化后,會(huì)出問(wèn)題的,我以前體會(huì)過(guò),同樣程序,用優(yōu)化和沒(méi)有優(yōu)化,結(jié)果不同 |
|
|
|
| 免費(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) |