Memory is simple electronic system, consisting of millions of individual cells which have a unique address which stores 1 bit of data- either a ‘1’ or a ‘0’.
As we all know, Embedded Systems have limited physical resources. Hard drives are faster than Flash memories but are bulky, have rotating parts, are sensitive to physical shock, require multiple power supply voltages which make them unsuitable for many embedded systems. Flash memory combines the best features of the memory devices. Let us have a look at it.
Flash Memory Data Storage
It consists of two types, namely, NOR and NAND Flash Memory.
NOR Flash Memory
In NOR Flash Memory, data can be changed from 1 to 0 under software control using data writes to cell address. However, to change a bit from a 0 to 1 requires erasing an entire block. To modify data stored in Flash Memory array, the block in which the modified data resides must be completely erased. Even if only a byte needs to be changed, the entire block must be erased and re-written. This architecture makes it slower and has a limited number of write cycles. It is a bit expensive than NAND with easy code execution.
NAND Flash Memory
It is a relatively new technology having smaller block sizes, resulting in faster and more efficient writes. Write cycle lifetime of NAND Flash > NOR Flash but erase time of NAND Flash < NOR due to small block size. NAND Flash is more suitable for bulk storage. Use of smaller chunks also increases read time.
Flash Usage – Initial RAM Disk
It is an initial root file system that is mounted prior to when the real root file system is available. It is a scheme for loading a temporary root file system into memory, which may be used as a part of the Linux startup process.
A limitation of Flash Architecture accounts for data loss in case of a power failure ( in case of large blocks ). A popular file system JFFS2 ( Journaling Flash File System 2 ) which improves these limitations.
- Virtually, all legacy Embedded OS view and manage system memory as a single large, flat address space.
- For example- If a microprocessor has 24 physical address lines, its memory would be 16 MB ( 2^<Address Lines>). Therefore, hexadecimal address would range from 0x00000000 to 0x00ffffff.
- High performance microprocessors contain complex hardware engines called Memory Management Units (MMU’s) like the Beagle Bone has one.
Memory Management Unit (MMU)
- It is a computer hardware component that handles all memory and caching operations associated with the processor.
- It is a part of CPU, though in some designs is a separate unit.
Do watch this YouTube video on Processes, mode switch : Execution_Context
I hope you found this tutorial useful. If you have any doubt, feel free to ask. Next Tutorial : Writing Linux Drivers