Software companies working on Embedded Systems use re-usable embedded software components for Flash, File Systems and Communication. These components are normally purchased from a separate third party vendor as normally embedded companies do not want invest their resources to generate these components and they are best to be taken from some vendors who have strong experience in creating such stacks and also provide support for them.
These software stacks are extremely important components in working of the entire embedded component so getting the right stack from a proper is very critical.