1. 程式人生 > >USB和SD同步、亂碼、空間大小

USB和SD同步、亂碼、空間大小

最近解了一些bug,記錄一下。

1.同步問題

在USB裡增加刪除修改檔案了,samba/ftp裡不能同步,實際上是掛載問題。

SD分割槽如下:

mmcblk0: 是mmc介面0(有些系統有多個SD卡介面的)
mmcblk0p1:是mmc介面0下的第一個分割槽
mmcblk0p2:是mmc介面0下的第二個分割槽

那麼將USB的掛載改成跟samba/ftp的掛載分割槽一致即可,即mmcblk0p1

在終端簡單驗證:

echo "" > /sys/devices/platform/msm_hsusb/gadget/lun0/file

echo "/dev/mmcblk0p1" > /sys/devices/platform/msm_hsusb/gadget/lun0/file

驅動裡修改:kernel\drivers\usb\gadget\android.c,

2.中文亂碼

USB裡建立的中文在ftp/samba 裡檢視時亂碼。

用iconv -l檢視,似乎是支援UTF8的,locale -a/locale charmap也沒看出來什麼。

瞭解到;UTF-8是unicode的一種表達方式,gb2312是和unicode都是字元的編碼方式.

ANSI:        無格式定義;
Unicode:       前兩個位元組為FFFE;
Unicode big endian: 前兩位元組為FEFF;  
UTF-8:        前兩位元組為EFBB;

那麼實際上很簡單了,重新掛載:

mount -o iocharset=utf8 /dev/mmcblk0p1 /media/card

掛不上?

那麼就是系統不支援utf8了。

增加即可,如;   

CONFIG_NLS_UTF8=y
CONFIG_NLS=y

另外開機掛載的檔案也要修改,在etc/fstab裡;

/dev/mmcblk0p1       /media/card          vfat       defaults,iocharset=utf8,umask=000

OK,亂碼解決了。

說一下utf8的檔案在\fs\nls\裡,記得修改Makefile

3.獲取空間大小

在終端裡,有兩個命令可以獲取空間大小

如:df /media/card   和 du -hs /media/card

du是讀每個檔案然後統計大小,花時間多,但是比較適時

df是直接讀磁碟,時間少,但是USB和SD卡同時開啟的話,檔案更新不同步。

解決方法是:usb和sd卡不能同時開啟,並且每次切換的時候解除安裝再掛載。

4.檔案下載

在goahead裡跟attachment有關。

這幾天csdn不能建立新文章,前幾天想總結的東西,現在都記不住了,這篇就此打住了。