|
|||||||||||
| 技術(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 |
關(guān)于ARM的FLASH和圖形GUI |
| 作者:airy 欄目:嵌入式系統(tǒng) |
1、S3C44B0的板子,原來(lái)想用一片SST39VF160來(lái)存儲(chǔ)程序和數(shù)據(jù),發(fā)現(xiàn)仿真沒(méi)問(wèn)題,程序?qū)戇M(jìn)FLASH后,對(duì)FLASH的操作函數(shù)都不能使用。應(yīng)該是不能同時(shí)對(duì)FLASH取指和其他操作,也許只能分成兩塊FLASH了。 2、編譯了一個(gè)GUI的例程,使用仿真器一切正常,寫(xiě)入FLASH后在LCD上寫(xiě)字時(shí),屏幕就會(huì)閃動(dòng),會(huì)不會(huì)是FLASH的速度問(wèn)題? 以上問(wèn)題有朋友遇到嗎?有沒(méi)有辦法軟件實(shí)現(xiàn)內(nèi)存映射,在啟動(dòng)的時(shí)候把程序COPY到內(nèi)存中去執(zhí)行呢? |
| 2樓: | >>參與討論 |
| 作者: yappy 于 2006/10/19 16:19:00 發(fā)布:
reply 1.可以將 FLASH 的操作函數(shù)拷貝到 ram 中運(yùn)行: 申請(qǐng)一段 ram 區(qū)域,將 FLASH 操作函數(shù)代碼拷貝到 ram 中, 然后將 ram 首地址強(qiáng)制轉(zhuǎn)換成一個(gè)函數(shù)指針, 調(diào)用這個(gè)指針即可完成對(duì) FLASH 的操作, 2.仿真器程序是在 ram 中運(yùn)行的,實(shí)際程序在 FLASH 中運(yùn)行, ram 和 FLASH 的訪問(wèn)速度不一樣(ram 速度快得多), 造成了這種情況。 44b0 好像沒(méi)有地址重映射功能, 你可以做一段簡(jiǎn)單的 bootloader,將代碼拷貝到 ram 中后運(yùn)行, 這樣順便也解決了第一個(gè)問(wèn)題 |
|
| 3樓: | >>參與討論 |
| 作者: airy 于 2006/10/19 18:15:00 發(fā)布:
Thanks 正在寫(xiě)點(diǎn)代碼測(cè)試硬件仿真和把代碼放入FLASH執(zhí)行的速度差別。 44B0是沒(méi)有地址重映射功能。我想在Bootloader中把整個(gè)FLASH導(dǎo)入RAM中去,不過(guò)編譯時(shí)要花點(diǎn)功夫了。 |
|
| 4樓: | >>參與討論 |
| 作者: airy 于 2006/10/20 11:16:00 發(fā)布:
做了一小試驗(yàn) 一個(gè)循環(huán)0xfffffff次的延時(shí)代碼,在硬件仿真中時(shí)間27s,在FLASH中執(zhí)行只要21s。 直接把程序代碼Copy到RAM中可以實(shí)現(xiàn),但是運(yùn)行時(shí)應(yīng)該會(huì)有問(wèn)題,因?yàn)槌绦虼a是絕對(duì)地址,除非在編譯時(shí)把程序代碼直接定義在RAM中。 在沒(méi)有地址重映射功能的CPU中,我想應(yīng)該也可以實(shí)現(xiàn),只是要復(fù)雜一些。 初步設(shè)想,把程序分成兩塊來(lái)編譯,一塊Bootload負(fù)責(zé)初始化RAM、搬遷程序代碼,把其他程序編譯到RAM的地址,通過(guò)ARMLink程序把兩者連接成一段代碼,寫(xiě)入FLASH,非矢量的中斷處理程序有些細(xì)節(jié)還沒(méi)很清晰。 |
|
| 5樓: | >>參與討論 |
| 作者: ecurb2006 于 2006/10/20 12:19:00 發(fā)布:
可以使用緩沖 >編譯了一個(gè)GUI的例程,使用仿真器一切正常,寫(xiě)入FLASH后在LCD上寫(xiě)字時(shí),屏幕就會(huì)閃動(dòng),會(huì)不會(huì)是FLASH的速度問(wèn)題? LCD上寫(xiě)字,如果是直接寫(xiě),會(huì)大量調(diào)用畫(huà)點(diǎn)函數(shù),會(huì)出現(xiàn)閃爍。 可以先‘寫(xiě)’在一個(gè)內(nèi)存區(qū)域里(緩沖),‘寫(xiě)’完后。 直接拷貝緩沖到顯存,完成顯示。 |
|
| 6樓: | >>參與討論 |
| 作者: airy 于 2006/10/20 14:00:00 發(fā)布:
對(duì),就是使用緩沖寫(xiě)的 如果不使用緩沖,仿真器仿真時(shí)也會(huì)有閃動(dòng)的。 |
|
| 7樓: | >>參與討論 |
| 作者: airy 于 2006/10/20 18:17:00 發(fā)布:
不使用代碼搬移,有沒(méi)有更好的辦法? 1、在沒(méi)有地址重映射的系統(tǒng),把代碼搬移到RAM中執(zhí)行,沒(méi)有嘗試過(guò),并且,仿真起來(lái)也很麻煩,實(shí)在不行,只好增加一塊FLASH.html">FLASH了 2、發(fā)現(xiàn)寫(xiě)入FLASH后,程序不是慢了,而是更快了,而LCD控制器竟然跟程序執(zhí)行速度有關(guān),從示波器看來(lái)SCLK的頻率并沒(méi)有改變,但是在寄存器中把它改慢之后確實(shí)是LCD不閃了,具體原因還沒(méi)搞明白,也許是DATA送的快了的緣故吧 |
|
| 8樓: | >>參與討論 |
| 作者: ecurb2006 于 2006/10/20 18:30:00 發(fā)布:
可以嘗試監(jiān)測(cè)LCD的刷新頻率 也是一個(gè)防止閃爍的方法。 * - 本貼最后修改時(shí)間:2006-10-20 18:31:14 修改者:ecurb2006 |
|
| 9樓: | >>參與討論 |
| 作者: airy 于 2006/10/23 9:11:00 發(fā)布:
對(duì) 只是沒(méi)搞明白為什么程序?qū)懺诓煌牡胤絃CD的表現(xiàn)就不同 |
|
| 10樓: | >>參與討論 |
| 作者: ecurb2006 于 2006/10/23 13:32:00 發(fā)布:
? >只是沒(méi)搞明白為什么程序?qū)懺诓煌牡胤絃CD的表現(xiàn)就不同 不同的地方?你的LCD是怎么寫(xiě)入像素的?顯示區(qū)緩沖是完整的一塊區(qū)域, 還是使用換頁(yè)機(jī)制,進(jìn)行訪問(wèn)。如果是換頁(yè)機(jī)制,會(huì)出現(xiàn)在一些區(qū)域?qū)懭胨俣瓤,一些區(qū)域慢的現(xiàn)象,這是正常的。 |
|
| 11樓: | >>參與討論 |
| 作者: airy 于 2006/10/24 10:29:00 發(fā)布:
跟我的猜測(cè)差不多 LCD采用換頁(yè)機(jī)制進(jìn)行顯示.看到兩種情況下,LCD控制線的信號(hào)沒(méi)什么差異,數(shù)據(jù)線數(shù)據(jù)不好測(cè),可能只是數(shù)據(jù)傳輸速率稍有差別。我的解決方法是把CLK信號(hào)頻率降低。 總結(jié)原因,硬件仿真時(shí),程序執(zhí)行速度慢,數(shù)據(jù)傳輸速率低,而燒寫(xiě)入FLASH后,程序執(zhí)行速度快了,DATA信號(hào)線傳輸速度超過(guò)LCD可以的最高速度(不過(guò)在LCD的Datasheet里面并沒(méi)有這一點(diǎn))導(dǎo)致閃屏 |
|
| 12樓: | >>參與討論 |
| 作者: ecurb2006 于 2006/10/24 15:53:00 發(fā)布:
呵呵 一般無(wú)論是在嵌入式系統(tǒng)還是PC系統(tǒng),顯示系統(tǒng)的刷新頻率都會(huì)低于數(shù)據(jù)傳輸?shù)。如果你能監(jiān)測(cè)到LCD刷新,等最近的一次刷新完成后,你就把數(shù)據(jù)填充到顯示區(qū)緩沖,也就是最好在LCD刷新之間,寫(xiě)入數(shù)據(jù),那么你的應(yīng)該程序會(huì)表現(xiàn)得很平滑,呵呵,我想應(yīng)該是這樣的:) |
|
| 13樓: | >>參與討論 |
| 作者: lw2008 于 2006/12/20 14:30:00 發(fā)布:
2年前我是用拷貝平移解決的 |
|
| 14樓: | >>參與討論 |
| 作者: airy 于 2006/12/22 0:16:00 發(fā)布:
拷貝平移? 樓上的能否講的詳細(xì)一點(diǎn)? 我想應(yīng)該可以實(shí)現(xiàn),只是沒(méi)搞清楚RDS怎么設(shè)置,而且,不清楚在沒(méi)有地址映射的MCU上軟件實(shí)現(xiàn)地址重映射穩(wěn)定性怎樣,比如中斷入口、數(shù)據(jù)區(qū)初始化等問(wèn)題都是比較麻煩的事情,等有時(shí)間再靜下心來(lái)嘗試一下 |
|
| 15樓: | >>參與討論 |
| 作者: lw2008 于 2006/12/29 13:18:00 發(fā)布:
將仿真時(shí)內(nèi)存程序拷入閃存,再上電加載。 |
|
|
|
| 免費(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) |