1.Qt Embedded:简介与平台插件介绍
2.LINUXç³»ç»ä»ç»
3.源码阅读忆丛(37)Minigui
4.嵌入式GUI开发设计:基于MiniGUI本书特点
Qt Embedded:简介与平台插件介绍
嵌入式Linux图形界面包括Qt/Embedded、DirectFB、MicroWindows/NanoX、MiniGUI和OpenGUI等,各有特点和应用场合。Qt在嵌入式环境中的评论源码分支平台Qt/E,通过调整原始Qt以节省内存,摒弃Xlib,采用Framebuffer作为底层图形接口,简化应用程序直接写入内核帧缓冲的操作。
Qt/E的编译流程需下载源代码,使用交叉编译器编译生成Qt库,库需在开发主机和目标板上各保留一份,供编译和运行时动态加载使用。此过程需具备Qt源代码、交叉编译器以及创造性思维。移植Qt/E至硬件平台时,先编译Qt库,源码资本 香港然后将库复制至开发主机与目标板。使用命令行参数或环境变量配置移植过程。
Qt/E在嵌入式Linux设备上可使用多种平台插件,如EGLFS、LinuxFB、DirectFB、Wayland等,选择依据Qt配置。EGLFS是Qt5应用运行的默认平台插件,支持OpenGL ES2.0,通过硬件加速提供渲染,推荐在具备GPU的现代嵌入式设备上使用。EGLFS配置环境变量可调整显示参数,如日志记录、清屏行为等。LinuxFB通过Linux fbdev子系统直接写入帧缓冲区,仅支持软件渲染,源码 c 仿使用环境变量配置显示参数,如指定fb设备。DirectFB为轻量级图形库,提供硬件加速、多层显示和输入设备处理,适用于嵌入式系统,支持多种显示卡、输入设备及图像文件格式。XCB插件在具备X和XCB开发文件的嵌入式环境中提供与桌面Linux平台相似的功能。Wayland作为一种轻量级窗户系统,Qt提供Wayland平台插件,允许Qt应用程序连接到Wayland合成器。
配置环境变量时,以树莓派为例,追加内容到/etc/profile,根据需求修改。字体配置通常使用fontconfig访问系统字体,网站源码形式若不可用则退回到QBasicFontDatabase,通过QT_QPA_FONTDIR环境变量覆盖字体目录。Qt不再在lib/fonts目录提供字体,由平台提供必要字体。
Unix信号处理程序默认捕获中断、暂停、继续和终止信号,通过QT_QPA_ENABLE_TERMINAL_KEYBOARD设置允许通过键盘终止或挂起程序。在某些情况下,捕获SIGINT可能与远程调试冲突,可通过QT_QPA_NO_SIGNAL_HANDLER环境变量退出内置信号处理。
LINUXç³»ç»ä»ç»
åµå ¥å¼Linuxç³»ç»ç设计ä¸åºç¨
æè¦ï¼éçåµå ¥å¼Linuxç³»ç»çè¿ éåå±ï¼åµå ¥å¼Linuxå·²åå±æ为åµå ¥å¼æä½ç³»ç»çä¸ä¸ªéè¦åæ¯ãæ¬æä»ç»äºåµå ¥å¼Linuxç设计åå ç§æµè¡çåµå ¥å¼Linuxç³»ç»ã
å ³é®è¯ï¼åµå ¥å¼Linux
ä¸ãå¼è¨
åµå ¥å¼ç³»ç»(Embedded Systems)æ¯æ ¹æ®åºç¨çè¦æ±ï¼å°æä½ç³»ç»ååè½è½¯ä»¶éæäºè®¡ç®æºç¡¬ä»¶ç³»ç»ä¹ä¸ï¼ä»èå®ç°è½¯ä»¶ä¸ç¡¬ä»¶ä¸ä½åç计ç®æºç³»ç»ãåµå ¥å¼ç³»ç»åºç°äºå¹´ä»£ææï¼å®æå被ç¨äºæ§å¶æºçµçµè¯äº¤æ¢æºï¼å¦ä»å·²è¢«å¹¿æ³çåºç¨äºå·¥ä¸å¶é ãè¿ç¨æ§å¶ãé讯ã仪å¨ã仪表ã汽车ãè¹è¶ãèªç©ºãèªå¤©ãåäºè£ å¤ãæ¶è´¹ç±»äº§åçä¼å¤é¢åãåµå ¥å¼ç³»ç»å¨æ°éä¸è¿è¿è¶ è¿äºåç§éç¨è®¡ç®æºç³»ç»ï¼è®¡ç®æºç³»ç»æ ¸å¿CPUï¼æ¯å¹´å¨å ¨çèå´å ç产é大æ¦å¨äºå亿é¢å·¦å³ï¼å ¶ä¸è¶ è¿ï¼ åºç¨äºåç±»ä¸ç¨æ§å¾å¼ºçåµå ¥å¼ç³»ç»ã
ä¸è¬ç说ï¼å¡æ¯å¸¦æå¾®å¤çå¨çä¸ç¨è½¯ç¡¬ä»¶ç³»ç»é½å¯ä»¥ç§°ä¸ºåµå ¥å¼ç³»ç»ãåéç¨ç计ç®å¹³å°ç¸æ¯ï¼åµå ¥å¼ç³»ç»å¾å¾å ·æåè½åä¸ãä½ç§¯å°ãåèä½ãå¯é æ§é«ãåªè£æ§å¥½ã软硬件éæ度é«ã计ç®è½åç¸å¯¹è¾ä½çç¹ç¹ãå¤å¹´æ¥ï¼åµå ¥å¼è®¾å¤ä¸æ²¡ææä½ç³»ç»ï¼å ¶ä¸»è¦åå æäºï¼é¦å ï¼è¯¸å¦æ´è¡£æºã微波çãçµå°ç®±è¿æ ·ç设å¤ä» ä» éè¦ä¸éç®åçæ§å¶ç¨åºï¼ä»¥ç®¡çæ°éæéçæé®åæ示ç¯ï¼æ²¡æ使ç¨æä½ç³»ç»çå¿ è¦ï¼å ¶æ¬¡ï¼å®å¾å¾åªå ·ææéç硬件èµæºï¼ä¸è¶³ä»¥æ¯æä¸ä¸ªæä½ç³»ç»ã
ç¶èï¼éç硬件çåå±ï¼åµå ¥å¼ç³»ç»åå¾è¶æ¥è¶å¤æï¼æåçæ§å¶ç¨åºä¸éæ¥çå å ¥äºè®¸å¤åè½ï¼èè¿äºåè½ä¸æå¾å¤å¯ä»¥ç±æä½ç³»ç»æä¾ãäºæ¯ï¼å¨å¹´ä»£æ«æåºç°äºåµå ¥å¼æä½ç³»ç»(Embedded Operating Systems)ï¼å®çåºç°å¤§å¤§ç®åäºåºç¨ç¨åºè®¾è®¡ï¼å¹¶å¯ä»¥ææçä¿é软件质éå缩çå¼åå¨æãç®åçESä¸è¬å¹¶ä¸ä½¿ç¨æä½ç³»ç»ï¼åªå å«ä¸äºæ§å¶æµç¨ï¼ä½æ¯éçåµå ¥å¼æä½ç³»ç»å¨å¤ææ§ä¸çå¢é¿ï¼ç®åçæµç¨æ§å¶å°±ä¸è½æ»¡è¶³ç³»ç»çè¦æ±ï¼è¿æ¯å°±å¿ é¡»èè使ç¨æä½ç³»ç»åç³»ç»è½¯ä»¶ãå æ¤ï¼åµå ¥å¼æä½ç³»ç»å°±åºè¿èçã
éçEOSç广æ³åºç¨ï¼ä¸çå·²æ¨åºä¸äºåºç¨æ¯è¾æåçEOS产åãå½çº³èµ·æ¥EOSåºè¯¥å ·æ以ä¸å 个ç¹ç¹ï¼å°å·§ãå®æ¶æ§ãå¯è£ å¸ãåºå代ç ã弱交äºæ§ã强稳å®æ§åç»ä¸çæ¥å£ãç®å使ç¨æå¤çEOS产åå æ¬æï¼VxworkãQNXãPalmOSãWindowsCEãpSOSãHopen OS(å½å å¯æéå¢å ¬å¸èªä¸»ç å¶å¼å)çãå ¶ä¸ï¼Vxwork使ç¨æ为广æ³ãå¸åºå æçæé«ï¼å ¶çªåºç¹ç¹æ¯å®æ¶æ§å¼º(éç¨ä¼å 级æ¢å å轮转è°åº¦çæºå¶)ï¼é¤æ¤ä¹å¤ï¼å ¶å¯é æ§åå¯åªè£æ§ä¹ç¸å½ä¸éãQNXæ¯ä¸ç§ä¼¸ç¼©æ§æä½³çç³»ç»ï¼å ¶æ ¸å¿å ä¸å®æ¶POSIXç¯å¢åä¸ä¸ªå®æ´ççªå£ç³»ç»è¿ä¸å°ä¸å ãç¸æ¯ä¹ä¸ï¼Microsoft WinCEçæ ¸å¿ä½ç§¯åºå¤§ï¼å®æ¶æ§è½ä¹å·®å¼ºäººæï¼ä½ç±äºWindowsç³»åå好çç¨æ·çé¢å为ç¨åºåæçæçAPIï¼å¹¶æç»IEãOfficeçåºç¨ç¨åºï¼æ£éæ¸è·å¾æ´å¤§çå¸åºä»½é¢ãèä¸è¿äºåä¸åçæä½ç³»ç»ç¸æ¯ï¼Linuxå·²ç»è¶æ¥è¶åå°äººä»¬ç注æã
äºãåµå ¥å¼Linuxæ¦è¿°
Linuxæ¯ä¸ä¸ªæçè稳å®çç½ç»æä½ç³»ç»ãå°Linuxæ¤å ¥åµå ¥å¼è®¾å¤å ·æä¼å¤çä¼ç¹ãé¦å ï¼Linuxçæºä»£ç æ¯å¼æ¾çï¼ä»»ä½äººé½å¯ä»¥è·å并修æ¹ï¼ç¨ä¹å¼åèªå·±ç产åãå ¶æ¬¡ï¼Lirmxæ¯å¯ä»¥å®å¶çï¼å ¶ç³»ç»å æ ¸æå°åªæ约kBãä¸ä¸ªå¸¦æä¸æç³»ç»åå¾å½¢ç¨æ·çé¢çæ ¸å¿ç¨åºä¹å¯ä»¥åå°ä¸è¶³1MBï¼å¹¶ä¸åæ ·ç¨³å®ãå¦å¤ï¼å®åå¤æ°Unixç³»ç»å ¼å®¹ï¼åºç¨ç¨åºçå¼åå移æ¤ç¸å½å®¹æãåæ¶ï¼ç±äºå ·æè¯å¥½çå¯ç§»æ¤æ§ï¼äººä»¬å·²æå使Linuxè¿è¡äºæ°ç¾ç§ç¡¬ä»¶å¹³å°ä¹ä¸ã
ç¶èï¼Linux并éä¸é¨ä¸ºå®æ¶æ§åºç¨è设计ï¼å æ¤å¦ææ³å¨å¯¹å®æ¶æ§è¦æ±è¾é«çåµå ¥å¼ç³»ç»ä¸è¿è¡Linuxï¼å°±å¿ 须为ä¹æ·»å å®æ¶è½¯ä»¶æ¨¡åãè¿äºæ¨¡åè¿è¡çå æ ¸ç©ºé´æ£æ¯æä½ç³»ç»å®ç°è¿ç¨è°åº¦ãä¸æå¤çåç¨åºæ§è¡çé¨åï¼å æ¤é误ç代ç å¯è½ä¼ç ´åæä½ç³»ç»ï¼è¿èå½±åæ´ä¸ªç³»ç»çå¯é æ§å稳å®æ§ãLinuxçä¼å¤ä¼ç¹è¿æ¯ä½¿å®å¨åµå ¥å¼é¢åè·å¾äºå¹¿æ³çåºç¨ï¼å¹¶åºç°äºæ°éå¯è§çåµå ¥å¼Linuxç³»ç»ãå ¶ä¸æ代表æ§çå æ¬ï¼uClinuxãETLinuxãThinLinuxãLOAFçãETLinuxé常ç¨äºå¨å°åå·¥ä¸è®¡ç®æºï¼å°¤å ¶æ¯PCï¼æ¨¡åãThinLinuxé¢åä¸ç¨çç §ç¸æºæå¡å¨ãX-æ§å¶å¨ãMP3ææ¾å¨åå ¶å®ç±»ä¼¼çåµå ¥å¼åºç¨ãLOAFæ¯Linux On A Floppyç缩ç¥è¯ï¼å®è¿è¡å¨å¹³å°ä¸ã
ä¸ãLinuxä½ä¸ºåµå ¥å¼æä½ç³»ç»çä¼å¿
Linuxä½ä¸ºåµå ¥å¼æä½ç³»ç»çä¼å¿ä¸»è¦æ以ä¸å ç¹ï¼
1ã å¯åºç¨äºå¤ç§ç¡¬ä»¶å¹³å°ãLinuxå·²ç»è¢«ç§»æ¤å°å¤ç§ç¡¬ä»¶å¹³å°ï¼è¿å¯¹äºç»è´¹ï¼æ¶é´åéå¶çç 究ä¸å¼å项ç®æ¯å¾æå¸å¼åçãååå¯ä»¥å¨æ åå¹³å°ä¸å¼åå移æ¤å°å ·ä½ç硬件ä¸ï¼å å¿«äºè½¯ä»¶ä¸ç¡¬ä»¶çå¼åè¿ç¨ãLinuxéç¨ä¸ä¸ªç»ä¸çæ¡æ¶å¯¹ç¡¬ä»¶è¿è¡ç®¡çï¼ä»ä¸ä¸ªç¡¬ä»¶å¹³å°å°å¦ä¸ä¸ªç¡¬ä»¶å¹³å°çæ¹å¨ä¸ä¸å±åºç¨æ å ³ãLinuxå¯ä»¥éæå°é ç½®ï¼ä¸éè¦ä»»ä½ç许å¯è¯æå家çåä½å ³ç³»ï¼æºä»£ç å¯ä»¥å è´¹å¾å°ãè¿ä½¿å¾éç¨Linuxä½ä¸ºæä½ç³»ç»ä¸ä¼éå°ä»»ä½å ³äºçæççº çº·ã毫æ çé®ï¼è¿ä¼èç大éçå¼åè´¹ç¨ãæ¬èº«å ç½®ç½ç»æ¯æï¼èç®ååµå ¥å¼ç³»ç»å¯¹ç½ç»æ¯æè¦æ±è¶æ¥è¶é«ãLinuxçé«åº¦æ¨¡åå使添å é¨ä»¶é常容æã
2ã Linuxæ¯ä¸ä¸ªåUnixç¸ä¼¼ã以å æ ¸ä¸ºåºç¡çãå ·æå®å ¨çå å访é®æ§å¶ï¼æ¯æ大é硬件(å æ¬Xï¼AlphaãARMåMotorolaçç°æç大é¨åè¯ç)çç¹æ§çä¸ç§éç¨æä½ç³»ç»ãå ¶ç¨åºæºç å ¨é¨å ¬å¼ï¼ä»»ä½äººå¯ä»¥ä¿®æ¹å¹¶å¨GUNéç¨å ¬å ±è®¸å¯è¯(GNU General Public License)ä¸åè¡ãè¿æ ·ï¼å¼å人åå¯ä»¥å¯¹æä½ç³»ç»è¿è¡å®å¶ï¼éåºå ¶ç¹æ®éè¦ã
3ã Linux带æUnixç¨æ·çæçå®åçå¼åå·¥å ·ï¼å ä¹ææçUnixç³»ç»çåºç¨è½¯ä»¶é½å·²ç§»æ¤å°äºLinuxä¸ãLinuxè¿æä¾äºå¼ºå¤§çç½ç»åè½ï¼æå¤ç§å¯éæ©çªå£ç®¡çå¨(X Windows)ãå ¶å¼ºå¤§çè¯è¨ç¼è¯å¨GCCï¼C++çä¹å¯ä»¥å¾å®¹æå¾å°ï¼ä¸ä½æçå®åï¼èä¸ä½¿ç¨æ¹ä¾¿ã
åãåµå ¥å¼Linuxç建ç«
å®æ´çåµå ¥å¼Linux解å³æ¹æ¡åºå æ¬åµå ¥å¼Linuxæä½ç³»ç»å æ ¸ãè¿è¡ç¯å¢ãå¾å½¢åçé¢ååºç¨è½¯ä»¶çãç±äºåµå ¥å¼è®¾å¤çç¹æ®è¦æ±ï¼åµå ¥å¼Linux解å³æ¹æ¡ä¸çå æ ¸ãç¯å¢ãGUIçé½ä¸æ åLinuxæå¾å¤§ä¸åï¼å ¶ä¸»è¦æææ¯å¦ä½å¨çå°çFLASHãROMåå åä¸å®ç°é«è´¨éçä»»å¡å®æ¶è°åº¦ãå¾å½¢åæ¾ç¤ºãç½ç»éä¿¡çåè½ã
1ã ç²¾ç®å æ ¸
Linuxå æ ¸æèªå·±çç»æä½ç³»ï¼å ¶ä¸è¿ç¨ç®¡çãå å管çåæ件系ç»æ¯å ¶æåºæ¬ç3个åç³»ç»ãå¾1ç®å表示äºå®çæ¡æ¶ãç¨æ·è¿ç¨å¯ç´æ¥éè¿ç³»ç»è°ç¨æè å½æ°åºæ¥è®¿é®å æ ¸èµæºãæ£å 为Linuxå æ ¸å ·æè¿æ ·çç»æï¼å æ¤ä¿®æ¹å æ ¸æ¶å¿ 须注æå个åç³»ç»ä¹é´çåè°ã
åµå ¥å¼Linuxå æ ¸ä¸è¬ç±æ åLinuxå æ ¸è£åªèæ¥ãç¨æ·å¯æ ¹æ®éæ±é 置系ç»ï¼åé¤ä¸éçæå¡åè½ãæ件系ç»å设å¤é©±å¨ãç»è¿è£åªãå缩åçç³»ç»å æ ¸ä¸è¬åªækå·¦å³ï¼ååéååµå ¥å¼è®¾å¤ãåæ åLinuxä¸åçæ¯åµå ¥å¼Linuxå¿ é¡»è¦å®ç°ä»FLASHæROMçå¯å¨ãæ åLinuxå¯å¨ä»£ç å®ç°äºç³»ç»åå§ååä»è½¯çã硬çOçåºå¼å¯¼å æ ¸ãåµå ¥å¼Linuxä¸è¬ä¿åå¨FLASHæROMä¸ï¼æ åLILOæ æ³å¼å¯¼ãå¨æ¯æç´æ¥ä»FLASH设å¤å¼å¯¼çç³»ç»ä¸ï¼å¦åæå ¬å¸çuClinuxï¼å¼å¯¼ç¨åºä¸»è¦å®æ对硬件系ç»çåå§åå·¥ä½åæä½ç³»ç»ç解åã移ä½å·¥ä½ãå¨ä¸æ¯æç´æ¥ä»FLASHå¼å¯¼çç³»ç»ä¸ï¼FLASH设å¤åªè½ä½ä¸ºéå¼å¯¼ç£ç使ç¨ãæ¤æ¶ï¼å¯éç¨å ä»ç¡¬çæ软çå è½½ä¸ä¸ªå°æä½ç³»ç»ï¼å¦åµå ¥å¼DOSï¼ç¶ååæ§è¡"Loadlin"å è½½ç¨åºä»FLASHå¼å¯¼åµå ¥å¼Linuxã
对æ åLinuxçä¿®æ¹ä¸»è¦æ¯èæå ååè°åº¦ç¨åºé¨åçæ¹å¨ãå 为æ åLinuxç³»ç»ä½¿ç¨èæå å管ççç®çæ¯ä¸ºäºè½åæ¶è¿è¡å¤ä¸ªè¿ç¨ï¼ä½æ¯è¿æ ·æ¯ä¸ªå¾ è¿è¡çè¿ç¨æè½åé çCPUæ¶é´çå°±åéå¶ï¼èµæºç使ç¨æçå°±ä½ãè¿æ ·å¯¹äºå®æ¶æ§è¦æ±è¾é«çåµå ¥å¼ç³»ç»æ¥è¯´ï¼å®æ¶ä»»å¡å¾å¾è¦æ±CPUå ·æå¾é«ççªåå¤çè½åï¼å³å¨æäºæ¶åéè¦æé«çå¤çæçï¼å æ¤éè¦å±è½å æ ¸çèæå å管çæºå¶ã对äºæ 硬ç设å¤çåµå ¥å¼ç³»ç»ï¼ä¸å¿ éç¨èå管çã强å®æ¶éæ±çåµå ¥å¼åºç¨å¯ä»¥éè¿ä¿®æ¹ä»»å¡è°åº¦æ¨¡åå®ç°ï¼ä¸»è¦æ¯å¨å æ ¸å设å¤é©±å¨ç¨åºä¸å å ¥äºè®¸å¤åæ¢ç¹ãå¨è¯¥ç¹å¤ï¼ç³»ç»æ£æµæ¯å¦åå¨æªå¤ççç´§æ¥ä¸æï¼æåå¥å¤ºå æ ¸çè¿è¡ï¼åæ¶å¤çä¸æãå®ç°å®æ¶æ§æå¡çä¸ä¸ªè¾å¥½çæ¹æ³æ¯å¨æ åçLinuxå æ ¸ä¸å¢å ä¸ä¸ªå®æ¶å æ ¸ï¼æ åLinuxå æ ¸ä½ä¸ºä¸ä¸ªä»»å¡è¿è¡äºå®æ¶å æ ¸ä¸ï¼å¼ºå®æ¶æ§ä»»å¡ä¹ç´æ¥è¿è¡å¨å®æ¶å æ ¸ä¸ï¼å¦RT-Linuxçã
æ件系ç»æ¯åµå ¥å¼Linuxæä½ç³»ç»å¿ ä¸å¯å°çãä½æ åLinuxæ¯æ大éçæ件系ç»ï¼å æ¤é¤äºæ»¡è¶³ç³»ç»çæ£å¸¸è¿è¡éè¦èä¿çä¸ç§å¤ï¼å ¶å®çå ¨é¨å¯ä»¥å é¤ï¼å©ç¨åæç设置é项å¯ä»¥ç§»é¤ãä¸è¬åµå ¥å¼è®¾å¤æ件系ç»ä¸»è¦ä½¿ç¨RamDiskææ¯åç½ç»æ件系ç»ææ¯ãRamDiskå¯é©»çäºFlashï¼è¿è¡æ¶å è½½å°å åä¸ã
2ã ç²¾ç®è¿è¡ç¯å¢
Linuxé常çè¿è¡ç¯å¢æç¨æ·è¿è¡ä»»ä½åºç¨çåºç¡è®¾æ½ï¼ä¸»è¦å æ¬å½æ°åºååºæ¬å½ä»¤éçãæ åLinuxç³»ç»åæ¶åç¨æ·æä¾äºéæåå¨æå½æ°åºãéæå½æ°åºå¨çæåºç¨æ¶ç´æ¥é¾æ¥å°ç¨æ·åºç¨ä¸ãå¨æåºå¨åºç¨è¿è¡æ¶æé¾æ¥ãç±äºåµå ¥å¼ç³»ç»åºç¨ä¸è¬é½æ¯å¨å¼åå¹³å°ä¸é¢å çæçï¼å æ¤åµå ¥å¼ç³»ç»åªéååºç¨æä¾å¨æå½æ°åºãLinuxåºç¨è¿è¡æéçå½æ°åºä¸»è¦æCåºãæ°å¦åºã线ç¨åºãå å¯åºãç½ç»éä¿¡åºçãå ¶ä¸æåºæ¬çæ¯Cè¯è¨çè¿è¡åºglibãè¿ä¸ªåºä¸»è¦å®æåºæ¬çè¾å ¥è¾åºï¼å å访é®ï¼æ件å¤çãä¸ä¸ªæ åçglibåºå¤§çº¦è¦kBåå¨ç©ºé´ï¼èèå°åµå ¥å¼Linuxå æ ¸å¾å¾å¾å°ï¼è¿ç§è¿è¡åºå®å¨å¤ªå¤§ï¼æ们åäºä¸äºç²¾ç®çå·¥ä½ï¼æ¹æ³æ两ç§ï¼(1)ã使ç¨éæè¿æ¥çæ¹æ³ï¼å®å ¨ä¸ä½¿ç¨è¿è¡åºå¨æè¿æ¥ï¼(2)ã对è¿ä¸ªåºçå½æ°è¿è¡ç²¾ç®ã
å¨ä¸ä¸ªæ¡é¢ç³»ç»ä¸ï¼ä½¿ç¨å¨æè¿æ¥å¯ä»¥å¸¦æ¥è®¸å¤å¥½å¤ã使ç¨å¨æè¿æ¥åºï¼å¯ä»¥è®©åºç¨ç¨åºè·å½æ°åºçæ´æ°ãå级å离ï¼ä¾¿äºç»´æ¤ï¼å¯ä»¥è®©åæ¶è¿è¡çå¤ä¸ªç¨åºå ±äº«ä¸æ®µä»£ç ãä½æ¯ï¼å¨åµå ¥å¼ç³»ç»ä¸ï¼å¾å°æå¤ä¸ªç¨åºå¹¶è¡çå¯è½ï¼ç¨åºçç»´æ¤ï¼å°¤å ¶æ¯åºå½æ°çç»´æ¤æ´æ°æ¯ä¸å¸¸è§çãè¿æ¶ï¼ä½¿ç¨éæè¿æ¥çä¼å¿å°±æ为ææ¾ãå 为éæè¿æ¥å¯ä»¥åªå°åºä¸ç¨å°çé¨åè¿æ¥è¿ç¨åºãå¨åºç¨ç¨åºè¾å°(å°äº5)çæ åµä¸ï¼éæè¿æ¥å¯ä»¥è¾¾å°è¾å¥½çç»æã为äºä¾¿äºå°æ¥æ©å çéè¦ï¼æ们ä¹éç¨ç¬¬äºç§æ¹æ³ï¼é对æ们çéè¦ï¼å¯¹åºå½æ°çå 容è¿è¡ç²¾ç®ï¼åªä¿çä¸äºåºæ¬åè½ï¼è¿æä¸ç§æ¹æ³æ¯éç¨å ¶å®çCè¯è¨è¿è¡åºãä½æ¯è¿äºåºå¯¹å ¼å®¹æ§å½±åå¾å¤§ã
åºæ¬å½ä»¤éåæ ·æ¯è¿è¡ç¨æ·åºç¨çåºç¡ï¼ä¸»è¦å æ¬åå§åè¿ç¨initï¼ç»ç«¯è·ågettyãShellååºæ¬å½ä»¤çãåµå ¥å¼ç³»ç»çå¯å¨è¿ç¨å¯è½ä¸æ åLinuxä¸åï¼ä¾å¦è·³è¿ç»å½è¿ç¨ç´æ¥å¯å¨GUIçãè¿å°±è¦æ±ä¿®æ¹initï¼gettyçãæ åLinuxå½ä»¤éåæ ·ç±äºä½ç§¯é®é¢æ æ³ç´æ¥åºç¨äºåµå ¥å¼ç¯å¢ãç®åï¼å°å½ä»¤éç解å³æ¹æ³ä¸»è¦æéææ¹æ³åæ±ç¼æ¹æ³ä¸¤ç§ãéææ¹æ³éç¨éæå ¬å ±é¨ååå°å½ä»¤éæ´ä½ä½ç§¯ï¼ç¨Cå®ç°ï¼æè¾å¥½çå¹³å°ç§»æ¤æ§ï¼æ±ç¼æ¹æ³åéç¨æ±ç¼ç¼ç¨åå°æ¯ä¸ªå½ä»¤çä½ç§¯ï¼è¿æ ·å¯ä½¿ä½ç§¯å¾å°ä½å ¶å¹³å°ç§»æ¤æ§è¾å·®ã
3ã åµå ¥å¼Linuxä¸çGUI
GUIå¨åµå ¥å¼ç³»ç»æè å®æ¶ç³»ç»ä¸çå°ä½è¶æ¥è¶éè¦ï¼æ¯å¦PDAãDVDææ¾æºãWAPææºçï¼é½éè¦ä¸ä¸ªå®æ´ï¼æ¼äº®çå¾å½¢ç¨æ·çé¢ãè¿äºç³»ç»å¯¹GUIçåºæ¬è¦æ±å æ¬ï¼(1)ãè½»åãå ç¨èµæºå°ï¼(2)ãé«æ§è½ï¼(3)ãé«å¯é æ§ï¼(4)ãå¯é ç½®ãè¿äºä¹æ为è¯ä»·åµå ¥å¼ç³»ç»çéè¦ææ ãç®åï¼åµå ¥å¼Linuxä¸çGUI主è¦æwinCEãMicro Windowã紧缩çX WindowãMiniGUI(å½å åå¾è¾å¥½çèªç±è½¯ä»¶ä¹ä¸)ãæ åLinuxçXfreeç±äºä½ç§¯åºå¤§ï¼è¿è¡ç¯å¢è¦æ±é«ï¼æ æ³è¿è¡äºåµå ¥å¼ç¯å¢ãåµå ¥å¼GUI主è¦éè¿åååè½ï¼éä½æ§è½æ¥å®ç°ä½ç§¯å°åå ç¨èµæºå°ãç®ååµå ¥å¼Linuxä¸çGUIç¯å¢ä¸»è¦æ两类ï¼Xç±»åwinç±»ãXç±»GUIå为æå¡æ¹å客æ·æ¹ä¸¤æ¹ãæå¡å¨æ¹æä¾é¼ æ ãé®çå¤çåæ¾ç¤ºåè½ï¼å®¢æ·æ¹æ¯ç¨æ·åºç¨ï¼æå¡æ¹å客æ·æ¹éè¿socketæ¥å£åXåè®®éä¿¡ãéç¨è¯¥æ¹å¼ååæå©äºè¿ç¨ç½ç»å¾å½¢åæå¡ï¼å®¢æ·æ¹åæå¡æ¹å¯éè¿ç½ç»å®ç°Xåè®®åå¾å½¢æ¾ç¤ºãå ¸åçXç±»GUIæMicro Windowã紧缩çX Windowçãwinç±»çGUIä¸åå¨å®¢æ·æ¹åæå¡æ¹ï¼æ¯ä¸ªä»»å¡é½èªæä¸ä½ï¼ä»»ä½ä»»å¡é´çåæ¢ãäºä»¶ååç±ä¸é¨ç管çä»»å¡è´è´£ãå¦wiCEãMiniGUIå°±æ¯ç±»ä¼¼äºwinç±»çGUIã
äºãå½åæµè¡çå ç§åµå ¥å¼Linuxç³»ç»
é¤äºæºè½æ°åç»ç«¯é¢å以å¤ï¼Linuxå¨ç§»å¨è®¡ç®å¹³å°ãæºè½å·¥ä¸æ§å¶ãéèä¸ç»ç«¯ç³»ç»ï¼çè³åäºé¢åé½æç广æ³çåºç¨åæ¯ãè¿äºLinux被ç»ç§°ä¸º"åµå ¥å¼Linux"ã
1ãRT-Linux
è¿æ¯ç±ç¾å½å¢¨è¥¿å¥çå·¥å¦é¢å¼åçåµå ¥å¼Linuxæä½ç³»ç»ãå°ç®å为æ¢ï¼RT-Linuxå·²ç»æåå°åºç¨äºèªå¤©é£æºç空é´æ°æ®ééãç§å¦ä»ªå¨æµæ§åçµå½±ç¹æå¾åå¤çç广æ³é¢åãRT-Linuxå¼åè 并没æé对å®æ¶æä½ç³»ç»çç¹æ§èéåLinuxçå æ ¸ï¼å 为è¿æ ·åçå·¥ä½éé常大ï¼èä¸è¦ä¿è¯å ¼å®¹æ§ä¹é常å°é¾ã为æ¤ï¼RT-Linuxæåºäºç²¾å·§çå æ ¸ï¼å¹¶ææ åçLinuxæ ¸å¿ä½ä¸ºå®æ¶æ ¸å¿çä¸ä¸ªè¿ç¨ï¼åç¨æ·çå®æ¶è¿ç¨ä¸èµ·è°åº¦ãè¿æ ·å¯¹Linuxå æ ¸çæ¹å¨é常å°ï¼å¹¶ä¸å åå©ç¨äºLinuxä¸ç°æç丰å¯ç软件èµæºã
2ãuClinux
uCLinuxæ¯Lineoå ¬å¸ç主æ产åï¼åæ¶ä¹æ¯å¼æ¾æºç çåµå ¥å¼Linuxçå ¸èä¹ä½ãuCLinux主è¦æ¯é对ç®æ å¤çå¨æ²¡æåå¨ç®¡çåå MMU(Memory Management Unit) çåµå ¥å¼ç³»ç»è设计çãå®å·²ç»è¢«æåå°ç§»æ¤å°äºå¾å¤å¹³å°ä¸ãç±äºæ²¡æMMUï¼å ¶å¤ä»»å¡çå®ç°éè¦ä¸å®æå·§ãuCLinuxæ¯ä¸ç§ä¼ç§çåµå ¥å¼Linuxçæ¬ï¼æ¯micro-Conrol-Linuxç缩åãå®ç§æ¿äºæ åLinuxçä¼è¯ç¹æ§ï¼ç»è¿åæ¹é¢çå°ååæ¹é ï¼å½¢æäºä¸ä¸ªé«åº¦ä¼åçã代ç ç´§åçåµå ¥å¼Linuxãè½ç¶å®çä½ç§¯å¾å°ï¼å´ä»ç¶ä¿çäºLinuxç大å¤æ°çä¼ç¹ï¼ç¨³å®ãè¯å¥½ç移æ¤æ§ãä¼ç§çç½ç»åè½ã对åç§æ件系ç»å®å¤çæ¯æåæ å丰å¯çAPIãå®ä¸ä¸ºåµå ¥å¼ç³»ç»åäºè®¸å¤å°ååçå·¥ä½ï¼ç®åå·²æ¯æå¤æ¬¾CPUãå ¶ç¼è¯åç®æ æ件å¯æ§å¶å¨å ç¾KBæ°é级ï¼å¹¶å·²ç»è¢«æåå°ç§»æ¤å°å¾å¤å¹³å°ä¸ã
3ãEmbedix
Embedixæ¯ç±åµå ¥å¼Linuxè¡ä¸ä¸»è¦ååä¹ä¸Luneoæ¨åºçï¼æ¯æ ¹æ®åµå ¥å¼åºç¨ç³»ç»çç¹ç¹éæ°è®¾è®¡çLinuxåè¡çæ¬ãEmbedixæä¾äºè¶ è¿ç§çLinuxç³»ç»æå¡ï¼å æ¬Webæå¡å¨çãç³»ç»éè¦æå°8MBå åï¼3MB ROMæå¿«ééªåãEmbedixåºäºLinux 2.2å æ ¸ï¼å¹¶å·²ç»æåå°ç§»æ¤å°äºIntel xåPowerPCå¤çå¨ç³»åä¸ãåå ¶å®çLinuxçæ¬ä¸æ ·ï¼Embedixå¯ä»¥å è´¹è·å¾ãLuneoè¿åå¸äºå¦ä¸ä¸ªéè¦ç软件产åï¼å®å¯ä»¥è®©å¨Windows CEä¸è¿è¡çç¨åºè½å¤å¨Embedixä¸è¿è¡ãLuneoè¿å°è®¡åæ¨åºEmbedixçå¼åè°è¯å·¥å ·å ãåºäºå¾å½¢çé¢çæµè§å¨çãå¯ä»¥è¯´ï¼Embedixæ¯ä¸ç§å®æ´çåµå ¥å¼Linux解å³æ¹æ¡ã
4ãXlinux
XLinuxæ¯ç±ç¾å½ç½èå ¬å¸æ¨åºï¼ä¸»è¦å¼åè æ¯éç豪ãä»å¨å çç½èå 个æå便å¼ååºäºåºäºXLinuxçãå·ç§°æ¯ä¸çä¸æå°çåµå ¥å¼Linuxç³»ç»ï¼å æ ¸åªæKBï¼èä¸è¿å¨ä¸æåå°ãXLinuxæ ¸å¿éç¨äº"è¶ åå é"ä¸å©ææ¯ï¼è®©Linuxæ ¸å¿ä¸ä» å¯è½ä¸æ åå符éç¸å®¹ï¼è¿å«çäº1 2个å½å®¶åå°åºçå符éãå æ¤ï¼XLinuxå¨æ¨å¹¿Linuxçå½é åºç¨æ¹é¢æç¬ç¹çä¼å¿ã
5ãPoketLinux
ç±Agendaå ¬å¸éç¨ãä½ä¸ºå ¶æ°äº§å"VR3PDA"çåµå ¥å¼Linuxæä½ç³»ç»ãå®å¯ä»¥æä¾è·¨æä½ç³»ç»æé ç»ä¸çãæ ååçåå¼æ¾çä¿¡æ¯éä¿¡åºç¡ç»æï¼å¨æ¤ç»æä¸å®ç°ç«¯å°ç«¯æ¹æ¡çå®æ´å¹³å°ãPoketLinuxèµæºæ¡æ¶å¼æ¾ï¼ä½¿æ®éç软件ç»æå¯ä»¥ä¸ºææç¨æ·æä¾ä¸è´çæå¡ãPoketLinuxå¹³å°ä½¿ç¨æ·çè§çº¿ä»è®¾å¤ãå¹³å°åç½ç»ä¸ç§»å¼ï¼ç±æ¤å¼åäºä¿¡æ¯ææ¯æ°æ¶ä»£ç产çãå¨PoketLinuxä¸ï¼ç§°ä¹ä¸ºç¨æ·åä¿¡æ¯äº¤æ¢(CIE)ï¼ä¹å°±æ¯æä¾å访é®ä¸ºæ¯ä¸ªç¨æ·éæ±èå®å¶ç"主é¢"ä¿¡æ¯çè½åï¼èä¸ç®¡æ£å¨ä½¿ç¨ç设å¤æ¯ä»ä¹ã
6ãMidoriLinux
ç±Transmetaå ¬å¸æ¨åºçMidoriLinuxæä½ç³»ç»ä»£ç å¼æ¾ï¼å¨GUNæ®éå ¬å ±è®¸å¯(GPL)ä¸åå¸ï¼å¯ä»¥å¨ä¸ç«å³è·å¾ãè¯¥å ¬å¸æ个å为"MidoriLinux计å"ã"MidoriLinux"è¿ä¸ªååæ¥æºäºæ¥æ¬ç"绿è²"---Midoriï¼ç¨æ¥åæ å ¶Linuxæä½ç³»ç»çç¯ä¿å¤è§ã
7ã红æåµå ¥å¼Linux
ç±å京ä¸ç§é¢çº¢æè½¯ä»¶å ¬å¸æ¨åºçåµå ¥å¼Linuxæ¯å½å åå¾è¾å¥½çä¸æ¬¾åµå ¥å¼æä½ç³»ç»ãç®åï¼ä¸ç§é¢è®¡ç®æèªè¡å¼åçå¼æ¾æºç çåµå ¥å¼æä½ç³»ç»---Easy Embedded OS(EEOS)ä¹å·²ç»å¼å§è¿å ¥å®ç¨é¶æ®µäºã该款åµå ¥å¼æä½ç³»ç»éç¹æ¯æp-Javaãç³»ç»ç®æ ä¸æ¹é¢æ¯å°ååï¼å¦ä¸æ¹é¢è½éç¨Linuxç驱å¨åå ¶å®æ¨¡åãç±äºæä¸ç§é¢è®¡ç®æç强大ç§ç åéååç¾ï¼EEOSææåå±æ为åè½å®åã稳å®ãå¯é çå½äº§åµå ¥å¼æä½ç³»ç»å¹³å°ã
å ãç»æè¯
ç±äºLinuxæ¯ä¸ä¸ªå æ ¸æºä»£ç å¼æ¾ãå ·å¤ä¸æ´å¥å·¥å ·é¾ãæ强大çç½ç»æ¯æåææ¬ä½å»çæä½ç³»ç»ï¼å æ¤åµå ¥å¼Linuxèªè¯çèµ·å°±ç§æ¿äºè¿ä¼å¤ç¬ç¹ä¼å¿ï¼è¿ä½¿å®æ£å¨å¹¶è¶æ¥è¶å¤å°åå°äººä»¬çå ³æ³¨ãæ®Even Dataæ°æ®æ¾ç¤ºï¼ææ使ç¨åµå ¥å¼Linuxçç¨æ·ä»å¹´çï¼ å¢å°å¹´ï¼ ï¼èåæVxworkåªæ¯ä»ï¼ å°ï¼ ï¼Win CEä»9ï¼ å°ï¼ ãå¦å¤ï¼å¨åµå ¥å¼Linuxçåç§åºç¨å¸åºä¸ï¼éä¿¡(è¯é³åæ°æ®)åå第ä¸ï¼å¹´çéå®é¢æ¯ä¸ç¾å ï¼èå¹´é¢è®¡å°è¾¾å°1.亿ç¾å ï¼å¯ä»¥é¢è§ï¼åµå ¥å¼Linuxå°å¨æªæ¥çéä¿¡ç¨åµå ¥å¼æä½ç³»ç»ä¸å æ®å¼ºæåçå°ä½
Linuxæ¯ç®åååç«ççæä½ç³»ç»ãå®æ¯ç±è¬å °èµ«å°è¾åºå¤§å¦çä¸ä¸ªå¤§å¦çLinus B. Torvoldså¨å¹´é¦æ¬¡ç¼åçãæ å¿æ§å¾æ æ¯ä¸ä¸ªå¯ç±çå°ä¼é¹ ã
Linuxæ¯ä¸ç§ç±»Unixç³»ç»ï¼Linuså½æ¶ç¼åå®çç®çæ¯ä¸ºäºæ¿ä»£ä¸ç§åå«Minixçæä½ç³»ç»ãMinixæ¯ç±ä¸ä¸ªåå«Andrew Tannebaumç计ç®æºææç¼åçï¼å½æ¶ç±äºUnixæ¯ä¸ä¸ªåä¸è½¯ä»¶ï¼å ¶æºä»£ç æ¯ä¸è½æ¿æ¥è¿è¡æå¦çï¼Andrewææå°±èªå·±ç¼åäºä¸ä¸ªç³»ç»ç¨äºæå¦ãæ
åçMinixç¨ä¸å¼ 软çå°±è½è£ ä¸ï¼éº»éè½å°ãäºèä¿±å ¨ï¼Minixå ·æä¸è¬æä½ç³»ç»çç¹å¾ï¼å®åæ¶å ¼å®¹Unixç³»ç»ã
Linuxæ¯ä¸ä¸ªå è´¹çæä½ç³»ç»ï¼ç¨æ·å¯ä»¥å è´¹è·å¾å ¶æºä»£ç ï¼å¹¶è½å¤éæä¿®æ¹ãå®æ¯å¨å ±ç¨è®¸å¯è¯GPL(General Public License)ä¿æ¤ä¸çèªç±è½¯ä»¶ï¼ä¹æ好å ç§çæ¬ï¼å¦Red Hat LinuxãSlackwareï¼ä»¥åå½å çXteam Linuxçã
Linuxå ·æ许å¤Unixç³»ç»çåè½åç¹ç¹ï¼è½å¤å ¼å®¹Unixï¼ä½æ éæ¯ä»Unixé«é¢çè´¹ç¨ãæ¯å¦ä¸ä¸ªUnixç¨åºåå¨åä½å¯ä»¥å¨Unixç³»ç»ä¸è¿è¡å·¥ä½ï¼åå°å®¶éå¨Linuxç³»ç»ä¸ä¹è½å®æåæ ·çå·¥ä½ï¼èä¸å¿ éæ°è´ä¹°Unixãè¦ç¥éUnixçä»·æ ¼æ¯å¸¸è§çWindowsè¦é«åºè¥å¹²åï¼åLinuxçä½å»æ´æ¯ç¸è·çè¿ã
Linuxçåºç¨ä¹åå广æ³ãSonyææ°çPS2游ææºå°±éç¨äºLinuxä½ä¸ºç³»ç»è½¯ä»¶ï¼ä½¿PS2æ身ä¸åï¼æ为äºä¸å°Linuxå·¥ä½ç«ãèåççµå½±ãæ³°å¦å°¼å å·ãçæ°åææ¯åæå·¥ä½å°±æ¯å©ç¨å¤å°Linuxæå¡å¨æ¥å®æçã
å¹´8ææ¥ï¼Linuxåå¸äºææ°çLinux 2.4.9çï¼å®ä¹å·²ç»åå²äºã
Linuxçä¼ç¹
Linuxçæµè¡æ¯å 为å®å ·æ许å¤è¯±äººä¹å¤ã
1ãå®å ¨å è´¹
Linuxæ¯ä¸æ¬¾å è´¹çæä½ç³»ç»ï¼ç¨æ·å¯ä»¥éè¿ç½ç»æå ¶ä»éå¾å è´¹è·å¾ï¼å¹¶å¯ä»¥ä»»æä¿®æ¹å ¶æºä»£ç ãè¿æ¯å ¶ä»çæä½ç³»ç»æåä¸å°çãæ£æ¯ç±äºè¿ä¸ç¹ï¼æ¥èªå ¨ä¸ççæ æ°ç¨åºååä¸äºLinuxçä¿®æ¹ãç¼åå·¥ä½ï¼ç¨åºåå¯ä»¥æ ¹æ®èªå·±çå ´è¶£åçµæå¯¹å ¶è¿è¡æ¹åãè¿è®©Linuxå¸æ¶äºæ æ°ç¨åºåçç²¾åï¼ä¸æ壮大ã
2ãå®å ¨å ¼å®¹POSIX 1.0æ å
è¿ä½¿å¾å¯ä»¥å¨Linuxä¸éè¿ç¸åºç模æå¨è¿è¡å¸¸è§çDOSãWindowsçç¨åºãè¿ä¸ºç¨æ·ä»Windows转å°Linuxå¥ å®äºåºç¡ã许å¤ç¨æ·å¨èè使ç¨Linuxæ¶ï¼å°±æ³å°ä»¥åå¨Windowsä¸å¸¸è§çç¨åºæ¯å¦è½æ£å¸¸è¿è¡ï¼è¿ä¸ç¹å°±æ¶é¤äºä»ä»¬ççèã
3ãå¤ç¨æ·ãå¤ä»»å¡
Linuxæ¯æå¤ç¨æ·ï¼å个ç¨æ·å¯¹äºèªå·±çæ件设å¤æèªå·±ç¹æ®çæå©ï¼ä¿è¯äºåç¨æ·ä¹é´äºä¸å½±åãå¤ä»»å¡åæ¯ç°å¨çµèæ主è¦çä¸ä¸ªç¹ç¹ï¼Linuxå¯ä»¥ä½¿å¤ä¸ªç¨åºåæ¶å¹¶ç¬ç«å°è¿è¡ã
4ãè¯å¥½ççé¢
Linuxåæ¶å ·æå符çé¢åå¾å½¢çé¢ãå¨å符çé¢ç¨æ·å¯ä»¥éè¿é®çè¾å ¥ç¸åºçæ令æ¥è¿è¡æä½ãå®åæ¶ä¹æä¾äºç±»ä¼¼Windowså¾å½¢çé¢çX-Windowsç³»ç»ï¼ç¨æ·å¯ä»¥ä½¿ç¨é¼ æ å¯¹å ¶è¿è¡æä½ãå¨X-Windowsç¯å¢ä¸å°±åå¨Windowsä¸ç¸ä¼¼ï¼å¯ä»¥è¯´æ¯ä¸ä¸ªLinuxççWindowsã
5ã丰å¯çç½ç»åè½
äºèç½æ¯å¨Unixçåºç¡ä¸ç¹è£èµ·æ¥çï¼Linuxçç½ç»åè½å½ç¶ä¸ä¼éè²ãå®çç½ç»åè½åå ¶å æ ¸ç´§å¯ç¸è¿ï¼å¨è¿æ¹é¢Linuxè¦ä¼äºå ¶ä»æä½ç³»ç»ãå¨Linuxä¸ï¼ç¨æ·å¯ä»¥è½»æ¾å®ç°ç½é¡µæµè§ãæä»¶ä¼ è¾ãè¿ç¨ç»éçç½ç»å·¥ä½ã并ä¸å¯ä»¥ä½ä¸ºæå¡å¨æä¾WWWãFTPãE-Mailçæå¡ã
6ãå¯é çå®å ¨ã稳å®æ§è½
Linuxéåäºè®¸å¤å®å ¨ææ¯æªæ½ï¼å ¶ä¸æ对读ãåè¿è¡æéæ§å¶ã审计è·è¸ªãæ ¸å¿ææçææ¯ï¼è¿äºé½ä¸ºå®å ¨æä¾äºä¿éãLinuxç±äºéè¦åºç¨å°ç½ç»æå¡å¨ï¼è¿å¯¹ç¨³å®æ§ä¹ææ¯è¾é«çè¦æ±ï¼å®é ä¸Linuxå¨è¿æ¹é¢ä¹åååºè²ã
7ãæ¯æå¤ç§å¹³å°
Linuxå¯ä»¥è¿è¡å¨å¤ç§ç¡¬ä»¶å¹³å°ä¸ï¼å¦å ·æxãx0ãSPARCãAlphaçå¤çå¨çå¹³å°ãæ¤å¤Linuxè¿æ¯ä¸ç§åµå ¥å¼æä½ç³»ç»ï¼å¯ä»¥è¿è¡å¨æä¸çµèãæºé¡¶çæ游ææºä¸ãå¹´1æ份åå¸çLinux 2.4çå æ ¸å·²ç»è½å¤å®å ¨æ¯æIntel ä½è¯çæ¶æãåæ¶Linuxä¹æ¯æå¤å¤çå¨ææ¯ãå¤ä¸ªå¤çå¨åæ¶å·¥ä½ï¼ä½¿ç³»ç»æ§è½å¤§å¤§æé«ã
Linuxçä¸è¶³
ç±äºå¨ç°å¨ç个人çµèæä½ç³»ç»è¡ä¸ä¸ï¼å¾®è½¯çWindowsç³»ç»ä»ç¶å æ大é¨åç份é¢ï¼ç»å¤§å¤æ°çè½¯ä»¶å ¬å¸é½æ¯æWindowsãè¿ä½¿å¾Windowsä¸çåºç¨è½¯ä»¶åºæå°½æï¼èå ¶ä»çæä½ç³»ç»å°±è¦å°ä¸äºã许å¤ç¨æ·å¨æ¢æä½ç³»ç»çæ¶åé½ä¼èè以åç软件è½å¦ç»§ç»ä½¿ç¨ï¼æ¢äºæä½ç³»ç»åæ¯å¦ä¼ä¸æ¹ä¾¿ãè½ç¶Linuxå ·æDOSãWindows模æå¨ï¼å¯ä»¥è¿è¡ä¸äºWindowsç¨åºï¼ä½Windowsç³»ç»æå ¶å¤æï¼æ¨¡æå¨æ模æçè¿è¡ç¯å¢ä¸å¯è½å®å ¨ä¸çå®çWindowsç¯å¢ä¸æ¨¡ä¸æ ·ï¼è¿å°±ä½¿å¾ä¸äºè½¯ä»¶æ æ³æ£å¸¸è¿è¡ã
许å¤ç¡¬ä»¶è®¾å¤é¢å¯¹Linuxç驱å¨ç¨åºä¹ä¸è¶³ï¼ä¸å°ç¡¬ä»¶ååæ¯å¨æ¨åºWindowsçæ¬ç驱å¨ç¨åºåæç¼åLinuxççãä½ä¸äºå¤§ç¡¬ä»¶ååå¨è¿æ¹é¢åå¾è¿ä¸éï¼ä»ä»¬çLinuxç驱å¨ç¨åºä¸è¬é½æ¨åºå¾æ¯è¾åæ¶ã
软件æ¯æçä¸è¶³æ¯Linuxæ大ç缺æ¾ï¼ä½éçLinuxçåå±ï¼è¶æ¥è¶å¤ç软件ååä¼æ¯æLinuxï¼å®åºç¨çèå´ä¹è¶æ¥è¶å¹¿ãè¿åªå°ä¼é¹ çåæ¯æ¯ååå æçã
源码阅读忆丛()Minigui
探索GUI的历史与实现
对于GUI的细节仍然存在一些困惑,似乎总是有新的东西需要学习。年轻时,对《Windows程序设计》、MFC等书籍充满热情,那些API的pix 源码解读神奇之处让人着迷。然而,花费大量时间深入学习,却似乎事倍功半,微软似乎更倾向于教人如何使用,而非深入解释实现原理。尽管如此,还是尝试实现过文字版的GUI,涉及基本的按钮、滚动条、菜单等元素。但一些细节仍不清楚。
通过网络搜索,了解到魏永明的Minigui项目是对Windows GUI和GDI的模仿。通过下载vc6版本的MinGUI,能够进行调试。在分析代码时,发现事件回调、消息链等常见功能并无特别之处。而DefaultMainWinProc、InvalidateRect、PopupMenuTrackProc等函数则更具实际意义。GUI就像是在显存沙漠中绘画,有其既定规则。DefaultMainWinProc负责实现画最大、最小按钮、窗口方框等常规操作,而绘制的动作有其先后顺序,即消息的先后处理。
GDI部分则展示了如何在显存中书写文字,包括粗体、斜体等效果;如何绘制图标和位图;关键的rgn裁剪矩形技术,用于加速绘制,矩形外的绘制不会进行。rgn裁剪矩形的运算包括加、减、合、并等,对应着窗口的各种移动和形状改变。不同线程之间的窗口管理由HWND_DESKTOP统一处理,desktop-common.c相当于窗口管理器,不同程序无法直接获取其他窗口的位置和大小,由其进行统一管理。desktop包含三个线程,分别负责捕捉键盘、鼠标消息,以及实际消息的处理,以及窗口给desktop的消息交由DesktopWinProc统一处理。
MinGUI的模拟版本在调试方面虽能使用,但功能实现上有缺失。相比之下,libminigui-1.0.提供了完整的gui、gdi、kernel代码,定义了大部分的画窗套路和动作,只需要关注关键部分和自己定义的动作即可。
Linux的GUI采用了xwindows,通过socket将xclient进程中的窗口绘制信息传输到xserver,由xserver统一处理。xclient之间互相不知道窗口的位置和大小,因此都通过xserver进行绘制,xserver还包含了窗口管理器。而MinGUI在一个进程的多个线程中实现,不存在窗口管理器与进程间位置信息传递的问题。
Windows使用wink.sys作为窗口管理器,作为内核态程序,用户态的动态链接库在不同进程间数据段不同,但内核态的数据段统一,因此实现了窗口管理。Windows显示流畅的原因之一在于窗口管理机制与MinGUI的desktop类似,但实现机制有所不同。
工作繁忙,业余时间进行学习。尽管以前对GUI有过大量无用功,但这次的探索仅用几天时间便有所收获。
嵌入式GUI开发设计:基于MiniGUI本书特点
这本专注于嵌入式GUI开发设计的书籍,其独特之处在于它紧紧把握了MiniGUI3.0这一快速发展的技术平台。它并非仅仅理论讲解,而是通过权威培训机构的专业解读,将GUI理论与MiniGUI系统实操相结合,引导读者在学习过程中,从广度和深度两个层面全面理解嵌入式GUI以及整个嵌入式系统的工作原理和实践应用。 特别值得一提的是,书籍提供了丰富的配套资源,包括详尽的光盘内容,其中包含大量的源代码和实际应用案例。这些资源旨在帮助读者快速掌握系统搭建技巧,实现从零开始到独立操作的过渡,直接应用于实际项目,提升工作效率。 书中精心设计的实例项目,不仅具有高度的可操作性,还鼓励读者发挥创新思维,进行功能扩展,充分锻炼和提升他们的实践能力和创新精神。这是一本理论与实践并重,既适合初学者入门,又适合有一定经验的开发者深入学习的宝贵参考资料。扩展资料
它既适合需要进入MiniGUI应用程序开发领域的人员,也适合需要对通用的GUI技术学习的人员。