如何開發(fÄ)自己的嵌入å¼ç³»çµ±(tÇ’ng)
時間:2007-10-16 11:00:00來æºï¼šlihan
導語:?介紹了如何開發(fÄ)自己的嵌入å¼ç³»çµ±(tÇ’ng)的方法和注æ„äº‹é …ã€‚
嵌入å¼ç³»çµ±(tÇ’ng)比摩西還è€çš„æ•…事  
電腦用于控制è¨å‚™æˆ–嵌入系統(tÇ’ng)çš„æ·å²å¹¾ä¹Žé›»è…¦è‡ªèº«çš„æ·å²ä¸€æ¨£é•·ã€‚åœ¨é€šè¨Šé ˜åŸŸï¼Œå…å年代晚期,電腦被用于電åé›»è©±äº¤æ›æ©Ÿï¼Œç¨±ç‚º"å˜å„²ç¨‹åºæŽ§åˆ¶"系統(tÇ’ng)。"電腦"é€™è©žé‚£æ™‚å¹¶ä¸æ™®é,å˜å„²ç¨‹åºæŒ‡å…§(nèi)å˜è£æœ‰ç¨‹åºå’Œä¾‹ç¨‹ä¿¡æ¯ã€‚å˜å„²æŽ§åˆ¶é‚è¼¯ï¼Œè€Œä¸æ˜¯å°‡å…¶å›ºåŒ–在硬件ä¸ï¼Œåœ¨ç•¶æ™‚確實是çªç ´æ€§çš„。今天,我們èªç‚ºå®ƒæœ¬ä¾†å°±æ‡‰å¦‚æ¤ã€‚  
那時的電腦是為æ¯ä¸€å€‹æ‡‰ç”¨è€Œå®šåˆ¶çš„ï¼ŒæŒ‰ä»Šå¤©çš„æ¨™æº–ï¼Œå®ƒå€‘æ˜¯ä¸€äº›ä¸æ£å¸¸çš„ã€ç”±å¥‡æ€ªçš„特殊指令和Iï¼Oè¨å‚™é›†æˆåœ¨ä¸€éƒ¨é›»è…¦ä¸ã€‚  
微處ç†å™¨é€šéŽæä¾›æ§‹(gòu)建大系統(tÇ’ng)模塊的å°åž‹ã€ä½Žæˆæœ¬ã€CPU引擎改變了這一切。它æå‡ºäº†å¤–è¨é€šéŽç¸½ç·šè¯(lián)接的固定硬件架構(gòu)åŠç¨±ç‚ºç·¨ç¨‹çš„一般編程模型。  
軟件也隨著硬件æå‡ºã€‚最åˆï¼Œç·¨å¯«å’Œæ¸¬è©¦è»Ÿä»¶åªæœ‰ç°¡å–®çš„編程開發(fÄ)工具。æ¯å€‹é …目實際é‹è¡Œçš„軟件通常來自于è‰ç¨¿çš„修改。編程常用匯編語言或å®èªžè¨€ï¼Œå› 為編è¯å™¨å¸¸å¸¸æœ‰ç¼ºé™·å’Œç¼ºä¹å®Œå–„的調(dià o)試工具。軟件構(gòu)å»ºæ¨¡å¡Šå’Œæ¨™æº–åŒ–åº«åªæ˜¯åˆ°äº†ä¸ƒåå¹´ä»£æ‰æµè¡Œèµ·ä¾†çš„æ¦‚念。  
且åªèƒ½ç”¨äºŽç‰¹å®šçš„微處ç†å™¨ï¼Œç•¶å¾®è™•ç†å™¨è¢«æ·˜æ±°æ™‚,它的æ“作系統(tÇ’ng)除éžç‚ºæ–°è™•ç†å™¨é‡å¯«ï¼Œå¦å‰‡ä¹Ÿè¦è¢«æ·˜æ±°ã€‚今天,許多這類早期的系統(tÇ’ng)æˆäº†äº›æ¨¡ç³Šçš„記憶;還有誰記得MTOS嗎?當C語言出ç¾(xià n)時,æ“作系統(tÇ’ng)編寫的效率ã€ç©©(wÄ›n)定性ã€å¯ç§»æ¤æ€§éƒ½æé«˜äº†å¾ˆå¤šã€‚這一點在管ç†ä¸Šç«‹åˆ»è¡¨ç¾(xià n)出來,它為微處ç†å™¨è¢«æ·˜æ±°æ™‚ä¿è·è»Ÿä»¶æŠ•資帶來了希望。å°äºŽå¸‚å ´ä¾†èªªé€™æ˜¯ä¸€å€‹å¥½æ¶ˆæ¯ã€‚用C語言寫æˆçš„æ“ä½œç³»çµ±(tÇ’ng)今天越來越普é。一般來說,å¯é‡å¾©ä½¿ç”¨çš„軟件已經(jÄ«ng)å 主導并越åšè¶Šå¥½ã€‚  
在八å年代早期,我最喜æ¡çš„æ“ä½œç³»çµ±(tÇ’ng)是Wendonæ“作系統(tÇ’ng),大約150美元就å¯ä»¥å¾—到一個Cæºç¢¼åº«ã€‚å®ƒæ˜¯ä¸€å€‹åŒ…ï¼Œä½ å¯ä»¥é€šéŽé¸æ“‡éƒ¨ä»¶å»ºç«‹è‡ªå·±çš„æ“ä½œç³»çµ±(tÇ’ng),類似在èœå–®ä¸Šé»žèœã€‚ä¾‹å¦‚ï¼Œä½ å¯ä»¥åœ¨åº«æ¸…單上點工作排程安排和內(nèi)å˜ç®¡ç†æ–¹æ¡ˆã€‚ 很多嵌入å¼ç³»çµ±(tÇ’ng)的商å“化æ“作系統(tÇ’ng)是在八å年代出ç¾(xià n)的。這一熱潮æŒçºŒ(xù)到ç¾(xià n)在,今天,有很多å¯è¡Œçš„商å“化æ“作系統(tÇ’ng)å¯ä¾›é¸æ“‡ã€‚一些大佬出ç¾(xià n)了,如VxWorks, pSOS, Neculeuså’ŒWindows CE。  
許多嵌入å¼ç³»çµ±(tÇ’ng)æ ¹æœ¬æ²’æœ‰æ“作系統(tÇ’ng)ï¼Œåªæœ‰å¾ªç’°(huán)控制。å°äºŽä¸€äº›ç°¡å–®è¨å‚™é€™æ˜¯è¶³å¤ 的,但是隨著系統(tÇ’ng)越來越復雜,æ“作系統(tÇ’ng)就很必è¦äº†æˆ–軟件變得ä¸å¯æ€è°çš„復雜。ä¸å¹¸çš„æ˜¯ï¼Œæœ‰äº›å¾©é›œå¾—坿€•的嵌入å¼ç³»çµ±(tÇ’ng)åªå› 為è¨è¨ˆè€…å …æŒä¸è¦æ“作系統(tÇ’ng)æ‰é‚£ä¹ˆå¾©é›œã€‚  
漸漸地,更多嵌入å¼ç³»çµ±(tÇ’ng)需è¦èˆ‡å„類網(wÇŽng)絡è¯(lián)æŽ¥ï¼Œå› æ¤éœ€è¦ç¶²(wÇŽng)絡功能。å³ä¾¿æ˜¯é…’店的門把手也嵌入了微處ç†å™¨èˆ‡ç¶²(wÇŽng)絡相è¯(lián)。 å°äºŽåƒ…僅是編碼控制循環(huán)的嵌入å¼ç³»çµ±(tÇ’ng)ï¼Œå¢žåŠ ç¶²(wÇŽng)絡功能將導致系統(tÇ’ng)復雜程度æé«˜ä»¥è‡´è¦æ±‚æ“作系統(tÇ’ng)。  
除了商å“化æ“作系統(tÇ’ng),還有大é‡å°ˆç”¨æ“作系統(tÇ’ng)。其ä¸å¤§éƒ¨åˆ†ä¾†è‡ªäºŽè‰æ¡ˆï¼Œå¦‚CISCOçš„IOS;還有是從其他æ“作系統(tÇ’ng)䏿´¾ç”Ÿå‡ºä¾†çš„。例如,許多æ“作系統(tÇ’ng)是從åŒä¸€ç‰ˆæœ¬çš„Berkeley Unix系統(tÇ’ng)æ´¾ç”Ÿï¼Œå› ç‚ºå®ƒæœ‰å®Œæ•´çš„ç¶²(wÇŽng)çµ¡åŠŸèƒ½ã€‚å…¶ä»–æ˜¯åŸºäºŽä¸»è¦æ“作系統(tÇ’ng)的如KA9Q來自Phil Karn。  
Linux作為嵌入å¼ç³»çµ±(tÇ’ng)是一個帶有很多優(yÅu)勢的新æˆå“¡ã€‚它å°è¨±å¤šCPU和硬件平臺都是å¯ç§»æ¤çš„ã€ç©©(wÄ›n)定ã€åŠŸèƒ½å¼·å¤§ã€æ˜“于開發(fÄ)。    
工具包çªç ´ICE的障礙  
開發(fÄ)嵌入å¼ç³»çµ±(tÇ’ng)的關éµçš„æ˜¯å¯ç”¨çš„工具包。åƒä»»ä½•工作一樣,好的工具使得工作更快更好。開發(fÄ)çš„ä¸åŒéšŽæ®µéœ€è¦ä¸åŒçš„工具。  
傳統(tÇ’ng)上,首先用于開發(fÄ)嵌入å¼ç³»çµ±(tÇ’ng)工具是內(nèi)部電路仿真器(ICEï¼‰ï¼Œå®ƒæ˜¯ä¸€å€‹ç›¸å°æ˜‚貴的部件,用于æ¤å…¥å¾®è™•ç†å™¨èˆ‡ç¸½ç·šä¹‹é–“的電路ä¸ï¼Œå…許使用者監(jiÄn)視和控制微處ç†å™¨æ‰€æœ‰ä¿¡è™Ÿçš„進出。這有點難åšï¼Œå› 為它是異體,å¯èƒ½æœƒå¼•èµ·ä¸ç©©(wÄ›n)定。但是它æä¾›äº†ç¸½ç·šå·¥ä½œçš„æ¸…æ™°ç‹€æ³ï¼Œå…了許多å°ç¡¬ä»¶è»Ÿä»¶åº•層工作狀æ³çš„猜測。  
éŽåŽ»ï¼Œä¸€äº›å·¥ä½œä¾è³´ICE為主è¦èª¿(dià o)試工具,用于整個開發(fÄ)éŽç¨‹ã€‚但是,一旦åˆå§‹åŒ–軟件å°ä¸²å£æ”¯æŒè‰¯å¥½çš„話,多數(shù)的調(dià o)試å¯ä»¥ä¸ç”¨ICE而用其他方法進行。較新的嵌入å¼ç³»çµ±(tÇ’ng)利用éžå¸¸æ¸…晰的微處ç†å™¨è¨è¨ˆã€‚有時,相應工作åˆå§‹ç¢¼å·²ç¶“(jÄ«ng)æœ‰äº†èƒ½å¤ å¿«é€Ÿç²å¾—串å£å·¥ä½œã€‚這æ„味著沒有ICEäººå€‘ä¹Ÿèƒ½å¤ æ–¹ä¾¿åœ°å·¥ä½œã€‚çœåŽ»ICEé™ä½Žäº†é–‹ç™¼(fÄ)çš„æˆæœ¬ã€‚一旦串å£é–‹å§‹å·¥ä½œï¼Œå®ƒå¯ä»¥æ”¯æŒå„種專æ¥(yè)開發(fÄ)工具。  
Linux是基于GNUçš„Cç·¨è¯å™¨ï¼Œä½œç‚ºGNU工具éˆçš„一部分,與gdbæºèª¿(dià o)試器一起工作。它æä¾›äº†é–‹ç™¼(fÄ)嵌入å¼Linux系統(tÇ’ng)的所有軟件工具。這有些典型的ã€ç”¨äºŽåœ¨æ–°ç¡¬ä»¶ä¸Šé–‹ç™¼(fÄ)嵌入å¼Linux系統(tÇ’ng)的調(dià o)試工具。  
1. 寫入或æ¤å…¥å¼•導碼  
2. å‘䏲壿‰“å°å—符串的編碼,如"Hello World"(事實上我更喜æ¡"Watson,Come hre I need you",電話上常用的第一個詞。)  
3. å°‡gdb目標碼æ¤å…¥å·¥ä½œä¸²å£ï¼Œé€™å¯èˆ‡å¦ä¸€è‡ºé‹è¡Œgdb程åºçš„Linux主機系統(tÇ’ng)å°è©±ã€‚åªè¦ç°¡å–®åœ°å‘Šè¨´gdb通éŽä¸²å£èª¿(dià o)試程åºã€‚它通éŽä¸²å£èˆ‡æ¸¬è©¦æ©Ÿçš„gdb目標碼å°è©±ï¼Œä½ å¯ä»¥é€²è¡ŒCæºä»£ç¢¼èª¿(dià o)試,也å¯ä»¥ç”¨é€™å€‹åŠŸèƒ½å°‡æ›´å¤šçš„ç¢¼è¼‰å…¥RAM或Flash Memoryä¸ã€‚  
4. 利用gdb讓硬件和軟件åˆå§‹åŒ–碼在Linuxå…§(nèi)æ ¸å•Ÿå‹•æ™‚å·¥ä½œã€‚
5. 一旦Linuxå…§(nèi)æ ¸å•Ÿå‹•ï¼Œä¸²å£æˆç‚ºLinux控制å£å¹¶å¯ç”¨äºŽåŽçºŒ(xù)開發(fÄ)。利用kgdb,內(nèi)æ ¸èª¿(dià o)試版的gdb,這æ¥å¸¸å¸¸ä¸ä½œè¦æ±‚ï¼Œå¦‚æžœä½ èˆ‡ç¶²(wÇŽng)絡è¯(lián)接,如10BaseT,下一æ¥ä½ å¯èƒ½è¦å•Ÿå‹•它。  
6. å¦‚æžœåœ¨ä½ çš„ç›®æ¨™ç¡¬ä»¶ä¸Šé‹è¡Œäº†å®Œæ•´çš„Linuxå…§(nèi)æ ¸ï¼Œä½ å¯ä»¥èª¿(dià o)è©¦ä½ çš„æ‡‰ç”¨é€²ç¨‹ã€‚åˆ©ç”¨å…¶ä»–çš„gdb或覆蓋gdb的圖形如xgdb。    
什么是實時系統(tǒng)?  
嵌入å¼ç³»çµ±(tÇ’ng)常常被錯誤地分為實時系統(tÇ’ng),盡管多數(shù)系統(tÇ’ng)一般并ä¸è¦æ±‚實時功能。實時是一個相å°çš„è©žï¼Œç´”åŒ–è«–è€…å¸¸å¸¸åš´æ ¼åœ°å®šç¾©å¯¦æ™‚ç‚ºå°ä¸€äº‹ä»¶ä»¥é 定的方å¼åœ¨æ¥µçŸçš„æ™‚間如微秒作出響應漸漸地,在如æ¤çŸæš«æ™‚間間隔內(nèi)çš„åš´æ ¼å¯¦æ™‚åŠŸèƒ½åœ¨å°ˆç”¨DSP芯片或ASIC上實ç¾(xià n)äº†ã€‚åªæœ‰åœ¨è¨è¨ˆä½Žå±¤ç¡¬ä»¶FIFOã€åˆ†æ•£ï¼èšé›†DMAå¼•æ“Žå’Œå®šåˆ¶ç¡¬ä»¶æ™‚æ‰æœƒæœ‰é€™æ¨£çš„è¦æ±‚。  
許多è¨è¨ˆäººå“¡å› 為å°çœŸå¯¦çš„è¦æ±‚è¨æœ‰æ¸…æ™°çš„ç†è§£è€Œå°å¯¦æ™‚çš„è¦æ±‚焦慮ä¸å®‰ã€‚å°äºŽå¤§
多數(shù)的系統(tÇ’ng),在一至五微秒的近似實時響應已經(jÄ«ng)è¶³å¤ ã€‚åŒæ¨£è»Ÿéœ€æ±‚也是å¯ä»¥æŽ¥å—的。如 Windows 98 已經(jÄ«ng)å´©æ½°çš„ä¸æ–·å¿…é ˆåœ¨4毫秒內(nèi)(±98%)內(nèi)ã€æˆ–20毫秒(±0)內(nèi)進行處ç†ã€‚  
é€™ç¨®è»Ÿè¦æ±‚是比較容易滿足的,包括環(huán)境轉(zhuÇŽn)æ›æ™‚é–“ã€ä¸æ–·ç‰å¾…時間ã€ä»»å‹™å„ª(yÅu)先級和排åºã€‚ç’°(huán)境轉(zhuÇŽn)æ›æ™‚間曾是æ“作系統(tÇ’ng)的一個熱門話題。總之,多數(shù)CPUé€™äº›è¦æ±‚處ç†å¾—很好,而且CPU的速度ç¾(xià n)在已經(jÄ«ng)快了很多,這個å•題也就ä¸é‡è¦äº†ã€‚  
åš´æ ¼çš„å¯¦æ™‚è¦æ±‚é€šå¸¸ç”±ä¸æ–·ä¾‹ç¨‹æˆ–å…¶ä»–å…§(nèi)æ ¸ç’°(huán)境驅(qÅ«)動程åºåŠŸèƒ½è™•ç†ï¼Œä»¥ç¢ºä¿ç©©(wÄ›n)定的表ç¾(xià n),ç‰å¾…時間,一旦請求出ç¾(xià n)è¦æ±‚æœå‹™çš„æ™‚é–“å¾ˆå¤§ç¨‹åº¦ä¸Šå–æ±ºäºŽä¸æ–·çš„優(yÅu)å…ˆåŠå…¶ä»–èƒ½æš«æ™‚æŽ©è“‹ä¸æ–·çš„軟件。  
䏿–·å¿…é ˆé€²è¡Œè™•ç†å’Œç®¡ç†ä»¥ç¢ºä¿æ™‚é–“è¦æ±‚能符åˆï¼Œå¦‚åŒè¨±å¤šå…¶ä»–çš„æ“作系統(tÇ’ng)。在IntelX86處ç†å™¨ä¸ï¼Œé€™å·¥ä½œå¾ˆå®¹æ˜“ç”±Linux實時擴展處ç†ã€‚這是æä¾›äº†ä¸€å€‹ä»¥åŽè‡ºä»»å‹™æ–¹å¼é‹è¡ŒLinuxçš„ä¸æ–·è™•ç†èª¿(dià o)度。關éµçš„䏿–·éŸ¿æ‡‰ä¸å¿…通知Linuxã€‚å› æ¤å¯ä»¥å¾—到許多å°äºŽé—œéµæ™‚é˜çš„æŽ§åˆ¶ã€‚在實時控制級和時間é™åˆ¶å¯¬æ¾çš„基本Linux級之間æä¾›æŽ¥å£ï¼Œé€™æä¾›äº†èˆ‡å…¶ä»–åµŒå…¥å¼æ“作系統(tÇ’ng)ç›¸ä¼¼çš„å¯¦æ™‚æ¡†æž¶ã€‚å› æ¤ï¼Œå¯¦æ™‚é—œéµä»£ç¢¼æ˜¯éš”é–‹çš„ã€å¹¶"è¨è¨ˆ"æˆæ»¿è¶³è¦æ±‚的。代碼處ç†çš„çµ(jié)果是以更一般的方法也許åªåœ¨æ‡‰ç”¨ä»»å‹™ç´šã€‚    
嵌入å¼ç³»çµ±(tÇ’ng)定義  
一個觀點是如果一個應用沒有用戶界é¢ï¼Œå®ƒå¿…é ˆæ˜¯åµŒå…¥å¼çš„ï¼Œå› ç‚ºç”¨æˆ¶ä¸èƒ½ç›´æŽ¥èˆ‡ä¹‹äº¤äº’。當然這是簡單化的。一個電梯控制的電腦被èªç‚ºæ˜¯åµŒå…¥å¼çš„:按éµé¸æ“‡æ¨“層指示燈顯示電梯的åœå±¤ã€‚å°äºŽè¯(lián)ç¶²(wÇŽng)的嵌入å¼ç³»çµ±(tÇ’ng),如果系統(tÇ’ng)包å«ç›£(jiÄn)視和控制的網(wÇŽng)絡ç€è¦½å™¨ï¼Œé€™ç¨®ç•Œé™å°±æ›´åŠ æ¨¡ç³Šäº†ã€‚æ›´å¥½äº›çš„å®šç¾©æ³¨é‡ç³»çµ±(tÇ’ng)的集ä¸çš„功能和主è¦çš„目的。  
å› ç‚ºLinuxæä¾›äº†å®ŒæˆåµŒå…¥åŠŸèƒ½çš„åŸºæœ¬çš„å…§(nèi)æ ¸å’Œä½ æ‰€éœ€è¦çš„æ‰€æœ‰ç”¨æˆ¶ç•Œé¢ï¼Œå®ƒæ˜¯å¤šé¢çš„。它能處ç†åµŒå…¥å¼ä»»å‹™å’Œç”¨æˆ¶ç•Œé¢ã€‚å°‡Linux看作是連續(xù)的統(tÇ’ng)一體,從一個具有內(nèi)å˜ç®¡ç†ã€ä»»å‹™åˆ‡æ›å’Œæ™‚é–“æœå‹™åŠå…¶ä»–的分拆的ã€å¾®å…§(nèi)æ ¸åˆ°å®Œæ•´çš„æœå‹™å™¨ï¼Œæ”¯æŒæ‰€æœ‰çš„æ–‡ä»¶ç³»çµ±(tÇ’ng)和網(wÇŽng)絡æœå‹™ã€‚  
一個å°åž‹çš„嵌入å¼Linux系統(tÇ’ng)åªéœ€è¦ä¸‹é¢ä¸‰å€‹åŸºæœ¬å…ƒç´ :  
  a)引導工具:Linux微內(nèi)æ ¸ï¼Œç”±å…§(nèi)å˜ç®¡ç†ã€é€²ç¨‹ç®¡ç†å’Œäº‹å‹™è™•ç†æ§‹(gòu)æˆã€€ã€€
  b)åˆå§‹åŒ–進程   如果è¦è®“它能干點什么且繼續(xù)ä¿æŒå°åž‹åŒ–ï¼Œé‚„å¾—åŠ ä¸Šï¼šã€€ã€€
  c)硬件驅(qÅ«)動程åºï¼šæä¾›æ‰€éœ€åŠŸèƒ½çš„ä¸€å€‹æˆ–æ›´å¤šæ‡‰ç”¨ç¨‹åºã€‚  
å†å¢žåŠ åŠŸèƒ½ï¼Œæˆ–è¨±éœ€è¦é€™äº›ï¼š 一個文件系統(tÇ’ng)(也許在ROM或RAMä¸ï¼‰ TCPï¼IPç¶²(wÇŽng)çµ¡å †æ£§ å˜å„²åŠéŽæ¸¡æ•¸(shù)據(jù)和交æ›ç”¨çš„ç£ç›¤ã€‚
硬件平臺  
鏿“‡æœ€å¥½çš„硬件是一個復雜的工作ã€å……滿了公å¸å…¶ä»–é …ç›®çš„æ”¿æ²»ã€å見ã€å‚³çµ±(tÇ’ng),缺ä¹å®Œæ•´æˆ–精確的信æ¯ã€‚ æˆæœ¬ç¶“(jÄ«ng)常是關éµçš„è°é¡Œã€‚ç•¶è€ƒæ…®æˆæœ¬æ™‚ã€ç¢ºä¿¡ä½ 在考慮產(chÇŽn)å“çš„æ•´å€‹æˆæœ¬ã€ä¸åƒ…是CPU。有時快的ã€ä¾¿å®œçš„CPUä¸€æ—¦åŠ ä¸Šç¸½ç·šé‚輯和時延使之與外è¨ä¸€èµ·å·¥ä½œï¼Œèƒ½è®Šæˆä¸€å€‹æ˜‚貴的狗的產(chÇŽn)å“ã€‚å¦‚æžœä½ åœ¨å°‹æ‰¾è»Ÿä»¶ï¼Œé¦–å…ˆæ˜¯ç¡¬ä»¶å·²ç¶“(jÄ«ng)有產(chÇŽn)å“äº†ã€‚å¦‚æžœä½ æ˜¯ç³»çµ±(tÇ’ng)è¨è¨ˆè€…ï¼Œç”±ä½ æ±ºå®šåˆ¶å®šå¯¦æ™‚çš„é ç®—åŠç¡¬ä»¶çš„å·¥ä½œæ˜¯å¦æ»¿æ„。  
ç¾(xià n)實ä¸éœ€è¦å¤šå¿«çš„CPU來完æˆä¸€é …å·¥ä½œï¼Œç„¶åŽæ”¾å¤§ä¸‰å€ã€‚奇怪,CPUç†è«–上的速度竟與ç¾(xià n)實ä¸ä¸€æ¨£ï¼Œåˆ¥å¿˜äº†æ‡‰ç”¨ç¨‹åº?qÅ«)浞掷èƒache。  
想象總線的速度需è¦å¤šå¿«ï¼Œå¦‚果有其他總線如PCI總線,包括進來。慢的總線或產(chÇŽn)生DMA阻塞的總線會é™ä½ŽCPUçš„é€Ÿåº¦é€ æˆæ“æ“ ã€‚ 有集æˆè¨å‚™çš„CPUæ˜¯å¥½çš„ï¼Œå› ç‚ºåªé ˆèª¿(dià o)試很少的è¨å‚™ï¼Œå¹¶ä¸”支æŒé€šç”¨CPU的驅(qÅ«)動程åºé€šå¸¸éƒ½å¾ˆå®¹æ˜“ç²å¾—ã€‚åœ¨æˆ‘çš„é …ç›®ä¸ï¼ŒèŠ¯ç‰‡èˆ‡å¤–è¨çš„è¯(lián)接經(jÄ«ng)常出å•é¡Œæˆ–ä¸æ»¿è¶³æˆ‘å€‘æ‰€éœ€çš„å…¼å®¹æ€§ã€‚å› ç‚ºå¤–è¨æ˜¯é›†æˆçš„,ä¸è¦èªç‚ºé€™æœƒä¾¿å®œã€‚
å°‡10æ–¤é‡çš„Linux塞入åªèƒ½è£5斤的袋ä¸ã€‚å°äºŽLinux一個共åŒçš„èªè˜æ˜¯å®ƒç”¨äºŽåµŒå…¥å¼ç³»çµ±(tÇ’ng)簡直是神奇極了。這å¯èƒ½ä¸å¤§å°ï¼Œå…¸åž‹çš„PC上的Linuxå°PC用戶來說功能有多,å°åˆå¸è€…而言,å¯ä»¥å°‡å…§(nèi)æ ¸èˆ‡ä»»å‹™åˆ†é–‹ï¼Œæ¨™æº–çš„Linuxå…§(nèi)æ ¸é€šå¸¸é§ç•™åœ¨å…§(nèi)å˜ä¸ï¼Œæ¯ä¸€å€‹æ‡‰ç”¨ç¨‹åºéƒ½æ˜¯å¾žç£ç›¤é‹åˆ°å…§(nèi)å˜ä¸ŠåŸ·(zhÃ)行。當程åºçµ(jié)æŸåŽï¼Œå®ƒæ‰€å 用的內(nèi)å˜å°±è¢«é‡‹æ”¾ï¼Œç¨‹åºå°±è¢«ä¸‹è¼‰äº†ã€‚
在一個嵌入å¼ç³»çµ±(tÇ’ng)里,å¯èƒ½æ²’有ç£ç›¤ã€‚有兩種途徑å¯ä»¥æ¶ˆé™¤å°ç£ç›¤çš„ä¾è³´ï¼Œé€™è¦çœ‹ç³»çµ±(tÇ’ng)的復雜性和硬件的è¨è¨ˆï¼Œåœ¨ä¸€å€‹ç°¡å–®çš„系統(tÇ’ng)里,當系統(tÇ’ng)啟動åŽï¼Œå…§(nèi)æ ¸å’Œæ‰€æœ‰çš„æ‡‰ç”¨ç¨‹åºéƒ½åœ¨å…§(nèi)å˜é‡Œã€‚這就是大多數(shù)傳統(tÇ’ng)的嵌入å¼ç³»çµ±(tÇ’ng)工作模å¼ï¼Œå®ƒåŒæ¨£å¯ä»¥è¢«Linux支æŒã€‚  
有了Linux,就有了第二種å¯èƒ½æ€§ã€‚å› ç‚ºLinux已經(jÄ«ng)有能力"åŠ è¼‰"å’Œ"å¸è¼‰"程åºï¼Œä¸€å€‹åµŒå…¥å¼ç³»çµ±(tÇ’ng)å°±å¯ä»¥åˆ©ç”¨å®ƒä¾†ç¯€(jié)çœå…§(nèi)å˜ã€‚試想一個典型的包括一個大概8MB到16MBçš„Flash Memoryå’Œ8MBå…§(nèi)å˜çš„系統(tÇ’ng)。Flash Memoryå¯ä»¥ä½œç‚ºä¸€å€‹æ–‡ä»¶ç³»çµ±(tÇ’ng)。Flash Memoryé©…(qÅ«)動程åºç”¨ä¾†é€£æŽ¥Flash Memory和文件系統(tÇ’ng)。作為替代,å¯ä½¿ç”¨Flash Disk。這Flash部件用軟件仿真ç£ç›¤ã€‚å…¶ä¸ä¸€å€‹ä¾‹æ˜¯M-Systemsçš„DiskOnChip,å¯ä»¥é”到160MB。所有的程åºéƒ½ä»¥æ–‡ä»¶å½¢å¼å˜å„²åœ¨Flash文件ä¸ï¼Œéœ€è¦æ™‚å¯ä»¥è£å…¥å…§(nèi)å˜ã€‚這種動態(tà i)çš„ã€"æ ¹æ“š(jù)需è¦åŠ è¼‰"的能力是支æŒå…¶å®ƒä¸€ç³»åˆ—功能的é‡è¦ç‰¹å¾ï¼šå®ƒä½¿åˆå§‹åŒ–代碼在系統(tÇ’ng)引導åŽè¢«é‡‹æ”¾ã€‚LinuxåŒæ¨£æœ‰å¾ˆå¤šå…§(nèi)æ ¸å¤–é‹è¡Œçš„公用程åºã€‚這些通常程åºåœ¨åˆå§‹åŒ–時é‹è¡Œä¸€æ¬¡ï¼Œä»¥åŽå°±ä¸å†é‹è¡Œã€‚而且,這些公用程åºå¯ä»¥ç”¨å®ƒå€‘相互共有的方å¼ï¼Œä¸€å€‹æŽ¥ä¸€å€‹æŒ‰é †åºé‹è¡Œã€‚這樣,相åŒå…§(nèi)å˜ç©ºé–“å¯ä»¥è¢«å復使用以"å¬å…¥"æ¯ä¸€å€‹ç¨‹åºï¼Œå°±è±¡ç³»çµ±(tÇ’ng)引導一樣。這的確å¯ä»¥ç¯€(jié)çœå…§(nèi)å˜ï¼Œç‰¹åˆ¥æ˜¯é‚£äº›é…置一次以åŽå°±ä¸å†æ›´æ”¹çš„ç¶²(wÇŽng)çµ¡å †æ£§ 如果Linuxå¯åŠ è¼‰æ¨¡å¡Šçš„åŠŸèƒ½åŒ…æ‹¬åœ¨å…§(nèi)æ ¸é‡Œï¼Œé©…(qÅ«)動程åºå’Œæ‡‰ç”¨ç¨‹åºå°±éƒ½å¯ä»¥è¢«åŠ è¼‰ã€‚å®ƒå¯ä»¥æª¢æŸ¥ç¡¬ä»¶ç’°(huán)境并且為硬件è£ä¸Šç›¸æ‡‰çš„軟件。這就消除了用一個程åºå 用許多Flash Memory來處ç†å¤šç¨®ç¡¬ä»¶çš„復雜性。  
軟件的å‡ç´šæ›´æ¨¡å¡ŠåŒ–ã€‚ä½ å¯ä»¥åœ¨ç³»çµ±(tÇ’ng)é‹è¡Œçš„æ™‚候在Flash上å‡ç´šæ‡‰ç”¨ç¨‹åºå’Œå¯åŠ è¼‰é©…(qÅ«)動程åºï¼Œé…置信æ¯å’Œé‹è¡Œæ™‚é–“åƒæ•¸(shù)å¯ä»¥ä½œç‚ºæ•¸(shù)據(jù)文件儲å˜åœ¨Flash上。  
éžè™›æ“¬å…§(nèi)å˜ã€€ã€€
標準Linuxçš„å¦ä¸€å€‹å¾…徿˜¯è™›æ“¬å…§(nèi)å˜çš„èƒ½åŠ›ã€‚æ£æ˜¯é€™ç¨®ç¥žå¥‡çš„特å¾ä½¿æ‡‰ç”¨ç¨‹åºå“¡å¯ä»¥ç‹‚熱的編寫代碼而ä¸è¨ˆåŽæžœï¼Œä¸ç®¡ç¨‹åºæœ‰å¤šå¤§ã€‚ç¨‹åºæº¢å‡ºåˆ°äº†ç£ç›¤äº¤æ›å€(qÅ«)。在沒有ç£ç›¤çš„嵌入å¼ç³»çµ±(tÇ’ng)里,通常ä¸èƒ½é€™ä¹ˆåšã€‚  
在嵌入å¼ç³»çµ±(tÇ’ng)里ä¸éœ€è¦é€™ç¨®å¼·å¤§çš„åŠŸèƒ½ã€‚å¯¦éš›ä¸Šï¼Œä½ å¯èƒ½ä¸å¸Œæœ›å®ƒåœ¨å¯¦æ™‚的關éµç³»çµ±(tÇ’ng)é‡Œï¼Œå› ç‚ºå®ƒæœƒå¸¶ä¾†ç„¡æ³•æŽ§åˆ¶çš„æ™‚é–“å› ç´ ã€‚é€™å€‹è»Ÿä»¶å¿…é ˆè¨è¨ˆå¾—æ›´åŠ ç²¾æ‚,以é©åˆå¸‚é¢ä¸Šç‰©ç†å…§(nèi)å˜ï¼Œå°±è±¡å…¶å®ƒåµŒå…¥å¼ç³»çµ±(tÇ’ng)一樣。  
注æ„由于CPUçš„åŽŸå› ï¼Œé€šå¸¸åœ¨Linuxä¸ä¿å˜è™›æ“¬å…§(nèi)å˜ä»£ç¢¼æ˜¯æ˜Žæ™ºçš„ï¼Œå› ç‚ºå°‡å®ƒæ¸…é™¤å¾ˆè²»äº‹ã€‚è€Œä¸”é‚„æœ‰å¦å¤–ä¸€å€‹åŽŸå› æ˜¯å®ƒæ”¯æŒå…±äº«æ–‡æœ¬ï¼Œé€™æ¨£å°±å¯ä»¥ä½¿è¨±å¤šç¨‹åºå…±äº«ä¸€å€‹è»Ÿä»¶ã€‚沒有這個,æ¯ä¸€å€‹ç¨‹åºéƒ½è¦æœ‰å®ƒè‡ªå·±çš„庫,就象printf一樣。  
虛擬內(nèi)å˜çš„調(dià o)入功能å¯ä»¥è¢«é—œæŽ‰ï¼Œåªè¦å°‡äº¤æ›ç©ºé–“的大å°è¨ç½®ç‚ºé›¶ã€‚ç„¶åŽï¼Œå¦‚æžœä½ å¯«çš„ç¨‹åºæ¯”實際的內(nèi)å˜å¤§ï¼Œç³»çµ±(tÇ’ng)å°±æœƒç•¶ä½œä½ çš„é‹è¡Œç”¨ç›¡äº†äº¤æ›ç©ºé–“來處ç†ï¼›é€™å€‹ç¨‹åº?qÅ«)⒉粫\行,或者malloc將會失éˆã€‚  
在許多CPU上,虛擬內(nèi)å˜æä¾›çš„å…§(nèi)å˜ç®¡ç†å¯ä»¥å°‡ä¸åŒç¨‹åºåˆ†é–‹ï¼Œé˜²æ¢å®ƒå€‘寫到其它地å€çš„空間上。這在嵌入å¼ç³»çµ±(tÇ’ng)上通常ä¸å¯èƒ½ï¼Œå› ç‚ºå®ƒåªæ”¯æŒä¸€å€‹ç°¡å–®ã€æ‰å¹³çš„地å€ç©ºé–“。Linux的這種功能有助于其發(fÄ)展。它減少了胡亂的編寫程åºé€ æˆç³»çµ±(tÇ’ng)å´©æ½°çš„å¯èƒ½æ€§ã€‚許多嵌入å¼ç³»çµ±(tÇ’ng)基于效率方é¢çš„åŽŸå› æœ‰æ„è˜ä½¿ç”¨ç¨‹åºé–“å¯ä»¥å…±äº«çš„"全局"數(shù)據(jù)。這也å¯ä»¥é€šéŽLinux共享內(nèi)å˜åŠŸèƒ½ä¾†æ”¯æŒï¼Œå…±äº«çš„åªæ˜¯æŒ‡å®šçš„å…§(nèi)å˜éƒ¨åˆ†ã€‚    
文件系統(tǒng)  
許多嵌入å¼ç³»çµ±(tÇ’ng)沒有ç£ç›¤æˆ–者文件系統(tÇ’ng)。Linuxä¸éœ€è¦å®ƒå€‘也能é‹è¡Œã€‚如剿‰€è¿°ï¼Œæ‡‰ç”¨ç¨‹åºä»»å‹™å¯ä»¥å’Œå…§(nèi)æ ¸ä¸€èµ·ç·¨å¯«ï¼Œå¹¶ä¸”åœ¨å¼•å°Žæ™‚ä½œç‚ºä¸€å€‹å½±åƒåŠ è¼‰ã€‚å°äºŽç°¡å–®çš„系統(tÇ’ng)ä¾†èªªï¼Œé€™å°±å¤ äº†ã€‚ç„¶è€Œï¼Œå®ƒç¼ºä¹å‰é¢æ‰€èªªçš„éˆæ´»æ€§ã€‚  
實際上,許多商æ¥(yè)性嵌入å¼ç³»çµ±(tÇ’ng),æä¾›æ–‡ä»¶ç³»çµ±(tÇ’ng)作為é¸é …。許多或者是專用的文件系統(tÇ’ng)或者是MS-DOS-Compatible文件系統(tÇ’ng)。Linuxæä¾›MS-DOS-Compatible文件系統(tÇ’ng)ï¼ŒåŒæ™‚é‚„æœ‰å…¶å®ƒå¤šç¨®é¸æ“‡ã€‚之所以æä¾›å…¶å®ƒé¸æ“‡æ˜¯å› ç‚ºå®ƒå€‘æ›´åŠ å¼·å¤§è€Œä¸”å…·æœ‰å®¹éŒ¯åŠŸèƒ½ã€‚Linux還具有檢查和ç¶è·çš„功能,商æ¥(yè)æ€§ä¾›æ‡‰å•†å¾€å¾€ä¸æä¾›é€™äº›ã€‚é€™å°äºŽFlash系統(tÇ’ng)來說尤其é‡è¦ï¼Œå› 為它是通éŽç¶²(wÇŽng)絡更新的。如果系統(tÇ’ng)在å‡ç´šéŽç¨‹ä¸å¤±åŽ»äº†èƒ½åŠ›ï¼Œé‚£å®ƒå°±æ²’æœ‰ç”¨äº†ã€‚ç¶è·çš„功能通常å¯ä»¥è§£æ±ºé€™é¡žå•題。  
文件系統(tÇ’ng)å¯ä»¥è¢«æ”¾åœ¨å‚³çµ±(tÇ’ng)çš„ç£ç›¤é©…(qÅ«)動器ã€Flash Memory或其它這類的介質(zhì)上。而且,用于暫時ä¿å˜æ–‡ä»¶ï¼Œä¸€å€‹å°RAMç›¤å°±è¶³å¤ äº†ã€‚Flash Memories被分割æˆå¡Šã€‚這些塊ä¸ä¹Ÿè¨±åŒ…æ‹¬ä¸€å€‹å«æœ‰ç•¶CPU啟動時é‹è¡Œçš„æœ€åˆçš„軟件的引導塊。這å¯èƒ½åŒ…括Linux 引導代碼。剩余的Flashå¯ä»¥ç”¨ä½œæ–‡ä»¶ç³»çµ±(tÇ’ng)。Linux的內(nèi)æ ¸å¯ä»¥é€šéŽå¼•導代碼從Flash復制到RAMï¼Œæˆ–è€…é‚„æœ‰ä¸€å€‹é¸æ“‡ï¼Œå…§(nèi)æ ¸å¯ä»¥è¢«å˜å„²åœ¨Flash的一個ç¨ç«‹éƒ¨åˆ†ï¼Œå¹¶ä¸”直接從那里執(zhÃ)行。  
å¦å¤–å°äºŽä¸€äº›ç³»çµ±(tÇ’ng)ä¾†èªªé‚„æœ‰ä¸€å€‹æœ‰è¶£çš„é¸æ“‡ï¼Œé‚£å°±æ˜¯å°‡ä¸€å€‹ä¾¿å®œçš„CD-ROM包å«åœ¨å…§(nèi)。這比Flash Memory 便宜,而且通éŽäº¤æ›CD-ROM支æŒç°¡å–®çš„å‡ç´šã€‚有了這個,Linux åªè¦å¾ž CD-ROM上引導,并且象從硬盤上一樣從CD-ROM上ç²å¾—所有的程åºã€‚  
最åŽï¼Œå°äºŽè¯(lián)ç¶²(wÇŽng)的嵌入å¼ç³»çµ±(tÇ’ng)來說,Linux 支æŒNFS(Network File System)。這為實ç¾(xià n)è¯(lián)ç¶²(wÇŽng)系統(tÇ’ng)的許多增值功能打開了大門。第一,它å…許通éŽç¶²(wÇŽng)çµ¡ä¸ŠåŠ è¼‰æ‡‰ç”¨ç¨‹åºã€‚é€™æ˜¯æŽ§åˆ¶è»Ÿä»¶ä¿®æ”¹çš„åŸºç¤Žï¼Œå› ç‚ºæ¯ä¸€å€‹åµŒå…¥å¼ç³»çµ±(tÇ’ng)的軟件都å¯ä»¥åœ¨ä¸€å€‹æ™®é€šçš„æœå‹™å™¨ä¸ŠåŠ è¼‰ã€‚å®ƒåœ¨é‹è¡Œçš„æ™‚候也å¯ä»¥ç”¨ä¾†è¼¸å…¥æˆ–輸出大é‡çš„æ•¸(shù)據(jù)ã€é…置和狀態(tà i)ä¿¡æ¯ã€‚這å°ç”¨æˆ¶ç›£(jiÄn)ç£å’ŒæŽ§åˆ¶ä¾†èªªæ˜¯ä¸€å€‹éžå¸¸å¼·å¤§çš„功能。舉例來說,嵌入å¼ç³»çµ±(tÇ’ng)å¯ä»¥å»ºç«‹ä¸€å€‹å°çš„RAMç£ç›¤ï¼ŒåŒ…å«çš„æ–‡ä»¶ä¸æœ‰èˆ‡ç•¶å‰ç‹€æ…‹(tà i)ä¿¡æ¯åŒæ¥çš„å…§(nèi)容。其它系統(tÇ’ng)å¯ä»¥ç°¡å–®çš„æŠŠé€™å€‹RAMç£ç›¤è¨ç½®ç‚ºåŸºäºŽç¶²(wÇŽng)絡的é 程ç£ç›¤ï¼Œå¹¶ä¸”空ä¸å˜å–狀態(tà i)文件。這就å…許å¦ä¸€å€‹æ©Ÿå™¨ä¸Šçš„Webæœå‹™å™¨é€šéŽç°¡å–®çš„CGI Scriptå˜å–狀態(tà i)ä¿¡æ¯ã€‚在其它電腦上é‹è¡Œçš„其它應用程åºåŒ…å¯ä»¥å¾ˆå®¹æ˜“çš„å˜å–數(shù)據(jù)ã€‚å°æ›´å¾©é›œçš„監(jiÄn)控,應用程åºåŒ…如Matlabå¯ä»¥ç”¨ä¾†åœ¨æ“作員的PC或工作站的æä¾›ç³»çµ±(tÇ’ng)é‹è¡Œçš„圖形展示。  
引導LILO和BIOS在哪里  
當一個微處ç†å™¨ç¬¬ä¸€æ¬¡å•Ÿå‹•的時候,它開始在é å…ˆè¨ç½®çš„地å€ä¸ŠåŸ·(zhÃ)行指令。通常在那里有一些åªè®€å…§(nèi)å˜ï¼ŒåŒ…括åˆå§‹åŒ–或引導代碼。在PC上,這是BIOS。它執(zhÃ)行了一些低水平的CPUåˆå§‹åŒ–和其它硬件的é…置。BIOS繼續(xù)辨èªå“ªå€‹ç£ç›¤é‡Œæœ‰æ“作系統(tÇ’ng),把æ“作系統(tÇ’ng)復制到RAM并且轉(zhuÇŽn)å‘它。實際上,這éžå¸¸å¾©é›œï¼Œä½†å°æˆ‘們的目標來說也éžå¸¸é‡è¦ã€‚在PC上é‹è¡Œçš„Linuxä¾é PCçš„BIOS來æä¾›é€™äº›é…置和OSåŠ è¼‰åŠŸèƒ½ã€‚ã€€ã€€
在一個嵌入å¼ç³»çµ±(tÇ’ng)里經(jÄ«ng)常沒有這種BIOSã€‚é€™æ¨£ä½ å°±è¦æä¾›åŒç‰çš„啟動代碼。幸é‹çš„æ˜¯ï¼ŒåµŒå…¥å¼ç³»çµ±(tÇ’ng)å¹¶ä¸éœ€è¦PC BIOS引導程åºé‚£æ¨£çš„éˆæ´»æ€§ï¼Œå› 為它通常åªéœ€è¦è™•ç†ä¸€å€‹ç¡¬ä»¶çš„é…ç½®ã€‚é€™å€‹ä»£ç¢¼æ›´ç°¡å–®ä¹Ÿæ›´æž¯ç‡¥ã€‚å®ƒåªæ˜¯ä¸€æŒ‡ä»¤æ¸…單,將固定的數(shù)å—塞到硬件寄å˜å™¨ä¸åŽ»ã€‚ç„¶è€Œï¼Œé€™æ˜¯é—œéµçš„ä»£ç¢¼ï¼Œå› ç‚ºé€™äº›æ•¸(shù)值è¦èˆ‡ä½ çš„ç¡¬ä»¶ç›¸ç¬¦è€Œä¸”è¦æŒ‰ç…§ç‰¹å®šçš„é †åºé€²è¡Œã€‚所以在大多數(shù)情æ³ä¸‹ï¼Œä¸€å€‹æœ€å°çš„通電自檢模塊,å¯ä»¥æª¢æŸ¥å…§(nèi)å˜çš„æ£å¸¸é‹è¡Œã€è®“LEDé–ƒçˆï¼Œå¹¶ä¸”é©…(qÅ«)å‹•å…¶å®ƒå¿…é ˆçš„ç¡¬ä»¶ä»¥ä½¿ä¸»Linux OS啟動和é‹è¡Œã€‚é€™äº›å•Ÿå‹•ä»£ç¢¼å®Œå…¨æ ¹æ“š(jù)硬件決定,ä¸å¯éš¨æ„ç§»å‹•ã€‚ã€€ã€€
幸é‹çš„æ˜¯ï¼Œè¨±å¤šç³»çµ±(tÇ’ng)éƒ½æœ‰ç‚ºæ ¸å¿ƒå¾®è™•ç†å™¨å’Œå…§(nèi)å˜æ‰€å®šåˆ¶çš„èœå–®å¼ç¡¬ä»¶è¨è¨ˆã€‚å…¸åž‹çš„æ˜¯ï¼ŒèŠ¯ç‰‡åˆ¶é€ å•†æœ‰ä¸€å€‹æ¨£æœ¬ä¸»æ¿ï¼Œå¯ä»¥ç”¨ä¾†ä½œç‚ºè¨è¨ˆçš„åƒè€ƒæˆ–多或少與新è¨è¨ˆç›¸åŒã€‚通常這些èœå–®å¼è¨è¨ˆçš„啟動代碼是å¯ä»¥ç²å¾—的,它å¯ä»¥æ ¹æ“š(jù)ä½ çš„éœ€è¦è¼•易的修改。在少數(shù)情æ³ä¸‹ï¼Œå•Ÿå‹•代碼需è¦é‡æ–°ç·¨å¯«ã€‚ ç‚ºäº†æ¸¬è©¦é€™äº›ä»£ç¢¼ï¼Œä½ å¯ä»¥ä½¿ç”¨ä¸€å€‹åŒ…å«â€˜æ¨¡æ“¬å…§(nèi)å˜â€˜çš„電路內(nèi)置模擬器,它å¯ä»¥ä»£æ›¿ç›®æ¨™å…§(nèi)å˜ã€‚ä½ æŠŠä»£ç¢¼è£åˆ°æ¨¡æ“¬å™¨ä¸Šå¹¶é€šéŽæ¨¡æ“¬å™¨èª¿(dià o)試。如果這樣ä¸è¡Œï¼Œä½ å¯ä»¥è·³éŽé€™ä¸€æ¥ï¼Œä½†é€™æ¨£å°±è¦ä¸€å€‹æ›´é•·çš„調(dià o)試周期。  
這個代碼最終è¦åœ¨è¼ƒç‚ºç©©(wÄ›n)定的內(nèi)å˜ä¸Šé‹è¡Œï¼Œé€šå¸¸æ˜¯Flash或EPROMèŠ¯ç‰‡ã€‚ä½ éœ€è¦ä½¿ç”¨ä¸€äº›æ–¹æ³•將代碼放在芯片上。怎么åšï¼Œè¦æ ¹æ“š(jù)"目標"硬件和工具來定。  
一種æµè¡Œçš„æ–¹æ³•是把Flash或EPROM芯片æ’å…¥EPROM或Flashç‡’åˆ¶å™¨ã€‚é€™å°‡æŠŠä½ çš„ç¨‹åº"燒"(å˜ï¼‰å…¥èŠ¯ç‰‡ã€‚ç„¶åŽï¼ŒæŠŠèŠ¯ç‰‡æ’å…¥ä½ çš„ç›®æ¨™æ¿çš„æ’åº§ï¼Œæ‰“é–‹é›»æºã€‚é€™å€‹æ–¹æ³•éœ€è¦æ¿ä¸Šé…有æ’座,但有些è¨å‚™æ˜¯ä¸èƒ½é…æ’座的。 å¦ä¸€å€‹æ–¹æ³•是通éŽä¸€å€‹JTAG界é¢ã€‚一些芯片有JTAG界é¢å¯ä»¥ç”¨ä¾†å°èŠ¯ç‰‡é€²è¡Œç·¨ç¨‹ã€‚é€™æ˜¯æœ€æ–¹ä¾¿çš„æ–¹æ³•ã€‚èŠ¯ç‰‡å¯ä»¥æ°¸é 被焊在主æ¿ä¸Šï¼Œä¸€å€‹å°é›»çºœå¾žæ¿ä¸Šçš„JTAG連接器,通常是一個PCå¡ï¼Œè¯(lián)到JTAG界é¢ã€‚䏋颿˜¯PCé‹è¡ŒJTAGç•Œé¢æ‰€éœ€çš„一些慣用程åºã€‚這個è¨å‚™é‚„å¯ä»¥ç”¨ä¾†å°é‡ç”Ÿç”¢(chÇŽn)。    
å¥å£¯æ€§æ¯”政治家的承諾更å¯é   
在PC硬件上é‹è¡Œæ™‚,Linux是éžå¸¸å¯é 和穩(wÄ›n)定的,特別是和ç¾(xià n)在æµè¡Œçš„一些æ“作系統(tÇ’ng)相比。嵌入å¼å…§(nèi)æ ¸æœ¬èº«æœ‰å¤šç©©(wÄ›n)定呢?å°å¤§å¤šæ•¸(shù)微處ç†å™¨ä¾†èªªï¼ŒLinuxéžå¸¸å¥½ã€‚ç§»æ¤åˆ°æ–°å¾®è™•ç†å™¨å®¶æ—çš„Linuxå…§(nèi)æ ¸é‹è¡Œèµ·ä¾†èˆ‡æœ¬å¾®è™•ç†å™¨ä¸€æ¨£ç©©(wÄ›n)定。它經(jÄ«ng)常被移æ¤åˆ°ä¸€å€‹æˆ–多個特定的主æ¿ä¸Šã€‚這些æ¿åŒ…括特定的外åœè¨å‚™å’ŒCPU。  
幸é‹çš„æ˜¯ï¼Œè¨±å¤šä»£ç¢¼æ˜¯èˆ‡è™•ç†å™¨çš„,所以移æ¤é›†ä¸åœ¨å·®ç•°ä¸Šã€‚å…¶ä¸å¤§å¤šæ•¸(shù)是在內(nèi)å˜ç®¡ç†å’Œä¸æ–·æŽ§åˆ¶é ˜åŸŸã€‚一旦æˆåŠŸç§»æ¤ï¼Œå®ƒå€‘å°±éžå¸¸ç©©(wÄ›n)定。å‰é¢æˆ‘們討論éŽï¼Œå¼•å°Žç–略廣泛ä¾è³´äºŽç¡¬ä»¶è¦æ±‚ï¼Œè€Œä¸”ä½ å¿…é ˆæœ‰è¨ˆåŠƒåœ°åšä¸€äº›å®šåˆ¶çš„工作。  
è¨å‚™é©…(qÅ«)å‹•ç¨‹åºæ›´åŠ æ··äº‚ï¼šæœ‰äº›ç©©(wÄ›n)定有些ä¸ç©©(wÄ›n)å®šã€‚è€Œä¸”é¸æ“‡å¾ˆæœ‰é™ï¼›ä¸€æ—¦ä½ 離開了通用的PCå¹³è‡ºï¼Œä½ éœ€è¦è‡ªå·±ç·¨å¯«ã€‚幸é‹çš„æ˜¯ï¼Œå‘¨åœæœ‰è¨±å¤šé©…(qÅ«)動程åºï¼Œä½ å¯èƒ½å¯ä»¥æ‰¾åˆ°ä¸€å€‹èˆ‡ä½ 的需求相近的修改一下。這種驅(qÅ«)動程åºç•Œé¢å·²å®šç¾©å¥½ã€‚許多類的驅(qÅ«)動程åºéƒ½éžå¸¸ç›¸è¿‘,所以把ç£ç›¤ã€ç¶²(wÇŽng)絡或一系列的端å£é©…(qÅ«)動程åºå¾žä¸€å€‹è¨å‚™ç§»æ¤åˆ°å¦ä¸€å€‹è¨å‚™ä¸Šé€šå¸¸å¹¶ä¸é›£ã€‚我發(fÄ)ç¾(xià n)許多驅(qÅ«)動程åºéƒ½å¯«å¾—很好,很容易ç†è§£ï¼Œä½†ä½ é‚„æ˜¯è¦æº–備一本關于內(nèi)æ ¸çµ(jié)æ§‹(gòu)的書在手é 。 便ˆ‘的經(jÄ«ng)驗,Linux至少和我用éŽçš„è‘—å的商æ¥(yè)性æ“作系統(tÇ’ng)一樣穩(wÄ›n)定。總之,這些æ“作系統(tÇ’ng)å’ŒLinuxçš„å•題在于å°å·¥ä½œéŽç¨‹å¾®ç§’之處的誤解,而ä¸åœ¨äºŽä»£ç¢¼çš„難度或基本的è¨è¨ˆéŒ¯èª¤ã€‚任何æ“作系統(tÇ’ng)都有很多çˆè«–ä¸ä¼‘的故事,這里ä¸éœ€è¦é‡å¾©ã€‚Linux的優(yÅu)勢在于æºä»£ç¢¼æ˜¯å…¬é–‹ã€æ³¨é‡‹æ¸…æ™°å’Œæ–‡æª”é½Šå…¨çš„ã€‚é€™æ¨£ï¼Œä½ å°±å¯ä»¥æŽ§åˆ¶å’Œè™•ç†æ‰€å‡ºç¾(xià n)的任何å•題。  
伴隨著基本內(nèi)æ ¸å’Œé©…(qÅ«)動程åºï¼Œé‚„有其它å•題。如果系統(tÇ’ng)有一個硬盤,那么文件系統(tÇ’ng)çš„å¯é 性就æˆå•題。我們有用ç£ç›¤é€²è¡ŒLinux系統(tÇ’ng)è¨è¨ˆè¶…éŽå…©å¹´çš„ç¶“(jÄ«ng)驗。這些系統(tÇ’ng)幾乎從未æ£å¸¸é—œé–‰éŽã€‚é›»æºéš¨æ™‚都å¯èƒ½è¢«ä¸æ–·ã€‚感覺éžå¸¸å¥½ï¼Œä½¿ç”¨çš„æ˜¯æ¨™æº–(EXT2)文件系統(tÇ’ng)。標準Linuxåˆå§‹åŒ–腳本é‹è¡Œfsck程åºï¼Œå®ƒåœ¨æª¢æŸ¥å’Œæ¸…除ä¸ç©©(wÄ›n)定的ino
desæ–¹é¢éžå¸¸æœ‰æ•ˆã€‚將默èªçš„æ¯éš”30ç§’é‹è¡Œæ›´æ–°ç¨‹åºæ”¹ç‚ºæ¯éš”5或10ç§’é‹è¡Œæ˜¯æ¯”較明智的。這樣縮çŸäº†æ•¸(shù)據(jù)在進入ç£ç›¤ä¹‹å‰ï¼Œå¾…在高速緩沖å˜å„²å™¨å…§(nèi)的時間,é™ä½Žäº†ä¸Ÿå¤±æ•¸(shù)據(jù)çš„å¯èƒ½æ€§ã€‚    
如何發(fÄ)展  
嵌入å¼Linuxçš„ç¢ºæœ‰å®ƒçš„ç¼ºé™·ã€‚æ¯”å¦‚ï¼Œé›–ç„¶å®ƒå¹¶ä¸æ¯”æŸäº›å•†æ¥(yè)ç«¶çˆå°æ‰‹å·®å¤šå°‘,但它的確是個貪婪的å˜å„²å™¨ã€‚這å¯ä»¥é€šéŽæ¸›å°‘一些ä¸å¿…è¦çš„功能來彌補,但這å¯èƒ½æœƒèŠ±å¾ˆé•·çš„æ™‚é–“ï¼Œè€Œä¸”å¦‚æžœä¸ä»”細的話,還å¯èƒ½å¸¶ä¾†å¾ˆå¤§çš„困擾。  
許多Linux的應用程åºéƒ½è¦ç”¨åˆ°è™›æ“¬å…§(nèi)å˜ï¼Œåœ¨è¨±å¤šåµŒå…¥å¼ç³»çµ±(tÇ’ng)ä¸ï¼Œæ˜¯æ²’有價值的,所以ä¸è¦ä»¥ç‚ºä¸€å€‹æ²’有ç£ç›¤çš„嵌入å¼ç³»çµ±(tÇ’ng)å¯ä»¥é‹è¡Œä»»ä½•Linux應用程åºã€‚  
å…§(nèi)æ ¸èª¿(dià o)è©¦å·¥å…·éƒ½ä¸æ€Žä¹ˆå¥½ï¼Œç‰¹åˆ¥æ˜¯åœ¨è¼ƒåº•層的。kgdbå¯ä»¥ä½¿éŒ¯èª¤å®šä½éžå¸¸å®¹æ˜“ï¼Œä½ åªè¦é‡æ–°å•Ÿå‹•。ä¸å¹¸çš„æ˜¯ï¼Œæ‰“å°èªžå¥æ›´éº»ç…©ã€‚
ç„¶è€Œï¼Œå°æˆ‘來說最糟糕的是心ç†ä¸Šçš„å•題。Linuxéžå¸¸çš„éˆæ´»ã€‚嵌入å¼ç³»çµ±(tÇ’ng)總的來說å»ä¸éˆæ´»ï¼›è€Œä¸”它們完全是為最有效實ç¾(xià n)é å®šåŠŸèƒ½è€Œåš´æ ¼è¨è¨ˆçš„。ç¾(xià n)åœ¨çš„è¶¨å‹¢æ˜¯ä¿æŒéˆæ´»æ€§ã€ä¿æŒç¸½é«”目標功能ã€ç›¡é‡å°‘åšä¿®æ”¹ã€‚這個目標是崇高的,但是,所付出的代價將是é‡å°å…·é«”的工作åšå‡ºå·¨å¤§çš„調(dià o)æ•´ã€‚ä¿æŒéˆæ´»æ€§å°‡å°Žè‡´é¡å¤–的工作,帶著é¡å¤–的軟件包,而且有時還è¦é™ä½Žæ€§èƒ½ã€‚一個å復出ç¾(xià n)的例å就是é…置。考慮在一個網(wÇŽng)絡界é¢é…ç½®IP地å€ï¼Œé€™é€šå¸¸æ˜¯é€šéŽå¾žå•Ÿå‹•script上é‹è¡Œifconfig程åºä¾†å®Œæˆçš„。這是一個28K的程åºï¼Œå¾žé…置文件上調(dià o)用數(shù)據(jù),å¯ä»¥ç”¨å¹¾è¡Œä»£ç¢¼ä»£æ›¿ï¼Œåˆå§‹åŒ–åˆé©çš„çµ(jié)æ§‹(gòu)。然而,å³ä½¿é€™éžå¸¸åˆç†ï¼Œä½†å®ƒä»ç„¶æœ‰å®³ï¼Œå› 為它用一種從未使用éŽçš„æ–¹æ³•æ‰æ›²äº†è»Ÿä»¶ã€‚
Linux在嵌入å¼ç³»çµ±(tÇ’ng)ä¸çš„æ‡‰ç”¨æ˜¯å¯è¡Œçš„。它有用ã€å¯é 。它的發(fÄ)å±•æˆæœ¬å’Œæ›¿ä»£è€…一致。
標簽:
ä¸åœ‹å‚³å‹•ç¶²(wÇŽng)版權(quán)與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來æºï¼šä¸åœ‹å‚³å‹•ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(wÇŽng)(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉(zhuÇŽn)載請與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個人轉(zhuÇŽn)è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Š(quán)法律責任。