|
|||||||||||
Technical Support On-Line Manuals RL-ARM User's Guide (MDK v4) RL-RTX RL-FlashFS Technical Data NAND Flash Translation Layer Embedded File System Memory Organization Allocation Information File Data Fragments Limitations Configuring RL-FlashFS Source Files Configuration Options File System Flash Drive SPI Flash Drive RAM Drive Memory Card Drive USB Flash Drive NAND Flash Drive Using RL-FlashFS Using Flash Devices Flash Driver Sector Layout Converting FlashPrg.c Converting FlashDev.c Limitations When Using Internal Flash Using SPI Flash Devices SPI Flash Driver SPI Sector Layout Using RAM Devices Using Memory Card Devices MCI Driver SPI Driver Using FlashFS with USB Devices FAT Driver Using NAND Devices NAND Driver NAND Page Data Layout Function Overview File I/O Routines File Maintenance Routines File Time Support Routines Flash Driver Routines FAT Driver Routines MCI Driver Routines SPI Driver Routines NAND Driver Routines IOC Interface Routines System Routines RL-TCPnet RL-CAN RL-USB Example Programs Library Reference Appendix |
SPI Sector LayoutThe SPI Sector Layout description file, FS_SPI_FlashDev.h, specifies the memory map of a SPI Flash device. Every device has its own description file, which is located in the folder \ARM\RL\FlashFS\Flash. To generate a description file, copy the flash sector layout information from the Flash Device datasheet, specify a sector size in bytes, and a sector base address relative to an SPI Flash Device. The Macro DSB converts this information into the RL-FlashFS compatible sector description. To improve the RL-FlashFS performance, the sector information is stored as a table in the code. The RL-FlashFS scans this table when accessing files from the SPI Flash device. The following example shows a Flash sector layout configuration for the Intel SPI Flash device 25F160S33 with 2MByte memory: #define SPI_FLASH_DEVICE \ DSB(0x10000, 0x000000), /* Sector Size 64kB */ \ DSB(0x10000, 0x010000), /* Sector Size 64kB */ \ DSB(0x10000, 0x020000), /* Sector Size 64kB */ \ DSB(0x10000, 0x030000), /* Sector Size 64kB */ \ DSB(0x10000, 0x040000), /* Sector Size 64kB */ \ DSB(0x10000, 0x050000), /* Sector Size 64kB */ \ DSB(0x10000, 0x060000), /* Sector Size 64kB */ \ DSB(0x10000, 0x070000), /* Sector Size 64kB */ \ DSB(0x10000, 0x080000), /* Sector Size 64kB */ \ DSB(0x10000, 0x090000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0A0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0B0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0C0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0D0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0E0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x0F0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x100000), /* Sector Size 64kB */ \ DSB(0x10000, 0x110000), /* Sector Size 64kB */ \ DSB(0x10000, 0x120000), /* Sector Size 64kB */ \ DSB(0x10000, 0x130000), /* Sector Size 64kB */ \ DSB(0x10000, 0x140000), /* Sector Size 64kB */ \ DSB(0x10000, 0x150000), /* Sector Size 64kB */ \ DSB(0x10000, 0x160000), /* Sector Size 64kB */ \ DSB(0x10000, 0x170000), /* Sector Size 64kB */ \ DSB(0x10000, 0x180000), /* Sector Size 64kB */ \ DSB(0x10000, 0x190000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1A0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1B0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1C0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1D0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1E0000), /* Sector Size 64kB */ \ DSB(0x10000, 0x1F0000), /* Sector Size 64kB */ \ #define SF_NSECT 32 It is not optimal to define lots of small sectors (256 bytes or smaller). A more optimal solution for the RL-FlashFS is to join several physical sectors into bigger virtual sectors. In this case, the function EraseSector must be modified to erase a virtual sector, not a single physical sector. | ||||||||||
|
Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.