|
In my opinion, coding is growing up to a wild range in this world.
somebody writes code that runs on 8051 mcu;
somebody writes code that runs on arm;
somebody writes code that runs on rtos...real time operation system...ucos-ii, ecos,uclinux,vxworks...
somebody writes code that runs on os...windows xp, linux, unix...
In the past years, i write code with 8051 mcu to make products. my code need to access each special funtion register in 8051,then 8051 mcu works, and then the platform works.
the term firmware used to mean that code runs on a plateform without a os. Before os runs, there must be a firmware runs on that plateform. it just like bios in a mainboard.(bios is firmware that runs on mainboard will check cpu,chipset,hd,floppy,sdram....when every thing is ready bios will go to load os image into sdram to run that whole os.)
the term software used to mean that code run on os. you don't need to take care hardware level issue. just only need to call functions that are built in os.
i think this is the major difference between firmware and software.
in 8 bit mcu world, os is not needed. and code called firmware runs on it.
in 32 bit mcu world, os is needed. and code called software runs on os that runs on the platform. before os image loaded to run, there need a bootloader to load os image into sdram. this bootlaoder is a firmware, and its job is to load os image into sdram. after this job is done, bootloader becomes useless and is like a piece of garbage in memory. |