XXX
分类: LINUX
2013-03-26 13:54:58
Book给我发了一封email,说他是台湾的一名firmware engineer,也在研究S3C2410。由此我想,firmware是什么,firmware engineer与software engineer的工作有什么不同。。。当然,核心的问题就在于firmware这个概念。以前听过但是没有留意。下面要解决的问题就是理顺hardware/firmware/software这几个概念,由此为出发点加深对嵌入式系统的认识。
在搜索资料,逐步形成认识的过程中,找到了一本书,《Embedded Systems Firmware Demystified》,在Preface中,不仅基本解决了firmware是什么,而且对嵌入式系统的特点还有独到的见解。英文很简洁,不难理解。引用如下:
An embedded system is just a computer buried inside some other product. Surprisingly, you can know a great deal about programming and computing and still get lost in the arcane world of embedded systems hardware software firmware differ. In the world of embedded systems programming, countless details — both hardware- and-related — make the development process seem like a path that few have traveled and even fewer have survived. How do software,firmware and hardware? How in the world does a 100,000-line program end up inside a device smaller than my fingernail? What is flash memory and why do I need a cache? What is the difference between a task and a process? Do I need to worry about reentrancy? As we progress through Embedded Systems Firmware Demystified, you will come to see that these questions are not as complex as they first appear. |
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. |