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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TransFlash存儲(chǔ)卡在嵌入式系統(tǒng)調(diào)試中的應(yīng)用

          TransFlash存儲(chǔ)卡在嵌入式系統(tǒng)調(diào)試中的應(yīng)用

          作者: 時(shí)間:2013-04-24 來(lái)源:網(wǎng)絡(luò) 收藏

          2.4 FAT32文件系統(tǒng)移植
          在文中,F(xiàn)AT32文件系統(tǒng)移植主要包括系統(tǒng)初始化和文件管理程序修改(主要是文件讀取)。FAT32的初始化就是找到各個(gè)部分的起始扇區(qū)位置。首先查找MBR的分區(qū)表,獲取分區(qū)信息,然后找到每個(gè)分區(qū)的DBR,再根據(jù)DBR中的BPB得到分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件系統(tǒng)類型、FAT表個(gè)數(shù)、每簇占用扇區(qū)數(shù)等信息。最后根據(jù)下面的算法得到文件分配表FAT、文件目錄表FDT和數(shù)據(jù)區(qū)DATA的起始扇區(qū)。FAT32讀取文件流程如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/148043.htm

          e.JPG


          2.5 設(shè)計(jì)Blob命令下載系統(tǒng)鏡像
          Blob啟動(dòng)之后,首先初始化一些基本的硬件設(shè)備如串口等,然后檢測(cè)系統(tǒng)內(nèi)存映射,設(shè)置CPU運(yùn)行頻率等一些參數(shù),接著就進(jìn)入了命令行模式。
          在Blob中提供tfdownload命令,主函數(shù)的形參就是接收到的命令內(nèi)容和參數(shù)。若參數(shù)為“init”,則調(diào)用驅(qū)動(dòng)的初始化,否則將此參數(shù)作為文件名傳給FAT32文件系統(tǒng)打開并讀取文件內(nèi)容。最終實(shí)現(xiàn)“tfdownloadinit”調(diào)用驅(qū)動(dòng)初始化。使用“tfdownload”+文
          件名可以調(diào)用FAT32文件系統(tǒng)和TF卡的驅(qū)動(dòng)下載該文件名的鏡像到內(nèi)存中。
          2.6 MakeFile文件修改與交叉編譯
          (1)TF卡驅(qū)動(dòng)與FAT32文件系統(tǒng)編譯
          按照Blob中驅(qū)動(dòng)程序的結(jié)構(gòu),TF卡驅(qū)動(dòng)與FAT32文件系統(tǒng)源文件保存在/src/blob/Platform/Common/Source目錄下,而FAT32文件系統(tǒng)頭文件在/src/blob/Platform/Common/include目錄下,要在編譯Blob的時(shí)候?qū)⑻砑拥尿?qū)動(dòng)一起編譯,需要更改相應(yīng)的Makefile。
          在/src/blob/Platform/Source下有三個(gè)Makefile文件,分別是Makefile.a(chǎn)m,Makefile和Makefile.in,修改Makefile.a(chǎn)m即可,Makefile和Makefile.in會(huì)自動(dòng)修改。主要增加Makefile的頭文件尋找目錄和編譯文件。
          (2)Blob命令編譯
          src/commands下的命令編譯由同目錄的Makefile確定,同樣需要修改Makefile使添加的命令編譯到Blob中去。另外,要使該命令在Blob中生效,還需要修改Blob的configure.in文件,在configure.in中添加:blob_commands=“$blob_commands,tfdownload”;。
          (3)編譯Blob
          linux-2.6.25中集成了Blob,用linux-2.6.25的工具鏈編譯好之后,在…/pxalinux/MHN-LINUX-PLATFORM/rel/target/bin中,boot_nontrust.bin就是生成的Blob鏡像。
          2.7 系統(tǒng)鏡像下載的實(shí)現(xiàn)
          先用tfdownload init命令初始化TF卡驅(qū)動(dòng),然后使用tfdownload下載系統(tǒng)鏡像到內(nèi)存中,再使用Nandwrite命令寫入NandFlash中。

          3 下掛載TF卡實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)
          系統(tǒng)中使用TF卡做儲(chǔ)存器,必須先將TF卡掛載到上。要啟用void,需要在Android啟動(dòng)配置文件init.rc中關(guān)閉mountd并開啟void服務(wù)。通過(guò)對(duì)配置文件init.rc進(jìn)行下面的修改完成此項(xiàng)功能。
          service void/system/bin/void //vold服務(wù)開啟
          socket void stream 0660 root mount
          ……
          #service mountd/system/bin/mountd//mountd服務(wù)關(guān)閉(被注釋了)
          #socket mountd stream 0660 root mount
          void.conf文件是void程序掛載設(shè)備的配置文件,里面記載了掛載設(shè)備的設(shè)備路徑、設(shè)備類型以及掛載的目標(biāo)位置(掛載點(diǎn))。需要在該文件中加入TF卡的掛載信息,然后,將void.conf加入到system/etc目錄下,void程序就可以直接讀取該配置文件了。
          FAT32屬于Windows分區(qū),因?yàn)閃indows分區(qū)里面的文件是沒(méi)有權(quán)限這個(gè)概念的,所以在Linux系統(tǒng)中使用此分區(qū)時(shí)要手動(dòng)指定默認(rèn)權(quán)限。掛載TF卡之后Android的/sdcard目錄不能直接通過(guò)chmod命令來(lái)修改對(duì)于system組的讀寫權(quán)限,在system下是無(wú)法直接訪問(wèn)TF卡的,需要在掛載的時(shí)候添加權(quán)限。在void中,真實(shí)掛載TF卡的操作如下:
          rc=mount(deVpath,vol->mount_point,“vfat”,flags,“utf8,uid=1000,gid=1000,fmask=711,dmask=700,shortname=mix ed”);
          其中uid代表屬主,uid=1 000代表system用戶,fmask和dmask分別對(duì)應(yīng)文件和目錄的權(quán)限8進(jìn)制碼的反碼。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();