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