日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fileX移植

發布時間:2024/1/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fileX移植 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ThreadX RTOS在被微軟收購后最近開源了,相關介紹在:https://docs.microsoft.com/en-us/azure/rtos/, 源碼在github。

之前在使用threadX RTOS,但是沒有用過它的文件系統fileX,從介紹可以看是FAT兼容(fat12,fat16,fat32,exfat),支持fail safe等。功能介紹:https://docs.microsoft.com/en-us/azure/rtos/filex/overview-filex

Azure RTOS FileX is a high-performance, file allocation table (FAT)-compatible file system that’s fully integrated with Azure RTOS ThreadX and available for all supported processors. Like Azure RTOS ThreadX, Azure RTOS FileX is designed to have a small footprint and high performance, making it ideal for today’s deeply embedded applications that require file management operations. FileX supports most physical media, including RAM, Azure RTOS USBX, SD CARD, and NAND/NOR flash memories via Azure RTOS LevelX.

  • FAT 12/16/32 and exFAT support
  • Multiple partition support
  • Automatic scaling
  • Endian neutral
  • Long file name and 8.3 support
  • Optional fault tolerance support
  • Logical sector cache
  • FAT entry cache
  • Pre-allocation of clusters
  • Contiguous file support
  • Optional performance metrics
  • Azure RTOS TraceX system analysis support

我是在SD卡使用FAT文件系統,fileX文檔很齊全,但是對移植方面沒有詳細介紹,具體步驟需要通過看例子和代碼摸索,源碼中包括了一個使用ram使用fileX的簡單例子,我們可以根據它寫與IO driver對接的代碼。以下給出了移植方面的過程以注意的地方。

通常在fx_port.h中定義移置 fileX所需的基本宏和函數,如mutex函數,時間更新周期,以及功能宏。

  • 調用fx_system_initialize()初始化fileX,其中date及time可以同步為系統時間,默認10s秒更新一次date/time。
  • 根據sample實現I/O driver。我們使用的是sd卡,需要實現FX_DRIVER_READ/FX_DRIVER_WRITE/FX_DRIVER_INIT/FX_DRIVER_BOOT_READ/FX_DRIVER_BOOT_WRITE,這里需要注意是FX_DRIVER_BOOT_READ/FX_DRIVER_BOOT_WRITE,它是讀寫boot區域,對應的是DBR(dos boot record),我們可以在FX_DRIVER_INIT中去增加代碼獲取boot區域所在的物理sector。
  • 查找sd卡DBR地址:(包括兩種情況:1卡上無分區,2卡上有分區),無分區沒有MBR,有分區存在MBR。看下圖說明。流程:
  • 讀取sector 0, 第一個字節是否為有效的跳轉指令,或是否為exfat
  • 若是,則sector 0即為有效的fat分區。
  • 若不是,則去讀sector 0上DPT(disk partition table),從446字節開始為DPT,DPT共64個字節,由4個分區表組成,每個分區表16個字節,從每一個分表的第8字節—第12字節是該分區的所在的起始sector地址(即為DBR地址)。
  • 讀取DPT的每個分區起始sector(DBR地址),判斷第一個字節是否為有效的跳轉指令,或是否為exfat,若是則為有效fat分區,記錄起始sector地址(即為DBR地址)。
  • FX_DRIVER_INIT中獲取文件系統起始物理sector代碼:

    4.? fileX內部使用的是邏輯sector(從文件系統的0號sector(即DBR)開始),需要在I/O driver中轉成物理sector。

    物理sector地址 = fileX的邏輯sector地址 + 文件系統起始的物理sector地址(DBR地址,步聚3獲取的地址)

    5.實現FX_DRIVER_BOOT_READ/FX_DRIVER_BOOT_WRITE,根據上面得到的bootsector,調用sd卡IO接口去讀寫。

    ?

    6. 實現FX_DRIVER_READ/FX_DRIVER_WRITE,根據上面得到物理sector就可以去調用sd卡IO接口去讀寫。

    7. 以上完成后,對接IO的部分就完成了,可以使用sample中的例子測試。

    8. 如果要支持exfat,需要在定義FX_ENABLE_EXFAT。

    ?

    總結

    以上是生活随笔為你收集整理的fileX移植的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。