摘è¦ï¼šä½¿ç”¨Linux進(jìn)行嵌入å¼ç”¢(chÇŽn)å“開發(fÄ)有一個很大的優(yÅu)勢,就是開發(fÄ)資æºè±å¯Œï¼Œä¸”æˆæœ¬ä½Žå»‰ï¼›ä½†æ˜¯ï¼ŒæŠ€è¡“(shù)路線復(fù)雜多樣,專æ¥(yè)人æ‰ç›¸å°åŒ±ä¹æ˜¯Linux嵌入å¼ç³»çµ±(tÇ’ng)開發(fÄ)é¢è‡¨çš„一個難題。本文從實際應(yÄ«ng)ç”¨çš„è§’åº¦ï¼ŒæŽ¢è¨Žå’Œç ”ç©¶Linux嵌入å¼ç³»çµ±(tÇ’ng)開發(fÄ)ä¸çš„平臺é¸åž‹å•題,以期望å°å„ä½Linux開發(fÄ)ç ”ç©¶è€…æœ‰äº›è¨±è£¨ç›Šã€‚
1 嵌入å¼ç³»çµ±(tÇ’ng)與Linux
按照電氣工程師å”(xié)會的一個定義:嵌入å¼ç³»çµ±(tÇ’ng)是用來控制或監(jiÄn)視機(jÄ«)器ã€è£ç½®æˆ–å·¥å» ç‰çš„大è¦(guÄ«)模系統(tÇ’ng)çš„è¨(shè)備。具體說來,它是電腦軟件和硬件的綜åˆé«”;是以應(yÄ«ng)用為ä¸å¿ƒï¼Œä»¥è¨ˆç®—機(jÄ«)技術(shù)為基礎(chÇ”),軟硬件å¯è£æ¸›ï¼Œå¾žè€Œèƒ½å¤ 驿‡‰(yÄ«ng)實際應(yÄ«ng)用ä¸å°åŠŸèƒ½ã€å¯é æ€§ã€æˆæœ¬ã€é«”ç©ã€åŠŸè€—ç‰åš´(yán)æ ¼è¦æ±‚的專用計算機(jÄ«)系統(tÇ’ng)。一般來說,嵌入å¼ç³»çµ±(tÇ’ng)ä¸èƒ½ä½¿ç”¨é€šç”¨åž‹è¨ˆç®—機(jÄ«),而且é‹è¡Œçš„æ˜¯å›ºåŒ–的軟件,終端用戶很難或者ä¸å¯èƒ½æ”¹è®Šå›ºä»¶ã€‚而Linux也早已æˆç‚ºIT界家喻戶曉的一個åå—。概括說來,將Linux應(yÄ«ng)用于嵌入å¼ç³»çµ±(tÇ’ng)的開發(fÄ)有如下一些優(yÅu)點:
â‘ Linux自身具備一整套工具éˆï¼Œå®¹æ˜“自行建立嵌入å¼ç³»çµ±(tÇ’ng)的開發(fÄ)ç’°(huán)境和交å‰é‹è¡Œç’°(huán)境,并且å¯ä»¥è·¨è¶Šåœ¨åµŒå…¥å¼ç³»çµ±(tÇ’ng)開發(fÄ)ä¸ä»¿çœŸå·¥å…·ï¼ˆICE)的障礙。
â‘¡ å…§(nèi)æ ¸çš„å®Œå…¨é–‹æ”¾ï¼Œä½¿å¾—å¯ä»¥è‡ªå·±è¨(shè)計和開發(fÄ)出真æ£çš„硬實時系統(tÇ’ng)ï¼›å°äºŽè»Ÿå¯¦æ™‚系統(tÇ’ng),在Linuxä¸ä¹Ÿå®¹æ˜“得到實ç¾(xià n)。
â‘¢ å¼·(qiáng)大的網(wÇŽng)絡(luò)支æŒï¼Œä½¿å¾—å¯ä»¥åˆ©ç”¨Linux的網(wÇŽng)絡(luò)å”(xié)è°æ£§å°‡å…¶é–‹ç™¼(fÄ)æˆç‚ºåµŒå…¥å¼çš„TCP/IPç¶²(wÇŽng)絡(luò)å”(xié)è°æ£§ã€‚
2 嵌入å¼ç³»çµ±(tÇ’ng)è¨(shè)計的éŽç¨‹
按照嵌入å¼ç³»çµ±(tÇ’ng)的工程è¨(shè)計方法,嵌入å¼ç³»çµ±(tÇ’ng)çš„è¨(shè)計å¯ä»¥åˆ†æˆä¸‰å€‹éšŽæ®µï¼šåˆ†æžã€è¨(shè)計和實ç¾(xià n)。分æžéšŽæ®µæ˜¯ç¢ºå®šè¦è§£æ±ºçš„å•題åŠéœ€è¦å®Œæˆçš„目標(biÄo),也常常被稱為“需求階段â€ï¼›è¨(shè)è¨ˆéšŽæ®µä¸»è¦æ˜¯è§£æ±ºå¦‚ä½•åœ¨çµ¦å®šçš„ç´„æŸæ¢ä»¶ä¸‹å®Œæˆç”¨æˆ¶çš„è¦æ±‚;實ç¾(xià n)éšŽæ®µä¸»è¦æ˜¯è§£æ±ºå¦‚ä½•åœ¨æ‰€é¸æ“‡çš„硬件和軟件的基礎(chÇ”)上進(jìn)行整個軟ã€ç¡¬ä»¶ç³»çµ±(tÇ’ng)çš„å”(xié)調(dià o)實ç¾(xià n)。在分æžéšŽæ®µçµ(jié)æŸåŽï¼Œé€šå¸¸é–‹ç™¼(fÄ)者é¢è‡¨çš„一個棘手的å•é¡Œå°±æ˜¯ç¡¬ä»¶å¹³è‡ºå’Œè»Ÿä»¶å¹³è‡ºçš„é¸æ“‡ï¼Œå› 為它的好壞直接影響著實ç¾(xià n)階段的任務(wù)完æˆã€‚
é€šå¸¸ç¡¬ä»¶å’Œè»Ÿä»¶çš„é¸æ“‡åŒ…括:處ç†å™¨ã€ç¡¬ä»¶éƒ¨ä»¶ã€æ“作系統(tÇ’ng)ã€ç·¨ç¨‹èªžè¨€ã€è»Ÿä»¶é–‹ç™¼(fÄ)工具ã€ç¡¬ä»¶èª¿(dià o)試工具ã€è»Ÿä»¶çµ„ä»¶ç‰ã€‚
åœ¨ä¸Šè¿°é¸æ“‡ä¸ï¼Œé€šå¸¸ï¼Œè™•ç†å™¨æ˜¯æœ€é‡è¦çš„ï¼ŒåŒæ™‚æ“作系統(tÇ’ng)和編程語言也是éžå¸¸é—œ(guÄn)éµçš„。處ç†å™¨çš„鏿“‡å¾€å¾€åŒæ™‚會é™åˆ¶æ“作系統(tÇ’ng)çš„é¸æ“‡ï¼Œæ“作系統(tÇ’ng)çš„é¸æ“‡åˆæœƒé™åˆ¶é–‹ç™¼(fÄ)å·¥å…·çš„é¸æ“‡ã€‚
3 ç¡¬ä»¶å¹³è‡ºçš„é¸æ“‡
3.1 處ç†å™¨çš„鏿“‡
嵌入å¼ç³»çµ±(tÇ’ng)çš„æ ¸å¿ƒéƒ¨ä»¶æ˜¯å„種類型的嵌入å¼è™•ç†å™¨ã€‚據(jù)ä¸å®Œå…¨çµ±(tÇ’ng)計,目å‰å…¨ä¸–界嵌入å¼è™•ç†å™¨çš„å“種總é‡å·²ç¶“(jÄ«ng)è¶…éŽ1000多種,æµè¡Œé«”ç³»çµ(jié)æ§‹(gòu)有30幾個系列。但與全çƒPCå¸‚å ´ä¸åŒçš„æ˜¯ï¼Œæ²’有一種微處ç†å™¨å’Œå¾®è™•ç†å™¨å…¬å¸å¯ä»¥ä¸»å°Ž(dÇŽo)嵌入å¼ç³»çµ±(tÇ’ng),僅以32ä½çš„CPU而言,就有100種以上嵌入å¼å¾®è™•ç†å™¨ã€‚由于嵌入å¼ç³»çµ±(tÇ’ng)è¨(shè)è¨ˆçš„å·®ç•°æ€§æ¥µå¤§ï¼Œå› æ¤é¸æ“‡æ˜¯å¤šæ¨£åŒ–的。
調(dià o)查上市的CPU供應(yÄ«ng)商,有些公å¸å¦‚Motorolaã€Intelã€AMDå¾ˆæœ‰åæ°£ï¼Œè€Œæœ‰ä¸€äº›å°çš„å…¬å¸ï¼Œå¦‚QED(Santa Clara.CAï¼‰é›–ç„¶åæ°£å¾ˆå°ï¼Œä½†ä¹Ÿç”Ÿç”¢(chÇŽn)很優(yÅu)秀的微處ç†å™¨ã€‚å¦å¤–,有一些公å¸ï¼Œå¦‚ARMã€MIPSç‰ï¼Œåªè¨(shè)計但并ä¸ç”Ÿç”¢(chÇŽn)CPU,他們把生產(chÇŽn)權(quán)授予世界å„地的åŠå°Ž(dÇŽo)é«”åˆ¶é€ å•†ã€‚ARM是近年來在嵌入å¼ç³»çµ±(tÇ’ng)有影響力的微處ç†å™¨åˆ¶é€ 商,ARMçš„è¨(shè)計éžå¸¸é©ç”¨äºŽå°çš„é›»æºä¾›é›»ç³»çµ±(tÇ’ng)。Apple在Newton手æŒè¨ˆç®—機(jÄ«)ä¸ä½¿ç”¨ARM,å¦å¤–有幾款數(shù)å—無線電話也在使用ARM。
è¨(shè)è¨ˆè€…åœ¨é¸æ“‡è™•ç†å™¨æ™‚è¦è€ƒæ…®çš„主è¦å› ç´ æœ‰ï¼š
â‘ è™•ç†æ€§èƒ½ã€‚一個處ç†å™¨çš„æ€§èƒ½å–決于多個方é¢çš„å› ç´ ï¼Œå¦‚æ™‚é˜é »çŽ‡ï¼Œå…§(nèi)部寄å˜å™¨çš„大å°ï¼ŒæŒ‡ä»¤æ˜¯å¦å°ç‰è™•ç†æ‰€æœ‰çš„寄å˜å™¨ç‰ã€‚å°äºŽè¨±å¤šéœ€ç”¨è™•ç†å™¨çš„嵌入å¼ç³»çµ±(tÇ’ng)è¨(shè)計來說,目標(biÄo)䏿˜¯åœ¨äºŽæŒ‘é¸é€Ÿåº¦æœ€å¿«çš„處ç†å™¨ï¼Œè€Œæ˜¯åœ¨äºŽé¸å–èƒ½å¤ å®Œæˆä½œæ¥(yè)的處ç†å™¨å’ŒI/Oå系統(tÇ’ng)。如果是é¢å‘高性能的應(yÄ«ng)用è¨(shè)計,那么建è°è€ƒæ…®æŸäº›æ–°çš„處ç†å™¨ï¼Œå…¶åƒ¹æ ¼ç›¸å°ä½Žå»‰ï¼Œå¦‚IBMå’ŒMotorola Power PC。
â‘¡ 技術(shù)指標(biÄo)。當(dÄng)å‰ï¼Œè¨±å¤šåµŒå…¥å¼è™•ç†å™¨éƒ½é›†æˆäº†å¤–åœè¨(shè)備的功能,減少了芯片的數(shù)é‡ï¼Œé™ä½Žäº†æ•´å€‹ç³»çµ±(tÇ’ng)的開發(fÄ)費用。開發(fÄ)人員首先考慮的是,系統(tÇ’ng)æ‰€è¦æ±‚的一些硬件能å¦ç„¡éœ€éŽå¤šçš„è† åˆé‚輯(GL,Glue Logic)就å¯ä»¥é€£æŽ¥åˆ°è™•ç†å™¨ä¸Šã€‚其次是考慮該處ç†å™¨çš„一些支æŒèŠ¯ç‰‡ï¼Œå¦‚DMA控制器,內(nèi)å˜ç®¡ç†å™¨ï¼Œä¸æ–·æŽ§åˆ¶å™¨ï¼Œä¸²è¡Œè¨(shè)å‚™ã€æ™‚é˜ç‰çš„é…套。
â‘¢ 功耗。嵌入å¼å¾®è™•ç†å™¨æœ€å¤§å¹¶ä¸”å¢žé•·æœ€å¿«çš„å¸‚å ´æ˜¯æ‰‹æŒè¨(shè)å‚™ã€é›»å記事本ã€PDAã€æ‰‹æ©Ÿ(jÄ«)ã€GPSå°Ž(dÇŽo)èˆªå™¨ã€æ™ºèƒ½å®¶é›»ç‰æ¶ˆè²»é¡žé›»å產(chÇŽn)å“。這些產(chÇŽn)å“ä¸é¸è³¼çš„微處ç†å™¨ï¼Œå…¸åž‹çš„ç‰¹é»žæ˜¯è¦æ±‚高性能ã€ä½ŽåŠŸè€—ã€‚è¨±å¤šCPU生產(chÇŽn)å» å®¶å·²ç¶“(jÄ«ng)進(jìn)å…¥äº†é€™å€‹é ˜(lÇng)域。今天,用戶å¯ä»¥è²·åˆ°ä¸€é¡†åµŒå…¥å¼çš„微處ç†å™¨ï¼Œå…¶é€Ÿåº¦åƒç†è¨˜æœ¬ä¸çš„Pentiumä¸€æ¨£å¿«ï¼›è€Œå®ƒåƒ…ä½¿ç”¨æ™®é€šé›»æ± ä¾›é›»å³å¯ï¼Œå¹¶ä¸”åƒ¹æ ¼å¾ˆä¾¿å®œã€‚å¦‚æžœç”¨äºŽå·¥æ¥(yè)控制,則å°é€™æ–¹é¢çš„考慮較弱。
â‘£ 軟件支æŒå·¥å…·ã€‚僅有一個處ç†å™¨ï¼Œæ²’有較好的軟件開發(fÄ)工具的支æŒä¹Ÿæ˜¯ä¸è¡Œçš„ï¼Œå› æ¤é¸æ“‡åˆé©çš„軟件開發(fÄ)工具å°ç³»çµ±(tÇ’ng)的實ç¾(xià n)會起到很好的作用。
⑤ 是å¦å…§(nèi)置調(dià o)試工具。處ç†å™¨å¦‚果內(nèi)置調(dià o)試工具å¯ä»¥å¤§å¤§ç¸®å°èª¿(dià o)試周期,é™ä½Žèª¿(dià o)試的難度。
â‘¥ 供應(yÄ«ng)å•†æ˜¯å¦æä¾›è©•ä¼°æ¿ã€‚許多處ç†å™¨ä¾›æ‡‰(yÄ«ng)商å¯ä»¥æä¾›è©•ä¼°æ¿ä¾†é©—è‰ç†è«–æ˜¯å¦æ£ç¢ºï¼Œæ±ºç–是å¦å¾—ç•¶(dÄng)。
3.2 ç¡¬ä»¶éƒ¨ä»¶é¸æ“‡çš„å…¶å®ƒå› ç´
①生產(chÇŽn)è¦(guÄ«)模。打算åš1套?多套?還是è¦(guÄ«)模生產(chÇŽn)?如果生產(chÇŽn)è¦(guÄ«)模比較大,å¯ä»¥è‡ªå·±è¨(shè)計和制備硬件,這樣å¯ä»¥é™ä½Žæˆæœ¬ã€‚å之,最好從第三方購買主æ¿å’ŒI/Oæ¿å¡ã€‚
â‘¡ 開發(fÄ)çš„å¸‚å ´ç›®æ¨™(biÄo)。如果想使產(chÇŽn)å“盡快發(fÄ)售,以ç²å¾—ç«¶çˆåŠ›ï¼Œæ¤æ™‚è¦ç›¡å¯èƒ½è²·æˆç†Ÿçš„硬件;å之,å¯ä»¥è‡ªå·±è¨(shè)計硬件,é™ä½Žæˆæœ¬ã€‚
â‘¢ 軟件å°ç¡¬ä»¶çš„ä¾è³´æ€§ã€‚軟件是å¦å¯ä»¥åœ¨ç¡¬ä»¶æ²’有到ä½çš„æ™‚候并行è¨(shè)計或先行開發(fÄ)。
â‘£ åªè¦å¯èƒ½ï¼Œç›¡é‡é¸æ“‡ä½¿ç”¨æ™®é€šçš„硬件。在 CPU åŠæž¶æ§‹(gòu)çš„é¸æ“‡ä¸Šï¼Œä¸€å€‹åŽŸå‰‡æ˜¯ï¼šåªè¦æœ‰å¯æ›¿ä»£çš„æ–¹æ¡ˆï¼Œç›¡é‡ä¸è¦é¸æ“‡ Linux å°šä¸æ”¯æŒçš„硬件平臺。
4 è»Ÿä»¶å¹³è‡ºçš„é¸æ“‡
[img=549,330]http://www.e-works.net.cn/ewk2004/fileupload/images/127427098522343750.gif[/img]
圖1所示的嵌入å¼è»Ÿä»¶çš„開發(fÄ)æµç¨‹ï¼Œä¸»è¦æ¶‰åŠåˆ°ä»£ç¢¼ç·¨ç¨‹ã€äº¤å‰ç·¨è¯ã€äº¤å‰é€£æŽ¥ã€ä¸‹è¼‰åˆ°ç›®æ¨™(biÄo)æ¿å’Œèª¿(dià o)試ç‰å¹¾å€‹æ¥é©Ÿï¼Œå› æ¤è»Ÿä»¶å¹³è‡ºçš„鏿“‡ä¹Ÿæ¶‰åŠåˆ°ä»¥ä¸‹å¹¾å€‹æ–¹é¢ã€‚
4.1 æ“作系統(tÇ’ng)çš„é¸æ“‡
(1)æ“作系統(tÇ’ng)鏿“‡æ‡‰(yÄ«ng)è€ƒæ…®çš„å› ç´
硬件方案確定之åŽï¼Œæ“作系統(tÇ’ng)çš„é¸æ“‡å°±ç›¸å°è¼•æ¾äº†ã€‚硬件的ä¸åŒï¼Œæœƒå½±éŸ¿æ“作系統(tÇ’ng)çš„é¸æ“‡ã€‚低端無MMU(Memory Management Unit,å˜å„²å™¨ç®¡ç†å–®å…ƒï¼‰çš„CPU,è¦ä½¿ç”¨uClinux æ“作系統(tÇ’ng);而相å°é«˜ç«¯çš„硬件,則å¯ä»¥ç”¨æ™®é€šçš„åµŒå…¥å¼ Linux æ“作系統(tÇ’ng)。uClinux 和普通的 Linux 有å„自的優(yÅu)勢和缺點。å¯ç”¨äºŽåµŒå…¥å¼ç³»çµ±(tÇ’ng)軟件開發(fÄ)çš„æ“作系統(tÇ’ng)很多,但關(guÄn)鵿˜¯å¦‚何鏿“‡ä¸€å€‹é©åˆé–‹ç™¼(fÄ)é …ç›®çš„æ“作系統(tÇ’ng)。經(jÄ«ng)éŽå¤šå¹´çš„開發(fÄ)實è¸ï¼Œç†è€…èª(rèn)為應(yÄ«ng)該從以下幾點進(jìn)行考慮:
â‘ æ“作系統(tÇ’ng)æä¾›çš„開發(fÄ)工具。有些實時æ“作系統(tÇ’ng)(RTOSï¼‰åªæ”¯æŒè©²ç³»çµ±(tÇ’ng)供應(yÄ«ng)商的開發(fÄ)å·¥å…·ï¼Œå› æ¤ï¼Œé‚„å¿…é ˆå‘æ“作系統(tÇ’ng)供應(yÄ«ng)商ç²å–ç·¨è¯å™¨ã€èª¿(dià o)試器ç‰ï¼›è€Œæœ‰äº›æ“作系統(tÇ’ng)使用廣泛,且有第三方工具å¯ç”¨ï¼Œå› æ¤ï¼Œé¸æ“‡çš„余地比較大。
â‘¡ æ“作系統(tÇ’ng)å‘硬件接å£ç§»æ¤çš„難度。æ“作系統(tÇ’ng)åˆ°ç¡¬ä»¶çš„ç§»æ¤æ˜¯ä¸€å€‹é‡è¦çš„å•題,是關(guÄn)系到整個系統(tÇ’ng)èƒ½å¦æŒ‰æœŸå®Œå·¥çš„一個關(guÄn)éµå› ç´ ã€‚å› æ¤,è¦é¸æ“‡é‚£äº›å¯ç§»æ¤æ€§ç¨‹åº¦é«˜çš„æ“ä½œç³»çµ±(tÇ’ng),é¿å…æ“作系統(tÇ’ng)難以å‘硬件移æ¤è€Œå¸¶ä¾†çš„ç¨®ç¨®å›°é›£ï¼ŒåŠ é€Ÿç³»çµ±(tÇ’ng)的開發(fÄ)進(jìn)度。
â‘¢ æ“作系統(tÇ’ng)的內(nèi)å˜è¦æ±‚。å‡è¡¡è€ƒæ…®æ˜¯å¦éœ€è¦é¡å¤–花錢去購買RAM或EEPROMä¾†è¿Žåˆæ“作系統(tÇ’ng)å°å…§(nèi)å˜çš„è¼ƒå¤§è¦æ±‚。
â‘£ 開發(fÄ)人員是å¦ç†Ÿæ‚‰æ¤æ“作系統(tÇ’ng)åŠå…¶æä¾›çš„API。
⑤ æ“作系統(tÇ’ng)æ˜¯å¦æä¾›ç¡¬ä»¶çš„é©…(qÅ«)動程åºï¼Œå¦‚ç¶²(wÇŽng)å¡ç‰ã€‚
â‘¥ æ“作系統(tÇ’ng)çš„å¯å‰ªè£æ€§ã€‚有些æ“作系統(tÇ’ng)具有較強(qiáng)çš„å¯å‰ªè£æ€§ï¼Œå¦‚嵌入å¼Linuxã€Tornado/VxWorksç‰ç‰ã€‚
⑦ æ“作系統(tÇ’ng)的實時性能。
(2)幾類嵌入å¼Linux系統(tÇ’ng)的比較
嵌入å¼Linux系統(tÇ’ng)æ–¹é¢çš„產(chÇŽn)å“主è¦åˆ†ç‚ºä¸‰é¡žï¼š
第一類是專門為Linuxçš„åµŒå…¥å¼æ‡‰(yÄ«ng)用而åšçš„。如何讓Linuxæ›´å°ã€æ›´å®¹æ˜“嵌入到體ç©è¦æ±‚å’ŒåŠŸèƒ½ã€æ€§èƒ½è¦æ±‚更高的硬件ä¸åŽ»ï¼Œæ˜¯ä»–å€‘çš„ç”¢(chÇŽn)å“開發(fÄ)æ–¹å‘,如MontaVistaçš„MontaVista Linuxç‰ã€‚第二類是專門為Linux的實時特性è¨(shè)計的產(chÇŽn)å“。將Linux開發(fÄ)æˆå¯¦æ™‚系統(tÇ’ng)尤其是硬實時系統(tÇ’ng),應(yÄ«ng)用于一些關(guÄn)éµçš„æŽ§åˆ¶å ´åˆï¼ˆä¸åƒ…僅是信æ¯é›»å™¨ï¼‰ã€‚如,F(xià n)smlabså…¬å¸é–‹ç™¼(fÄ)出來的RT-Linux產(chÇŽn)å“已經(jÄ«ng)用在工æ¥(yè)控制的很多方é¢ï¼›è‘¡è„牙的Coimbra大å¸(xué)已經(jÄ«ng)利用RT-Linux實ç¾(xià n)了化工生產(chÇŽn)æŽ§åˆ¶å» é‡Œç”¨ä¾†æŽ§åˆ¶åæ‡‰(yÄ«ng)å’Œç¨‹åºæŽ§åˆ¶çš„ç³»çµ±(tÇ’ng)。第三類的產(chÇŽn)哿˜¯å°‡å¯¦æ™‚æ€§å’ŒåµŒå…¥å¼æ–¹æ¡ˆçµ(jié)åˆèµ·ä¾†çš„æ–¹æ¡ˆã€‚很多公å¸éƒ½é€™ä¹ˆåšï¼Œå¹¶ä¸”æä¾›é›†æˆåŒ–的開發(fÄ)方案,如Lineoã€TimeSysç‰ç‰ã€‚
å› æ¤é¸æ“‡æ“作系統(tÇ’ng)æ™‚ï¼Œè¦æ ¹æ“š(jù)自己的嵌入å¼è¦æ±‚å’Œå¯¦æ™‚æ€§è¦æ±‚ï¼Œé¸æ“‡é©åˆè‡ªå·±çš„嵌入å¼Linuxï¼›åŒæ™‚ï¼Œå’Œé¸æ“‡ç¡¬ä»¶çš„原則一樣,如果å¯èƒ½ï¼Œç›¡é‡é¸æ“‡ä½¿ç”¨æ™®é€šçš„åµŒå…¥å¼ Linux 系統(tÇ’ng)。
4.2 ç·¨ç¨‹èªžè¨€çš„é¸æ“‡
ç·¨ç¨‹èªžè¨€çš„é¸æ“‡ä¸»è¦è€ƒæ…®ä»¥ä¸‹å› ç´ ï¼š
①通用性。ä¸åŒç¨®é¡žçš„微處ç†å™¨éƒ½æœ‰è‡ªå·±å°ˆç”¨çš„匯編語言。這就為系統(tÇ’ng)開發(fÄ)者è¨(shè)置了一個巨大的障礙,使得系統(tÇ’ng)ç·¨ç¨‹æ›´åŠ å›°é›£ï¼Œè»Ÿä»¶é‡ç”¨ç„¡æ³•實ç¾(xià n)。而高級語言一般和具體機(jÄ«)器的硬件çµ(jié)æ§‹(gòu)è¯(lián)系較少,多數(shù)微處ç†å™¨éƒ½æœ‰è‰¯å¥½çš„æ”¯æŒï¼Œé€šç”¨æ€§è¼ƒå¥½ã€‚
â‘¡ å¯ç§»æ¤æ€§ç¨‹åº¦ã€‚匯編語言和具體的微處ç†å™¨å¯†åˆ‡ç›¸é—œ(guÄn),為æŸå€‹å¾®è™•ç†å™¨è¨(shè)計的程åºä¸èƒ½ç›´æŽ¥ç§»æ¤åˆ°å¦ä¸€å€‹ä¸åŒç¨®é¡žçš„微處ç†å™¨ä¸Šä½¿ç”¨ï¼Œç§»æ¤æ€§å·®ï¼›è€Œé«˜ç´šèªžè¨€å°æ‰€æœ‰å¾®è™•ç†å™¨éƒ½æ˜¯é€šç”¨çš„,程åºå¯ä»¥åœ¨ä¸åŒçš„微處ç†å™¨ä¸Šé‹è¡Œï¼Œå¯ç§»æ¤æ€§è¼ƒå¥½ã€‚
â‘¢ 執(zhÃ)行效率。一般來說,越是高級的語言,其編è¯å™¨å’Œé–‹éŠ·å°±è¶Šå¤§ï¼Œæ‡‰(yÄ«ng)用程åºä¹Ÿå°±è¶Šå¤§ã€è¶Šæ…¢ï¼›ä½†å–®ç´”ä¾é 低級語言,如匯編語言來進(jìn)行應(yÄ«ng)用程åºçš„開發(fÄ),帶來的å•題是編程復(fù)雜ã€é–‹ç™¼(fÄ)å‘¨æœŸé•·ã€‚å› æ¤ï¼Œå˜åœ¨ä¸€å€‹é–‹ç™¼(fÄ)時間和é‹è¡Œæ€§èƒ½é–“的權(quán)è¡¡å•題。
â‘£ å¯ç¶è·(hù)性。低級語言如匯編語言,å¯ç¶è·(hù)性ä¸é«˜ã€‚高級語言程åºå¾€å¾€æ˜¯æ¨¡å¡ŠåŒ–è¨(shè)計,å„å€‹æ¨¡å¡Šä¹‹é–“çš„æŽ¥å£æ˜¯å›ºå®šçš„。當(dÄng)系統(tÇ’ng)出ç¾(xià n)å•題時,å¯ä»¥å¾ˆå¿«åœ°å°‡å•題定ä½åˆ°æŸå€‹æ¨¡å¡Šå…§(nèi),并盡快得到解決。å¦å¤–,模塊化è¨(shè)計也便于系統(tÇ’ng)功能的擴(kuò)å……å’Œå‡ç´šã€‚
幾種開發(fÄ)語言的比較:
在嵌入å¼ç³»çµ±(tÇ’ng)開發(fÄ)éŽç¨‹ä¸ä½¿ç”¨çš„語言種類很多,比較廣泛應(yÄ«ng)用的高級語言有:Adaã€C/C++ã€Modula-2å’ŒJavaç‰ã€‚Ada語言定義嚴(yán)æ ¼ï¼Œæ˜“è®€æ˜“æ‡‚ï¼Œæœ‰è¼ƒè±å¯Œçš„åº«ç¨‹åºæ”¯æŒï¼Œç›®å‰åœ¨åœ‹é˜²ã€èˆªç©ºã€èˆªå¤©ç‰ç›¸é—œ(guÄn)é ˜(lÇng)域應(yÄ«ng)用比較廣泛,未來ä»å°‡åœ¨é€™äº›é ˜(lÇng)åŸŸå æœ‰é‡è¦åœ°ä½ã€‚Cèªžè¨€å…·æœ‰å»£æ³›çš„åº«ç¨‹åºæ”¯æŒï¼Œç›®å‰åœ¨åµŒå…¥å¼ç³»çµ±(tÇ’ng)䏿˜¯æ‡‰(yÄ«ng)用最廣泛的編程語言,在將來很長一段時間內(nèi)ä»å°‡åœ¨åµŒå…¥å¼ç³»çµ±(tÇ’ng)應(yÄ«ng)ç”¨é ˜(lÇng)域å é‡è¦åœ°ä½ã€‚C++是一種é¢å‘?qÅ«)ο蟮木幊陶Z言,目å‰åœ¨åµŒå…¥å¼ç³»çµ±(tÇ’ng)è¨(shè)計ä¸ä¹Ÿå¾—到了廣泛的應(yÄ«ng)用,如GNU C++。Visual C++,是一種集æˆé–‹ç™¼(fÄ)ç’°(huán)境,支æŒå¯è¦–化編程,廣泛應(yÄ«ng)用于GUI程åºé–‹ç™¼(fÄ)。但C與C++相比,C++的目標(biÄo)代碼往往比較é¾å¤§å’Œå¾©(fù)雜,在嵌入å¼ç³»çµ±(tÇ’ng)應(yÄ«ng)ç”¨ä¸æ‡‰(yÄ«ng)å……åˆ†è€ƒæ…®é€™ä¸€å› ç´ ã€‚Modula-2定義清晰,支æŒè±å¯Œï¼Œå…·æœ‰è¼ƒå¥½çš„æ¨¡å¡ŠåŒ–çµ(jié)æ§‹(gòu),在教å¸(xué)ç§‘ç ”æ–¹é¢æœ‰è¼ƒå»£æ³›çš„æ‡‰(yÄ«ng)用。雖然該語言的開發(fÄ)應(yÄ«ng)ç”¨ä¸€ç›´æ¯”è¼ƒå¹³ç·©ï¼Œä½†è¿‘å…©å¹´åœ¨ææ´²æœ‰æ‰€å¾©(fù)蘇。Java語言相å°å¹´è¼•,但有很強(qiáng)的跨平臺特性,目å‰ç™¼(fÄ)展勢é 較為強(qiáng)å‹ã€‚Java語言的“一次編程,到處å¯ç”¨â€çš„ç‰¹æ€§ï¼Œä½¿å¾—å®ƒåœ¨å¾ˆå¤šé ˜(lÇng)åŸŸå‚™å—æ¡è¿Žã€‚隨著網(wÇŽng)絡(luò)技術(shù)å’ŒåµŒå…¥å¼æŠ€è¡“(shù)çš„ä¸æ–·ç™¼(fÄ)展,JavaåŠåµŒå…¥å¼Java的應(yÄ«ng)用也將越來越廣泛,但是Java消耗硬件資æºè¼ƒå¤§ã€‚
4.3 集æˆé–‹ç™¼(fÄ)ç’°(huán)å¢ƒè€ƒæ…®çš„å› ç´
集æˆé–‹ç™¼(fÄ)ç’°(huán)境IDE(Integrated Development Environment)應(yÄ«ng)è€ƒæ…®ä»¥ä¸‹å› ç´ ï¼š
①系統(tÇ’ng)調(dià o)試器的功能。系統(tÇ’ng)調(dià o)試特別是é (yuÇŽn)程調(dià o)試是一個é‡è¦çš„功能。
â‘¡ 支æŒåº«å‡½æ•¸(shù)。許多開發(fÄ)系統(tÇ’ng)æä¾›å¤§é‡ä½¿ç”¨çš„庫函數(shù)和模æ¿ä»£ç¢¼ï¼Œå¦‚大家比較熟悉的C++ç·¨è¯å™¨å°±å¸¶æœ‰æ¨™(biÄo)準(zhÇ”n)的模æ¿åº«ã€‚它æä¾›äº†ä¸€å¥—用于定義å„種有用的集è£ã€å˜å„²ã€æœå°‹ã€æŽ’åº?qÅ«)ο蟆Ec鏿“‡ç¡¬ä»¶å’Œæ“作系統(tÇ’ng)的原則一樣:除éžå¿…è¦ï¼Œç›¡é‡é‡‡ç”¨æ¨™(biÄo)準(zhÇ”n)çš„ glibc。
â‘¢ ç·¨è¯å™¨é–‹ç™¼(fÄ)å•†æ˜¯å¦æŒçºŒ(xù)å‡ç´šç·¨è¯å™¨ã€‚
â‘£ é€£æŽ¥ç¨‹åºæ˜¯å¦æ”¯æŒæ‰€æœ‰çš„æ–‡ä»¶æ ¼å¼å’Œç¬¦è™Ÿæ ¼å¼ã€‚
4.4 硬件調(dià o)è©¦å·¥å…·çš„é¸æ“‡
好的軟件調(dià o)試程åºå¯ä»¥æœ‰æ•ˆåœ°ç™¼(fÄ)ç¾(xià n)大多數(shù)的錯誤,但是如果å†é¸æ“‡ä¸€å€‹å¥½çš„硬件調(dià o)試就會é”(dá)到事åŠåŠŸå€çš„æ•ˆæžœã€‚常用的硬件調(dià o)試工具有以下幾種:
①實時在線仿真器(ICE,In-Circuit Emulator)。用戶從仿真æ’é å‘ICE看,ICE應(yÄ«ng)是一個å¯è¢«æŽ§åˆ¶çš„MCU。ICE是通éŽä¸€æ ¹çŸé›»çºœé€£æŽ¥åˆ°ç›®æ¨™(biÄo)系統(tÇ’ng)上的。該電纜的一端有一個æ’件,æ’到處ç†å™¨çš„æ’åº§ä¸Šï¼Œè€Œè™•ç†å™¨å‰‡æ’到這個æ’件上。ICE支æŒå¸¸è¦(guÄ«)的調(dià o)試æ“作,如單æ¥é‹è¡Œã€æ–·é»žã€å匯編ã€å…§(nèi)å˜æª¢æŸ¥ã€æºç¨‹åºç´šçš„調(dià o)試ç‰ç‰ã€‚
â‘¡ é‚輯分æžå„€ã€‚é‚輯分æžå„€æœ€å¸¸ç”¨äºŽç¡¬ä»¶èª¿(dià o)試,但也å¯ç”¨äºŽè»Ÿä»¶èª¿(dià o)試。它是一種無æºå™¨ä»¶ï¼Œä¸»è¦ç”¨äºŽç›£(jiÄn)視系統(tÇ’ng)總線的事件.
â‘¢ ROM仿真器。ROM仿真器用于æ’入目標(biÄo)上的ROMæ’座ä¸çš„器件,用于仿真ROM芯片。å¯ä»¥å°‡ç¨‹åºä¸‹è¼‰åˆ°ROM仿真器ä¸ï¼Œç„¶åŽèª¿(dià o)試目標(biÄo)上的程åºï¼Œå°±å¥½åƒç¨‹åºç‡’çµ(jié)在PROMä¸ä¸€æ¨£ï¼Œå¾žè€Œé¿å…äº†æ¯æ¬¡ä¿®æ”¹ç¨‹åºåŽç›´æŽ¥ç‡’çµ(jié)的麻煩。
④ 在線調(dià o)試OCD或在線仿真(on-chip emulator)
ç‰¹åˆ¥çš„ç¡…åŸºææ–™ä»¥åŠå®šåˆ¶å’ŒCPU引腳的串行連接,在這種特殊的CPU芯片上使用OCD (On-Chip Debugging),æ‰èƒ½ç™¼(fÄ)æ®å‡ºOCD的特點。用低端é©é…器就å¯ä»¥æŠŠOCD端å£å’Œä¸»å·¥ä½œç«™ä»¥åŠå‰ç«¯èª¿(dià o)試軟件連接起來。從OCD的基本形å¼çœ‹ä¾†ï¼Œå®ƒçš„特點和單一的ROM監(jiÄn)測器是一致的,但是ä¸åƒåŽè€…那樣,需è¦å°ˆé–€çš„程åºä»¥åŠé¡å¤–的通信端å£ã€‚
4.5 è»Ÿä»¶çµ„ä»¶çš„é¸æ“‡
有些軟件組件是å…費的,有些軟件組件是授權(quán)的。授權(quán)軟件組件的費用一般都很高,但大都經(jÄ«ng)éŽåš´(yán)æ ¼çš„æ¸¬è©¦ï¼Œå¯é 性高,調(dià o)試時間çŸã€‚ç¾(xià n)在也有一些å…費的自由軟件組件,它們的性能ã€å¯é æ€§ä¹Ÿå¾ˆå¥½ã€‚å› æ¤é–‹ç™¼(fÄ)äººå“¡åœ¨é¸æ“‡çš„æ™‚候è¦åŠ ä»¥æ¬Š(quán)衡,確定哪種方案更好。
5 展 望
國外的開發(fÄ)已經(jÄ«ng)如ç«å¦‚è¼ï¼Œåœ‹å…§(nèi)的開發(fÄ)也ä¸ç”˜ç¤ºå¼±ã€‚Linux在嵌入å¼ç³»çµ±(tÇ’ng)ä¸å…·æœ‰å¼·(qiáng)大的生命力和利用價值,很多公å¸å’Œå¤§å¸(xué)都ä¸åŒç¨‹åº¦åœ°è¡¨ç¾(xià n)出å°é€™å€‹æ–¹é¢çš„興趣。有ç†ç”±ç›¸ä¿¡ï¼ŒåµŒå…¥å¼Linux的發(fÄ)å±•å°‡å¸¶é ˜(lÇng)我們進(jìn)入嵌入å¼ç³»çµ±(tÇ’ng)的新時代ï¼