2007年12月8日 星期六

軟體, 硬體, 還是韌體?(中)

要清楚區分SOC的軟體, 硬體
得先從SOC的架構來看
基本而言, SOC的架構可以想像成一個PC
SOC該有的, 基本上PC應該也不會少
PC中, 其架構分為軟體, 硬體, 韌體
SOC也沒有少
因此, 我們可以把架構以圖形的方式來表示:


由上圖中我們可以發現
所謂的韌體部分, 並不是獨立形成一個區塊
而是包含在硬體裡面
這點必須要解釋一下

在SOC裡面, 所謂的韌體是相等於"硬體的初始化程式"
我們知道在硬體之前, 必須要先對它做初始化的動作
就好比一般PC在開機時, BIOS會先自我檢測所有的硬體
在檢測的同時, 也將這些硬體"喚醒(Wake UP)"
也就是等同於告訴它們該準備工作了

一般的韌體是以"組合語言(Assembler)"來撰寫
當然現在很多也是藉由C語言撰寫後, 經由編譯器及組譯器轉成機械語言
再將機械語言存放至ROM裡面
開機的時候, BIOS會先到ROM去讀取初始化資料
如此一來才能將其他硬體喚醒

有了這基本的了解, 再來就是解釋所撰寫的程式是哪一層

以現在的C語言來說, 已經包含了軟體, 硬體及韌體
並不是C語言的能力比較強
而是許多的程式編輯軟體中
已經包括了各種硬體的編譯器及組譯器

換句話說, 不論寫的是硬體軟體, 甚至韌體
都有辦法轉換成該系統的機械語言執行
再加上C語言是大多數設計人員所能接受的語言
因此支援性也越來越廣

在本篇最後, 敝人整理一下這三大部份常用撰寫軟體及撰寫語言:
硬體 : VHDL, Verilog, SystemC, C
韌體 : C, 組合語言(依系統而異)
軟體 : C, JAVA

介紹到此, 是該為本篇下個結論了
當各位在撰寫程式的時候
需要多考量到所寫的程式是軟體還是硬體
因為在程式撰寫的時候, 這是相當重要的關鍵

怎麼說呢? 下一篇會有更深入的探討

沒有留言: