Electoday 4.0

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: tha on May 05, 2022, 10:00:40 am

Title: FatFs
Post by: tha on May 05, 2022, 10:00:40 am
http://elm-chan.org/fsw/ff/00index_e.html (http://elm-chan.org/fsw/ff/00index_e.html)

FatFs - Generic FAT Filesystem Module

FatFs คือ a generic FAT/exFAT filesystem module สำหรับ small embedded systems. The FatFs module ถูกเขียนสอดคล้องกับ ANSI C (C89) และแยกออก the disk I/O layer โดยสิ้นเชิง. ดังนั้นมันจึงไม่ขึ้นกับแพลตฟอร์ม. มันสามารถถูกรวมลงใน small microcontrollers ที่มีทรัพยากรจำกัด, อย่างเช่น 8051, PIC, AVR, ARM, Z80, RX และอื่นๆ. นอกจากนี้ยังมี Petit FatFs module สำหรับ tiny microcontrollers มีให้ใช้ประโยชน์ที่นี่.
Title: Re: FatFs
Post by: tha on May 05, 2022, 10:27:06 am
Features

•   DOS/Windows Compatible FAT/exFAT Filesystem.
•   Platform Independent. Easy to port.
•   Very Small Footprint for Program Code and Work Area.
•   Various Configuration Options to Support for:
     •   Long File Name in ANSI/OEM or Unicode.
     •   exFAT Filesystem, 64-bit LBA and GPT for Huge Storages.
     •   Thread Safe for RTOS.
     •   Multiple Volumes. (Physical Drives and Partitions)
     •   Variable Sector Size.
     •   Multiple Code Pages Including DBCS.
     •   Read-only, Optional APIs, I/O Buffer and etc...
Title: Re: FatFs
Post by: tha on May 15, 2022, 08:17:35 am
(https://i.imgur.com/c07K70B.png)
Title: Re: FatFs
Post by: tha on May 16, 2022, 06:43:11 am
http://elm-chan.org/fsw/ff/doc/open.html (http://elm-chan.org/fsw/ff/doc/open.html)

(https://i.imgur.com/ooo8gMk.png)

Parameters
   fp
       ตัวชี้ไปยัง the blank file object structure.
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the file name เพื่อเปิดหรือสร้าง.
  mode
     Mode flags ที่ระบุประเภทของ access and open method สำหรับ the file. มันถูกระบุโดยการรวมของ flags ต่อไปนี้.
(https://i.imgur.com/MyfTaTE.png)

Mode flags ใน POSIX fopen() function ตรงกันกับ FatFs mode flags ดังต่อไปนี้:
(https://i.imgur.com/J1o1OnF.png)

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_DENIED, FR_EXIST, FR_INVALID_OBJECT, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_LOCKED, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES

Description
The f_open function เปิด a file และสร้าง a file object. The file object เป็น an identifier สำหรับการดำเนินการที่ตามมาของ the file. Open file ควรถูกปิดด้วย f_close function หลังจาก the session ของ the file access. ถ้าการเปลี่ยนแปลงใดๆกับ the file ถูกทำแล้วและไม่ถูกปิดก่อน power off, media removal หรือ re-mount, หรือ the file สามารถถูกพังลง.
ถ้า duplicated file open ถูกต้องการ, โปรดอ่านที่นี่อย่างละเอียด. อย่างไรก็ตาม duplicated open of a file ด้วย any write mode flag ถูกห้ามเสมอ.

QuickInfo
มีให้ใช้ประโยชน์เสมอ. มีเพียง FA_READ and FA_OPEN_EXISTING มีให้ใช้ประโยชน์สำหรับ the mode flags เมื่อ FF_FS_READONLY == 1.

Example
(ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ)

See Also
f_read, f_write, f_close, FIL, FATFS
Title: Re: FatFs
Post by: tha on May 16, 2022, 09:41:32 am
http://elm-chan.org/fsw/ff/doc/close.html (http://elm-chan.org/fsw/ff/doc/close.html)

(https://i.imgur.com/gsdNXts.png)

Parameter
   fp
       ตัวชี้ไปยัง the open file object structure ที่จะถูกปิด.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT

Description
The f_close function จะปิด an open file object. ถ้า the file ถูกเปลี่ยนแปลงแล้ว, the cached information of the file จะถูกเขียนกลับไปยัง the volume. หลังจาก the function สำเร็จลง, the file object จะไม่ใช้ได้อีกต่อไปและมันสามารถถูกทิ้งได้.
โปรดทราบว่า the file object อยู่ใน read-only mode และ FF_FS_LOCK ไม่ถูกเปิดใช้งาน, the file object สามารถถูกทิ้งได้ด้วยโดยไม่มีขบวนการนี้. อย่างไรก็ตาม ไม่แนะนำสำหรับความเข้ากันได้ในอนาคต.

QuickInfo
มีให้ใช้ประโยชน์เสมอ.

See Also
f_open, f_read, f_write, f_sync, FIL, FATFS
Title: Re: FatFs
Post by: tha on May 16, 2022, 11:00:16 am
http://elm-chan.org/fsw/ff/doc/read.html (http://elm-chan.org/fsw/ff/doc/read.html)

(https://i.imgur.com/ikMA7ih.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object.
   buff
       ตัวชี้ไปยัง the buffer เพื่อเก็บ the read data.
   btr
       จำนวนของ bytes ที่อ่านในช่วงของ UINT type. ถ้า the file จำเป็นต้องถูกอ่านเร็ว, มันควรถูกอ่านเป็นกลุ่มที่ใหญ่ที่สุดเท่าที่เป็นได้.
   br
       ตัวชี้ไปยัง the UINT variable ที่รับจำนวนของ bytes ที่อ่าน. ค่านี้ใช้ได้เสมอหลังจาก the function call โดยไม่คำนึงถึง the
       function return code. ถ้า the return value เท่ากันกับ btr, the function return code ควรเป็น FR_OK.

Description
The function สตาร์ทเพื่ออ่าน data จาก the file ที่ the file offset ที่ชี้โดย read/write pointer. The read/write pointer จะเลื่อนไปข้างหน้าตามจำนวนของ bytes ที่อ่าน. หลังจาก the function สำเร็จลง, *br ควรถูกเช็คเพื่อตรวจหา end of the file. ในกรณีของ *br < btr, มันหมายความว่า the read/write pointer ถึง end of the file ในระหว่าง read operation.

QuickInfo
มีให้ใช้ประโยชน์เสมอ.

Example
ดูตัวอย่างใน f_open.

See Also
f_open, fgets, f_write, f_close, FIL
Title: Re: FatFs
Post by: tha on May 16, 2022, 11:45:38 am
http://elm-chan.org/fsw/ff/doc/write.html (http://elm-chan.org/fsw/ff/doc/write.html)

(https://i.imgur.com/YHw8BFn.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.
   buff
       ตัวชี้ไปยัง the data ที่จะถูกเขียน.
   btw
       ระบุจำนวนของ bytes เพื่อเขียนในช่วงของ UINT type. ถ้า the file จำเป็นต้องถูกเขียนเร็ว, มันควรถูกเขียนเป็นกลุ่มที่ใหญ่ที่สุดเท่าที่
       เป็นได้.
   bw
       ตัวชี้ไปยัง the UINT variable ที่รับ the number of bytes ที่เขียน. ค่านี้ใช้ได้เสมอหลังจาก the function call โดยไม่คำนึงถึง
       the function return code. ถ้า the return value เท่ากันกับ btw, the function return code ควรเป็น FR_OK.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

Description
The function สตาร์ทเพื่อเขียน data ไปยัง the file ที่ the file offset ที่ชี้โดย read/write pointer. The read/write pointer จะเลื่อนไปข้างหน้าตามจำนวนของ bytes ที่เขียน. หลังจาก the function สำเร็จลง, *bw ควรถูกเช็คเพื่อตรวจหา the disk full. ในกรณีของ *bw < btw, มันหมายความว่า the volume เต็มในระหว่าง the write operation. ฟังก์ชันอาจใช้เวลาเมื่อไดรฟ์ข้อมูลเต็มหรือใกล้เต็ม.

QuickInfo
มีให้ใช้ประโยชน์เมื่อ FF_FS_READONLY == 0.

Example
ดูตัวอย่างใน f_open.

See Also
f_open, f_read, fputc, fputs, fprintf, f_close, FIL
Title: Re: FatFs
Post by: tha on May 17, 2022, 08:09:13 am
http://elm-chan.org/fsw/ff/doc/lseek.html (http://elm-chan.org/fsw/ff/doc/lseek.html)

(https://i.imgur.com/Cq9GbsK.png)
The f_lseek function ย้าย the file read/write pointer ของ an open file object. มันสามารถถูกใช้ขยาย the file size (cluster pre-allocation)ด้วย.
(https://i.imgur.com/ZAhtEPX.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object.
   ofs
      Byte ที่อ็อปเซ็ต(ระยะห่าง)จากบนสุดของ the file เพื่อเซ็ต read/write pointer. The data type FSIZE_t คือนามแฝงของอย่าง
      ใดอย่างหนึ่ง DWORD(32-bit) หรือ QWORD(64-bit) ขึ้นอยู่กับ the configuration option FF_FS_EXFAT.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT
Title: Re: FatFs
Post by: tha on May 17, 2022, 08:33:22 am
Description
File read/write ponter ใน the open file object ชี้ the data byte ที่จะถูกอ่าน/ถูกเขียนที่ next read/write operation. จะเลื่อนไปข้างหน้าตามจำนวนของ bytes ที่อ่าน/ที่เขียน. The f_lseek function ย้าย the file read/write pointer โดยปราศจาก any read/write operation กับ the file. The f_rewind function ถูกจัดให้มีใช้งานเป็น a macro.
(https://i.imgur.com/7s7RX04.png)
ถ้า an offset เกิน the file size ถูกระบุใน write mode, the file size จะถูกขยายถึง the specified offset.  The file data ใน the expanded part ถูกไม่กำหนด, เนื่องจากไม่มี data ถูกเขียนไปยัง the file ในขบวนการนี้. นี้เหมาะเพื่อจัดสรรล่วงหน้า a data area ให้กับ the file อย่างรวดเร็วสำหรับ fast write operation. เมื่อ a contiguous data area จำเป็นต้องถูกจัดสรรให้กับ the file, ใช้ f_expand function แทน. หลังจาก the f_lseek function สำเร็จ, the current read/write pointer ควรถูกตรวจสอบเพื่อให้แน่ใจว่า the read/write pointer ถูกย้ายไปอย่างถูกต้อง. ในกรณีของ the read/write pointer ไม่กำลังชี้ expected offset, อย่างใดอย่างหนึ่งของต่อไปนี้ถูกทำให้เกิดขึ้นแล้ว.
   •  End of file. The specified ofs ถูกตัดให้สั้นแล้วที่ end of the file ใน read-only mode.
   •  Disk full. ไม่มี free space บน the volume เพื่อขยาย the file.
Title: Re: FatFs
Post by: tha on May 17, 2022, 09:18:36 am
The fast seek feature เปิดใช้งาน fast backward/long seek operations โดยไม่มี FAT access โดยการใช้ an on-memory CLMT (cluster link map table). มันถูกนำไปใช้กับ f_read and f_write function เช่นกัน, อย่างไรก็ตาม, the file size ไม่สามารถถูกขยายโดย f_write, f_lseek function ในขณะที่ the file อยู่ที่ fast seek mode.
The fast seek mode จะมีให้ใช้งานเมื่อ FF_USE_FASTSEEK = 1. The CLMT ต้องถูกสร้างลงใน the DWORD array ก่อนที่จะใช้ the fast seek mode. เพื่อสร้าง the CLMT, เซ็ต address of the DWORD array เป็น the member cltbl ใน the open file object, เซ็ต the size of array ใน unit of items ไปยัง the cltbl[0] และจากนั้นเรียก f_lseek function ด้วย ofs = CREATE_LINKMAP. หลังจาก the function สำเร็จ, ไม่มี FAT access ถูกเกิดขึ้นใน f_read, f_write, f_lseek function กับ the file ที่ตามมา. The number of items ที่ใช้หรือที่ต้องการถูกส่งคืนกลับลงใน the cltbl[0]. The number of items ที่ต้องการคือ (number of the file fragments + 1) * 2. ตัวอย่างเช่น, 12 items in the array จะถูกใช้สำหรับ the file fragmented ใน 5 portions. ถ้า the function ล้มเหลวด้วย FR_NOT_ENOUGH_CORE, the size of given array ไม่เพียงพอสำหรับ the file.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_MINIMIZE <= 2. เพื่อใช้ fast seek function, FF_USE_FASTSEEK จำเป็นต้องถูกเซ็ต 1 เพื่อเปิดใช้งานคุณสมลักษณะนี้.

Example
ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ
http://elm-chan.org/fsw/ff/doc/lseek.html (http://elm-chan.org/fsw/ff/doc/lseek.html)

See Also
f_open, f_truncate, f_expand, FIL
Title: Re: FatFs
Post by: tha on May 17, 2022, 10:01:44 am
http://elm-chan.org/fsw/ff/doc/truncate.html (http://elm-chan.org/fsw/ff/doc/truncate.html)

(https://i.imgur.com/yLb20Hp.png)

Parameter
   fp
      ตัวชี้ไปยัง the open file object ที่จะถูกตัดยอด.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_DENIED, FR_INVALID_OBJECT, FR_TIMEOUT

Description
The f_truncate function ตัดยอด the file size เป็น the current file read/write pointer. ฟังชั่นนี้จะไม่มีผลอะไรถ้า the file read/write pointer กำลังชี้ end of the file แล้ว.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

See Also
f_open, f_lseek, FIL
Title: Re: FatFs
Post by: tha on May 17, 2022, 01:27:47 pm
http://elm-chan.org/fsw/ff/doc/sync.html (http://elm-chan.org/fsw/ff/doc/sync.html)

(https://i.imgur.com/L4Y7M4F.png)

Parameter
   fp
       ตัวชี้ไปยัง the open file object ที่จะถูกล้าง.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT

Description
The f_sync function กระทำขั้นตอนเดียวกันกับ f_close function แต่ the file ถุกเปิดทิ้งไว้และสามารถต่อเนื่อง read/write/seek operations ถึง the file. นี้เหมาะสำหรับ the applications ที่เปิด open files เป็นเวลานานใน write mode, อย่างเช่น data logger. การดำเนินการ f_sync function ในระยะเวลาที่แน่นอนสามารถทำให้ต่ำสุด the risk of data loss เนื่องจาก a sudden blackout, wrong media removal หรือ unrecoverable disk error. สำหรับรายละเอียดเพิ่มเติม, ดูที่ application note.
(https://i.imgur.com/u86yxmQ.png)
อย่างไรก็ตาม ไม่มีความหมายใน f_sync function ทันทีก่อน f_close function เนื่องจากมันกระทำ f_sync function ในนั้น. กล่าวอีกนัยหนึ่ง, ความแตกต่างระหว่างฟังก์ชันเหล่านั้นคือว่า the file object ถูกทำให้ใช้งานไม่ได้หรือไม่.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0.

See Also
f_close, Critical section
Title: Re: FatFs
Post by: tha on May 17, 2022, 02:08:40 pm
http://elm-chan.org/fsw/ff/doc/forward.html (http://elm-chan.org/fsw/ff/doc/forward.html)

(https://i.imgur.com/2n8Z21T.png)
The f_forward function อ่าน the file data และส่งต่อมันไปยัง the data streaming device.
(https://i.imgur.com/Xmz4m8c.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object.
   func
       ตัวชี้ไปยัง the user-defined data streaming function. สำหรับรายละเอียด, ดูที่ the sample code.
   btf
       จำนวนของ bytes ที่จะส่งต่อในช่วงของ UINT.
   bf
       ตัวชี้ไปยัง the UINT variable เพื่อส่งคืนกลับ number of bytes ที่ถูกส่งต่อ.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_DENIED, FR_TIMEOUT

Description
The f_forward function อ่าน the data จาก the file และส่งต่อมันไปยัง the outgoing stream. ฟังชั่นนี้เหมาะสำหรับ small memory system, เนื่องจากมันไม่ต้องการ any data buffer ใน the application module. The file pointer of the file object จะเลื่อนไปข้างหน้าตามจำนวนของ bytes ที่ถูกส่งต่อ. ในกรณีของ *bf น้อยกว่า btf โดยปราศจาก error, มันหมายความว่า the requested size of data ไม่สามารถถูกส่งถ่ายเนื่องจาก end of file หรือ stream ยุ่งอยู่ในระหว่าง data transfer.

QuickInfo
มีให้ใช้งานเมื่อ FF_USE_FORWARD == 1.

Example
(ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ)

See Also
f_open, fgets, f_write, f_close, FIL
Title: Re: FatFs
Post by: tha on May 18, 2022, 08:08:40 am
http://elm-chan.org/fsw/ff/doc/expand.html (http://elm-chan.org/fsw/ff/doc/expand.html)

(https://i.imgur.com/gZqNZ2M.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object.
   fsz
       Number of bytes in size เพื่อจัดเตรียมหรือจัดสรรสำหรับ the file. The data type FSIZE_t เป็นนามแฝงของอย่างใดอย่างหนึ่ง
       DWORD(32-bit) or QWORD(64-bit) ขึ้นอยู่กับ the configuration option FF_FS_EXFAT.
   opt
       Allocation mode. Prepare to allocate (0) or Allocate now (1).

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_DENIED, FR_TIMEOUT
Title: Re: FatFs
Post by: tha on May 18, 2022, 08:37:57 am
Description
The f_expand function จัดเตรียมหรือจัดสรร a contiguous data area ให้กับ the file. เมื่อ opt เป็น 1, the data area ถูกจัดสรรให้กับ the file ในฟังชั่นนี้. ไม่เหมือน expansion of file size โดย f_lseek function, the file ต้องถูกตัดยอดก่อนจะใช้ฟังชั่นนี้และ read/write pointer of the file อยู่ที่ offset 0 หลังจาก the function call. The file content ที่จัดสรรด้วยฟังชั่นนี้ถูกไม่กำหนด, เนื่องจากไม่มี data ถูกเขียนไปยัง the file ในฟังชั่นนี้. The function อาจล้มเหลวด้วย FR_DENIED เนื่องจากบางเหตุผลข้างล่าง.

  •  ไม่มี free contiguous space ถูกพบ.
  •  Size of the file ไม่เป็นศูนย์.
  •  The file ถูกเปิดแล้วใน read-only mode.
  •  Not allowable file size. (>= 4 GB on FAT volume)
Title: Re: FatFs
Post by: tha on May 18, 2022, 09:03:48 am
เมื่อ opt เป็น 0, the function ค้นหา a contiguous data area และเซ็ตมันเป็นจุดที่แนะนำสำหรับ next allocation. The subsequent(ที่ตามมา) cluster allocation จะเริ่มที่ top of the contiguous area ที่พบโดยฟังชั่นนี้. ดังนั้น the file allocation ถูกรับประกันได้ว่าต่อเนื่องและไม่มี allocation delay จนกระทั่ง the file size ถึง size นี้ยกเว้นการเปลี่ยนแปลงอื่นใดๆกับ the volume ถูกกระทำ.
The contiguous file มีข้อได้เปรียบสำหรับ time-critical read/write operations. มันขจัด overheads บางอย่างใน the filesystem และ the storage device ที่เกิดจาก random access สำหรับ fragmented file.
นอกจากนี้ the contiguous file สามารถถูกเข้าถึงโดยตรงได้ง่ายโดยทาง low-level disk functions. อย่างไรก็ตาม, สิ่งนี้ไม่แนะนำโดยพิจารณาถึงความสะดวกในการพกพาและความเข้ากันได้ในอนาคต. ถ้า the file ไม่ได้รับยืนยันว่าอยู่ติดกัน, ให้ใช้ฟังก์ชันนี้เพื่อตรวจสอบว่าไฟล์อยู่ติดกันหรือไม่.

QuickInfo
มีให้ใช้งานเมื่อ FF_USE_EXPAND == 1 and FF_FS_READONLY == 0.

Example
(ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ)

See Also
f_open, f_lseek, FIL
Title: Re: FatFs
Post by: tha on May 18, 2022, 10:09:52 am
http://elm-chan.org/fsw/ff/doc/gets.html (http://elm-chan.org/fsw/ff/doc/gets.html)

(https://i.imgur.com/KRrzZ3d.png)

Parameters
   buff
       ตัวชี้ไปยัง read buffer เพื่อเก็บ the read string.
   len
       ขนาดของ the read buffer ในหน่วยของรายการ.
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
เมื่อ the function สำเร็จ, buff จะถูกส่งคืนกลับ.

Description
The read operation จะดำเนินต่อไปจนกว่า a '\n' ถูกเก็บ, ถึง end of the file หรือ the buffer ถูกเติมด้วย len - 1 characters. The read string ถูกสิ้นสุดด้วย a '\0'. เมื่อไม่มี character ที่จะอ่านหรือ error ใดๆเกิดขึ้นในระหว่าง read operation, มันจะส่งคืนกลับ a null pointer. The status of EOF and error สามารถถูกตรวจสอบด้วย f_eof and f_error function.
เมื่อ FatFs ถูกกำหนดค่าเป็น Unicode API (FF_LFN_UNICODE >= 1), data types บน the string fuctions, f_putc, f_puts, f_printf and f_gets, ถูกสลับเป็น Unicode ด้วย. The character encoding บน the file ที่จะถูกอ่านโดยทางฟังชั่นนี้จะถูกถือว่าตาม FF_STRF_ENCODE. ถ้า the character encoding บน the file แตกต่างจากตัวนั้นบน the API, มันจะถูกแปลงในฟังชั่นนี้. ในกรณีนี้, input characters ที่มี wrong encoding จะสูญหาย.

QuickInfo
นี้เป็น a wrapper function ของ f_read function. มีให้ใช้งานเมื่อ FF_USE_STRFUNC >= 1. เมื่อมันถูกเซ็ตเป็น 2, '\r's ที่บรรจุใน the file จะถูกแยกออก.

See Also
f_open, f_read, f_putc, f_puts, f_printf, f_close, FIL
Title: Re: FatFs
Post by: tha on May 18, 2022, 11:12:28 am
http://elm-chan.org/fsw/ff/doc/putc.html (http://elm-chan.org/fsw/ff/doc/putc.html)

(https://i.imgur.com/JOp2qxF.png)

Parameters
   chr
       A character ที่จะเขียน.
   fp
       ตัวชี้ไปยัง the open file object structuer.

Return Values
เมื่อ the character ถูกเขียนสำเร็จแล้ว, มันส่งคืนกลับ number of character encoding units ที่เขียนไปยัง the file. เมื่อ the function ล้มเหลวเนื่องจาก disk full หรือ any error, ค่าลบจะถูกส่งคืนกลับ.

Description
เมื่อ FatFs ถูกกำหนดค่าสำหรับ Unicode API (FF_LFN_UNICODE >= 1), character encoding บน the string fuctions, f_putc, f_puts, f_printf and f_gets function, จะถูกสลับเป็น Unicode ด้วย. The character encoding บน the file  ที่จะถูกอ่าน/ถูกเขียนโดยทางฟังชั่นเหล่านี้จะถูกเลือกโดย FF_STRF_ENCODE. The Unicode characters ใน multiple encoding unit, อย่างเช่น surrogate pair and multi-byte sequence, ไม่สามารถถูกเขียนด้วยฟังก์ชันนี้.

QuickInfo
นี้เป็น a wrapper function ของ f_write function. มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. เมื่อ FF_USE_STRFUNC == 2, a '\n' จะถูกเอ๊าท์พุทเป็น '\r'+'\n'.

See Also
f_open, f_puts, f_printf, f_gets, f_close, FIL
Title: Re: FatFs
Post by: tha on May 18, 2022, 11:52:46 am
http://elm-chan.org/fsw/ff/doc/puts.html (http://elm-chan.org/fsw/ff/doc/puts.html)

(https://i.imgur.com/Zh2ZW9v.png)

Parameters
   str
       ตัวชี้ไปยัง the null terminated string ที่จะถูกเขียน. The terminator character จะไม่ถูกเขียน.
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
เมื่อ the character ถูกเขียนสำเร็จแล้ว, มันส่งคืนกลับ number of character encoding units ที่เขียนไปยัง the file. เมื่อ the function ล้มเหลวเนื่องจาก disk full หรือ any error, ค่าลบจะถูกส่งคืนกลับ.

Description
เมื่อ FatFs ถูกกำหนดค่าสำหรับ Unicode API (FF_LFN_UNICODE >= 1), character encoding บน the string fuctions, f_putc, f_puts, f_printf and f_gets function, จะถูกสลับเป็น Unicode ด้วย.  The input Unicode characters ใน multiple encoding unit, อย่างเช่น surrogate pair and multi-byte sequence, ไม่ควรถูกแบ่งลงใน two function calls, หรือ the character จะสูญหาย. The character encoding บน the file  ที่จะถูกเขียนโดยทางฟังชั่นนี้จะถูกเลือกโดย FF_STRF_ENCODE. The characters ที่มี wrong encoding หรือใช้ไม่ได้สำหรับ the output encoding จะสูญหาย.

QuickInfo
นี้เป็น a wrapper function ของ f_write function. มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. เมื่อ FF_USE_STRFUNC == 2,  '\n's ที่บรรจุใน the input string จะถูกเอ๊าท์พุทเป็นแต่ละ '\r'+'\n'.

See Also
f_open, f_putc, f_printf, f_gets, f_close, FIL
Title: Re: FatFs
Post by: tha on May 19, 2022, 06:53:43 am
http://elm-chan.org/fsw/ff/doc/printf.html (http://elm-chan.org/fsw/ff/doc/printf.html)

(https://i.imgur.com/FTBNys1.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.
   fmt
       ตัวชี้ไปยัง the null '\0' terminated format string. The terminator character จะไม่ถูกส่งออก.
   ...
       Optional arguments...

Return Values
เมื่อ the string ถูกเขียนสำเร็จแล้ว, มันส่งคืนกลับ number of character encoding units ที่เขียนไปยัง the file. เมื่อ the function ล้มเหลวเนื่องจาก disk full หรือ any error, ค่าลบจะถูกส่งคืนกลับ.
Title: Re: FatFs
Post by: tha on May 19, 2022, 08:24:00 am
Description
The format control directive เป็น a sub-set of standard library ที่แสดงดังต่อไปนี้:
(https://i.imgur.com/YPTsjq9.png)
   flag
       ทางเลือกการรอง. A - ระบุชิดซ้าย. A 0 ระบุศูนย์ถูกรอง. The default setting อยู่ในชิดขวาและเว้นวรรค(ช่องว่าง)ถูกรอง.
   width
       ความกว้างต่ำสุดของฟิลด์, 1-99 หรือ *. ถ้าความกว้างของ generated string น้อยกว่าค่าที่ระบุ, ฟิลด์ที่เหลือจะถูกรองด้วย spaces
       หรือ zeros. An * ระบุค่าที่มาจาก an argument ใน int type
   precision
       ระบุจำนวนของเศษส่วนหรือความกว้างสูงสุดของ string, .0-.99 or .*. ถ้า number ถูกละเว้น, มันจะเป็นเช่นเดียวกันกับ .0.
       Default setting คือ 6 สำหรับ number และไม่จำกัดสำหรับ string.
   size
       ระบุขนาดของ integer argument, l(long) and ll(long long). ถ้า sizeof (long) == sizeof (int) เป็นจริง (นี่เป็นเรื่องปกติ
       ของ 32-bit systems), คำนำหน้า l สามารถถูกละเว้นได้สำหรับ long integer argument. The default size เป็น int สำหรับ
       integer arrument และ floating point argument จะถูกถือว่าเป็น double เสมอ.
   type
       ระบุประเภทของ the output format และ the argument ดังแสดงข้างล่าง. ความยาวของ generated string อยู่ในการสันนิษฐาน
       ว่าเป็น int คือ 32-bit.
(https://i.imgur.com/N4v4m9h.png)
เมื่อ FatFs ถูกกำหนดค่าสำหรับ Unicode API (FF_LFN_UNICODE >= 1), character encoding บน the string fuctions, f_putc, f_puts, f_printf and f_gets function, จะถูกสลับเป็น Unicode ด้วย.  The input Unicode characters ใน multiple encoding unit, อย่างเช่น surrogate pair and multi-byte sequence, ไม่ควรถูกแบ่งลงใน two function calls, หรือ the character จะสูญหาย. The character encoding บน the file  ที่จะถูกเขียนโดยทางฟังชั่นนี้จะถูกเลือกโดย FF_STRF_ENCODE. The characters ที่มี wrong encoding หรือใช้ไม่ได้สำหรับ the output encoding จะสูญหาย.

QuickInfo
นี้เป็น a wrapper function ของ f_write function. มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_USE_STRFUNC >= 1. เมื่อ FF_USE_STRFUNC == 2,  '\n's ใน the generated string จะถูกเขียนเป็นแต่ละ '\r'+'\n'.

Example
(https://i.imgur.com/ZRzDdCX.png)

See Also
f_open, f_putc, f_puts, f_gets, f_close, FIL
Title: Re: FatFs
Post by: tha on May 19, 2022, 09:25:08 am
http://elm-chan.org/fsw/ff/doc/tell.html (http://elm-chan.org/fsw/ff/doc/tell.html)

(https://i.imgur.com/lUjVkIG.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
ส่งคืนกลับ current read/write pointer of the file.

Description
ในขบวนการปรับปรุงนี้, the f_tell function ถูกนำไปใช้เป็น a macro. มันไม่มีการตรวจสอบความถูกต้องใดๆและ mutual exclusion.
(https://i.imgur.com/smYHEIt.png)

QuickInfo
มีให้ใช้งานเสมอ.

See Also
f_open, f_lseek, FIL
Title: Re: FatFs
Post by: tha on May 19, 2022, 10:12:12 am
http://elm-chan.org/fsw/ff/doc/eof.html (http://elm-chan.org/fsw/ff/doc/eof.html)

(https://i.imgur.com/bAjKPoQ.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
The f_eof function ส่งคืนกลับ a non-zero value ถ้า the read/write pointer ถึง end of the file แล้ว; ถ้าเป็นอย่างอื่นมันจะส่งคืนกลับ a zero.

Description
ในขบวนการปรับปรุงนี้, function นี้ถูกนำไปใช้เป็น a macro. มันไม่มีการตรวจสอบความถูกต้องใดๆและ mutual exclusion.
(https://i.imgur.com/97UCjzy.png)

QuickInfo
มีให้ใช้งานเสมอ.

See Also
f_open, f_lseek, FIL
Title: Re: FatFs
Post by: tha on May 19, 2022, 10:22:52 am
http://elm-chan.org/fsw/ff/doc/size.html (http://elm-chan.org/fsw/ff/doc/size.html)

(https://i.imgur.com/mD5odEK.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
ส่งคืนกลับขนาดของ the file ในหน่วยของ byte.

Description
ในขบวนการปรับปรุงนี้, the f_size function ถูกนำไปใช้เป็น a macro. มันไม่มีการตรวจสอบความถูกต้องใดๆและ mutual exclusion.
(https://i.imgur.com/utN10aG.png)

QuickInfo
มีให้ใช้งานเสมอ.

See Also
f_open, f_lseek, FIL
Title: Re: FatFs
Post by: tha on May 19, 2022, 10:32:38 am
http://elm-chan.org/fsw/ff/doc/error.html (http://elm-chan.org/fsw/ff/doc/error.html)

(https://i.imgur.com/0E7Ea8C.png)

Parameters
   fp
       ตัวชี้ไปยัง the open file object structure.

Return Values
ส่งคืนกลับ a non-zero value ถ้า a hard error ได้เกิดขึ้นแล้ว; ถ้าเป็นอย่างอื่นมันจะส่งคืนกลับ a zero.

Description
ในขบวนการปรับปรุงนี้, function นี้ถูกนำไปใช้เป็น a macro. มันไม่มีการตรวจสอบความถูกต้องใดๆและ mutual exclusion.
(https://i.imgur.com/b8XZPwS.png)

QuickInfo
มีให้ใช้งานเสมอ.

See Also
f_open, FIL
Title: Re: FatFs
Post by: tha on May 20, 2022, 06:50:24 am
http://elm-chan.org/fsw/ff/00index_e.html (http://elm-chan.org/fsw/ff/00index_e.html)

(https://i.imgur.com/Sa5OzzV.png)
Title: Re: FatFs
Post by: tha on May 20, 2022, 07:00:16 am
http://elm-chan.org/fsw/ff/doc/opendir.html (http://elm-chan.org/fsw/ff/doc/opendir.html)

(https://i.imgur.com/YxLWPFq.png)

Parameters
   dp
       ตัวชี้ไปยัง the blank directory object เพื่อสร้าง a new one.
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the directory name ที่จะถูกเปิด.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_OBJECT, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES

Description
The f_opendir function เปิด an exsisting directory และสร้าง a directory object สำหรับ f_readdir function ที่จะตามมา.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_MINIMIZE <= 1.

See Also
f_readdir, f_closedir, DIR
Title: Re: FatFs
Post by: tha on May 20, 2022, 07:18:02 am
http://elm-chan.org/fsw/ff/doc/closedir.html (http://elm-chan.org/fsw/ff/doc/closedir.html)

(https://i.imgur.com/H68cuDK.png)

Parameter
   dp
       ตัวชี้ไปยัง the open directory object structure ที่จะถูกปิด.

Return Values
FR_OK, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT

Description
The f_closedir function ปิด an open directory object. หลังจาก the function สำเร็จ, the directory object ใช้ไม่ได้อีกต่อไปและมันสามารถถูกละทิ้ง.
โปรดทราบว่า the directory object สามารถถูกละทิ้งโดยไม่มีขั้นตอนนี้ได้อีกด้วยเมื่อตัวเลือก FF_FS_LOCK ไม่ถูกเปิดใช้งาน. อย่างไรก็ตาม ไม่ขอแนะนำสำหรับ future compatibility.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_MINIMIZE <= 1.

See Also
f_opendir, f_readdir, DIR
Title: Re: FatFs
Post by: tha on May 20, 2022, 09:00:54 am
http://elm-chan.org/fsw/ff/doc/readdir.html (http://elm-chan.org/fsw/ff/doc/readdir.html)

(https://i.imgur.com/iI1jtMz.png)

Parameters
   dp
       ตัวชี้ไปยัง the open directory object.
   fno
       ตัวชี้ไปยัง the file information structure เพื่อเก็บข้อมูลเกี่ยวกับรายการที่อ่าน. A null pointer กรอกลับ the read index ของ
       the directory.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_INVALID_OBJECT, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_readdir function อ่าน a directory item, informations เกี่ยวกับ the object, จาก the open directory. Items ใน the directory สามารถถูกอ่านเป็นลำดับโดย f_readdir function calls. เมื่อทุก items ใน the directory ถูกอ่านแล้วและไม่มี item ให้อ่าน, a null string จะถูกเก็บลงใน the fno->fname[] โดยไม่มี any error. เมื่อ a null pointer ถูกให้ไปยัง the fno, the read index of the directory object จะถูกกรอกลับ. The f_rewinddir function ถูกจัดให้มีใช้เป็น a macro.
(https://i.imgur.com/FxIRBK1.png)
เมื่อ LFN ถูกเปิดใช้งาน, a member altname[] ถูกกำหนดใน the file information structure เพื่อเก็บ the short file name ของ the object. ถ้า the long file name ไม่สามารถเข้าถึงได้เนื่องจากเหตุผลที่แสดงรายการข้างล่าง, short file name จะถูกเก็บไปยัง the fname[] และ the altname[] มี a null string.
  •  The item ไม่มี LFN. (ไม่ใช่กรณีใน exFAT volume)
  •  FF_MAX_LFN ไม่เพียงพอเพื่อจัดการ the LFN. (ไม่ใช่กรณีใน FF_MAX_LFN == 255)
  •  FF_LFN_BUF ไม่เพียงพอเพื่อเก็บ the LFN.
  •  The LFN บรรจุบาง character ที่ไม่กำหนดใน current CP. (ไม่ใช่กรณีใน FF_LFN_UNICODE != 0)
มีปัญหาเกี่ยวกับ read directories ใน exFAT volume. The exFAT ไม่รองรับ short file name. นี้หมายความว่าไม่มี name สามารถถูกส่งคืนกลับตามเงื่อนไขข้างบนได้. หากเป็นกรณี, "?" ถูกส่งคืนกลับเป็น the file name เพื่อแสดงให้เห็นว่า the object ไม่สามารถเข้าถึงได้. เพื่อหลีกเลี่ยงปัญหานี้, กำหนดค่า FatFs FF_LFN_UNICODE != 0 and FF_MAX_LFN == 255 เพื่อรองรับคุณลักษณะทั้งหมดของ LFN specification.
Dot entries ("." and "..") ใน the sub-directory of FAT volume จะถูกกรองออกและพวกมันจะไม่เคยปรากฎใน the read items เนื่องจาก exFAT ไม่มี dot entries ใน the sub-directory.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_MINIMIZE <= 1.

Sample Code
(ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ)

See Also
f_opendir, f_closedir, f_stat, FILINFO, DIR
Title: Re: FatFs
Post by: tha on May 20, 2022, 01:09:48 pm
http://elm-chan.org/fsw/ff/doc/findfirst.html (http://elm-chan.org/fsw/ff/doc/findfirst.html)

(https://i.imgur.com/YiKMzJy.png)

Parameters
   dp
       ตัวชี้ไปยัง the blank directory object.
   fno
       ตัวชี้ไปยัง the file information structure เพื่อเก็บ the information เกี่ยวกับรายการที่พบ.
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the directory name ที่จะถูกเปิด.
   pattern
       ตัวชี้ไปยัง the nul-terminated string ที่ระบุ the name matching pattern ที่จะถูกค้นหา. มันถูกอ้างอิงโดย f_findnext
       function ที่ตามมาอีกด้วย, ดังนั้น the string ต้องใช้ได้ขณะที่ the successive function calls.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_OBJECT, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES

Description
หลังจาก the directory ที่ระบุโดย path สามารถถูกเปิด, มันเริ่มค้นหา the directory เพื่อ items ที่มี the matching pattern ที่ระบุโดย pattern. ถ้า the first item ถูกพบ, the information เกี่ยวกับ the item จะถูกเก็บลงใน the file information structure fno. ถ้าไม่พบ,   fno->fname[] จะมี a null string.
The matching pattern string สามารถมีคำศัพท์ที่เป็นสัญลักษณ์แทนได้ ตัวอย่างเช่น:
  •  ? - character ใดๆ.
  •  (https://i.imgur.com/feWyar4.png) - string ใดๆในความยาวสาม characters.
  •  * - string ใดๆในความยาวศูนย์หรือยาวกว่า.
  •  (https://i.imgur.com/EE9DEpC.png) - string ใดๆในความยาวสี่หรือยาวกว่า.
เนื่องจาก the matching algorithm ใช้ recursion, number of wildcard terms ใน the matching pattern ถูกจำกัดที่สี่เพื่อจำกัด the stack usage. Any pattern ที่มี too many wildcard terms จะไม่ตรงกับ any name. ใน LFN configuration, มีเพียง fname[] ถูกทดสอบเมื่อ FF_USE_FIND == 1 และ altname[] ถูกทดสอบเมื่อ FF_USE_FIND == 2 ด้วย. มีความแตกต่างบางประการตามรายการด้านล่างระหว่าง FatFs และ standard systems ในเงื่อนไขการจับคู่.
  •  "*.*" ไม่เคยเข้าคู่ชื่อใดๆที่ไม่มีนามสกุลขณะที่มันเข้าคุ๋ชื่อใดๆที่มีหรือไม่มีนามสกุลใน standard systems.
  •  pattern ใดๆที่ลงท้ายด้วยจุดไม่เคยเข้าคู่ชื่อใดๆขณะที่มันเข้าคู่ the name ที่ไม่มี extensiton ใน standard systems.
  •  DBCS extended characters จะถูกเปรียบเทียบโดยคำนึงถึงขนาดตัวพิมพ์เมื่อ LFN ถูกเปิดใช้งานด้วย ANSI/OEM code API.

QuickInfo
นี้คือ a wrapper function ของ f_opendir and f_readdir function. มีให้ใช้งานเมื่อ FF_USE_FIND >= 1 and FF_FS_MINIMIZE <= 1.

Examples
(https://i.imgur.com/HKajQ8h.png)

See Also
f_findnext, f_closedir, DIR, FILINFO
Title: Re: FatFs
Post by: tha on May 20, 2022, 02:10:28 pm
http://elm-chan.org/fsw/ff/doc/findnext.html (http://elm-chan.org/fsw/ff/doc/findnext.html)

(https://i.imgur.com/YaCJmc2.png)

Parameters
   dp
       ตัวชี้ไปยัง the valid directory object ที่สร้างขึ้นโดย f_findfirst function.
   fno
       ตัวชี้ไปยัง the file information structure เพื่อเก็บ the information เกี่ยวกับ the found directory item.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_OBJECT, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
มันต่อเนื่องการค้นหาจากการเรียกก่อนหน้าถึง the f_findfirst or f_findnext function. ถ้าพบ, the information เกี่ยวกับ the object จะถูกเก็บลงใน the file information structure. ถ้าไม่มี item ที่ถูกอ่าน, a null string จะถูกส่งคืนกลับลงใน fno->fname[].

QuickInfo
นี้คือ a wrapper function ของ f_readdir function. มีให้ใช้งานเมื่อ FF_USE_FIND >= 1 and FF_FS_MINIMIZE <= 1.

See Also
f_findfirst, f_closedir, DIR, FILINFO
Title: Re: FatFs
Post by: tha on May 21, 2022, 07:15:11 am
http://elm-chan.org/fsw/ff/00index_e.html (http://elm-chan.org/fsw/ff/00index_e.html)

(https://i.imgur.com/SZ9hGXV.png)
Title: Re: FatFs
Post by: tha on May 21, 2022, 07:37:30 am
http://elm-chan.org/fsw/ff/doc/stat.html (http://elm-chan.org/fsw/ff/doc/stat.html)

(https://i.imgur.com/cfMxses.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the object เพื่อรับข้อมูลของมัน. The object ต้องไม่เป็น the root direcotry.
   fno
       ตัวชี้ไปยัง the blank FILINFO structure เพื่อเก็บ the information of the object. เซ็ต null pointer ถ้าข้อมูลนี้ไม่ถูก
       ต้องการ.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_stat function ตรวจสอบการมีอยู่ของ a file or sub-directory ใน the directory. ถ้ามันไม่มีอยู่, the function ส่งคืนกลับด้วย FR_NO_FILE. ถ้ามันมีอยู่, the function ส่งคืนกลับด้วย FR_OK และ the informations เกี่ยวกับ the object, size, timestamp and attribute, ถูกเก็บไปยัง the file information structure. สำหรับรายละเอียดของ the file information, ดูที่ the FILINFO structure และ f_readdir function.
โปรดทราบว่าข้อมูลไฟล์มาจากข้อมูลเมตาในไดเร็กทอรี หากไฟล์ถูกเปิดและแก้ไขแล้ว ไฟล์จะจำเป็นต้องซิงค์หรือปิดเพื่อรับข้อมูลไฟล์ล่าสุด

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_MINIMIZE == 0.

Example
(ตัวอย่างโค้ดดูในลิ้งค์เอานะครับ)

References
f_opendir, f_readdir, FILINFO
Title: Re: FatFs
Post by: tha on May 21, 2022, 08:48:04 am
http://elm-chan.org/fsw/ff/doc/unlink.html (http://elm-chan.org/fsw/ff/doc/unlink.html)

(https://i.imgur.com/1TazHli.png)

Parameter
   path
       ตัวชี้ไปยัง a null-terminated string ที่ระบุ the file or sub-directory ที่จะถูกเอาออก.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_DENIED, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_LOCKED, FR_NOT_ENOUGH_CORE

Description
หากเงื่อนไขของ the object ที่จะถูกลบมีผลกับเงื่อนไขต่อไปนี้ ฟังก์ชันจะถูกปฏิเสธ.
  •  The file/sub-directory ต้องไม่มี read-only attribute (AM_RDO), มิฉะนั้น the function จะถูกปฏิเสธด้วย FR_DENIED.
  •  The sub-directory ต้องว่างเปล่าและต้องไม่เป็น current directory, มิฉะนั้น the function จะถูกปฏิเสธด้วย FR_DENIED.
  •  The file/sub-directory ต้องไม่ถูกเปิด, มิฉะนั้น the FAT volume สามารถถูกยุบได้. มันจะถูกปฏิเสธอย่างปลอดภัยเมื่อ file lock
      function ถูกเปิดใช้งาน.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.
Title: Re: FatFs
Post by: tha on May 21, 2022, 09:31:26 am
http://elm-chan.org/fsw/ff/doc/rename.html (http://elm-chan.org/fsw/ff/doc/rename.html)

(https://i.imgur.com/BP8zsvB.png)

Parameters
   old_name
       ตัวชี้ไปยัง a null-terminated string ที่ระบุ the existing file or sub-directory ที่จะถูกเปลี่ยนชื่อ.
   new_name
       ตัวชี้ไปยัง a null-terminated string ที่ระบุ the new object name. A drive number อาจถูกระบุใน string นี้แต่มันจะถูกเพิก
       เฉยและทึกทักเอาว่าเป็น the same drive ของ the old_name. object ใดๆที่มี path name นี้ยกเว้น old_name จะต้องไม่มีอยู่,
       มิฉะนั้น the function จะล้มเหลวด้วย FR_EXIST.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_LOCKED, FR_NOT_ENOUGH_CORE

Description
เปลี่ยนชื่อ a file or sub-directory และสามารถย้ายมันไปยัง directory อื่นใน the same volume ได้อีกด้วย. The object ที่จะถูกเปลี่ยนชื่อต้องไม่เป็น an open object, มิฉะนั้น the FAT volume สามารถถูกยุบได้. the wrong operation ดังกล่าวจะถูกปฏิเสธอย่างปลอดภัยเมื่อ file lock function ถูกเปิดใช้งาน.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

Example
(https://i.imgur.com/uRjjSQ0.png)
Title: Re: FatFs
Post by: tha on May 21, 2022, 10:22:33 am
http://elm-chan.org/fsw/ff/doc/chmod.html (http://elm-chan.org/fsw/ff/doc/chmod.html)

(https://i.imgur.com/bYqCSHf.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ an object ที่จะถูกเปลี่ยน
   attr
       Attribute flags ที่จะถูกเซ็ตในการรวมกันตั้งแต่หนึ่งขึ้นไปของ flags ต่อไปนี้. The specified flags จะถูกเซ็ตและแฟล็กอื่นๆ จะถูก
       เคลียร์. (https://i.imgur.com/ATmTbLD.png)
   mask
       Attribute mask ที่ระบุว่า attribute ใดจะถูกเปลี่ยน. The specified attributes จะถูกเซ็ตหรือถูกเคลียร์และตัวอื่นๆถูกทิ้งไว้ไม่
       เปลี่ยน.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_chmod function เปลี่ยน the attribute of a file or sub-directory.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_USE_CHMOD == 1.

Example
(https://i.imgur.com/uPxR9Ip.png)
Title: Re: FatFs
Post by: tha on May 21, 2022, 10:47:42 am
http://elm-chan.org/fsw/ff/doc/utime.html (http://elm-chan.org/fsw/ff/doc/utime.html)

(https://i.imgur.com/joW5gac.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ an object ที่จะถูกเปลี่ยน
   fno
      ตัวชี้ไปยัง the file information structure ที่มี a timestamp ที่จะถูกเซ็ตใน member fdate and ftime. ไม่สนใจ members
      อื่นใดๆ.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_utime function เปลี่ยน the timestamp of a file or sub-directory

Example
(https://i.imgur.com/Ovi5bO4.png)

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_USE_CHMOD == 1.

See Also
f_stat, FILINFO
Title: Re: FatFs
Post by: tha on May 21, 2022, 11:03:04 am
http://elm-chan.org/fsw/ff/doc/mkdir.html (http://elm-chan.org/fsw/ff/doc/mkdir.html)

(https://i.imgur.com/blPn7h3.png)

Parameter
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the directory name ที่จะสร้าง.

Return Value
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_DENIED, FR_EXIST, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
This function สร้าง a new directory. เพื่อลบ a directory, ใช้ f_unlink function.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

Example
(https://i.imgur.com/wA9FZmW.png)
Title: Re: FatFs
Post by: tha on May 23, 2022, 08:35:46 am
http://elm-chan.org/fsw/ff/doc/chdir.html (http://elm-chan.org/fsw/ff/doc/chdir.html)

(https://i.imgur.com/7dcTH2O.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the directory ที่จะถูกเซ็ตเป็น current directory.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_chdir function เปลี่ยน the current directory of the logical drive. นอกจากนี้ the current drive จะถูกเปลี่ยนเมื่ออยู่ใน Unix style drive prefix, FF_STR_VOLUME_ID == 2. The current directory ของแต่ละ logical drive ถูกเตรียมข้อมูลเบื้องต้นให้กับ the root directory บน(ตอน) mount.
โปรดทราบว่า the current directory ถูกรักษาไว้ใน the each file system object และ the current drive ถูกรักษาไว้ใน a static variable, ดังนั้นมันยังมีผลต่องานอื่นๆที่ใช้ the file functions ด้วย.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_RPATH >= 1.

Example
(https://i.imgur.com/3XhawWM.png)

See Also
f_chdrive, f_getcwd
Title: Re: FatFs
Post by: tha on May 23, 2022, 09:28:57 am
http://elm-chan.org/fsw/ff/doc/chdrive.html (http://elm-chan.org/fsw/ff/doc/chdrive.html)

(https://i.imgur.com/acYwplv.png)

Parameters
   path
       ระบุ the logical drive number ที่จะถูกเซ็ตเป็น the current drive.

Return Values
FR_OK, FR_INVALID_DRIVE

Description
The f_chdrive function เปลี่ยนเฉพาะ the current drive. The initial value of the current drive number คือ 0. ใน Unix style drive prefix configuration, ฟังชั่นนี้จะไม่ถูกต้องการเพราะ f_chdir function เปลี่ยน the current drive ด้วย. โปรดทราบว่า the current drive ถูกรักษาไว้ใน a static variable, ดังนั้นมันยังมีผลต่องานอื่นๆที่ใช้ the file functions.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_RPATH >= 1.

Example
(https://i.imgur.com/U4UcTku.png)

See Also
f_chdir, f_getcwd
Title: Re: FatFs
Post by: tha on May 23, 2022, 10:41:04 am
http://elm-chan.org/fsw/ff/doc/getcwd.html (http://elm-chan.org/fsw/ff/doc/getcwd.html)

(https://i.imgur.com/JiqmMm3.png)

Parameters
   buff
       ตัวชี้ไปยัง the buffer ที่รับ the current directory string.
   len
       ขนาดของ the buffer ในหน่วยของ TCHAR.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE

Description
The f_getcwd function ดึง full path name ของ the current directory ของ the current drive. เมื่อ FF_VOLUMES >= 2, a heading drive prefix ถูกเพิ่มไปยัง the path name. The style of drive prefix ขึ้นอยู่กับ FF_STR_VOLUME_ID.
Note: ใน revision นี้, function นี้ไม่สามารถดึง the current directory path บน the exFAT volume. มันส่งคืนกลับ the root directory path เสมอ.

QuickInfo
Available when FF_FS_RPATH == 2.

Example
(https://i.imgur.com/f9OcYC1.png)

See Also
f_chdrive, f_chdir
Title: Re: FatFs
Post by: tha on May 24, 2022, 08:20:17 am
http://elm-chan.org/fsw/ff/doc/mount.html (http://elm-chan.org/fsw/ff/doc/mount.html)

(https://i.imgur.com/pxIYOmX.png)

Parameters
   fs
       ตัวชี้ไปยัง the filesystem object ที่จะถูก registered และถูก cleared. Null pointer ยกเลิกการรีจีสเตอร์ the registered
       filesystem object.
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the logical drive. The string ที่ไม่มี drive number หมายถึง the default
       drive.
   opt
      Mounting option. 0: ไม่ mount ตอนนี้ (จะถูก mounted บน the first access ไปยัง the volume), 1: บังคับ mounted the
      volume เพื่อเช็คว่ามันพร้อมจะทำงานหรือไม่.

Return Values
FR_OK, FR_INVALID_DRIVE, FR_DISK_ERR, FR_NOT_READY, FR_NOT_ENABLED, FR_NO_FILESYSTEM
Title: Re: FatFs
Post by: tha on May 24, 2022, 09:00:46 am
Description
FatFs ต้องการ work area (filesystem object) สำหรับแต่ละ logical drives (FAT volumes). ก่อนดำเนินการ any file/directory operations, a filesystem object จำเป็นต้องถูก registered ด้วย f_mount function สำหรับ the logical drive. The file/directory API functions พร้อมที่จะทำงานหลังจากขบวนการนี้. Some volume management functions, f_mkfs, f_fdisk and f_setcp, ไม่ต้องการ a filesystem object.

The f_mount function รีจีสเตอร์/ยกเลิกการรีจีสเตอร์ a filesystem object ให้กับ the FatFs module ดังต่อไปนี้:

1. กำหนด the logical drive ซึ่งถูกระบุโดย path.
2. เคลียร์และยกเลิกการรีจีสเตอร์ the regsitered work area of the volume ถ้ามีอยู่.
3. เคลียร์และรีจีสเตอร์ the new work area ให้กับ the volume ถ้า fs ไม่เป็น NULL.
4. ดำเนินการ volume mount process ให้กับ the volume ถ้า forced mounting ถูกระบุ.
Title: Re: FatFs
Post by: tha on May 24, 2022, 09:50:12 am
ถ้ามี any open object of file or directory บน the logical drive, the object จะไม่ถูกใช้ได้โดยฟังชั่นนี้.

ถ้า forced mounting ไม่ถูกระบุ (opt = 0), ฟังชั่นนี้สำเร็จลงได้เสมอโดยไม่คำนึงถึง the physical drive status. มันเพียงเคลียร์ (ยกเลิกการกำหนดค่าเริ่มต้น) the given work area และรีจีสเตอร์ address ของมันไปยัง the internal table และไม่มีกิจกรรมของ the physical drive ในฟังชั่นนี้. The volume mount process จะถูกพยายามบน  file/directroy function ที่ตามมาถ้า the filesystem object ไม่ถูกเริ่มต้น. (การหน่วงเวลา mounting) The volume mount processes, เริ่มต้น the corresponding physical drive, ค้นหา the FAT volume ในนั้นและจากนั้นเริ่มต้น the work area, ถูกกระทำใน the subsequent file/directory functions เมื่ออย่างใดอย่างหนึ่งของเงื่อนไขต่อไปนี้เป็นจริง.

  •  Filesystem object ยังไม่ถูกเริ่มต้น. มันจะถูกถอดการเริ่มต้นโดย f_mount function.
  •  Physical drive ไม่ถูกเริ่มต้น. มันจะถูกถอดการเริ่มต้นโดย system reset or media removal.
Title: Re: FatFs
Post by: tha on May 24, 2022, 10:15:39 am
ถ้า the function ที่มี forced mounting (opt = 1) ล้มเหลวด้วย FR_NOT_READY, มันหมายความว่า the filesystem object ถูกรีจีสเตอร์สำเร็จแล้วแต่ the volume ไม่พร้อมที่จะทำงานโดยทันที. The volume mount process จะถูกพยายามบน subsequent file/directroy function. ถ้าการจัดให้มีใช้ของ the disk I/O layer ไม่มี asynchronous media change detection, application program จำเป็นต้องดำเนินการ f_mount function หลังจากแต่ละ media change เพื่อบังคับเคลียร์ the filesystem object.

เพื่อยกเลิกการรีจีสเตอร์ the work area, ระบุ a NULL ให้กับ the fs, และดังนั้น the work area สามารถถูกทิ้ง. f_unmount function ถูกจัดให้มีใช้เป็น a macro.
(https://i.imgur.com/1izHwtk.png)

QuickInfo
มีให้ใช้งานเสมอ.

Example
(https://i.imgur.com/VDLAUF7.png)

See Also
f_open, FATFS
Title: Re: FatFs
Post by: tha on May 24, 2022, 11:36:36 am
http://elm-chan.org/fsw/ff/doc/mkfs.html (http://elm-chan.org/fsw/ff/doc/mkfs.html)

(https://i.imgur.com/GDQaJxD.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ระบุ the logical drive ที่จะถูกฟอร์แม็ต. ถ้ามันไม่มี a drive number ในนั้น, มันหมายถึง
       การระบุ the default drive. The logical drive อาจหรืออาจไม่ถูก mounted แล้วสำหรับ the format process.
   opt
       ระบุ the format option structure MKFS_PARM holding format options. ถ้า a null pointer ถูกให้, มันให้ the function
       every option ใน default value. The structure มี five members ดังอธิบายข้างล่าง:
          BYTE fmt
               ระบุ combination of FAT type flags, FM_FAT, FM_FAT32, FM_EXFAT และ bitwise-or ของทั้งสามเหล่านี้,
               FM_ANY. FM_EXFAT ถูกละเว้นเมื่อ exFAT ไม่ถูกเปิดใช้งาน. flags เหล่านี้ระบุว่า FAT type ไหนที่จะถูกสร้างบน the
               volume. ถ้าสองประเภทขึ้นไปถูกระบุ, หนึ่งในนั้นของพวกมันจะถูกเลือกขึ้นอยู่กับ the volume size and au_size. The flag
               FM_SFD ระบุเพื่อสร้าง the volume บน the drive ใน SFD format. The default value คือ FM_ANY.
          DWORD au_size
               ระบุขนาดของ the allocation unit (cluter) เป็นหน่วย byte. ค่าที่ใช้ได้คือกำลัง 2 ระหว่าง sector size และ 128 *
               sector size ที่รวมสำหรับ FAT/FAT32 volume, หรือสูงถึง 16 MB สำหรับ exFAT volume. ถ้า a zero (default value)
               หรือค่าที่ใช้ไม่ได้ใดๆถูกให้, the function จะใช้ default allocation unit size ขึ้นอยู่กับ the volume size.
Title: Re: FatFs
Post by: tha on May 24, 2022, 01:30:48 pm
          UINT n_align
               ระบุ alignment of the volume data area (file allocation pool, มักจะลบ block boundary of flash memory
               media) ในหน่วยของ sector. ค่าที่ใช้ได้สำหรับ member นี้คือระหว่าง 1 and 32768 ที่รวมในกำลัง 2. ถ้า a zero (the
               default value) หรือค่าที่ใช้ไม่ได้ใดๆถูกให้, the function ได้รับ the block size จาก lower layer ด้วย disk_ioctl
               function.
          BYTE n_fat
               ระบุจำนวนของ FAT ก๊อปปี้บน the FAT/FAT32 volume. Valid value สำหรับ member นี้คือ 1 หรือ 2. The default
               value (0) และค่าที่ใช้ไม่ได้ใดๆให้ 1. ถ้า the FAT type เป็น exFAT, member นี้ไม่มีผลอะไร.
          UINT n_root
               ระบุจำนวนของ root directory entries บน the FAT volume. Valid value สำหรับ member นี้คือสูงถึง 32768 และถูก
               ปรับให้สอดคล้องกับ sector size / 32. The default value (0) และค่าที่ใช้ไม่ได้ใดๆให้ 512. ถ้า the FAT type เป็น
               FAT32 หรือ exFAT, member นี้ไม่มีผลอะไร.
   work
       ตัวชี้ไปยัง the working buffer ที่ใช้สำหรับ the format process. ถ้า a null pointer ถูกให้ด้วย FF_USE_LFN == 3, the
       function ได้รับ a memory block สำหรับ the working buffer ในฟังชั่นนี้.
   len
       ขนาดของ the working buffer เป็นหน่วย byte. มันจำเป็นต้องเป็น FF_MAX_SS เป็นอย่างน้อย. Plenty of working buffer จะ
       ลดจำนวนของ write transactions ไปยัง the drive, ดังนั้น the format process จะสำเร็จลงอย่างรวดเร็ว.

Return Values
FR_OK, FR_DISK_ERR, FR_NOT_READY, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_MKFS_ABORTED, FR_INVALID_PARAMETER, FR_NOT_ENOUGH_CORE
Title: Re: FatFs
Post by: tha on May 25, 2022, 07:23:59 am
Description
The FAT sub-type, FAT12/FAT16/FAT32, ของ FAT volume ยกเว้น exFAT ถูกกำหนดโดยเฉพาะจำนวนของ clusters บน the volume และไม่มีสิ่งอื่น, ตามข้กำหนดของ the FAT specification ที่ปล่อยออกโดย Microsoft. ดังนั้น the FAT sub-type ของ created volume จะขึ้นอยู่กับ the volume size and the cluster size. ในกรณีของ combination of FAT type and cluter size ที่ระบุโดย argument ที่ไม่ถูกต้องสำหรับ the volume size, the function จะล้มเหลวด้วย FR_MKFS_ABORTED.
Title: Re: FatFs
Post by: tha on May 25, 2022, 08:06:15 am
The allocation unit, หรือที่เรียกว่า cluster, คือ a unit of disk space allocation สำหรับ files. เมื่อ the size of allocation unit คือ 32768 bytes, a file ที่มีขนาด 100 bytes จะยึดครอง 32768 bytes of disk space. The space efficiency of disk usage จะแย่ลงตามการเพิ่มขึ้นของ size of allocation unit, แต่ในทางกลับกัน, the read/write performance จะเพิ่มขึ้น. ดังนั้น the size of allocation unit จึงเป็นการแลกเปลี่ยนระหว่าง space efficiency and performance. สำหรับ the large volumes ใน GB order, 32768 bytes หรือใหญ่กว่า, จะถูกเลือกโดยอัตโนมัติโดยเริ่มต้น, ขอแนะนำสำหรับกรณีส่วนใหญยกเว้น extremely many small files ถูกสร้างใน the volume.
Title: Re: FatFs
Post by: tha on May 25, 2022, 08:57:17 am
เมื่อ the logical drive ที่จะถูกฟอร์แมตมีความเกี่ยวข้องกับ a physical drive (FF_MULTI_PARTITION == 0 or VolToPart[].pt == 0) และ FM_SFD flag ไม่ถูกระบุ, a partition ที่ครอบครอง entire drive space ถูกสร้างและดังนั้น the FAT volume ถูกสร้างใน the partition. เมื่อ FM_SFD flag ถูกระบุ, the FAT volume ถูกสร้าง โดยไม่มี any disk partitioning.
Title: Re: FatFs
Post by: tha on May 25, 2022, 09:05:59 am
เมื่อ the logical drive ที่จะถูกฟอร์แมตมีความเกี่ยวข้องกับ a specific partition ด้วย multiple partition feature (FF_MULTI_PARTITION == 1 and VolToPart[].pt > 0), the FAT volume ถูกสร้างใน the partition of the physical drive ที่ระบุโดย volume mapping table และ FM_SFD flag ถูกละเว้น. The hosting physical drive จำเป็นต้องถูกแบ่งพาติชั่นด้วย f_fdisk function หรือ any partitioning tool ก่อนการสร้าง the FAT volume ด้วยฟังชั่นนี้. ถ้า the partition ไม่มีอยู่, the function จะยกเลิกด้วย FR_MKFS_ABORTED.
Title: Re: FatFs
Post by: tha on May 25, 2022, 09:43:13 am
มี three standard disk partitioning formats, MBR, GPT and SFD. The MBR format, หรือที่เรียกว่า FDISK format, มักจะถูกใช้สำหรับ harddisk, memory card and U disk. มันสามารถแบ่ง a physical drive ลงในอย่างน้อยหนึ่ง partitions ด้วย a partition table. The GPT, GUID Partition Table, เป็น a newly defined patitioning format สำหรับ large storage devices. FatFs รองรับ the GPT เฉพาะเมื่อ 64-bit LBA ถูกเปิดใช้งาน. The SFD, Super-Floppy Disk, เป็น non-partitioned disk format. The FAT volume ถูกวางตำแหน่งที่ LBA 0 และครอบครอง the entire physical drive โดยไม่มี any disk partitioning. มันมักจะถูกใช้สำหรับ floppy disk, optical disk and most super-floppy media. บางการผสมผสานของระบบและสื่อรองรับเฉพาะอย่างใดอย่างหนึ่ง partitioned format หรือ non-partitioned format และอย่างอื่นๆจะไม่ถูกรองรับ.

บาง systems จัดการ the partitions ใน the on-board storage ใน non-standard format. The partitions ถูกแม็ปเป็น physical drives ที่ระบุโดย pdrv ใน disk_* functions. สำหรับระบบดังกล่าว, SFD format เหมาะที่จะสร้าง the FAT volume ใน the partition.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READOLNY == 0 and FF_USE_MKFS == 1.

Example
(https://i.imgur.com/BEWycDT.png)

See Also
Example of volume size and format parameters, Volume management, f_fdisk
Title: Re: FatFs
Post by: tha on May 25, 2022, 03:50:36 pm
http://elm-chan.org/fsw/ff/doc/fdisk.html (http://elm-chan.org/fsw/ff/doc/fdisk.html)

(https://i.imgur.com/i38duRu.png)

Parameters
   pdrv
       ระบุ the physical drive ที่จะถูกแบ่ง. นี้ไม่ใช่ the logical drive number แต่ the drive identifier ที่ผ่านไปยัง the low level
       disk functions.
   ptbl
       รายการของ partition size ที่จะสร้างบน the drive. The data type LBA_t เป็นนามแฝงของ DWORD or QWORD ขึ้นอยู่กับ
       the configuration option FF_LBA64.
   work
       ตัวชี้ไปยัง the function work area. The size ต้องเป็นอย่างน้อย FF_MAX_SS bytes. เมื่อ a null pointer ถูกให้ด้วย
       FF_USE_LFN = 3, a memory block ถูกรับในฟังชั่นนี้สำหรับ the working buffer.

Return Values
FR_OK, FR_DISK_ERR, FR_NOT_READY, FR_WRITE_PROTECTED, FR_INVALID_PARAMETER, FR_NOT_ENOUGH_CORE
Title: Re: FatFs
Post by: tha on May 25, 2022, 04:44:19 pm
Description
The f_fdisk function สร้าง partitions บน the physical drive. The partitioning format อาจเป็น generic MBR or GPT. The partition map table ระบุวิธีแบ่ง the physical drive. The first item ระบุ the size of the first partition และ the partitions ถูกวางตำแหน่งบน the drive ตามลำดับจาก the first item. เมื่อ the value of item น้อยกว่าหรือเท่ากับ 100, มันระบุ the partition size เป็นเปอร์เซ็นต์ของ the entire drive space. เมื่อมันใหญ่กว่า 100, มันระบุ number of sectors. The partition map table ที่ถูกสิ้นสุดลงด้วยศูนย์, ไม่มี space เหลืออยู่สำหรับ next allocation หรือ 4th partition ถูกสร้างใน MBR format. ถ้า the specified size ใหญ่กว่า space ที่เหลืออยู่บน the drive, the partition จะถูกตัดยอดที่ end of the drive.

โดยค่าเริ่มต้น, partitions ถูกสร้างใน MBR format. มันสามารถสร้างได้สูงถึง four primary partitions บน a drive. GPT format ถูกใช้เพื่อสร้าง the partitions เมื่อ 64-bit LBA ถูกเปิดใช้งาน (FF_LBA64 = 1) และ the drive size เท่ากับหรือใหญ่กว่า FF_MIN_GPT sectors. มันสามารถสร้างมากกว่า ten partitions บน a drive.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READOLNY == 0, FF_USE_MKFS == 1 and FF_MULTI_PARTITION == 1.

Example
(https://i.imgur.com/95ctMeA.png)

See Also
Volume management, f_mkfs
Title: Re: FatFs
Post by: tha on May 26, 2022, 07:30:24 am
http://elm-chan.org/fsw/ff/doc/getfree.html (http://elm-chan.org/fsw/ff/doc/getfree.html)

(https://i.imgur.com/LrsZtNn.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the logical drive. A null-string หมายถึง the default drive.
   nclst
       ตัวชี้ไปยัง the DWORD variable เพื่อเก็บ number of free clusters.
   fatfs
       ตัวชี้ไปยัง pointer ที่จะเก็บ a pointer ไปยัง the corresponding filesystem object.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT

Descriptions
The f_getfree function ได้รับ number of free clusters บน the volume. The member csize ใน the filesystem object แสดงให้เห็น number of sectors per cluster, ดังนั้น the free space ในหน่วยของ sector สามารถถูกคำนวณด้วยข้อมูลนี้. ในกรณีของ FSINFO structure บน the FAT32 volume ไม่อยู่ในซิงค์, ฟังชั่นนี้สามารถส่งคืนกลับ an incorrect free cluster count. เพื่อหลีกเลี่ยงปัญหานี้ , FatFs สามารถถูกบังคับ full FAT scan โดย FF_FS_NOFSINFO option.

QuickInfo
มีให้ใช้งานเมื่อ FF_FS_READONLY == 0 and FF_FS_MINIMIZE == 0.

Example
(https://i.imgur.com/pMDUrQs.png)

See Also
FATFS
Title: Re: FatFs
Post by: tha on May 26, 2022, 08:48:32 am
http://elm-chan.org/fsw/ff/doc/getlabel.html (http://elm-chan.org/fsw/ff/doc/getlabel.html)

(https://i.imgur.com/lypPT3p.png)

Parameters
   path
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the logical drive. Null-string ระบุ the default drive.
   label
       ตัวชี้ไปยัง the buffer เพื่อเก็บ the volume label. ถ้า the volume ไม่มี label, a null-string จะถูกส่งคืนกลับ. เซ็ต null
       pointer ถ้าข้อมูลนี้ไม่ถูกต้องการ. อย่างน้อย The buffer size ควรถูกแสดงข้างล่างเพื่อหลีกเลี่ยง buffer overflow.   (https://i.imgur.com/5nqi6j5.png)
   vsn
       ตัวชี้ไปยัง the DWORD variable เพื่อเก็บ the volume serial number. เซ็ต null pointer ถ้าข้อมูลนี้ไม่ถูกต้องการ.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT

QuickInfo
Available when FF_USE_LABEL == 1.

Example
(https://i.imgur.com/4X4Tg3p.png)

See Also
f_setlabel
Title: Re: FatFs
Post by: tha on May 26, 2022, 09:33:56 am
http://elm-chan.org/fsw/ff/doc/setlabel.html (http://elm-chan.org/fsw/ff/doc/setlabel.html)

(https://i.imgur.com/jD3bpyG.png)

Parameters
   label
       ตัวชี้ไปยัง the null-terminated string ที่ระบุ the volume label ที่จะถูกเซ็ต.

Return Values
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_INVALID_NAME, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT

Description
เมื่อ the string มี a drive prefix, the volume label จะถูกเซ็ตถึง the volume ที่ระบุโดย the drive prefix. Unix style volume ID ไม่สามารถถูกใช้เพื่อระบุ the volume. ถ้า drive number ไม่ถูกระบุ, the volume label จะถูกเซ็ตเป็นo the default drive. ถ้าความยาวของ the given volume label เป็นศูนย์, the volume label บน the volume จะถูกเอาออก. The format of the volume label เป็นดังแสดงข้างล่าง:

  •  สูงถึง 11 bytes long เมื่อ conversion of OEM code page ที่ FAT volume.
  •  สูงถึง 11 characters long ที่ exFAT volume.
  •  characters ที่ยอมได้สำหรับ FAT volume คือ: characters ยอมได้สำหรับ SFN ไม่รวมจุด. อักขระตัวพิมพ์เล็กจะถูกแปลงขึ้น.
  •  characters ที่ยอมได้สำหรับ exFAT volume คือ: characters ยอมได้สำหรับ LFN รวมถึงจุด. อักขระตัวพิมพ์เล็กจะถูกสงวนไว้.
  •  Spaces สามารถถูกฝังที่ไหนก็ได้ใน the volume label. Trailing spaces ถูกตัดออกที่ at FAT volume.

หมายเหตุ: The standard system (Windows) มี a problem ที่ the volume label ที่มี a heading \xE5 บน the FAT volume. เพื่อหลีกเลี่ยงปัญหานี้, ฟังชั่นนี้จะปฏิเสธ volume label ดังกล่าวว่าเป็น invalid name.

QuickInfo
Available when FF_FS_READONLY == 0 and FF_USE_LABEL == 1.

Example
(https://i.imgur.com/sROQ5Zz.png)

See Also
f_getlabel
Title: Re: FatFs
Post by: tha on May 26, 2022, 10:03:45 am
http://elm-chan.org/fsw/ff/doc/setcp.html (http://elm-chan.org/fsw/ff/doc/setcp.html)

(https://i.imgur.com/SBhYZeq.png)

Parameters
   cp
       OEM code page ที่จะถูกใช้สำหรับ the path name. Valid values เป็นดังต่อไปนี้. (https://i.imgur.com/dl9kOh6.png)

Return Values
FR_OK, FR_INVALID_PARAMETER

Description
The f_setcp function เซ็ต the active code page สำหรับ the path name. นอกจากนี้ code conversion of string functions จะได้รับผลกระทบโดย the setting of code page เมื่อ FF_LFN_UNICODE >= 1 and FF_STRF_ENCODE == 0. เนื่องจาก the initial setting of the code page เป็น 0 และ API function ที่มี extended character จะทำงานไม่ถูกต้อง, a valid code page จำเป็นต้องถูกเซ็ตบน the system start-up และมันไม่ควรถูกเปลี่ยนกลางทาง.

QuickInfo
Available when FF_CODE_PAGE == 0.
Title: Re: FatFs
Post by: tha on May 26, 2022, 10:53:51 am
Media Access Interface

เนื่องจาก FatFs module เป็น the Filesystem Layer ไม่ขึ้นอยู่กับ platforms and storage media, มันแยกจาก the physical devices, อย่างเช่น memory card, harddisk และ any type of storage device โดยสิ้นเชิง. The storage device control module ไม่เป็นส่วนหนึ่งใดๆของ FatFs module และมันจำเป็นต้องถูกจัดให้มีโดยผู้นำไปใช้งาน. FatFs ควบคุม the storage devices โดยทาง a simple media access interface ที่แสดงข้างล่าง. นอกจากนี้การนำไปใช้งานอย่างง่ายๆสำหรับบาง platforms มีให้ใช้งานใน the downloads. A function checker สำหรับ storage device control module  มีให้ใช้งาน ที่นี่.

(https://i.imgur.com/SUspk6g.png)

(https://i.imgur.com/33S9eVm.png)
Title: Re: FatFs
Post by: tha on May 26, 2022, 02:52:56 pm
http://elm-chan.org/fsw/ff/doc/dstat.html (http://elm-chan.org/fsw/ff/doc/dstat.html)

(https://i.imgur.com/2ZT6HjU.png)

The disk_status function ถูกเรียกเพื่อสอบถาม the current drive status.

Parameter
   pdrv
       Physical drive number ที่ระบุ the target device. ศูนย์เสมอใน single drive system.

Return Values
The current drive status ถูกส่งคืนกลับในการรวมกันของ status flags ที่อธิบายข้างล่าง. FatFs อ้างถึงเฉพาะ STA_NOINIT and STA_PROTECT.
   STA_NOINIT
       แสดงให้เห็นว่า the device ยังไม่ได้ถูกกำหนดค่าเริ่มต้นและไม่พร้อมจะทำงาน. flag นี้ถูกเซ็ตบน system reset, media removal
       หรือ failure of disk_initialize function. มันถูกเคลียร์บน disk_initialize function ทำสำเร็จลง. Any media change ที่เกิด
       ขึ้นแบบไม่ประสานเวลาต้องถูกจับและสะท้อนมันไปยัง the status flags, มิฉะนั้น auto-mount function จะทำงานไม่ถูกต้อง. ถ้า
       the system ไม่รองรับ media change detection, application program จำเป็นต้อง re-mount the volume อย่างชัดเจน
       ด้วย f_mount function หลังจากแต่ละ media change.
   STA_NODISK
       แสดงให้เห็นว่าไม่มี medium ใน the drive. นี้ถูกเคลียร์เสมอเมื่อ the drive เป็น non-removable class. โปรดทราบว่า FatFs ไม่
       ได้อ้างถึง flag นี้.
   STA_PROTECT
       แสดงให้เห็นว่า the medium มีการป้องกันการเขียน . นี้ถูกเคลียร์เสมอเมื่อ the drive ไม่มี write protect function. จะใช้ไม่ได้ถ้า
       STA_NODISK ถูกเซ็ต.
Title: Re: FatFs
Post by: tha on May 26, 2022, 03:43:52 pm
http://elm-chan.org/fsw/ff/doc/dinit.html (http://elm-chan.org/fsw/ff/doc/dinit.html)

(https://i.imgur.com/Y7If2SL.png)

The disk_initialize function ถูกเรียกเพื่อกำหนดค่าเริ่มต้น the storage device.

Parameter
   pdrv
       Physical drive number ที่ระบุ the target device. ศูนย์เสมอที่ single drive system.

Return Values
ฟังชั่นนี้ส่งคืนกลับ the current drive status flags เป็น the result. สำหรับรายละเอียดของ the drive status, โปรดดูที่ the disk_status function.

Description
ฟังชั่นนี้กำหนดค่าเริ่มต้น the storage device และเตรียมมันให้พร้อมเพื่อ generic read/write. เมื่อ the function สำเร็จลง, STA_NOINIT flag ใน the return value จะถูกเคลียร์.
หมายเหตุ: ฟังก์ชันนี้จำเป็นต้องอยู่ภายใต้การควบคุมของ FatFs module. Application program ต้องไม่เรียกฟังชั่นนี้, มิฉะนั้น FAT structure บน the volume อาจแตกได้. เพื่อกำหนดค่าเริ่มต้น the filesystem ใหม่, ใช้ f_mount function แทน.
Title: Re: FatFs
Post by: tha on May 27, 2022, 07:05:14 am
http://elm-chan.org/fsw/ff/doc/dread.html

(https://i.imgur.com/9ELn4NY.png)

The disk_read function ถูกเรียกเพื่ออ่าน data จาก the sector(s) of storage device.

Parameters
   pdrv
       Physical drive number ที่ระบุ the target device.
   buff
       ตัวชี้ไปยัง the first item of the byte array เพื่อเก็บ read data. Size of read data จะเป็น the sector size * count bytes.
   sector
       เริ่มต้น sector number ใน LBA. The data type LBA_t เป็นนามแฝงของ DWORD or QWORD ขึ้นอยู่กับ the configuration option.
   count
       Number of sectors ที่จะอ่าน.

Return Value
   RES_OK (0)
       The function สำเร็จลง.
   RES_ERROR
       An unrecoverable hard error ที่เกิดขึ้นในระหว่าง the read operation.
   RES_PARERR
       parameter ไม่ถูกต้อง.
   RES_NOTRDY
       The device ยังไม่ถูกกำหนดค่าเริ่มต้น.
Title: Re: FatFs
Post by: tha on May 27, 2022, 08:46:25 am
Description
Read/write operation ไปยัง the generic storage devices, อย่างเช่น memory card, hadddisk and optical disk, ถูกทำในหน่วยของ block of data bytes ที่เรียกว่า sector. FatFs รองรับ the sector size ในช่วง 512 ถึง 4096 bytes. เมื่อ FatFs ถูกกำหนดค่าสำหรับ fixed sector size (FF_MIN_SS == FF_MAX_SS, นี่เป็นกรณีส่วนใหญ่), the generic read/write function ต้องทำงานที่ the sector size เท่านั้น.  เมื่อ FatFs ถูกกำหนดค่าสำหรับ variable sector size (FF_MIN_SS < FF_MAX_SS), the sector size of medium ถูกสอบถามด้วย disk_ioctl function หลังจาก disk_initialize function สำเร็จลง.
Title: Re: FatFs
Post by: tha on May 27, 2022, 09:05:03 am
มีข้อควรพิจารณาบางประการเกี่ยวกับ the memory addres ที่ส่งผ่านโดยทาง buff. มันไม่ได้เป็นแถวเดียวกันกับ the word boundary เสมอไป, เน่องจาก the argument ถูกกำหนดเป็น BYTE*. The unaligned transfer request สามารถเกิดขึ้นที่ direct transfer. ถ้า the bus architecture, โดยเฉพาะy DMA controller, ไม่ยอมให้ unaligned memory access, มันควรถูกแก้ไขในฟังชั่นนี้. หากเป็นกรณี มีวิธีแก้ไขปัญหาชั่วคราวที่อธิบายไว้ด้านล่างเพื่อหลีกเลี่ยงปัญหานี้.

  •  แปลง word transfer เป็น byte transfer ด้วยเคล็ดลับบางประการในฟังชั่นนี้. - ขอแนะนำ.
  •  ในการเรียก the f_read(), หลีกเลี่ยง long read request ที่รวมทั้งหมดของ sector. - Any direct transfer ไม่เคยเกิดขึ้น.
  •  ในการเรียก the f_read(fp, data, btw, bw), ทำให้แน่ใจว่า (((UINT)data & 3) == (f_tell(fp) & 3)) เป็นจริง. - Word
      alignment of buff จะถูกรับประกัน.

นอกจากนี้ the memory area อาจไม่สามารถเข้าถึงได้ใน DMA กรณีนี้ถ้ามันตั้งอยู่บน the tightly coupled memory ซึ่งมักจะถูกใช้สำหรับ stack. ใช้ double buffered transfer, หรือหลีกเลี่ยงการกำหนด file I/O buffer, FATFS and FIL structure เป็น local variables ที่อยู่บน the stack.

โดยทั่วไป, a multiple sector read request ต้องไม่ถูกแบ่งออกลงใน single sector transactions ไปยัง the storage device, มิฉะนั้น read throughput จะแย่ลง.
Title: Re: FatFs
Post by: tha on May 27, 2022, 09:27:15 am
http://elm-chan.org/fsw/ff/doc/dwrite.html (http://elm-chan.org/fsw/ff/doc/dwrite.html)

(https://i.imgur.com/hnlmV0W.png)

The disk_write function ถูกเรียกเพื่อเขียน data ไปยัง the sector(s) of storage device.

Parameters
   pdrv
       Physical drive number ที่ระบุ the target device.
   buff
       ตัวชี้ไปยัง the first item of the byte array ที่จะถูกเขียน. Size of data ที่จะถูกเขียนคือ the sector size * count bytes.
   sector
       เริ่มต้น sector number ใน LBA. The data type LBA_t เป็นนามแฝงของ DWORD or QWORD ขึ้นอยู่กับ the configuration
       option.
   count
       Number of sectors ที่จะเขียน.

Return Value
   RES_OK (0)
       The function สำเร็จลง.
   RES_ERROR
       An unrecoverable hard error ที่เกิดขึ้นในระหว่าง the read operation.
   RES_PARERR
       parameter ไม่ถูกต้อง.
   RES_NOTRDY
       The device ยังไม่ถูกกำหนดค่าเริ่มต้น.
Title: Re: FatFs
Post by: tha on May 27, 2022, 10:26:53 am
Description
The specified memory address ไม่ได้เป็นแถวเดียวกันกับ the word boundary เสมอไป เนื่องจาก the argument ถูกกำหนดเป็น BYTE*. สำหรับข้อมูลเพิ่มเติม, โปรดดูที่ the description of disk_read function.
โดยทั่วไป, a multiple sector write request (count > 1) ต้องไม่ถูกแบ่งออกลงใน single sector transactions ไปยัง the storage device, มิฉะนั้น the file write throughput จะลดลงอย่างมาก.
FatFs คาดว่าจะมีฟังก์ชันการเขียนแบบหน่วงเวลาของ the disk control layer. The write operation ไปยัง the media ไม่จำเป็นต้องเสร็จสมบูรณ์เมื่อรีเทิร์นจากฟังชั่นนี้ด้วย write operation กำลังดำเนินการหรือ data ถูกเก็บเฉพาะลงใน the write-back cache. แต่ write data บน the buff จะใช้ไม่ได้หลังจากรีเทิร์นจากฟังชั่นนี้. The write completion request ถูกกระทำโดย CTRL_SYNC command ของ disk_ioctl function. ดังนั้น, ถ้า a delayed write function ถูกนำมาใช้งาน, the write throughput of the filesystem จะถูกปรับปรุงให้ดีขึ้น.
หมายเหตุ: Application program ต้องไม่เรียกฟังชั่นนี้, มิฉะนั้น FAT structure บน the volume อาจถูกทำให้พังลงได้.

QuickInfo
ฟังชั่นนี้จะไม่ถูกต้องการเมื่อ FF_FS_READONLY == 1.
Title: Re: FatFs
Post by: tha on May 28, 2022, 07:15:59 am
http://elm-chan.org/fsw/ff/doc/dioctl.html (http://elm-chan.org/fsw/ff/doc/dioctl.html)

(https://i.imgur.com/GGNZj21.png)

The disk_ioctl function ถูกเรียกเพื่อควบคุม device specific features และฟังก์ชันเบ็ดเตล็ดอื่นๆ นอกเหนือจาก generic read/write.

Parameters
   pdrv
       Physical drive number ที่ระบุ the target device.
   cmd
       Command code.
   buff
       ตัวชี้ไปยัง the parameter ขึ้นอยู่กับ the command code. ไม่ต้องสนใจถ้า the command ไม่มี parameter ที่จะถูกส่งผ่าน.

Return Value
   RES_OK (0)
       The function สำเร็จลง.
   RES_ERROR
       An error เกิดขึ้น.
   RES_PARERR
       The command code หรือ parameter ไม่ถูกต้อง.
   RES_NOTRDY
       The device ยังไม่ถูกกำหนดค่าเริ่มต้น..

Description
The FatFs module ต้องการเฉพาะ five device independent commands ที่อธิบายข้างล่าง.
(https://i.imgur.com/SqANNA6.png)
FatFs จะไม่ใช้ทั้ง any device dependent command หรือ user defined command. ตารางต่อไปนี้แสดงตัวอย่างของ non-standard commands ซึ่งอาจเป็นประโยชน์สำหรับบาง applications.
(https://i.imgur.com/MhOKezn.png)

QuickInfo
The disk_ioctl function ไม่ถูกต้องการเมื่อ FF_FS_READONLY == 1 and FF_MAX_SS == FF_MIN_SS.
Title: Re: FatFs
Post by: tha on May 28, 2022, 08:27:22 am
http://elm-chan.org/fsw/ff/doc/fattime.html (http://elm-chan.org/fsw/ff/doc/fattime.html)

(https://i.imgur.com/XQMsAkc.png)

The get_fattime function ถูกเรียกเพื่อรับ the current time.

Return Value
Current local time จะถูกส่งคืนกลับเป็น bit-fields ที่แพ็คลงใน a DWORD value. The bit fields เป็นดังต่อไปนี้:

   bit31:25
       Year ตั้งต้นจาก the 1980 (0..127, ตัวอย่างเช่น 37 สำหรับ 2017)
   bit24:21
       Month (1..12)
   bit20:16
       Day of the month (1..31)
   bit15:11
       Hour (0..23)
   bit10:5
       Minute (0..59)
   bit4:0
       Second / 2 (0..29, ตัวอย่างเช่น 25 สำหรับ 50)

Description
The get_fattime function จะส่งคืนกลับ any valid time ถึงแม้ว่า the system does ไม่รองรับ a real time clock. ถ้าศูนย์ถูกส่งคืนกลับ, the file จะไม่มี a valid timestamp.

QuickInfo
ฟังชั่นนี้จะไม่ถูกต้องการเมื่อ FF_FS_READONLY == 1 or FF_FS_NORTC == 1.

Example
(https://i.imgur.com/Psjclyr.png)