|
|||||||||||
| 技術(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 |
用C語言定義RAM的全局變量在連續(xù)單元問題 |
| 作者:qxkj_yaoms 欄目:ARM技術(shù) |
你們好!, 1. 我想把設(shè)置的多個系統(tǒng)參數(shù)連續(xù)保存在RAM里,定義全局變量時是怎么定義變量在連續(xù)單元,把RAM的中數(shù)據(jù)保存到CPU的FLASH里.用于掉電保護設(shè)置參數(shù),然而在IAP應(yīng)用程序中.把RAM中的數(shù)據(jù)保存到FLAH中是連續(xù)的單元(256/512/1024). . 2.還有保存到CPU中的FLASH的數(shù)據(jù),在IAP應(yīng)用程序中沒有從FLASH中讀出數(shù)據(jù)函數(shù),所以本個不知道怎么樣才能指定位置讀出,讀出來的值再給付給RAM中的變量. 上面兩點是本人想用FLAH來保存參數(shù),用于掉電保護, 請問那位大俠使用ARMLPC2132用個這種方式來保存設(shè)置參數(shù),和一些采集的重要數(shù)據(jù),有沒有例程,給我發(fā)一個,剛學(xué)ARM, QQ 253006576 EMAIL:qxkj_yaoms@tom.com. |
| 2樓: | >>參與討論 |
| 作者: yuzhuju 于 2005/10/9 13:09:00 發(fā)布:
我也想這么做,不過好象沒這么簡單的 好象不能直接用*savebuf,要什么分散加載 |
|
| 3樓: | >>參與討論 |
| 作者: qxkj_yaoms 于 2005/10/10 8:28:00 發(fā)布:
請高手請教 我在周立功所有出版的ARM書都查了一遍,都沒有講到怎樣保存數(shù)組的數(shù)據(jù)把備份到FLASH里中去, 也沒有指定FLASH中的單元讀出數(shù)據(jù)的例程, 我想問一下周功的LP2132有沒有這種功能,如里沒有,就跟我說沒有,以便我想其他的辦法保存設(shè)置參數(shù),如果有,能否給我們一個把數(shù)據(jù)寫入FALSH 和從FLASH中讀出的例程. 使我們更好掌握LPC2132這顆芯片. |
|
| 4樓: | >>參與討論 |
| 作者: zlgarm 于 2005/10/10 9:02:00 發(fā)布:
re: 1. 寫數(shù)據(jù)到片內(nèi)FLASH,調(diào)用IAP來實現(xiàn),調(diào)用RamToFlash函數(shù)時提供數(shù)據(jù)源地址即可(取數(shù)組的地址). 2. 讀數(shù)據(jù)不需要調(diào)用IAP,直接使用指針來讀取即可,如下: uint32 *pread; pread = (uint32 *) 0x00004000; dat[1] = *pread; ... |
|
| 5樓: | >>參與討論 |
| 作者: qxkj_yaoms 于 2005/10/11 8:32:00 發(fā)布:
ASK? int main(void) { uint8 err; uint32 i; uint8 savebuf[256]; for(i=0;i<10;i++) savebuf[i]= i+30; IO0DIR = BEEP; IO0SET = BEEP; IAP_Entry = (void(*)())IAP_ENTER_ADR; // 初始化函數(shù)指針I(yè)AP_Entry for(i=0;i<10;i++) savebuf[i]= i+30; ReadParID(); // 讀器件ID BootCodeID(); // 讀Boot版本號 SelSector(1,1); // 選擇扇區(qū)1 EraseSector(1,1); // 擦除扇區(qū)1 BlankCHK(1,1) ; // 查空扇區(qū)1 SelSector(1,1); // 選擇扇區(qū)1 // RamToFlash(0x00001000, 0x40001000, 256); // 寫數(shù)據(jù)到扇區(qū)1 // err = Compare(0x00001000, 0x40001000, 256); // 比較數(shù)據(jù) // 比較數(shù)據(jù) RamToFlash(0x00001000, *savebuf, 256); // 寫數(shù)據(jù)到扇區(qū)1 err = Compare(0x00001000, *savebuf, 256); if(err == CMD_SUCCESS) { /* 成功,蜂鳴一聲 */ IO0CLR = BEEP; for (i=0; i<0x3FFFFF; i++); IO0SET = BEEP; } else { /* 失敗,一直蜂鳴 */ IO0CLR = BEEP; } while(1); return(0); } 在以上的例程中如果用: RamToFlash(0x00001000, 0x40001000, 256); // 寫數(shù)據(jù)到扇區(qū)1 err = Compare(0x00001000, 0x40001000, 256); // 比較數(shù)據(jù) eer返回為0 成功,蜂鳴器只叫一聲, 但是如果保存數(shù)組里的里的數(shù)據(jù),返回的是CD 蜂鳴器一直在叫,保存不成功 savebuf[256]是保存數(shù)據(jù)的數(shù)組, RamToFlash(0x00001000, *savebuf, 256); // 寫數(shù)據(jù)到扇區(qū)1 err = Compare(0x00001000, *savebuf, 256); 返回的是CD 失敗 ,蜂鳴器一直在叫,保存不成功 ???????這又是為什么,能否幫我指點下,????????????? |
|
| 6樓: | >>參與討論 |
| 作者: exdata 于 2005/10/11 8:44:00 發(fā)布:
re 要保證savebuf落在內(nèi)部RAM中就ok,看情況你的savebuf地址不是在內(nèi)部RAM中。 |
|
| 7樓: | >>參與討論 |
| 作者: qxkj_yaoms 于 2005/10/11 10:34:00 發(fā)布:
ASK?? 請問高手在C語言中定義數(shù)組,不像匯編語言那樣,能夠指定在那個單元的RAM 面C語言是由編譯器自動分配的, 那么要把SAVEBUF定義在RAM中的某個位置,在C語言中是怎么去定義的呢 |
|
| 8樓: | >>參與討論 |
| 作者: qxkj_yaoms 于 2005/10/12 10:44:00 發(fā)布:
真令人想不通 周立功所做技術(shù)支持的論談的人,是不是對LPC系列ARM是不很熟悉,怎么不能解決我所提出問題,就是對ARM的LPC系列把RAM中數(shù)據(jù)保存FLASH中去,在買套件時,隨機的一本書里,雖然有一個IAP 應(yīng)用例程, 但是又不能移值實際的程序中去,又有什么用呢, 就如我上面所說的 把0x40001000 變?yōu)镾AVEBUF數(shù)組指針,保存到FLASH中出錯, 比較后返回的EER 為0X0D 在書上也沒有說明,這是什么錯誤類型, 我所做的很多FLASH單片機,能把數(shù)據(jù)保存到FLASH中去的,都有一個很好的例程,如何把RAM中的數(shù)據(jù)保存到FLASH 中去,,又如何從FLASH中讀出保存到RAM中定義數(shù)組中去.還有用你們的工程開模塊,下栽程序后,經(jīng)常程序運行到數(shù)據(jù)終止,認我們自已寫的程序無法調(diào)試, 如果這些問題都不能解決,給學(xué)習(xí)開發(fā)LCP系列的ARM研發(fā)工程師當頭一棒,使正在學(xué)習(xí)用LPC系列ARM喪失信心, 周立功的ARM系列芯片又怎么去推廣呢, |
|
| 9樓: | >>參與討論 |
| 作者: eleven11 于 2005/10/12 13:18:00 發(fā)布:
ZLG提高的功能部件的例子確實太簡單了 一個IAP當時花了我好幾天時間,不過最后終于可以穩(wěn)定的在FLASH和ram中交換數(shù)據(jù)了,很多東西由于zlg提高的例子由于太簡單了,還要仔細琢磨才能實際中運行,iap,樓主查下舊的貼子吧,當時我也是查舊帖子花了好幾天才成功的 |
|
| 10樓: | >>參與討論 |
| 作者: aoarm 于 2006/1/21 13:12:00 發(fā)布:
請問:eleven11 請問一下你是怎么實現(xiàn)數(shù)組里的數(shù)據(jù)到FLASH里面的呢? 我也用IAP,但是數(shù)組定位問題解決不了的 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |