瀏覽單個文章
kukulcan
Regular Member
 

加入日期: Aug 2003
文章: 82
引用:
作者nagual
對於一般應用程式來說, Linux Kernel所提供的System Call是一致的, 不會對
不同的機器而有所不同, 這個部份用一致的interface來達成machine independent.

但是, Linux kernel也有machine dependent的code, 很多是由組合語言寫成,
但這都是低階的部份, 最後還是會用同一種interface把這些不同的地方, 包裝起來,
因此一般的應用程式發展者, 或者甚至驅動程式發展者, 都能用同樣的System
Call和Function Call.

Linux能在很多機器上跑, 就是有人把低階不同的部份, 去實作出一致的
interface/function call. That's all.



主要的關鍵是在於 Linux Kernel SourceCode 內的 arch/
不過官方的 Code大都只完整支援i386 ia64 amd64 等個人電腦見得到的architecture。但是仍有廠商願意針對奇怪的cpu寫出這些低階的code

for example:
ftp://ftp.arm.linux.org.uk/pub/linu...21-rmk1-pxa1.gz
這是intel 針對 xscale PXA270 cpu所寫的 patch,目的在針對 PXA270 在Kernel 2.4.21上面的Support
http://www.intel.com/design/embedde...sors/302302.htm

另外 RMK也寫了一堆對於 ARM7 ARM9的支援程式碼。

真的要討論Machine dependent code,最明顯的範例就是關於"開機程序"的程式碼,這絕對是因為不同機器而有不同的程序。

這邊有一個網站文件,專講 i386的 boot
http://www.tldp.org/HOWTO/Linux-i38...OWTO/index.html

關於Setup.S boot.S 這真的都是到 ASM Level了....
舊 2005-11-29, 02:47 AM #27
回應時引用此文章
kukulcan離線中