陸洪毅 王蘇峰 王志英
摘要:針對(duì)傳統(tǒng)嵌入式系統(tǒng)實(shí)驗(yàn)與現(xiàn)實(shí)產(chǎn)品脫節(jié)的問(wèn)題,介紹在嵌入式操作系統(tǒng)內(nèi)核實(shí)踐課程中進(jìn)行課程內(nèi)容、教學(xué)過(guò)程改革的方法,提出一套基于智能手機(jī)教學(xué)實(shí)踐平臺(tái)的教學(xué)方法。
關(guān)鍵詞:嵌入式操作系統(tǒng);智能手機(jī);教學(xué)改革;能力培養(yǎng)
0、引言
智能手機(jī)已經(jīng)走進(jìn)千家萬(wàn)戶,大部分人都配備了智能手機(jī),針對(duì)智能手機(jī)的應(yīng)用開(kāi)發(fā)發(fā)展也非常迅速。作為一種典型的嵌入式設(shè)備,智能手機(jī)不但具有較高的性能,而且成本較為低廉,在體積、重量、功耗、用戶體驗(yàn)上有特殊的要求,非常適合作為嵌入式系統(tǒng)/嵌入式操作系統(tǒng)實(shí)踐教學(xué)的載體。
在國(guó)防科學(xué)技術(shù)大學(xué)2012專業(yè)學(xué)位研究生教學(xué)方案中,我們針對(duì)專業(yè)學(xué)位研究生教育的特點(diǎn),開(kāi)設(shè)新的實(shí)踐類課程嵌入式操作系統(tǒng)內(nèi)核開(kāi)發(fā)實(shí)踐,利用智能手機(jī)作為實(shí)踐教學(xué)平臺(tái),開(kāi)展全新的實(shí)踐教學(xué)活動(dòng)。
1、嵌入式操作系統(tǒng)內(nèi)核開(kāi)發(fā)實(shí)踐課程的特點(diǎn)
目前,在各大院校、各個(gè)專業(yè)中開(kāi)設(shè)的嵌入式系統(tǒng)類課程主要分為3類,一類是嵌入式硬件(ARM或者單片機(jī))相關(guān)課程,一類是嵌入式操作系統(tǒng)(嵌入式Linux、uC/OS-II)相關(guān)課程,另一類是嵌入式應(yīng)用開(kāi)發(fā)相關(guān)課程。這些課程使用的硬件平臺(tái)大多是各類開(kāi)發(fā)板和開(kāi)發(fā)箱。這類硬件平臺(tái)的主要優(yōu)點(diǎn)是具有較強(qiáng)的可塑性、可根據(jù)實(shí)驗(yàn)要求定制、具有豐富的外圍接口、能夠使用各種測(cè)量?jī)x器進(jìn)行測(cè)量等,但是使用這類硬件作為硬件平臺(tái)的主要問(wèn)題就是學(xué)生缺乏興趣,硬件平臺(tái)性能較低,只能開(kāi)展一些層次較低的實(shí)驗(yàn)(如串口通信、流水燈、電子琴、電機(jī)驅(qū)動(dòng)、數(shù)字鐘、硬件小游戲等),而且成本較高。特別需要指出的是,由于這類硬件平臺(tái)與真實(shí)智能手機(jī)系統(tǒng)差距較大,因此許多在硬件平臺(tái)上進(jìn)行的實(shí)驗(yàn)和改進(jìn)的技術(shù),不能直接應(yīng)用到現(xiàn)有的智能手機(jī)上。
結(jié)合國(guó)防科學(xué)技術(shù)大學(xué)專業(yè)學(xué)位研究生的特點(diǎn)及計(jì)算機(jī)教育的特長(zhǎng),我們以Android智能手機(jī)為平臺(tái),開(kāi)設(shè)了多門(mén)嵌入式類的實(shí)踐課程,包括嵌入式操作系統(tǒng)內(nèi)核開(kāi)發(fā)實(shí)踐、移動(dòng)應(yīng)用開(kāi)發(fā)實(shí)踐等,特別是嵌入式操作系統(tǒng)內(nèi)核開(kāi)發(fā)實(shí)踐課程,專注于智能手機(jī)Linux內(nèi)核開(kāi)發(fā)實(shí)踐。該課程特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面。
(1)專注Android手機(jī)的Linux內(nèi)核部分。Android是一個(gè)較大的系統(tǒng)框架,我們進(jìn)行完整的教學(xué)需要花費(fèi)很長(zhǎng)時(shí)間,而且Android系統(tǒng)本身還在不斷快速發(fā)展,需要很多的知識(shí)和能力積累,為此,我們結(jié)合未來(lái)專業(yè)學(xué)位研究生就業(yè)的特點(diǎn),選擇Android手機(jī)的Linux內(nèi)核部分進(jìn)行教學(xué)實(shí)踐,既可以避開(kāi)復(fù)雜的手機(jī)硬件,又可以增強(qiáng)實(shí)用性。
(2)實(shí)踐性強(qiáng)。傳統(tǒng)的嵌入式操作系統(tǒng)學(xué)習(xí)需要講解操作系統(tǒng)內(nèi)核的結(jié)構(gòu)、各種經(jīng)典的操作系統(tǒng)構(gòu)件等,這些內(nèi)容非常繁雜,不容易講透,也不容易實(shí)踐。在該課程中,學(xué)生在第一堂課就要實(shí)際操作手機(jī),在課程全過(guò)程中要不斷地在智能手機(jī)平臺(tái)上開(kāi)展實(shí)踐,特別注重實(shí)踐性。
(3)實(shí)用性強(qiáng)。我們選用的智能手機(jī)平臺(tái)是主流的雙核1GHz、512MB智能手機(jī),在其上進(jìn)行的所有實(shí)驗(yàn),可以直接或者稍作修改就移植到新的智能手機(jī)系統(tǒng)中,具有很好的實(shí)用性。學(xué)生在將來(lái)就業(yè)時(shí),可以直接利用課堂學(xué)習(xí)成果進(jìn)行研發(fā)工作。
2、實(shí)踐平臺(tái)選擇及課程內(nèi)容設(shè)計(jì)
目前智能手機(jī)陣營(yíng)主要分為蘋(píng)果的iOS陣營(yíng)和谷歌的Android陣營(yíng)。根據(jù)課程教學(xué)的需要,我們選擇開(kāi)源的Android智能手機(jī)作為實(shí)踐平臺(tái)。在該課程中,最終選擇來(lái)自韓國(guó)LG的SU660手機(jī)作為實(shí)踐教學(xué)平臺(tái),主要有如下幾個(gè)方面的原因。
(1)硬件開(kāi)源、操作系統(tǒng)內(nèi)核開(kāi)源。SU660可以在網(wǎng)上找到完整的手機(jī)電路原理圖,包括所有選用的硬件芯片參數(shù)、型號(hào)、PCB圖紙等,大部分選用的芯片可以找到數(shù)據(jù)手冊(cè)。操作系統(tǒng)內(nèi)核也在不斷更新,其最新版本的2.6.39.4內(nèi)核可以在官方網(wǎng)站上直接下載。這些為開(kāi)展操作系統(tǒng)內(nèi)核的教學(xué)實(shí)踐奠定了良好基礎(chǔ)。
(2)價(jià)格便宜。這是在課堂教學(xué)中大規(guī)模使用的前提,該手機(jī)的裸機(jī)價(jià)格約600元,大大低于各種高檔手機(jī)的價(jià)格,也大大低于各種高檔嵌入式開(kāi)發(fā)板和開(kāi)發(fā)箱的價(jià)格。
(3)性能配置較強(qiáng)。該手機(jī)是全球首款雙核手機(jī),配置了雙核1GHz處理器、512MB內(nèi)存、4英寸顯示屏、16GB內(nèi)置閃存、豐富的傳感器等。學(xué)生對(duì)此類手機(jī)較為熟悉,容易接受。
(4)具有較大的用戶群。在國(guó)外著名的XDA網(wǎng)站上,有專門(mén)的版面討論該手機(jī)的Android開(kāi)發(fā)等問(wèn)題。對(duì)于具體問(wèn)題,學(xué)生和教師都可以在網(wǎng)上進(jìn)行研討并尋求答案。
在課程內(nèi)容的設(shè)計(jì)上,我們采用專題的方式,圍繞與智能手機(jī)息息相關(guān)的一些專題展開(kāi)教學(xué),具體內(nèi)容包括以下幾個(gè)方面。
(1)Linux內(nèi)核的定制、移植與編譯。該專題主要介紹Linux內(nèi)核開(kāi)發(fā)的一般流程,包括如何定制內(nèi)核、編譯內(nèi)核和移植內(nèi)核的一般思路等。
(2)面向性能優(yōu)化的增強(qiáng)性設(shè)計(jì)。該專題主要圍繞如何提高CPU性能和I/O性能、如何評(píng)測(cè)系統(tǒng)性能等方面展開(kāi),還涉及超頻、I/O調(diào)度算法的選擇等內(nèi)容。
(3)面向功耗優(yōu)化的增強(qiáng)性設(shè)計(jì)。該專題主要圍繞如何降低系統(tǒng)的功耗展開(kāi),首先介紹系統(tǒng)中與電源管理相關(guān)的內(nèi)容,然后重點(diǎn)就DVFS、各個(gè)硬件模塊的低功耗設(shè)計(jì)進(jìn)行實(shí)踐。
(4)面向安全性的增強(qiáng)性設(shè)計(jì)。該專題主要介紹Android、Linux、Bootloader等各個(gè)層次的安全性措施,智能手機(jī)Root的原理,針對(duì)智能手機(jī)的破解、解鎖、Root等技術(shù)。
(5)面向增強(qiáng)用戶體驗(yàn)的設(shè)計(jì)優(yōu)化。該專題主要介紹各種增強(qiáng)用戶體驗(yàn)的技術(shù),如ProiectButter、未接來(lái)電提示燈、手電筒等,這些技術(shù)往往涉及特定的硬件驅(qū)動(dòng)和內(nèi)核技術(shù),具有一定難度。
(6)基于GitHub的操作系統(tǒng)內(nèi)核協(xié)同開(kāi)發(fā)實(shí)踐。GitHub已經(jīng)成為開(kāi)源軟件的集散地,其方便的協(xié)同開(kāi)發(fā)功能吸引了全球的程序員共同完成應(yīng)用開(kāi)發(fā)。很多手機(jī)Linux內(nèi)核開(kāi)發(fā)也在GitHub上進(jìn)行。
3、課程教學(xué)過(guò)程
作為一門(mén)實(shí)踐性課程,學(xué)生在課程伊始就需要在真實(shí)的手機(jī)上進(jìn)行操作,通過(guò)簡(jiǎn)單的燒寫(xiě)系統(tǒng)更新手機(jī)系統(tǒng),可以立刻體會(huì)到課堂內(nèi)容的趣味性,提升了學(xué)習(xí)興趣;然后,我們介紹基本的Linux操作系統(tǒng)內(nèi)核定制與編譯,通過(guò)使用編譯腳本大大簡(jiǎn)化編譯步驟,實(shí)現(xiàn)“零基礎(chǔ)”新手快速入門(mén);使用菜單化的內(nèi)核配置工具,讓學(xué)生了解內(nèi)核配置的方法和過(guò)程,不再畏懼“龐大”的操作系統(tǒng)。
在后續(xù)各個(gè)專題中,我們會(huì)突出實(shí)踐的趣味性和實(shí)用性。例如,在講解性能增強(qiáng)專題時(shí),開(kāi)展安兔兔跑分競(jìng)賽,看誰(shuí)的跑分高,同時(shí)根據(jù)跑分結(jié)果的不同介紹芯片工藝、批次不同帶來(lái)超頻能力不同的基本原理;在講解低功耗增強(qiáng)設(shè)計(jì)專題時(shí),開(kāi)展待機(jī)時(shí)間競(jìng)賽,使用實(shí)驗(yàn)室提供的高精度毫安級(jí)直流電源,精確計(jì)算每個(gè)學(xué)生降頻后手機(jī)的功耗,分析手機(jī)中各個(gè)硬件模塊帶來(lái)的功耗及其優(yōu)化方法;在安全性相關(guān)專題中,介紹利用內(nèi)核設(shè)備突破手機(jī)限制的方法,讓學(xué)生通過(guò)動(dòng)態(tài)修改內(nèi)核,完成對(duì)手機(jī)的破解;在增強(qiáng)用戶體驗(yàn)專題中,讓學(xué)生閱讀手機(jī)特定芯片數(shù)據(jù)手冊(cè),設(shè)計(jì)出帶有亮度控制的手電筒;在協(xié)同設(shè)計(jì)專題中,學(xué)生在OitHub上注冊(cè)自己的賬號(hào),然后將自己對(duì)內(nèi)核的修改提交到教師的代碼倉(cāng)庫(kù)中,由教師審核,最后再進(jìn)行代碼合并和提交。
另一方面,在課程的教學(xué)過(guò)程中,我們特別注重培養(yǎng)學(xué)生發(fā)現(xiàn)、分析和解決問(wèn)題的能力,從介紹一般性的方法人手,以案例為示范,以實(shí)踐來(lái)強(qiáng)化。例如,當(dāng)發(fā)現(xiàn)手機(jī)出現(xiàn)某種奇怪的問(wèn)題時(shí),首先要通過(guò)adb查閱系統(tǒng)的dmesg日志,分析可能出現(xiàn)問(wèn)題的硬件部件和驅(qū)動(dòng)模塊,到Linux內(nèi)核代碼中找到相應(yīng)的源程序,通過(guò)printk等內(nèi)核調(diào)試手段,添加調(diào)試功能;然后再次燒寫(xiě)手機(jī)固件并觀察故障,完成故障的定位,故障定位后還需深入研究故障的產(chǎn)生機(jī)理,制作相應(yīng)的補(bǔ)丁或者對(duì)程序進(jìn)行修正;最后在手機(jī)上驗(yàn)證所做工作的正確性和有效性。
在整個(gè)教學(xué)過(guò)程中,我們基本上在每個(gè)專題都設(shè)置了“找問(wèn)題、打補(bǔ)丁”的實(shí)踐環(huán)節(jié)。正是這些實(shí)踐環(huán)節(jié)、讓學(xué)生一次次地重復(fù)發(fā)現(xiàn)、分析和解決問(wèn)題的過(guò)程,強(qiáng)化了實(shí)踐動(dòng)手能力,同時(shí)也加深了對(duì)Linux操作系統(tǒng)內(nèi)核的理解。
4、教學(xué)成果
通過(guò)一個(gè)學(xué)期的教學(xué)活動(dòng),課程教學(xué)取得顯著成果。大部分學(xué)生表示對(duì)課程內(nèi)容較為滿意、感興趣、學(xué)有收獲。典型的教學(xué)成果案例如下。
(1)某學(xué)生通過(guò)研讀手機(jī)電路圖,發(fā)現(xiàn)其上有處理器溫度傳感器,但是在操作系統(tǒng)內(nèi)核中并沒(méi)有該功能。該生通過(guò)添加相應(yīng)的硬件驅(qū)動(dòng),順利實(shí)現(xiàn)對(duì)該手機(jī)處理器溫度的監(jiān)控和報(bào)警功能。這一過(guò)程極大地強(qiáng)化了該生對(duì)軟硬件系統(tǒng)的理解。
(2)某本科物理專業(yè)的學(xué)生通過(guò)該課程初步掌握嵌入式系統(tǒng),特別是嵌入式手機(jī)操作系統(tǒng)的大體結(jié)構(gòu)和知識(shí),能夠完成一些內(nèi)核應(yīng)用的開(kāi)發(fā)。
(3)某學(xué)生通過(guò)閱讀Linux內(nèi)核代碼關(guān)于音頻解碼器部分驅(qū)動(dòng)的內(nèi)容,發(fā)現(xiàn)官方提供代碼中的bug會(huì)導(dǎo)致通話中的語(yǔ)音問(wèn)題,于是將該問(wèn)題及解決方案發(fā)布到XDA論壇上,得到許多開(kāi)發(fā)者的認(rèn)可。
5、課程教學(xué)經(jīng)驗(yàn)
雖然課程教學(xué)取得了一定成果,但也暴露出一些問(wèn)題。
(1)學(xué)生水平參差不齊,施教困難。特別是作為專業(yè)學(xué)位研究生,其入學(xué)基礎(chǔ)就有較大不同,導(dǎo)致施教過(guò)程中進(jìn)度控制較為困難。一些學(xué)生甚至不知道Linux,不會(huì)C語(yǔ)言,這些直接導(dǎo)致課程教學(xué)中的困難。我們只能要求這些學(xué)生在課后多補(bǔ)課,多學(xué)習(xí),并且在課上給予額外輔導(dǎo)。
(2)計(jì)算機(jī)系統(tǒng)觀的培養(yǎng)不足。作為一種典型的計(jì)算機(jī)系統(tǒng),智能手機(jī)并不是非常適合計(jì)算機(jī)系統(tǒng)觀培養(yǎng)的載體。作為實(shí)際商品,其不具備許多開(kāi)發(fā)調(diào)試接口,學(xué)生很少接觸到硬件,也看不見(jiàn)信號(hào),缺少對(duì)硬件的感性認(rèn)識(shí)。所有的硬件知識(shí)只能來(lái)源于電路圖、芯片數(shù)據(jù)手冊(cè)和源代碼等。
(3)缺乏系統(tǒng)的教材。智能手機(jī)操作系統(tǒng)開(kāi)發(fā)實(shí)踐有別于傳統(tǒng)的Linux內(nèi)核開(kāi)發(fā)實(shí)踐,其在功耗、性能、用戶體驗(yàn)、復(fù)雜性上都有很大區(qū)別。目前關(guān)于Android手機(jī)應(yīng)用開(kāi)發(fā)的書(shū)籍很多,但是關(guān)于智能手機(jī)Linux內(nèi)核開(kāi)發(fā)的書(shū)很少,我們只能依靠教師本身的工作經(jīng)驗(yàn)進(jìn)行實(shí)際指導(dǎo)。
(4)對(duì)教師自身要求較高。由于課程內(nèi)容涉及硬件、操作系統(tǒng)等方面,要求教師本身具有較廣的知識(shí)面,特別是在硬件、驅(qū)動(dòng)程序上有較強(qiáng)的基礎(chǔ),并且能夠緊跟智能手機(jī)發(fā)展的前沿,不斷補(bǔ)充知識(shí),強(qiáng)化自身能力。
6、結(jié)語(yǔ)
將Android智能手機(jī)作為嵌入式操作系統(tǒng)內(nèi)核開(kāi)發(fā)實(shí)踐的平臺(tái)是一次大膽的嘗試,它與基于傳統(tǒng)的單片機(jī)、ARM、開(kāi)發(fā)板、開(kāi)發(fā)箱的實(shí)踐有很大不同,同時(shí)提供了非常廣闊的實(shí)踐內(nèi)容選擇空間。在這次教學(xué)過(guò)程中,智能手機(jī)體現(xiàn)了其作為實(shí)踐教學(xué)平臺(tái)的優(yōu)勢(shì),對(duì)培養(yǎng)專業(yè)學(xué)位研究生的動(dòng)手實(shí)踐能力具有良好的促進(jìn)作用。