Electoday 4.0

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: tha on May 12, 2022, 01:39:05 pm

Title: FatFs Configuration Options
Post by: tha on May 12, 2022, 01:39:05 pm
Configuration Options

มีตัวเลือกมากมายเพื่อกำหนดค่าคุณลักษณะของ FatFs สำหรับข้อกำหนดต่างๆของแต่ละ project. The configuration options ถูกกำหนดใน ffconf.h.

(https://i.imgur.com/GyBFNwm.png)
(https://i.imgur.com/ZVYGppT.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 12, 2022, 01:46:26 pm
Function Configurations

FF_FS_READONLY
Read/Write (0) or Read-only (1). Read-only configuration เอาออก writing API functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename, f_truncate, f_getfree และ optional writing functions อีกด้วย.
Title: Re: FatFs Configuration Options
Post by: tha on May 12, 2022, 01:53:16 pm
FF_FS_MINIMIZE
ตัวเลือกนี้กำหนดลำดับการลดขนาดให้น้อยลงเพื่อเอาออกบาง basic API functions ดังต่อไปนี้:
(https://i.imgur.com/VtyaXz3.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 12, 2022, 02:02:17 pm
FF_USE_FIND
Disable (0) or Enable (1) filtered directory read functions, f_findfirst and f_findnext. นอกจากนี้ FF_FS_MINIMIZE จำเป็นต้องเป็น 0 หรือ 1.

FF_USE_MKFS
Disable (0) or Enable (1) f_mkfs function.

FF_USE_FASTSEEK
Disable (0) or Enable (1) fast seek function เพื่อเปิดการใช้งาน accelerated mode สำหรับ f_lseek, f_read and f_write function. สำหรับข้อมูลเพิ่มเติม, อ่านที่นี่.

FF_USE_EXPAND
Disable (0) or Enable (1) f_expand function.

FF_USE_CHMOD
Disable (0) or Enable (1) metadata control functions, f_chmod and f_utime. นอกจากนี้ FF_FS_READONLY จำเป็นต้องเป็น 0.

FF_USE_LABEL
Disable (0) or Enable (1) API functions for volume label, f_getlabel and f_setlabel.

FF_USE_FORWARD
Disable (0) or Enable (1) f_forward function.
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 08:07:20 am
FF_USE_STRFUNC
ตัวเลือกนี้สวิทช์ string functions, f_gets, f_putc, f_puts and f_printf. ฟังก์ชันเหล่านี้เทียบเท่ากับ regular string stream I/O functions ใน POSIX. ถ้า sprintf มีให้ใช้ประโยชน์และ code conversion ไม่ถูกต้องการ, f_write ที่มี sprintf จะมีประสิทธิภาพใน code size และ performance มากกว่า f_printf.
(https://i.imgur.com/JhnuiT2.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 08:17:10 am
FF_PRINT_LLI
ตัวเลือกนี้สวิทช์การรองรับสำหรับ long long integer argument ใน f_printf.
Disable (0) or Enable (1). C standard จำเป็นต้องเป็น C99 หรือใหม่กว่าเพื่อเปิดใช้งานคุณสมบัตินี้.

FF_PRINT_FLOAT
ตัวเลือกนี้สวิทช์การรองรับสำหรับ floating point argument ใน f_printf. C standard จำเป็นต้องเป็น C99 หรือใหม่กว่าเพื่อเปิดใช้งานคุณสมบัตินี้.
(https://i.imgur.com/TFmAJjS.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 08:45:24 am
FF_STRF_ENCODE
เมื่อ character encoding บน the API เป็น Unicode (FF_LFN_UNICODE >= 1), string I/O functions ที่เปิดใช้งานโดย FF_USE_STRFUNC จะแปลง the character encoding ในนั้น. ตัวเลือกนี้กำหนดสมมุติฐานของ character encoding บน the file ที่จะถูกอ่าน/เขียนโดยทางฟังชั่นเหล่านั้น. เมื่อ LFN ไม่ถูกเปิดใช้งานหรือ FF_LFN_UNICODE == 0, the string functions จะทำงานโดยไม่มี code conversion ใดๆและตัวเลือกนี้จะไม่มีผล.
(https://i.imgur.com/adhS22N.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 09:14:34 am
Namespace and Locale Configurations

FF_CODE_PAGE
ตัวเลือกนี้ระบุ the OEM code page ที่ใช้บน the target system. การเซ็ตที่ไม่ถูกต้องของ the code page สามารถเป็นเหตุให้ a file open ล้มเหลว. ถ้า any non-ASCII character ไม่ถูกใช้สำหรับ the path name หรือ FF_LFN_UNICODE != 0, ไม่มีความแตกต่างกันระหว่าง any code page settings. เซ็ตมัน 437 อย่างไรก็ตาม.
(https://i.imgur.com/p49eaZN.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 09:56:28 am
FF_USE_LFN
ตัวเลือกนี้สวิทช์การรองรับสำหรับ long file name (LFN). เมื่อเปิดใช้งาน the LFN, Unicode support module ffunicode.c จำเป็นต้องถูกเพิ่มไปยัง the project. เมื่อใช้ stack สำหรับ the working buffer, ต้องระวังเรื่อง stack overflow. เมื่อใช้ heap memory สำหรับ the working buffer, memory management functions (ff_memalloc and ff_memfree) จำเป็นต้องถูกเพิ่มไปยัง the project.
(https://i.imgur.com/u4wGuwT.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 10:27:34 am
FF_MAX_LFN
LFN function ต้องการ certain internal working buffer สำหรับ the file name. ตัวเลือกนี้กำหนดขนาดของ the buffer และ the value สามารถอยู่ในช่วง 12 ถึง 255 characters (ตามจริงใน UTF-16 code units) ของ the LFN. The buffer ครอบครอง (FF_MAX_LFN + 1) * 2 bytes และเพิ่มเติม (FF_MAX_LFN + 44) / 15 * 32 bytes เมื่อ exFAT ถูกเปิดใช้งาน. ขอแนะนำให้ตั้งค่าเป็น 255 เพื่อรองรับ the LFN specification อย่างเต็มที่. ตัวเลือกนี้ไม่มีผลเมื่อ LFN ไม่ได้ถูกเปิดใช้งาน.
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 10:44:34 am
FF_LFN_UNICODE
ตัวเลือกนี้สวิทช์ character encoding สำหรับ the file name บน the API. FatFs รองรับ the code point สูงถึง U+10FFFF. ตัวเลือกนี้ยังส่งผลต่อ behavior of string I/O functions ด้วย (ดู FF_STRF_ENCODE).
(https://i.imgur.com/ZV37TsJ.png)
เมื่อ Unicode ถูกเลือก, FF_CODE_PAGE จะไม่มีความหมายใดๆเลย ยกเว้นสำหรับการเข้ากันได้กับระบบรุ่นเก่า, อย่างเช่น MS-DOS และระบบใดๆที่ไม่มีการรองรับสำหรับ LFN.
เมื่อ LFN ไม่ถูกเปิดใช้งาน, ตัวเลือกนี้จะไม่มีผลและ FatFs จะทำงานใน ANSI/OEM code บน the API. สำหรับข้อมูลเพิ่มเติม, อ่านที่นี่.
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 11:12:36 am
FF_LFN_BUF, FF_SFN_BUF
ชุดของตัวเลือกนี้กำหนดขนาดของ file name members, fname[] and altname[], ใน the FILINFO structure ซึ่งถูกใช้เพื่ออ่าน the directory items. ค่าเหล่านี้ควรพอเพียงสำหรับ the file names ที่จะอ่าน. The maximum possible length ของ read file name ขึ้นอยู่กับ the character encoding scheme บน the API ดังต่อไปนี้:
(https://i.imgur.com/XNYTqQ6.png)
ถ้า the size of name member ไม่เพียงพอสำหรับ the LFN, the item จะถูกถือว่าไม่มี LFN. เมื่อ LFN ไม่ถูกเปิดใช้งาน, ตัวเลือกเหล่านี้จะไม่มีผลอะไร.
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 11:17:32 am
FF_FS_RPATH
ตัวเลือกนี้กำหนดค่า relative path function. สำหรับข้อมูลเพิ่มเติม, อ่านที่นี่.
(https://i.imgur.com/JqOSjyG.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 02:48:38 pm
Volume/Drive Configurations

FF_VOLUMES
ตัวเลือกนี้กำหนดค่าจำนวนของ volumes (logical drives สูงถึง 10) ที่จะถูกใช้.

FF_STR_VOLUME_ID
ตัวเลือกนี้สวิทช์การรองรับสำหรับ string volume ID. เมื่อ arbitrary string สำหรับ the volume ID ถูกเปิดใช้งานสำหรับ the drive prefix, strings ที่กำหนดไว้ล่วงหน้าโดย  FF_VOLUME_STRS หรือ user defined strings สามารถถูกใช้เป็น drive prefix ใน the path name ด้วย. Numeric drive number ใช้ได้เสมอโดยไม่คำนึงถึงตัวเลือกนี้, และแต่ละรูปแบบของ drive prefix สามารถถูกเปิดใช้งานโดยตัวเลือกนี้ด้วย.
(https://i.imgur.com/tfStpn3.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 13, 2022, 03:09:32 pm
FF_VOLUME_STRS
ตัวเลือกนี้กำหนด the volume ID strings สำหรับแต่ละ logical drives. Number of items ต้องไม่น้อยกว่า FF_VOLUMES. Valid characters สำหรับ the volume ID string คือ A-Z, a-z และ 0-9, อย่างไรก็ตาม, พวกมันจะถูกเปรียบเทียบโดยคำนึงถึงขนาดตัวพิมพ์. ถ้า FF_STR_VOLUME_ID == 0, ตัวเลือกนี้จะไม่มีผลอะไร. ถ้า FF_STR_VOLUME_ID >= 1 และตัวเลือกนี้ไม่ถูกกำหนด, a user defined volume string table จำเป็นต้องถูกกำหนดดังแสดงข้างล่าง. The table ไม่ควรถูกปรับเปลี่ยนกลางทาง.
(https://i.imgur.com/spH1npZ.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 07:18:17 am
FF_MULTI_PARTITION
Disable (0) or Enable (1). ตัวเลือกนี้สวิทช์ multi-partition function. โดยค่าเริ่มต้น (0), แต่ละ logical drive number จะถูกผูกกับ the same physical drive number และมีเพียง a volume ใน the physical drive เท่านั้นที่ถูกตั้ง. เมื่อเปิดใช้งาน, แต่ละ logical drive จะถูกผูกกับ the partition บน the physical drive ที่แสดงรายการใน the user defined partition resolution table VolToPart[]. นอกจากนี้ f_fdisk funciton จะมีให้ใช้ประโยชน์. สำหรับข้อมูลเพิ่มเติม, อ่านที่นี่.
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 07:28:31 am
FF_MIN_SS, FF_MAX_SS
ชุดของตัวเลือกนี้กำหนดขอบเขตของ sector size ที่ใช้สำหรับ the low level disk I/O interface, disk_read and disk_write function. Valid values คือ 512, 1024, 2048 and 4096. FF_MIN_SS กำหนด minimum sector size และ FF_MAX_SS กำหนด the maximum sector size. เซ็ตทั้งคู่ 512 เสมอสำหรับ memory card and harddisk. แต่ค่าที่มากกว่าอาจถูกต้องการสำหรับ on-board flash memory และบางประเภทของ optical media. เมื่อ FF_MAX_SS > FF_MIN_SS, การรองรับของ variable sector size ถูกเปิดใช้งานและ GET_SECTOR_SIZE command จำเป็นต้องถูกจัดให้มีใช้กับ the disk_ioctl function.
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 07:42:05 am
FF_LBA64
ตัวเลือกนี้สวิทช์ media access interface เป็น 64-bit LBA และเปิดใช้งาน GUID Partition Table (GPT) สำหรับ partition management, Enabled (1) or Disabled (0). exFAT filesystem จำเป็นต้องถูกเปิดใช้งานเพื่อเปิดใช้งานคุณสมบัตินี้.

FF_MIN_GPT
ตัวเลือกนี้ระบุขอบเขตบนล่างของการกำหนดของ partitioning format เมื่อสร้าง patitions บน the drive ใน f_mkfs and f_fdisk function. เมื่อจำนวนของ available sectors เท่ากับหรือใหญ่กว่าค่านี้, the drive จะถูกแบ่งพาร์ติชั่นใน GPT. ตัวเลือกนี้จะไม่มีผลอะไรเมื่อ FF_LBA64 == 0.

FF_USE_TRIM
Disable (0) or Enable (1). ตัวเลือกนี้สวิทช์  ATA-TRIM function. เพื่อเปิดใช้งาน Trim function, CTRL_TRIM command ควรถูกจัดให้มีใช้กับ the disk_ioctl function ด้วย.
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 08:15:52 am
System Configurations

FF_FS_TINY
Normal (0) or Tiny (1). The tiny configuration ลดขนาดของ the FIL structure, file object, FF_MAX_SS bytes แต่ละรายการ. แทนที่จะเป็น private sector buffer ถูกตัดออกจาก the file object, common(ร่วมกัน) sector buffer ใน the FATFS structure, filesystem object, ถูกใช้สำหรับ the file data transfer.

FF_FS_EXFAT
ตัวเลือกนี้สวิทช์การรองรับสำหรับ exFAT filesystem นอกเหนือจาก the FAT/FAT32 filesystem, Enabled (1) or Disabled (0). เพื่อเปิดใช้งาน exFAT,  LFN ต้องถูกเปิดใช้งานด้วยและการกำหนดค่า FF_LFN_UNICODE >= 1 and FF_MAX_LFN == 255 ขอแนะนำสำหรับ full-featured exFAT function. โปรดทราบว่าการเปิดใช้งาน exFAT จะละทิ้งความเข้ากันได้ของ ANSI C (C89) และต้องการ C99 เนื่องจากจำเป็นต้องใช้  64-bit integer type.
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 08:28:54 am
FF_FS_NORTC
ใช้ RTC (0) หรือไม่ใช้ RTC (1). ตัวเลือกนี้ควบคุม timestamp featuer. ถ้า the system ไม่มี an RTC หรือ valid timestamp ไม่ถูกต้องการ, เซ็ต FF_FS_NORTC เป็น 1 เพื่อปิดใช้งาน the timestamp function. ทุกๆ objects ที่ปรับเปลี่ยนโดย FatFs จะมี a constant timestamp ที่กำหนดโดย FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR. เพื่อใช้ the timestamp featuer, เซ็ต FF_FS_NORTC == 0 และเพิ่ม get_fattime function กับ the project เพื่อให้ได้รับ current time จาก the RTC. ตัวเลือกนี้จะไม่มีผลอะไรใน read-only configuration.

FF_NORTC_MON, FF_NORTC_MDAY, FF_NORTC_YEAR
ชุดของตัวเลือกนี้กำหนดเวลาที่ถูกใช้ใน no RTC systems. ตัวเลือกนี้จะไม่มีผลอะไรใน read-only configuration หรือ FF_FS_NORTC == 0.
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 08:46:17 am
FF_FS_NOFSINFO
0 ถึง 3. ถ้าคุณต้องการทราบ correct free space บน the FAT32 volume, เซ็ต bit 0 ของตัวเลือกนี้, และ f_getfree function ในครั้งแรกหลังจาก volume mount จะบังคับ a full FAT scan. Bit 1 ควบคุมการใช้ของ last allocated cluster number สำหรับ new allocation.
(https://i.imgur.com/slc44Qh.png)
Title: Re: FatFs Configuration Options
Post by: tha on May 14, 2022, 09:05:11 am
FF_FS_LOCK
ตัวเลือกนี้จะสวิทช์ file lock function เพื่อควบคุมการเปิดไฟล์ที่ซ้ำกันและการดำเนินการที่ผิดกฎเพื่อเปิด objects. โปรดทราบว่า the file lock function ไม่ขึ้นกับ re-entrancy. ตัวเลือกนี้ต้องเป็น 0 ใน read-only configuration.
(https://i.imgur.com/IyDUTyR.png)
0    ปิดใช้งาน file lock function. เพื่อหลีกเลี่ยงการพังลงของไฟล์โดย wrong file operation, application program จำเป็นต้องหลีก
      เลี่ยง illegal open, remove and rename กับ the open objects.
>0  เปิดใช้งาน file lock function. The value กำหนดจำนวนเท่าไหร่ที่ files/sub-directories สามารถถูกเปิดได้พร้อมกันภายใต้ the file
      lock control. Illigal operations ไปยัง the open object จะถูกปฏิเสธด้วย FR_LOCKED.
Title: Re: FatFs Configuration Options
Post by: tha on May 15, 2022, 06:59:38 am
FF_FS_REENTRANT
Disable (0) or Enable (1). ตัวเลือกนี้สวิทช์  the re-entrancy (thread safe) ของ the FatFs module เอง. โปรดทราบว่า file/directory เช้าถึงไปยัง the different volume เป็นการเข้าใหม่เสมอและมันสามารถทำงานได้พร้อมกันโดยไม่คำนึงถึงตัวเลือกนี้, อย่างไรก็ตาม, volume management functions, f_mount, f_mkfs and f_fdisk, จะไม่ re-entrant เสมอ. เฉพาะ file/directory เข้าถึงไปยัง the same volume, กล่าวอีกนัยหนึ่ง, การใช้งานแบบเอกสิทธิ์เฉพาะของแต่ละ filesystem object, อยู่ภายใต้การควบคุมของฟังชั่นนี้. เพื่อเปิดใช้งานคุณสมบัตินี้, user provided synchronization handlers, ff_req_grant, ff_rel_grant, ff_del_syncobj และ ff_cre_syncobj, จำเป็นต้องถูกเพิ่มไปยัง the project ด้วย. Sample code มีให้ใช้ประโยชน์ใน ffsystem.c.
Title: Re: FatFs Configuration Options
Post by: tha on May 15, 2022, 07:21:16 am
FF_FS_TIMEOUT
จำนวนของ time ticks เพื่อละทิ้ง the file function ด้วย FR_TIMEOUT เมื่อ wait time นานเกินไป. ตัวเลือกนี้จะไม่มีผลอะไรเมื่อ FF_FS_REENTRANT == 0.

FF_SYNC_t
ตัวเลือกนี้กำหนด O/S dependent sync object type. อย่างเช่น. HANDLE, ID, OS_EVENT*, SemaphoreHandle_t และอื่นๆ. A header file สำหรับ O/S definitions จำเป็นต้องถูกรวมไว้บางที่ใน the scope ของ ff.c. ตัวเลือกนี้จะไม่มีผลอะไรเมื่อ FF_FS_REENTRANT == 0.