行政院國家科學委員會專題研究計畫 成果報告
基於 Linux 的個人通訊控制的即時作業系統之設計(I)
計畫類別: 個別型計畫 計畫編號: NSC91-2213-E-110-028- 執行期間: 91 年 08 月 01 日至 92 年 07 月 31 日 執行單位: 國立中山大學資訊工程學系(所) 計畫主持人: 林俊宏 報告類型: 精簡報告 處理方式: 本計畫可公開查詢中 華 民 國 93 年 2 月 3 日
Չࡹଣ୯ৎࣽᏢہᚒࣴزीฝԋ݀ൔ
!
୷ܭ Mjovy ޑঁΓ೯ૻڋޑջਔբسϐी)J*!!
The Design of Real-Time Operation System of Personal
Communication Control Based on Linux (I)!
ीฝጓဦǺOTD:2!3324.F.221.139!
Չයज़Ǻ:2 ԃ 9 Д 2 ВԿ :3 ԃ 8 Д 42 В!
ЬΓǺ݅ߪֻ!!!୯ҥύξεᏢၗૻπำᏢس
!ीฝୖᆶΓǺহሎ։ǵ݅অጎǵలǵᑵ໋!
! ǵύЎᄔा! ! ! ӧࡕঁΓႝတਔжǴࣁᅈى҂ٰ 3/6H Ϸ 4H คጕ೯ૻ܌ϐӚᜪՉԄ୍ܺሡǴ ၗૻৎႝᆶঁΓ೯ૻౢஒԋࣁ҂ٰၗૻࣽ מวϐЬाวሦୱǶඵችࠠЋԄး ᆶคጕᆛၡး࣬ᜢౢࠔǴࣁЬाޑ࣬ᜢ ᆛၡ୍ܺޑౢࠔǶٯӵǺคጕᆛၡᘏڗᗺ! (Access point)ǵঁΓᒿيշ!(PDA)аϷځ д࠼ЊᆄޑᔈҔးǶၗૻৎႝЬाࢂࡰڀ ഢᆛၡೱጕфૈ٠ЪૈᆶځѬးҬඤၗ ǵೀૻ৲ޑҔၗૻ೯ߞౢࠔ֡ёᆀࣁ ၗૻৎႝǶၗૻৎႝӧ҂ٰቨᓎᆛၡаϷค ጕ೯ߞמೌวၲޑݩΠǴҺՖᆛၡး ёޔௗ܈໔ௗೱ่ᆛሞᆛၡǴᙖҗᆛၡᔈ ҔำԄٰᇿځдᆛၡးٰ໔ௗᘉкф ૈǶ! ԜीฝޑҞӧܭวঁΓ೯ૻڋϐ ջਔբسǴ၀բسගٮঁΓ೯ૻౢ ࠔ໒วΓঁ୷ҁޑ໒วᕉნǶ၀բس ᆅ܌Ԗ೬ᡏᆶฯᡏၗྍǴගٮᆛၡᆶᔞ ਢس࣬ᜢфૈ๏ቫᔈҔำԄ٬ҔǶᙖ җගٮԜ໒วᕉნǴ໒วঁΓ೯ૻౢࠔ࣬ᜢ Γߡёаݙܭ೯ૻౢࠔфૈޑวᆶ ीǶӧԜीฝύךॺа Linux ਡЈ 3/5/29 ࣁ ೬ᡏբس໒วѳѠǴԶฯᡏ߾а MIPS ࢎᄬޑ Toshiba TX5:38 ว݈ࣁ໒วѳѠǶ! ! ᜢᗖຒǺঁΓ೯ૻǵջਔբسǵLinuxǵ MIPS! ! AbstractThe goal of this project is developing a real-time operation system for personal communication. It provides an essential development environment for the developer of the personal communication. The operation system manages all the resources of software and hardware and it provides the related functions of network and file system for application. By providing such environment, the developers can focus on the development and design of the personal communication capability. In this project, we develop the operation system base on Linux kernel 2.1.18 and Toshiba TX4927 reference broad which is MIPS architecture. ! คፕࢂၗૻৎႝ܈ࢂঁΓ೯ૻౢࠔǴځ ܌ੋޑ࣬ᜢ୷ҁמೌх֖Αջਔ൪ΕԄس ӝǵᆛၡ೯ૻڐۓᆶᆛၡᔈҔำԄǶ ܌ᒏջਔж߄ޑཀကࢂȹջਔϸᔈȹǴջਔ բسڀԖҥջϸᔈԶЪόૈᡣрၗྍޑ ܄Ƕ೭ᜪջਔ൪ΕԄسޑ܄ࢂؒԖѦ ௗޑ႟ଛҹǵڀԖۓޑфૈǵᑈλǵᛙ ۓ܄மǵफ़եౢࠔԋҁޑᗺǶس೬ᡏޑ ीᆶೕჄঋ៝ॊޑ܄ԶࣴวǶ! ӧԜᚒीฝύǴךॺ௦Ҕ Linux 3/5/29 ਡЈࣁس೬ᡏ໒วѳѠǴԶฯᡏ߾ а Toshiba TX5:38 ว݈ࣁ໒วѳѠǶа Linux[1]ࣁس໒วѳѠЬाޑᓬᗺࣁځ໒ ܫচۈዸޑ܄ᆶமεޑᆛၡфૈǶ!
Keywords: Personal Communication,
Real-time Operation System, Linux, MIPS
()!໒ܫচۈዸǺ! Linux ޑࢎᄬࢂ٩Ᏽ UNIX سԶٰǴӢ Ԝ Linux Ψ܍᠍Α UNIX மεޑᆛၡфૈǶ ӢԜǴ෧ϿΑ೯ૻౢࠔ໒วΓӧ໒วᆛၡ ࣬ᜢำԄޑॄᏼǶ໒วΓѝሡाݙܭᆛ ၡᔈҔำԄޑኗቪǴҗ Linux سගٮᆛၡ фૈ୍ܺǶ! Linux ஒسਡЈচۈዸϦ໒Ǵس໒ว Γёа٩Ᏽౢࠔ܄Ծҗޑуаঅׯǵ ණթǶԜѦǴLinux ਡЈаኳಔϯޑᢀۺ ीǴᡣس໒วΓࡐܰ٩Ᏽౢࠔ܄ቚ ෧фૈǶ! җܭ Linux চۈዸ໒ܫޑ܄Ǵ໔ௗޑ ԋ Linux բسޑځдᓬᗺǴٯӵǺ! ԜᚒीฝЬाҞӧܭගٮ໒วঁΓ ೯ૻسঁ୷ҁޑ೬ฯᡏ໒วᕉნǶ၀ᕉ ნගٮ୷ҁᆛၡ೯ૻфૈǴаϷගٮس໒ วΓޑ໒วځдᆛၡ೯ૻфૈǶԜ Ѧ၀سҭ಄ӝջਔ൪ΕԄس࣬ᜢᗺǶ! ! (2)!ᔈҔ೬ᡏӭǺ! Ծҗ೬ᡏШࣚനεޑՅ൩ࢂᔈҔ ೬ᡏӭǴ໒วΓёаܰޑཛྷ൨٠٬ ҔǶεϩޑ೬ᡏӭҗ໒วΓ٩ۓ Ҟޑ܌໒วрٰǶӢԜǴ٤ϩதـ ޑᔈҔำԄࣣԖԋޑচۈዸёٮ໒ว ΓୖԵᔈҔǴ෧Ͽ໒วၸำύޑၗྍ ᆶਔ໔Ƕ໒วΓѝሡݙӧౢࠔਸ ޑфૈޑ໒วǶ! ! Οǵჴբᆶፕ! ! ! ! ԜᚒीฝЬाޑҞޑࢂගٮঁঁΓ ೯ૻڋޑջਔբسǶ၀բسගٮ ᆅ܌Ԗ೬ฯᡏၗྍǵڋฯᡏϟय़ \9^ǴٯӵǺᆛၡϟय़ǵFlashROM[3][4][6][7] Ƕ٠ගٮᆛၡфૈ୍ܺǶനಖ၀سග ٮঁӵӕঁΓႝတޑ୷ҁᏹբϟय़Ǵ Ъ಄ӝ൪ΕԄسڀԖۓޑфૈǵᆒᙁޑ سਡЈ܄Ƕ! ! (3)!ၠѳѠᆶЍජӭฯᡏϟय़Ǻ! Linux ୷ܭ Intel!497!ᐒᏔԶीǶ ฅԶᒿᆛၡޑණթᆶӚԄӚኬޑሡ Ǵӭس໒วΓठΚܭӚԄѳ Ѡޑ౽ǴԋΑ Linux ёаӧ!x97ǵ MIPSǵARMǵStrong ARMǵMotorola!79k ѳѠၮբǶӢԜ௦Ҕ Linux բ سёаע׳ӭޑฯᡏѳѠયΕԵໆޑ ጄൎǶӢԜǴ෧Ͽس໒วΓޑॄᏼǴ س໒วΓѝሡाଞჹۓޑฯᡏϟ य़ӝǶ! ӧ൪Εس໒วύౢࠔфૈᆶฯᡏѳѠ ޑ܄Ǵޔௗቹៜ Linux ਡЈޑঅׯǶҗܭ ၀ฯᡏѳѠ Toshiba TX5:38 ѝගٮ FlashROM բࣁӸڗၗޑးǴӢԜس Ӹڗฯᅷޑ࣬ᜢբࣣᙯ౽ԋჹ FlashROM ளӸڗբǶځύх֖ᔞਢ ޑӸڗǵRoot ᔞਢسޑӸڗǵਡЈቹႽޑ ӸڗǶ! ӄౚԖคኧޑس໒วΓ٬Ҕ Linux سբࣁځౢࠔޑس໒วѳѠǴӢԜǴԖ คኧޑس໒วΓୖᆶس Linux ਡЈޑ ׯǵନᒱǵෳ၂Ƕ೭ኬޑᕉნచҹΠ൩ Αᛙۓࡋଯޑ!LinuxǶΨӢԜ௦Ҕ Linux ਡ ЈёаᡣךॺୖྣӵԜӭޑس໒วΓ ޑඵችࢎᄬрךॺ୷ҁޑسࢎᄬǶᡣךॺ ઠӧ Linux ѮΓޑުᆮวמೌǶ! ! ӧԜᚒीฝύԖΟঁЬाޑวБ ӛǶ! )*!FlashROM ӸڗᆶೕჄǶ! ! ! ! )Β*ᆛၡфૈமεǺ! Figure 1ǺFlashROM ϐೕჄ!
! ӵ Figure1 ܌ҢǴᙖҗϩപ FlashROM ԋ ѤঁӸܫόӕфૈޑᅶᅷୱǴஒόӕቹႽ ᔞܫΕόӕޑϩപǴаБߡஒٰسᆢ ៈǶٯӵǺ۳ࡕाගٮཥޑᔈҔำԄਔǴѝ ሡाঅׯ Root File System ϩപύޑၗ ǴӢԜӧჴሞ׳ཥޑբѝሡाᙟᇂ Root File System ύၗόሡाঅׯځѬޑϩപ ୱǶԶ PMON فՅ൩ӵӕ BIOSǴբฯᡏ࣬ ᜢޑ߃ۈϯբǶځύಃΟޑϩപ MTD4 Ьाගٮঁё᠐ቪޜ໔๏ᔈҔำԄ٬ҔǴ ӸܫᔈҔำԄ࣬ᜢޑۓॶǶځᔞਢԄ٩ ൪ΕԄسޑ܄ǴٯӵǺޔௗᜢᐒӧ سΠຎࣁό҅தޑᜢᐒՉࣁǶՠӧ൪Ε ԄسးǴԜՉࣁࣁ҅தޑᜢᐒኳԄǶӢ ԜǴ൪ΕԄسύ܌٬ҔޑᔞਢԄሡࣁ JFFS[5]ǵJFFS3 ܈ EXT4 Ԅޑᔞਢس ǶԜᜪВᇞԄᔞਢس(journaled filesystem)! ीҔٰسวғᆙ࡚ޑ٣ҹਔǴӵό҅ தᜢᐒǴёа׳זೲޑࡠൺسǴ٠অൺᒱ ᇤǶВᇞԄᔞਢسᆢៈᅿਸޑᔞਢћ Вᇞ( log or journal )ǴᔞਢسԖ׳ཥ ਔǴ࣬ᜢޑঅׯբߡइᒵӧ၀ВᇞύǶ ӵ݀سวғࡺምਔǴӧسख़໒ᐒਔǴس ङඳำԄԾਥᏵВᇞޑϣஒ׳ཥޑ բፄᇙډᔞਢسύǶВᇞύόֹޑ׳ ཥբޔௗ௭కόҔǴᙖԜߥسၗ ޑठ܄Ƕ࣬ჹܭځдᔞਢسၗठ܄ ޑᔠᆶख़໒سਔӣӸسᔞਢ܌ޑ ਔ໔ǴВᇞԄᔞਢس܌ሡޑਔ໔ᇻϿܭځ дᔞਢسǶ! (3)!ޔௗӸڗ! ᙖҗسਡЈޑጓᆶԾՉ໒วޑ ำԄϟय़ǴၗޑӸڗόаᔞਢޑᢀۺ բӸڗǴԶޔௗа Raw-write ޑБԄஒ ၗቪΕϩപǶԜБԄЬाගٮஒٰ Ԗཥޑ Linux Kernel ܈ PMON ा׳ཥ ਔ٬ҔǶ!
)Β*!ࡌλࠠ Root File SystemǶ!
Զق root file System Ѹх֖Ѝජ ֹ Linux سၮբ܌ሡޑঁҞǶࣁ Αૈၲԋ೭ঁҞޑǴ೭ᅶТѸхࡴૈ ᡣ!Linux!سၮբന୷ҁޑሡǶ!
୷ҁޑᔞਢسࢎᄬǺ!
୷ҁҞᒵǺ!/dev, /proc, /bin, /etc, /lib, /usr, /tmpǶ!
୷ҁπڀำԄǺ!sh, ls, cp, mv, etc.Ƕ! ୷ҁಔᄊۓᔞǺ rc, inittab, fstab, etc.Ƕ!! ഢᔞǺ/dev/hd*, /dev/tty*, /dev/fd0, etc.Ƕ! Runtime ڄԄаගٮπڀำԄ܌٬Ҕϐ୷ ҁڄԄ!
ฅԶǴჹܭ൪ΕԄسԶقǴҗ БԄ܌ౢғޑ Root File System imageǴځᔞ ਢελჹ൪ΕԄسԶقࣣϼၸܭᚳεǶӢ Ԝሡाуаঅׯа಄ӝाǶӧԜךॺᙖҗ busybox[2]س໒วำԄٰᇙঁ಄ӝ൪ ΕԄسाޑ Root File SystemǶ!
BusyBox ࣁπڀ೬ᡏǴҔٰࡌ಄ӝ ൪ΕԄسᕉნޑ Root File SystemǴBusybox ගٮঁ໒ᐒ܌ሡޑϩำԄаڗж GUN/Linux ܌ණթޑᚳεڮзڋπڀǶЪ Busybox ёٮس໒วޣ٩سޑሡᇸ ޑуаঅׯǴஒόѸाޑϩմନǴ٬ளำ ԄޑനλϯǴа಄ӝ൪ΕԄسޑሡǶ Busybox ճҔ multi-call executable file ޑמ ೌǴஒᔞਢᕭ෧ډനλǶ! ԜѦǴჹܭ FlashROM ޑӸڗБԄ٩ᔈҔ ำԄሡޑόӕǴځӸڗБԄϩࣁٿᅿόӕ ᐒڋǶ! (2)!ၸᔞਢس! ᙖҗسਡЈޑጓᆶᕉნୖኧޑ ۓǴஒ FlashROM ޑᡄᒠϩപ ၸᔞਢԄၩډسύǶၗޑӸڗ ࢂаᔞਢޑᢀۺբӸڗǶԜБԄЬाග ٮᔈҔำԄӸڗ٤ѸाޑၗǶ! BusyBox!ಔӝӭ UNIX ޑᔈҔำԄԋ ࣁঁλࠠޑёՉำԄǶдගٮΑᙁϯၸ ޑᔞਢ࣬ᜢޑᔈҔำԄᆶ shell ᕉნޑᔈҔำ ԄǶԶ೭٤ BusyBox ܌ගٮޑᔈҔำԄǴځ ёᒧۓޑϩၨޑᔈҔำԄϿǶ
BusyBox ගٮ൪ΕԄسঁֹ࣬ޑ POSIX ᕉნϟय़ǶBusyBox ࢂа
size-optimization ᆶ limited resources ࣁ໒ว ЬाୖԵӢનǶԜѦǴBusyBox ࢂаኳಔϯ ीޑᢀۺֹԋǶ٬ளᕉნ໒วޣёаࡐ ܰޑჹځ܌ගٮޑфૈբཥቚᆶմ෧ޑ բǶ! )Ο*!Linux ໒ᐒϩǶ! ӢԜǴسਡЈ௴ሡх֖൳ঁϩǶ ಃǵBIOS ำԄǴբฯᡏ߃ۈϯբǴٯӵǺ ᏫᡏޑᔠǶಃΒǵLinux Kernel imageǴ ٮ໒ᐒၩΕำԄ܈ BIOS ၩΕᏫᡏǶಃΟǵ Root File System imageǴٮسਡЈၩǶ!
ӧฯᡏѳѠᕉნԵໆΠǴሡஒॊޑ ΟঁำԄܫΕ FlashROM аֹԋ௴ࢬำǶ ӢԜǴाӧԜฯᡏѳѠ௴ Linux ሡբаΠ ޑঅׯǺ! (2)!ጓਡЈ٬၀ਡЈЍජ࣬ᜢޑ FlashROM းǺ! ᙖԜᡯ٬ਡЈ௴ਔёаᒣᇡ၀ FlashROM းԶჹ၀းբၗޑӸڗǶ! (3)!ጓਡЈ٬ਡЈЍජ RamDisk ࣬ᜢ ᐒڋǺ! RamDisk ЬाᢀۺӧᏫᡏύߥ੮༧ ୱǴаٮسஒ Root File System image ၩ Ε٠уаၮҔǶаسᢀᗺԶقǴسஒ၀ ୱຎࣁঁᅶᅷǴ࣬ჹᔈޑӸڗբࣣӵ ӕᅶᅷǶԜᐒڋЬाࣁᇶշ೬ᅷᐒ໒ᐒǶ! ᆕӝॊޑೕჄǴسޑ௴ࢬำᡂ׳ ӵΠǺ! (2)!ႝྍ௴ࡕǴՉ FlashROM ޑ PMONǴբฯᡏޑ߃ۈϯǴځфૈӵঁΓႝ တύ BIOS ܌תᄽޑفՅኬǴ٠ஒ MTD2 ύޑ Linux kernel ၩΕᏫᡏǶ!
(3) Չ Linux kernelǴLinux kernel Չ ֹ࣬ᜢޑ߃ۈϯբࡕǴߡډ MTD3 ஒ Root File System ၩΕ RamDisk ύǴ٠ၩӧس ύǶ! )!4!* Linux kernel ֹԋ࣬ᜢޑ໒ᐒբ ࡕǴஒ MTD4 а JFFS3 ᔞਢԄၩډᔞਢ سύǴٮᔈҔำԄբӸڗޑޜ໔Ƕ! ! Ѥǵԋ݀! ! ӧԜीฝύǴךॺᙖҗঅׯϩਡЈচ ۈዸٰඓ FlashROM ޑӸڗ٠уаϩപೕ Ⴤ٠Ъঅׯϩ໒ᐒࢬำǴֹԋঁسவ ໒ᐒډس௴ֹԋǶ! ԜѦǴᙖҗ BusyBox!໒ว೬ᡏࡌрᔞ ਢسλޑ Root File SystemǴ٠ЪЍජس ୷ҁᏹբǶ! നಖךॺԋфޑֹԋीฝޑҞޑǶԋф ޑஒ Linux ਡЈӝΕ Toshiba TX5:38 ޑ ฯᡏѳѠǴගٮᆛၡ࣬ᜢޑ୍ܺǶ٠Ъ಄ӝ ൪ΕԄسޑཷۺǶ! ! ϖǵୖԵЎ! !
[1] D.P. Bovet, M. Cesati, Understanding the Linux
Kernel. O’Relly, 2001.
[2] BusyBox,http://www.busybox.net/. [3] Chinese Linux Documentation Project,
http://www.linux.org.tw/CLDP/index.html. [4] Embedded Linux Consortium,
http://www.embedded –linux.org/.
[5] JFFS,http://developer.axis.com/software/jffs/. [6] Linux HowTo,http://www.linux-howto.com/. [7] Memory Technology Device (MTD) Subsystem for
Linux,http://www.linux-mtd.infradead.org/.
[8] A. Rubini, J. Corbet, Linux Device Drivers. O’Relly, 2001.