<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                嵌入式的系統區(system disk,SD)包括操作系統、驅動、中間件、應用和字庫、UI資源等文件,本文講述SD區的文件系統設計。文件系統最主要的目標是為了實現單個文件的定位和讀寫。因為一般代碼都是不可自修改的,即量產之后不會有寫操作,嵌入式系統的SD文件系統就是為了能夠簡單、高效地定位某個文件和讀取文件中的數據。設計原則和要點有以下幾方面: 1\. 邏輯連續存儲單個文件,以扇區對齊。 SD區的單個代碼和資源文件一般都不大,所以不必要像fat32文件系統那樣用fat表把文件簇串起來,直接邏輯連續地存儲起來即可,這樣定位也會更加簡單快速,當然文件應該以扇區來對齊,方便讀取,文件偏移信息也能用扇區數來記錄。 ? 2\. SD頭 這是對整個SD區屬性的描述,包括校驗碼、版本號、日期、OEM廠商等等。有時為了保證知識產權,還會加上一些防止拷貝的加密ID信息。 3\. DIR節 DIR節就是目錄信息,即每個文件在SD區中的定位信息,是SD文件系統最重要的數據結構,文件的定位就是依賴于目錄信息進行。打包工具會按一定的順序將各個文件打包,并相應按順序產生每個文件對應的目錄信息。每個文件的目錄數據結構如下: 1)文件名,一般是8+3格式 2)文件屬性,區分系統文件和應用文件、隱藏文件等 3)文件在SD區中的偏移量,以扇區為單位 4)文件大小,字節為單位 5)校驗碼 4\. 文件數據 DIR節之后就是一個個真實的代碼和資源和配置等文件。 5\. fopen 打開文件即根據文件名在DIR節中匹配,匹配成功即可獲得文件在SD中的偏移量,將這偏移量右移9位(即512字節,一個扇區)即是文件的位置。fopen返回的是一個句柄,該句柄對應一個數據結構,結構一般包括:文件的起始位置、長度、當前讀指針位置等。記錄起始位置和長度是為了防止越界讀取。 6\. fread 根據句柄的當前讀指針進行讀取,讀后要修改當前讀指針。 7\. fseek 根據模式來直接修改讀指針。 需要清除的是:SD區是一個邏輯區,其只是固件的一部分。一個固件會包括引導區、SD區、VM區、特定功能區(如VM),之后才是數據區,這個數據區就會部署fat32或者exfat等標準文件系統。下一節再繼續講解固件分布設計。 更多嵌入式和物聯網原創技術分享敬請關注微信公眾號:嵌入式企鵝圈 ![](https://box.kancloud.cn/2016-01-13_5695f8f8d24b2.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看