MKS51A010-503-00是一個(gè)將Linux內(nèi)核移植到各種基于ARM處理器的目標(biāo)系統(tǒng)的項(xiàng)目。由Russell Kingrmk@arm.linux.org.uk主持。已經(jīng)為超過100多種不同的目標(biāo)系統(tǒng)成功完成了移植工作。這里所移植的Linux內(nèi)核是Linux-2.4.24,ARM Linux補(bǔ)丁是2004年2月發(fā)布的Linux-2.4.24-vrs1。
MKS51A010-503-00在移植過程中,重點(diǎn)工作是啟動(dòng)程序的實(shí)現(xiàn)和ARM Linux下針對(duì)具體的硬件環(huán)境楨緩沖設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)。 啟動(dòng)程序的主要步驟為:設(shè)置入口指針,設(shè)置中斷向量,設(shè)置和初始化RAM,初始化至少一個(gè)竄行端口,檢測(cè)CPU類型,初始化堆棧和寄存器,初始化存儲(chǔ)器系統(tǒng),設(shè)置內(nèi)核相關(guān)列表,呼叫內(nèi)核鏡像。需要特別注意的是在設(shè)置CPU寄存器時(shí),r?0 為0,r2 為檢測(cè)出的CPU型號(hào)號(hào)碼,MMU關(guān)閉,指令Catch打開,數(shù)據(jù)Catch清空后關(guān)閉。
Framebuffer是一個(gè)提供顯示內(nèi)存和顯示芯片寄存器從物理內(nèi)存映射到進(jìn)程地址空間中的設(shè)備,其驅(qū)動(dòng)程序主要依靠三個(gè)數(shù)據(jù)結(jié)構(gòu):fb_info﹑fb_var_screeninfo﹑fb_fix_screeninfo。fb_info結(jié)構(gòu)只能在內(nèi)核空間訪問,其內(nèi)部定義了struct fb_ops,結(jié)構(gòu)fb_ops的成員即framebuffer的一系列操作函數(shù)。幀緩沖設(shè)備的驅(qū)動(dòng)主要就是編寫這些接口函數(shù)。
fb_var_screeninfo和fb_fix_screeninfo定義視頻板卡的硬件特性。如顯存大小﹑每行顯示位數(shù)﹑分辨率等與特定硬件相關(guān)的特性。幀緩沖驅(qū)動(dòng)程序首先調(diào)用register_framebuffer注冊(cè)一個(gè)framebuffer設(shè)備,后在Linux/drivers/video/fbmem.c中登記初始化函數(shù)。所有幀緩沖驅(qū)動(dòng)程序的ioctl調(diào)用由fbmem.c統(tǒng)一實(shí)現(xiàn)。
2.3 Microwindows Microwindows 是專門設(shè)計(jì)用于在小型設(shè)備上開發(fā)具有高品質(zhì)圖形功能的開放式源碼桌面系統(tǒng),使用較少的RAM和文件存儲(chǔ)空間(100K-600K),在運(yùn)行的過程中僅需要50~250KB的內(nèi)存空間。Microwindows不需要任何操作系統(tǒng) 和圖形系統(tǒng)的支持,可以運(yùn)行32位的內(nèi)核支持Framebuffer機(jī)制的Linux系統(tǒng)上。Microwindows的主要目標(biāo)之一就是把把圖形視窗環(huán)境引入到運(yùn)行Linux的小型設(shè)備和平臺(tái)上,提供與X Window相似的功能。
Microwindows采用分層結(jié)構(gòu)設(shè)計(jì)方法,在底層提供對(duì)屏幕,鼠標(biāo)或觸摸屏,鍵盤的驅(qū)動(dòng),MKS51A010-503-00是程序能夠訪問實(shí)際的硬件和其他用戶訂制設(shè)備;中間層實(shí)現(xiàn)了一個(gè)可以移植的圖形引擎,這個(gè)圖形引擎實(shí)現(xiàn)畫線,填充,多邊行,剪輯和多種顏色模式;zui上層實(shí)現(xiàn)了多種API以適應(yīng)不同的應(yīng)用環(huán)境。
MKS51A010-503-00每一層都可以根據(jù)不同的應(yīng)用需求修改代碼或重新編碼。 系統(tǒng)中zui底層針對(duì)顯示屏,鼠標(biāo),觸摸屏,鍵盤等各定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)供圖形引擎使用,分別為struct _mwscreendevice ﹑struct _mousedevice 和struct _kbddevice , 包含了針對(duì)設(shè)備的硬件驅(qū)動(dòng)代碼接口。
MCG 2183-ME5049 BRUSHLESS SERVO MOTOR W/ ENCODER AND GEAR DIAMETER 13MM APPR.
RACAL-DANA DIGAITAL MULTIMETER 5000 WITH OPTS
DIONEX (C) 1996 FAB045447-10 AD20-P10
DIONEX (C) 1996 FAB045339-07 ASSY045340 AD20-SP1
MITSUBISHI AC SERVO MR-J2-03BH5 DISPLAY CARD BIT DAMAGED
COLE-PARMER MASTERFLEX EASY LOAD II 77200-50
HP 5180-0176 CARD
SUPER VEXTA 5-PHASE UDK5128N DRIVER
VEXTA FINE STEP 5-PHASE DFU1514 DRIVER
EH CONDUCTA 0-200mS/cm LX 2-ATC 220VAC SUPPLY
CONTREC SYSTEM 413.00A BATCH CONTROLLER COMBUSTION ENGINEERING TAYLOR 413
ASA 2000 ELECTRIC SCREWDRIVER TORQUE WITH ASA APS-35E POWER SUPPLY 35vdc
DALSA CL-C3-2048N-335P CCD IMAGE CAPTURE CAMERA MODULE
Keithley 175A AUTORANGING Digital Multimeter
MPLAB ICE MICROCHIP PCM16XQ1 PROCESSOR MODULE FOR 2000 MICROCHIP EMULATOR
?