以下是今年年初,接到公司指派任務主要是針對FatFs系統要深入了解.
緣起是…因為有不少客戶在不管是SD Card/USB mass storage等裝置的讀寫都遇到問題,導致專案無法走下去….
經主管要求後, 我和工作夥伴即開始研究FatFs等問題….
一開始還滿順利的….但不到二天時間, 就遇見了WCHAR 問題… 其實這是很大的問題, 因為WCHAR 佔用 2Bytes, 標準的Ansi-C必需要轉換,首先第一想到的就是google查了…….哇…..資料還不少………..可惜都是在講windows上遇到WCHAR怎麼處理, 怎麼轉換, 這點對我們是沒有用的, 因為我們沒有那麼強大的Framwork支持, 只能透過Ansi-C一步一步建立.
像 strcpy / strncpy / strcmp / strncmp / strcat / sprintf 等等….我們都把他翻成了WCHAR版本….
這次專案中最大問題, 我想就是多國語言的版本, 因為客戶有可能在不同語言的電腦裡會存取不同語言的字體, 這部份是我們團隊花最長時間在克服的..
由於要支援長檔名等文字, 所以我們在 ffconfig.h中修改了
#define _USE_LFN 3 <—–當檔案系統需要memory時, 使用Heap區塊
#define _LFN_UNICODE 1 <—–使用unicode
我們上網去下載的 FatFs 裡並不含中文字型的轉換表, 所以我們又上網去找 cc950.c 這是繁體中文的中文字型轉換檔
可以依照自己國家的言系上google找, 可以找對應的code page及轉換文字表檔, (簡體字型是 cc936.c)
最後我們將很複雜的流程簡化成最簡單的使用方式, 使用者只要在UART端透過簡易的指令, 就可以針對USB mass storage做讀寫等動作.
指令像 (dir / mkdir / cd / rm / touch / cp…等等)
有了這樣的模組, MCU 8051 要記資料存在隨身碟/SD Card裡就不在是問題.
希望這樣的東西能對想要大量存取資料, 又不想處理很覆雜的FatFs的客戶群們,能提供幫助, 這樣的案子, 我們佔用了 64KB RAM /192KB Flash, 想一想客戶可以選用不是這麼powerful的MCU來開發客自己的產品,比如8051接上野人電的MSD100, 這樣是不是很捧呢! ^_^
* 預計2014年9月中, MSD100就可以和大家見面了 ^_^
一刀