<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于DSP的語音編解碼算法G.723.1優(yōu)化

          基于DSP的語音編解碼算法G.723.1優(yōu)化

          作者: 時間:2012-04-19 來源:網(wǎng)絡 收藏

          圖2 Flash存儲管理流程示意圖

          對于靜態(tài)數(shù)據(jù)塊(指的是Flash中存儲的不經(jīng)常被修改的數(shù)據(jù))[3],在本文中采用的處理方法是當空閑塊中的最大擦除次數(shù)與有效塊中的最小擦除次數(shù)之差大于某一設定閥值(該閥值不能過小,否則數(shù)據(jù)搬遷將過于頻繁),則遷移該有效塊中數(shù)據(jù)至空閑鏈表中擦除次數(shù)最大的塊中,從而避免因某些數(shù)據(jù)塊被靜態(tài)數(shù)據(jù)長時間占用而使得其它數(shù)據(jù)塊的磨損加劇,進而可使得整個Flash的磨損趨于平衡。

          對于無效塊的擦除回收本文的設計是在有足夠空閑塊的情況下一般是在系統(tǒng)空閑或上電時進行,這樣能節(jié)約更多寶貴的系統(tǒng)資源以進行更重要的工作,當在系統(tǒng)運行過程中,如果空閑塊塊數(shù)與無效塊塊數(shù)的比值超出一個閥值(本系統(tǒng)取50),則啟動程序回收所有無效塊。這個閥值應取得適中,如太大則使得回收過于頻繁,太少的話一方面使空閑空間過少,另一方面一旦啟動回收程序,因要回收塊數(shù)過多,從而使采集數(shù)據(jù)的實時輸入受到影響,本系統(tǒng)中取空閑塊與無效塊的比值作為閥值,好處是只要空閑塊塊數(shù)足夠,無效塊回收基本在系統(tǒng)初始化是進行,即使在采集過程中回收占用的時間也是十分微小,這樣的設計對實時性要求極高的嵌入式系統(tǒng)是很有好處的。

          3.4 Flash存儲管理的程序?qū)崿F(xiàn)

          對于Nand Flash在嵌入式系統(tǒng)中的使用,其接口方式與讀寫方法與在其他單片機中的方法都是一樣的,參考[1]中提供的流程圖就可以完成,其難點在于如何管理,在其管理中,對鏈表數(shù)據(jù)結構的操作是最重要的,下面將給出本文系統(tǒng)中用 TMS320F28x如何實現(xiàn)Nand Flash存儲管理的鏈表操作的關鍵程序代碼,結合具體的要求只需要進行簡單的修改即可滿足在新系統(tǒng)中的應用。

          系統(tǒng)工程中的CMD文件中,對于段的定義一定要為.systemmem分配一定的可用RAM空間[ 4 ],這個大小跟系統(tǒng)后面malloc函數(shù)要分配的動態(tài)內(nèi)存空間有關,以便在產(chǎn)生一個新的結點時申請一個結點類型大小的空間,在結點銷毀時可對空間進行釋放,定義系統(tǒng)中鏈表結點的類型為:

          通過這樣的定義就可以得到四個帶頭結點的鏈表,頭結點的數(shù)庫域中是沒有信息的,每一個鏈表的頭結點都指向該鏈表的首元素,如不存在則指向NULL,程序中必須初始化指針,否則會造成致命的系統(tǒng)錯誤。下面給出鏈表的初始化程序,結點生成及銷毀程序,其他的函數(shù)就不一一列舉,只給出其相應函數(shù)名及功能介紹。

          4 結論

          本文創(chuàng)新點在于:從Nand Flash的特性出發(fā),深入討論了基于磨損均衡的Flash存儲管理在DSP系統(tǒng)中采用鏈表結構的程序?qū)崿F(xiàn),改進了無效塊的回收方式及動靜態(tài)數(shù)據(jù)塊的磨損平衡。經(jīng)實踐證明,有效延長了Flash的使用壽命,進一步提高了其存儲效率和數(shù)據(jù)安全性,從而更有利于在嵌入式系統(tǒng)中的應用。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();