• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      智能終端中正確高效地使用Flash的研究

      2016-02-24 03:45:00雷,程
      關(guān)鍵詞:扇區(qū)命令錯(cuò)誤

      趙 雷,程 瑤

      (1.中國電子科技集團(tuán)公司第10研究所,四川 成都 610000;2.重慶理工大學(xué) 電子信息與自動(dòng)化學(xué)院,重慶 400050)

      智能終端中正確高效地使用Flash的研究

      趙 雷1,程 瑤2

      (1.中國電子科技集團(tuán)公司第10研究所,四川 成都 610000;2.重慶理工大學(xué) 電子信息與自動(dòng)化學(xué)院,重慶 400050)

      隨著當(dāng)今寬帶無線接入技術(shù)和移動(dòng)終端技術(shù)的飛速發(fā)展,移動(dòng)互聯(lián)網(wǎng)得到了迅猛發(fā)展。Flash閃存作為一種非易失性存儲(chǔ)器在智能移動(dòng)終端中得到了非常廣泛的應(yīng)用。文中以S3C2410A處理器和RC28F256P30 Flash為平臺(tái),討論了Flash在移動(dòng)互聯(lián)網(wǎng)應(yīng)用中的常見問題,對Flash的互斥訪問、操作結(jié)果狀態(tài)判斷以及地址對齊問題進(jìn)行了實(shí)驗(yàn)分析。通過分析和實(shí)驗(yàn)驗(yàn)證說明,對Flash的讀、寫及擦除等操作需要互斥進(jìn)行,各種操作不能出現(xiàn)交叉,否則將無法得到預(yù)期的結(jié)果;在寫入、擦除等操作后需要對操作結(jié)果進(jìn)行全面的狀態(tài)判斷,以免出現(xiàn)錯(cuò)誤的結(jié)果;在對Flash訪問時(shí)需要注意地址對齊問題,否則可能會(huì)出現(xiàn)數(shù)據(jù)的錯(cuò)位。通過遵守上面的原則,可以避免在Flash使用中的錯(cuò)誤。

      移動(dòng)互聯(lián)網(wǎng);Flash;互斥訪問;狀態(tài)判斷;對齊訪問

      0 引 言

      移動(dòng)互聯(lián)網(wǎng)是指通過智能移動(dòng)終端,采用移動(dòng)無線通信方式獲取網(wǎng)絡(luò)服務(wù)。隨著寬帶無線接入技術(shù)和移動(dòng)終端技術(shù)的飛速發(fā)展,移動(dòng)互聯(lián)網(wǎng)得到了迅猛發(fā)展,它已經(jīng)滲透到了人們生活和工作的方方面面,改變了人類的生活方式。4G時(shí)代的開啟必將為移動(dòng)互聯(lián)網(wǎng)的發(fā)展注入更多的活力,移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)必將迎來前所未有的飛躍[1-4]。

      Flash閃存是一種廣泛應(yīng)用于智能移動(dòng)終端中的非易失性存儲(chǔ)器。它結(jié)合了ROM和RAM的優(yōu)點(diǎn),在可以斷電保存數(shù)據(jù)的同時(shí)具有較高的訪問速度。其存儲(chǔ)特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存成為各類移動(dòng)終端設(shè)備存儲(chǔ)介質(zhì)的基礎(chǔ)[5-10]。正確和規(guī)范地使用Flash是非常有必要的,如果在Flash使用中出錯(cuò)的話會(huì)導(dǎo)致系統(tǒng)出錯(cuò),輕則功能失常,重則系統(tǒng)崩潰,無法使用。

      文中采用基于S3C2410A和RC28F256P30的實(shí)驗(yàn)平臺(tái)對Flash應(yīng)用中的互斥訪問、操作狀態(tài)判斷以及對齊訪問進(jìn)行了實(shí)驗(yàn)分析[11-14],提出了在Flash應(yīng)用中需要注意的各種問題及可能導(dǎo)致的后果。

      1 Flash應(yīng)用常見問題實(shí)驗(yàn)分析

      1.1 Flash互斥訪問

      在使用Flash的過程中,需要時(shí)刻注意各種Flash訪問的互斥性,即對Flash的讀、寫和擦除操作不能出現(xiàn)交叉,比如說在Flash的某個(gè)扇區(qū)還沒有擦除完成時(shí)不能進(jìn)行Flash的寫和讀操作,否則會(huì)導(dǎo)致訪問出錯(cuò)。由Flash芯片手冊可知,當(dāng)對Flash芯片寫入擦除建立和擦除確認(rèn)命令開始擦除處理后,芯片只能響應(yīng)讀取狀態(tài)和擦除掛起命令,其他所有的命令都將被忽略。由此可以推斷,當(dāng)在Flash的擦除過程中又發(fā)起對Flash的讀訪問,讀出的數(shù)據(jù)將會(huì)是Flash的狀態(tài)而非存儲(chǔ)在Flash上的數(shù)據(jù),這顯然不是用戶所希望得到的結(jié)果。而如果在Flash擦除過程中進(jìn)行寫入操作,由于寫入操作命令會(huì)被芯片忽略,數(shù)據(jù)將無法寫入Flash,同樣也會(huì)造成出錯(cuò)。為了驗(yàn)證上述的分析,編寫測試代碼如下:

      void testMutexAccess(void)

      {

      UINT16 rdData1, rdData2, rdData3;

      UINT16 status=0;

      /*正常擦除*/

      unlockSector(0x4100000);

      *(UINT16*)0x4100000=0x0020;

      *(UINT16*)0x4100000=0x00d0;

      while((status & 0x0080)!=0x0080)

      {status=*(UINT16*)0x4100000;}

      *(UINT16*)0x4100000=0x00ff;

      /*正常寫入后讀出*/

      *(UINT16*)0x4100000=0x0040;

      *(UINT16*)0x4100000=0x1234;

      status=0;

      while((status & 0x0080)!=0x0080)

      {status =*(UINT16*)0x4100000;}

      *(UINT16*)0x4100000=0x00ff;

      rdData1=*(UINT16*)0x4100000;

      /*擦除過程中讀出*/

      unlockSector(0x41a0000);

      *(UINT16*)0x41a0000=0x0020;

      *(UINT16*)0x41a0000=0x00d0;

      *(UINT16*)0x41a0000=0x00ff;

      rdData2=*(UINT16*)0x4100000;

      status=0;

      while((status & 0x0080)!=0x0080)

      {status=*(UINT16*)0x4100000;}

      *(UINT16*)0x4100000=0x00ff;

      /*擦除過程中寫入再讀出*/

      unlockSector(0x4180000);

      *(UINT16*)0x4180000=0x0020;

      *(UINT16*)0x4180000=0x00d0;

      *(UINT16*)0x4100002=0x0040;

      *(UINT16*)0x4100002=0x5678;

      status=0;

      while((status & 0x0080)!=0x0080)

      {status=*(UINT16*)0x4100002;}

      *(UINT16*)0x4100000=0x00ff;

      rdData3=*(UINT16*)0x4100002;

      logMsg("rdData1=%x rdData2=%x rdData3=%x. ",rdData1,rdData2,rdData3,0,0,0);

      測試程序首先正常擦除地址0x4100000處的扇區(qū),然后在0x4100000地址處寫入數(shù)據(jù)0x1234,運(yùn)行結(jié)果證明數(shù)據(jù)被正確寫入。然后程序開始擦除0x41a0000地址處的扇區(qū),并在擦除過程中讀取上一步寫入0x4100000處的數(shù)據(jù),結(jié)果證明這種操作會(huì)出錯(cuò),讀出的不是剛才寫入的數(shù)據(jù)而是Flash的狀態(tài)(0x0)。最后擦除地址0x4180000處的扇區(qū),并在擦除過程中往0x4100002地址寫入數(shù)據(jù)0x5678,結(jié)果證明數(shù)據(jù)無法寫入,地址0x4100002處還是初始值0xffff。

      上面討論的是操作執(zhí)行過程中出現(xiàn)交叉操作的問題,還有另外一種交叉是Flash操作命令序列間直接出現(xiàn)交叉,其現(xiàn)象根據(jù)命令的不同而有差別。當(dāng)向Flash寫入擦除建立(0x0020)命令后,不是跟著寫入擦除確認(rèn)(0x00d0)命令而是寫入編程建立命令(0x0040),這時(shí)會(huì)導(dǎo)致Flash狀態(tài)出錯(cuò)而無法正確完成操作,如圖1所示。

      圖1 Flash命令序列交叉訪問試驗(yàn)

      而如果首先向Flash寫入編程建立命令(0x0040)再跟著寫入擦除建立命令(0x0020)的話,擦除建立命令會(huì)被當(dāng)作數(shù)據(jù)寫入Flash相應(yīng)地址,而后續(xù)的擦除操作則無法完成,本來待寫入的數(shù)據(jù)也無法正確寫入。

      1.2 Flash操作狀態(tài)判斷

      在RC28F256P30芯片內(nèi)部有一個(gè)狀態(tài)寄存器,用于指示扇區(qū)擦除、數(shù)據(jù)寫入等操作的結(jié)果,包括操作是否完成,是否成功,是否處于寫保護(hù)狀態(tài)以及命令序列是否正確,等等。狀態(tài)寄存器的各個(gè)比特位的定義如圖2所示。

      圖2 狀態(tài)寄存器描述

      在對Flash芯片進(jìn)行了擦除以及寫入等操作后,必須對操作的結(jié)果進(jìn)行判斷確認(rèn)以避免出現(xiàn)各種錯(cuò)誤。下面對操作中如果不進(jìn)行狀態(tài)判斷可能出現(xiàn)的問題進(jìn)行實(shí)驗(yàn)分析。

      RC28F256P30上電時(shí)各個(gè)扇區(qū)默認(rèn)處于軟件寫保護(hù)(Locked)狀態(tài),在對扇區(qū)進(jìn)行擦除操作前需要首先對待擦除扇區(qū)進(jìn)行解鎖操作,否則的話將無法正確完成對扇區(qū)的擦除。首先對基地址0x4100000處的扇區(qū)進(jìn)行正常的擦除操作并觀察狀態(tài),然后對0x4180000扇區(qū)不解鎖而直接進(jìn)行擦除操作,發(fā)現(xiàn)這樣雖然狀態(tài)也會(huì)指示擦除完成,但是擦除狀態(tài)比特位(Bit 5)會(huì)提示擦除失敗,而且扇區(qū)鎖定狀態(tài)位(Bit 1)會(huì)提示扇區(qū)處于鎖定狀態(tài)。結(jié)果如圖3所示。

      圖3 Flash不解鎖直接擦除狀態(tài)判斷

      可見僅僅對操作執(zhí)行狀態(tài)位(Bit 7)進(jìn)行判斷是不夠的,必須還要判斷其他的狀態(tài)位才能確認(rèn)操作是否正確完成,否則可能會(huì)導(dǎo)致錯(cuò)誤。

      對Flash的各種操作命令序列必須連續(xù)且正確地輸入,比如說扇區(qū)擦除操作,必須先在扇區(qū)地址范圍內(nèi)寫入擦除建立命令0x0020,然后跟著寫入擦除確認(rèn)命令0x00d0。如果后面寫入的命令不是0x00d0,則Flash狀態(tài)寄存器會(huì)報(bào)錯(cuò),其BIT4和BIT5會(huì)同時(shí)置位,如圖4所示。

      圖4 Flash錯(cuò)誤命令序列輸入實(shí)驗(yàn)

      對于Flash狀態(tài)判斷的另一個(gè)需要注意的地方就是,當(dāng)出現(xiàn)錯(cuò)誤狀態(tài)后將要進(jìn)行其他新的操作前要使用狀態(tài)清除命令(clear status)清除之前的錯(cuò)誤狀態(tài),否則該錯(cuò)誤狀態(tài)將會(huì)一直存在而影響后續(xù)操作的結(jié)果判斷,導(dǎo)致后續(xù)本來正確的操作被判斷為出錯(cuò)。為了驗(yàn)證這個(gè)問題進(jìn)行如下實(shí)驗(yàn)。首先故意輸入錯(cuò)誤的命令序列(0x0020,0x0030)導(dǎo)致狀態(tài)寄存器提示出錯(cuò),對Flash進(jìn)行復(fù)位后進(jìn)行Flash的寫入,實(shí)驗(yàn)顯示Flash的寫入成功完成,但是讀出狀態(tài)仍然是開始錯(cuò)誤命令序列的0x00b0錯(cuò)誤狀態(tài),結(jié)果如圖5所示。

      圖5 Flash錯(cuò)誤狀態(tài)清除實(shí)驗(yàn)

      1.3 Flash對齊訪問

      所謂對齊訪問是指處理器在訪問存儲(chǔ)器時(shí)目標(biāo)地址是所訪問數(shù)據(jù)類型字節(jié)數(shù)的整數(shù)倍。文中設(shè)計(jì)選用的處理器S3C2410A作為ARM處理器要求對齊訪問,即存取字?jǐn)?shù)據(jù)時(shí)要求四字節(jié)對齊,目標(biāo)地址的最低兩位(A0、A1)會(huì)被忽略,而存取半字時(shí)要求兩字節(jié)對齊,目標(biāo)地址的最低一位(A0)會(huì)被忽略。對于Flash的操作,也要考慮對齊問題。文中設(shè)計(jì)的Flash是16位的,要求雙字節(jié)對齊,如果使用了非對齊的地址訪問,則可能得到與預(yù)期不一致的結(jié)果。比如說向Flash中0x4100001地址寫入數(shù)據(jù),因?yàn)榈刂肥瞧鏀?shù),沒有雙字節(jié)對齊,則數(shù)據(jù)在寫入Flash時(shí)會(huì)發(fā)生錯(cuò)位,因?yàn)樽畹臀?A0)地址是會(huì)被忽略的,所以其實(shí)最終是向0x4100000和0x4100001兩個(gè)字節(jié)地址寫入了數(shù)據(jù),而非預(yù)期的0x4100001和0x4100002。編寫的寫入測試程序如下:

      STATUS programWord(UINT32 flashAddress,UINT16 data)

      {

      STATUS status=0;

      *(volatile UINT16*)(flashAddress)=0x0040;

      *(volatile UINT16*)(flashAddress)=data;

      while((status & 0x0080)!=0x0080)

      {

      status=*(UINT16*)(flashAddress);

      }

      *(UINT16*)(flashAddress)=0x00ff;

      }

      2 結(jié)束語

      移動(dòng)互聯(lián)網(wǎng)在人們的日常工作和生活中得到了廣泛的應(yīng)用,改變了人們的生活方式。Flash幾乎存在于每個(gè)智能移動(dòng)終端中,其正確使用顯得尤為重要。為了能夠在應(yīng)用中正確高效地使用Flash,避免因?yàn)镕lash使用不當(dāng)而造成的各種損失,文中通過實(shí)驗(yàn)研究說明了在Flash使用中必須要注意的事項(xiàng):對Flash的各種操作必須互斥進(jìn)行,不能交叉,否則可能導(dǎo)致出錯(cuò);在各種操作后必須進(jìn)行全面的狀態(tài)判斷,不能只是簡單地判斷操作是否完成,以免得到錯(cuò)誤的結(jié)果;在對Flash訪問時(shí)要注意地址對齊,在進(jìn)行非對齊的訪問時(shí)會(huì)發(fā)生數(shù)據(jù)的錯(cuò)位。

      [1] 羅軍舟,吳文甲,楊 明.移動(dòng)互聯(lián)網(wǎng):終端、網(wǎng)絡(luò)與服務(wù)[J].計(jì)算機(jī)學(xué)報(bào),2011,34(11):2029-2051.

      [2] 馬化騰.移動(dòng)互聯(lián)網(wǎng)未來空間[J].中國報(bào)業(yè),2014(1):68-69.

      [3] 鄔賀銓.移動(dòng)互聯(lián)網(wǎng)催生新型應(yīng)用,引發(fā)產(chǎn)業(yè)變革[N].中國信息化周報(bào),2014-01-20(5).

      [4] 彭 蘭,顏云霞.移動(dòng)互聯(lián)網(wǎng),一種思維與市場的變革[N].新華日報(bào),2014-04-16(7).

      [5] 鄒逢興.計(jì)算機(jī)硬件技術(shù)基礎(chǔ)[M].北京:高等教育出版社,2000:182-196.

      [6] 杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2004:165-229.

      [7] 鄭文靜,李明強(qiáng),舒繼武.Flash存儲(chǔ)技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2010,47(4):716-726.

      [8] 潘立陽,朱 鈞.Flash存儲(chǔ)器技術(shù)與發(fā)展[J].微電子學(xué),2002,32(1):1-6.

      [9] 戰(zhàn) 輝.基于FLASH的固態(tài)存儲(chǔ)器[J].上海航天,2004,21(6):36-41.

      [10] 唐彩彬,楊曉剛,張正璠,等.一種片上可測試Flash存儲(chǔ)器的設(shè)計(jì)[J].微電子學(xué),2015,45(2):237-240.

      [11] SAMSUNG.S3C2410a user’s manual[EB/OL].2004.http://www.samsung.com.

      [12] INTEL.RC28F256P30 datasheet[EB/OL].2005.http://www.intel.com.

      [13] Cheng Yao.Promote the Ethernet performance based on inline assemble[J].Advanced Materials Research,2014,926-930:2690-2691.

      [14] Cheng Yao,Zhao Lei.Efficient Ethernet performance optimization based on DMA[J].Lecture Notes in Electrical Engineering,2014,4:325-331.

      Research on Correct and Efficient Application of Flash in Intelligent Terminal

      ZHAO Lei1,CHENG Yao2

      (1.The Tenth Research Institute of China Electronic Technology Group Corporation,Chengdu 610000,China;2.School of Electronic Information and Automation,Chongqing University of Technology,Chongqing 400050,China)

      Along with the flying development of broadband wireless access and mobile terminal,mobile internet has developed very rapidly.As a kind of non-volatile memory,Flash has been used widely in smart mobile terminals.The common problems for Flash in mobile internet application have been discussed in this paper based on Samsung S3C2410A processor and Intel RC28F256P30 Flash.It is proved through analysis and experiment that various operations to Flash should be mutually exclusive,they should not be interleaved,or you may not get the expected result.A full status check should be taken after word program,sector erase to avoid wrong result indication.And one should pay attention to the address alignment when using Flash,if the address is not aligned,the data wrote to Flash may get shifted unexpectedly.It can avoid the errors in using Flash according to above principles.

      mobile Internet;Flash;exclusive access;status check;aligned access

      2015-06-30

      2015-10-13

      時(shí)間:2016-05-05

      國家自然科學(xué)基金資助項(xiàng)目(51205434,51275551);重慶市教委科學(xué)技術(shù)研究資助項(xiàng)目(KJ1500935)

      趙 雷(1980-),男,碩士,高級(jí)工程師,研究方向?yàn)榍度胧较到y(tǒng)設(shè)計(jì)。

      http://www.cnki.net/kcms/detail/61.1450.TP.20160505.0817.042.html

      TP31

      A

      1673-629X(2016)05-0128-04

      10.3969/j.issn.1673-629X.2016.05.27

      猜你喜歡
      扇區(qū)命令錯(cuò)誤
      分階段調(diào)整增加扇區(qū)通行能力策略
      南北橋(2022年2期)2022-05-31 04:28:07
      只聽主人的命令
      在錯(cuò)誤中成長
      移防命令下達(dá)后
      U盤故障排除經(jīng)驗(yàn)談
      基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測
      這是人民的命令
      重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)
      不犯同樣錯(cuò)誤
      《錯(cuò)誤》:怎一個(gè)“美”字了得
      短篇小說(2014年11期)2014-02-27 08:32:41
      镇江市| 万山特区| 阳曲县| 龙胜| 长武县| 长海县| 富顺县| 崇信县| 黑山县| 宜城市| 桑植县| 阳东县| 镇远县| 民丰县| 武山县| 长岭县| 修水县| 高密市| 莒南县| 安陆市| 海丰县| 谷城县| 达尔| 龙州县| 金乡县| 金秀| 勐海县| 临邑县| 北安市| 昌图县| 黔南| 东兰县| 抚远县| 叶城县| 慈利县| 平安县| 英山县| 游戏| 资兴市| 大港区| 浦北县|