• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      關(guān)于基于ARM嵌入式軟件設(shè)計(jì)教學(xué)的若干探索

      2013-04-02 07:37:06于杰
      關(guān)鍵詞:嵌入式軟件斷點(diǎn)內(nèi)核

      于杰

      (廈門大學(xué)嘉庚學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,福建 漳州 363105)

      關(guān)于基于ARM嵌入式軟件設(shè)計(jì)教學(xué)的若干探索

      于杰

      (廈門大學(xué)嘉庚學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,福建 漳州 363105)

      嵌入式軟件設(shè)計(jì)是當(dāng)今社會需求的一個(gè)熱點(diǎn),也是高校計(jì)算機(jī)專業(yè)教學(xué)的一個(gè)難點(diǎn),長期以來高校的嵌入式軟件設(shè)計(jì)教學(xué)存在著忽視開源軟件教學(xué)工具,輕視軟件調(diào)試教學(xué),和缺乏軟件設(shè)計(jì)實(shí)例化等問題,本文主要在實(shí)際教學(xué)的基礎(chǔ)上,總結(jié)出若干解決辦法,從而達(dá)到提高嵌入式軟件設(shè)計(jì)教學(xué)水平的目的.

      嵌入式;軟件設(shè)計(jì);軟件調(diào)試;開源軟件;項(xiàng)目化;教學(xué)

      目前,嵌入式產(chǎn)品已經(jīng)無處不在,通信、信息、數(shù)字家庭和工業(yè)控制等領(lǐng)域,隨處都能見到嵌入式產(chǎn)品.而ARM系列的處理器更是其中的佼佼者,這使得基于ARM的嵌入式系統(tǒng)成為當(dāng)今計(jì)算機(jī)領(lǐng)域最熱門的學(xué)科之一,龐大的嵌入式軟件系統(tǒng)的市場急需大量合格的專業(yè)人才,這無疑為高校的嵌入式軟件設(shè)計(jì)教學(xué)帶來了新的機(jī)遇[1].但與此同此,嵌入式知識的學(xué)習(xí)非常廣泛,不僅要學(xué)習(xí)程序設(shè)計(jì)的知識,同時(shí)也涉及到數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)組成原理,操作系統(tǒng)和編譯原理等相關(guān)知識,這樣為相應(yīng)的教學(xué)帶來了不小的挑戰(zhàn),如何既能做到聯(lián)系相關(guān)課程的知識,又能突出嵌入式軟件設(shè)計(jì)本身的特點(diǎn),便成為當(dāng)前嵌入式軟件設(shè)計(jì)教學(xué)急需解決的問題.而本文主要總結(jié)了作者在嵌入式軟件設(shè)計(jì)教學(xué)方面的經(jīng)驗(yàn),希望能夠?qū)ζ渌咝5那度胧杰浖O(shè)計(jì)教學(xué)有所啟發(fā).

      1 開源軟件和開發(fā)環(huán)境的引入

      目前高校傳統(tǒng)的嵌入式軟件教學(xué)主要采用的是ADS、RVDS、以及CodeWarrior等國外商業(yè)軟件進(jìn)行,這些商業(yè)軟件有著穩(wěn)定可靠、方便易用、可擴(kuò)展性強(qiáng)等諸多優(yōu)點(diǎn),但是由于其商業(yè)性質(zhì)的原因,也不可避免的帶來了,諸如知識產(chǎn)權(quán),軟件費(fèi)用,以及盜版泛濫等相關(guān)問題,這些問題已經(jīng)嚴(yán)重的影響了嵌入式軟件教學(xué)的進(jìn)一步發(fā)展.把開源軟件長期排除在外,使開源軟件教育以商業(yè)化培訓(xùn)為主,是少數(shù)人才能接受的“陽春白雪”式高端教育,未能形成開源人才的規(guī)模化培養(yǎng).對于國內(nèi)眾多開源企業(yè)來說,“招不到合適的人才”也成為長期困擾企業(yè)發(fā)展的瓶頸之一.而把開源軟件和開發(fā)環(huán)境引入高校課堂當(dāng)中,正是對開源軟件普及型教育的一種體現(xiàn),也是增強(qiáng)計(jì)算機(jī)專業(yè)畢業(yè)生競爭力的一種手段.

      為此,筆者根據(jù)本?;贏RM的嵌入式軟件設(shè)計(jì)教學(xué)實(shí)際情況,使用GNU-Make與編譯器配合負(fù)責(zé)代碼的管理.GNU-Make可以支持大多數(shù)PC操作系統(tǒng),包括Windows、Linux、MacOS等,GNU-Make的機(jī)制簡單易懂且適用于模塊化的系統(tǒng),而且GNU-Make其完全免費(fèi)的特性,更可以在實(shí)驗(yàn)室等環(huán)境大面積的使用,而沒有費(fèi)用問題,這樣就為學(xué)生的學(xué)習(xí)搭建了一個(gè)有效的平臺,而且,該平臺由于沒有過多的封裝,開放其內(nèi)部的細(xì)節(jié),也適合學(xué)生進(jìn)一步的了解,且具有良好的跨平臺移植能力,可用于多種教學(xué)和實(shí)驗(yàn)環(huán)境中.

      2 軟件調(diào)試的引入與強(qiáng)化

      2.1 嵌入式軟件調(diào)試教學(xué)的起因

      在大多數(shù)傳統(tǒng)的基于ARM嵌入式軟件設(shè)計(jì)更多的是強(qiáng)調(diào)怎樣進(jìn)行軟件的設(shè)計(jì),希望通過程序設(shè)計(jì)的教學(xué),讓學(xué)生掌握相應(yīng)的知識,但這樣帶來的一個(gè)問題就是學(xué)生會認(rèn)為軟件開發(fā)的主要過程就是設(shè)計(jì)和編碼的過程而對調(diào)試和測試的理解和掌握不夠深刻.初學(xué)者在設(shè)計(jì)編寫程序的時(shí)候,很可能出現(xiàn)各種意料之外的情況,比如突然有一個(gè)錯(cuò)誤報(bào)告,或者給出一個(gè)看似正確但卻并非我們期望的結(jié)果,也可能忽略用戶的命令,甚至長時(shí)間沒有反應(yīng)等,這些都是需要通過軟件調(diào)試來進(jìn)行解決的.筆者在教學(xué)過程中注意總結(jié)出初學(xué)者易犯的若干種錯(cuò)誤,并給出解決這些錯(cuò)誤的常見調(diào)試方法.

      2.2 調(diào)試工具GDB的引入

      通過對調(diào)試工具GDB的引用來向?qū)W生介紹常見的調(diào)試方法和思路,比如調(diào)試中必不可少的內(nèi)容—斷點(diǎn),向?qū)W生講授關(guān)于斷點(diǎn)的細(xì)節(jié),包括設(shè)置、刪除和禁用斷點(diǎn),從一個(gè)斷點(diǎn)移到另一個(gè)斷點(diǎn),查看關(guān)于斷點(diǎn)的詳細(xì)信息等等.而對于這些調(diào)試最適應(yīng)的算法,當(dāng)非樹的遍歷莫屬,這樣就采用實(shí)例涉及遍歷樹的代碼,重點(diǎn)是介紹當(dāng)?shù)竭_(dá)斷點(diǎn)時(shí)如何方便的顯示樹中節(jié)點(diǎn)的內(nèi)容.再比如由于段錯(cuò)誤而產(chǎn)生的致命運(yùn)行時(shí)錯(cuò)誤,筆者首先介紹了崩潰時(shí)在底層發(fā)生了什么事,包括程序的內(nèi)存分配以及硬件與操作系統(tǒng)的協(xié)同作用.并繼而向?qū)W生介紹核心文件,包括如何創(chuàng)建核心文件,如何使用它們來完成“事后反思”.

      2.3 錯(cuò)誤代碼的解決

      使用GDB工具進(jìn)行調(diào)試的前提是代碼的成功編譯,但是在實(shí)際的軟件開發(fā)當(dāng)中,學(xué)生經(jīng)常會遇到代碼不能編譯的情況,那么這時(shí)候,GDB調(diào)試工具將變得無能為力,因此一些常見的處理這種問題的方法也需要介紹給學(xué)生,比如如何處理缺少必要的庫造成的連接失敗問題,比如如何處理編譯器指出第x行有語法錯(cuò)誤,而事實(shí)上第x行完全正確,真正的錯(cuò)誤在前面的某一行.而這些過程中學(xué)生們會發(fā)現(xiàn)他們以前學(xué)過的確認(rèn)原則,二分法搜索原則非但不再抽象,晦澀,反而是一種有效的解決問題的方法和手段[2].

      3 以系統(tǒng)移植為重點(diǎn)的實(shí)例化教學(xué)

      現(xiàn)有的嵌入式教材大體可以分為兩類,一類教材泛泛而談:ARM、MIPS、x86等各種體系結(jié)構(gòu)處理器均做了介紹;uC/OS、Linux、WinCE等各種操作系統(tǒng)也是一一羅列其特色,但這種教材對于學(xué)生來說,更多的是走馬觀花的查閱,很難掌握嵌入式的基礎(chǔ)知識,更無法了解基于某一款處理器的基本開發(fā)過程.另一類教材通常是由嵌入式系統(tǒng)實(shí)驗(yàn)設(shè)備廠家提供的,基本就是數(shù)據(jù)手冊加實(shí)驗(yàn)手冊,學(xué)生使用這種教材往往只見樹木不見森林,也很難系統(tǒng)掌握嵌入式系統(tǒng)的基本理論和概念[3].

      筆者在從事基于ARM的嵌入式軟件設(shè)計(jì)教學(xué)工作中,根據(jù)自己的授課經(jīng)驗(yàn),總結(jié)出一套實(shí)例化的教學(xué)方法,由于嵌入式程序開發(fā)平臺(PC機(jī))和運(yùn)行平臺(嵌入式設(shè)備)的不同,所以所有的嵌入式開發(fā)遇到的第一個(gè)問題,毫無疑問的就是軟件的移植,所以筆者的實(shí)例化教學(xué)也是圍繞著軟件移植而展開的.

      首先是Bootloader的移植,介紹了Bootloader相關(guān)知識、移植方法及要注意的事項(xiàng).之后以U-boot為例,詳細(xì)的分析了U-boot代碼,并修改U-boot代碼,使之支持Norflash和Nandflash、Nandflash啟動、DM9000網(wǎng)卡和YAFFS文件系統(tǒng).通過本實(shí)例的學(xué)習(xí),學(xué)生將會對嵌入式通用的Bootloader有一個(gè)大體的了解,并且可以熟練的移植U-boot和使用U-boot.

      其次是內(nèi)核的移植,對Linux內(nèi)核組成和目錄進(jìn)行講解,分析Linux內(nèi)核的Makefile,解釋了Makefile的編譯流程,之后講解如何對內(nèi)核進(jìn)行剪裁配置,使之支持YAFFS、RTC時(shí)鐘、LCD和DM9000等,最終實(shí)現(xiàn)了在ARM平臺上的內(nèi)核移植,這樣學(xué)生將對Linux內(nèi)核有一個(gè)更深入的了解,學(xué)會如何進(jìn)行內(nèi)核的剪裁和內(nèi)核的移植,同時(shí)以Busybox為基礎(chǔ)進(jìn)行嵌入式開發(fā)板文件系統(tǒng)的移植,這樣學(xué)生通過對文件系統(tǒng)的選擇,對嵌入式系統(tǒng)特點(diǎn)有更深入的了解,也將熟練的掌握如何配置一個(gè)文件系統(tǒng)并對其進(jìn)行移植.

      再次是驅(qū)動程序的移植,首先對Linux設(shè)備驅(qū)動進(jìn)行了介紹和分類,講解了設(shè)備驅(qū)動程序的移植步驟,以Hello world、led和按鍵三個(gè)實(shí)例介紹了Linux設(shè)備驅(qū)動的移植過程,之后講解了如何完善串口、USB、聲卡和SD卡的驅(qū)動.通過這些的學(xué)習(xí),學(xué)生將會明白Linux設(shè)備驅(qū)動的重要性,學(xué)會如何寫一個(gè)簡單的Linux設(shè)備驅(qū)動并將此驅(qū)動編譯進(jìn)內(nèi)核,或者以模塊方式加載到內(nèi)核中,之后學(xué)生將學(xué)會如何完善Linux已有的一些驅(qū)動程序.

      最后是應(yīng)用程序的移植,先對嵌入式GUI進(jìn)行簡單的介紹,并對常見的一些GUI進(jìn)行交叉編譯和安裝,之后進(jìn)行音頻解碼器madplay的移植、數(shù)據(jù)庫SQLite的移植和Webserver的移植,通過這些學(xué)習(xí),學(xué)生將掌握應(yīng)用程序移植的關(guān)鍵,達(dá)到舉一反三的目的,嘗試移植更多的應(yīng)用程序.由于現(xiàn)在Android系統(tǒng)的火爆和市場對Android人才的大量需求,筆者也加入了對Android系統(tǒng)的移植講解.

      總結(jié),通過上述教學(xué)方法的實(shí)施,學(xué)生的學(xué)習(xí)目標(biāo)更加的確定,并使得學(xué)生對理論學(xué)習(xí)熱情和主動性都有所提高,加強(qiáng)了學(xué)生的動手能力,這些經(jīng)歷可能會改變一個(gè)人的學(xué)習(xí)和工作習(xí)慣,也許對學(xué)生來說是受益終身的.另外,由于學(xué)生在大學(xué)期間已經(jīng)有了一些項(xiàng)目開發(fā)的基礎(chǔ),從文檔寫作到涉及編碼的過程都得到了鍛煉,因此學(xué)生很容易找到工作,就業(yè)之后,也能非常順利的實(shí)現(xiàn)過渡.

      〔1〕文全剛.嵌入式linux操作系統(tǒng)原理與應(yīng)用[M].北京航空航天大學(xué)出版社,2011.

      〔2〕張?jiān)?軟件調(diào)試的藝術(shù)[M].人民郵電出版社,2009.

      〔3〕李寧,宋薇,庫少平.項(xiàng)目化嵌入式教學(xué)方法研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(2):5-8.

      G642

      A

      1673-260 X(2013)10-0240-02

      猜你喜歡
      嵌入式軟件斷點(diǎn)內(nèi)核
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      一類無限可能問題的解法
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      實(shí)時(shí)嵌入式軟件的測試技術(shù)
      電子測試(2018年10期)2018-06-26 05:54:08
      全景相機(jī)遙控器嵌入式軟件V1.0 相關(guān)操作分析
      電子制作(2017年17期)2017-12-18 06:40:56
      主導(dǎo)電回路發(fā)生斷點(diǎn)故障判斷方法探討
      航天嵌入式軟件浮點(diǎn)運(yùn)算誤差分析與控制
      基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計(jì)與實(shí)現(xiàn)
      阜南县| 崇信县| 福建省| 印江| 湘潭市| 独山县| 报价| 和林格尔县| 酒泉市| 夏津县| 安阳县| 年辖:市辖区| 清徐县| 芮城县| 巩留县| 监利县| 内黄县| 女性| 永昌县| 和政县| 漳平市| 称多县| 泰来县| 邻水| 邯郸市| 栖霞市| 聂荣县| 马鞍山市| 越西县| 兴隆县| 泰宁县| 平潭县| 丹阳市| 遂川县| 揭东县| 博爱县| 江安县| 姚安县| 布拖县| 凤阳县| 治多县|