A. 如何學習Linux設備驅動
通常,內核的升級對從事linux應用程序開發的人員來說影響較小,因為系統調用基本保持兼容,影響比較大的是驅動開發人員。每次內核的更新都可能導致許多內核函數原型上的變化,其中既有內核本身提供的函數,也有硬體平台代碼提供的函數,後者變化的更加頻繁。這一點從許多經典書籍就可驗證,當你按照手裡的經典著作,如:Alessandro的《linux設備驅動程序》,編寫驅動時,發現並不能夠成功的在你的linux平台上編譯通過、或不能正常執行,原因就在於你用的內核和書里的不一致。
本文從兩個方面去解釋這個問題,一方面是如何寫好linux設備驅動,另一方面是如何應對不斷升級的內核。
如何寫好Linux設備驅動
Linux設備驅動是linux內核的一部分,是用來屏蔽硬體細節,為上層提供標准介面的一種技術手段。為了能夠編寫出質量比較高的驅動程序,要求工程師必須具備以下幾個方面的知識:
● 熟悉處理器的性能
如:處理器的體系結構、匯編語言、工作模式、異常處理等。對於初學者來說,在還不熟悉驅動編寫方法的情況下,可以先不把重心放在這一項上,因為可能因為它的枯燥、抽象而影響到你對設備驅動的興趣。隨著你不斷地熟悉驅動的編寫,你會很自然的意識到此項的重要性。
● 掌握驅動目標的硬體工作原理及通訊協議
如:串口控制器、顯卡控制器、硬體編解碼、存儲卡控制器、I2C通訊、SPI通訊、USB通訊、SDIO通訊、I2S通訊、PCI通訊等。編寫設備驅動的前提就是需要了解設備的操作方法,所以這些內容的重要程度不言而喻。但不是說要把所有設備的操作方法都熟悉了以後才可以寫驅動,你只需要了解你要驅動的硬體就可以了。
● 掌握硬體的控制方法
如:中斷、輪詢、DMA 等,通常一個硬體控制器會有多種控制方法,你需要根據系統性能的需要合理的選擇操作方法。初學階段以實現功能為目的,掌握的順序應該是,輪詢->中斷->DMA。隨著學習的深入,需要綜合考慮系統的性能需求,採取合適的方法。
● 良好的GNU C語言編程基礎
如:C語言的指針、結構體、內存操作、鏈表、隊列、棧、C和匯編混合編程等。這些編程語法是編寫設備驅動的基礎,無論對於初學者還是有經驗者都非常重要。
● 良好的linux操作系統概念
如:多進程、多線程、進程調度、進程搶占、進程上下文、虛擬內存、原子操作、阻塞、睡眠、同步等概念及它們之間的關系。這些概念及方法在設備驅動里的使用是linux設備驅動區別單片機編程的最大特點,只有理解了它們才會編寫出高質量的驅動。
● 掌握linux內核中設備驅動的編寫介面
如:字元設備的cdev、塊設備的gendisk、網路設備的net_device,以及基於這些基本介面的framebuffer設備的fb_info、mtd設備的mtd_info、tty設備的tty_driver、usb設備的usb_driver、mmc設備的mmc_host等。
Linux內核為設備驅動編寫者提供了標準的介面,驅動編寫者無需精通內核的各個部分,只需要明確內核提供給我們的介面,並實現此介面就可以了。內核提供的介面採用的是面向對象的思路,即把目標設備抽象成一個對象,通常利用一個結構體來描述這個對象。驅動工程師的任務就是實現這個對象。這個結構體中會包含設備的屬性(用變數表示)和操作方法(用函數指針表示)。如:字元設備的cdev
struct cdev {
struct kobject kobj;
struct mole *owner;
const struct file_operations *ops; // 操作方法結合,其它項都是屬性
struct list_head list;
dev_t dev;
unsigned int count;
};
開始階段可以以模仿為主,即套用一些固定的模板、參考常式。
如何應對不斷升級的內核
內核升級對驅動的影響主要體現在,(1)驅動介面定義的變化;(2)內核的一些功能函數的名稱、參數、頭文件、宏定義的變化;(3)平台代碼關於硬體操作方面封裝的一些函數的變化;(4)設備模型的影響。
● 驅動介面定義的變化
如:2.4內核中字元設備驅動的注冊介面是:
int register_chrdev(unsigned int major, const char * name, struct file_operations *fops)
而2.6內核中已經不建議使用這種方法了,改為:
int cdev_add(struct cdev *p, dev_t dev, unsigned count)
這種介面定義及注冊方法帶來的變化,發生的並不頻繁。解決方案是:參考內核中的代碼。這種介面定義及注冊方法在內核中非常容易找到,如:字元設備驅動的注冊方法及介面定義可以參照內核driver/char/目錄下的很多實例。
● 內核的一些功能函數的名稱、參數、頭文件、宏定義的變化
如:中斷注冊函數的格式及參數在2.4內核、2.6內核低版本和高版本之間都存在差別,在2.6.8中,中斷注冊函數的定義為:
int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *),unsigned long irq_flags, const char * devname, void *dev_id)
irq_flags的取值主要為下面的某一種或組合: SA_INTERRUPT、SA_SAMPLE_RANDOM、SA_SHIRQ
在2.6.26中,中斷注冊函數的定義為:
int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)
typedef irqreturn_t (*irq_handler_t)(int, void *); irq_flags的取值主要為下面的某一種或組合:(功能和2.6.8的對應)IRQF_DISABLED、IRQF_SAMPLE_RANDOM、IRQF_SHARED
當出現這些問題時,編譯過程中,編譯器會給我們比較明確的錯誤提示,根據這些提示你可以判斷出是否是缺少頭文件問題、是否是函數參數定義有誤等。解決問題的最好辦法還是到你的目標內核中找信息。此時找問題的方法可以藉助於搜索,如:你可以在新的內核中搜索request_irq,看新內核中的驅動是如何使用它的,這種方法非常有效。
● 平台代碼關於硬體操作方面封裝的一些函數的變化
內核中,硬體平台相關的代碼在內核更新過程中變化比較頻繁,和我們的設備驅動也是息息相關,所以在針對一個新內核編寫設備驅動前,一定要熟悉你的平台代碼的結構。有時平台雖然提供了內核要求的介面函數,但使用起來功能卻並不完善。下面還是先舉個例子說明平台代碼更新對設備驅動的影響。
如:在linux-2.6.8內核中,調用set_irq_type(IRQ_EINT0,IRQT_FALLING);去設置S3C2410的IRQ_EINT0的中斷觸發信號類型,你會發現不會有什麼效果。跟蹤代碼發現內核的set_irq_type函數需要平台提供一個針對硬體平台的實現函數
static struct irqchip s3c_irqext_chip = {
.mask = s3c_irqext_mask,
.unmask = s3c_irqext_unmask,
.ack = s3c_irqext_ack,
.type = s3c_irqext_type
};
s3c_irqext_type就是linux內核需要的實現函數,而s3c_irqext_type在2.6.8中的實現為: static int s3c_irqext_type(unsigned int irq, unsigned int type)
{
irqdbf("s3c_irqext_type: called for irq %d, type %d\n", irq, type);
return 0;
}
原來並沒有實現。而在較高版本的內核,如2.6.26內核中,這個函數是實現了的。所以你一定要小心。當平台函數不好用時,一定要查查原因,或者直接操作硬體寄存器來達到目的。
● 2.6內核設備模型對驅動的影響
在2.6內核中寫設備驅動和在2.4內核中有著很大的不同,主要就是在設備驅動中融入了比設備驅動本身結構還復雜、還難以理解的設備模型。初學驅動時你可以不理會設備模型,但你會發現內核里的驅動代碼基本上都是融入了設備模型的了。所以很多時候你不得不面對現實,還是要弄懂它,並且它也的注冊方法也會隨著內核的升級而發生變化。解決此類問題的最好方法還是參考目標內核驅動代碼。
B. 如何有效利用現代化教學設備進行教學的
隨著電教技術的普及,越來越多的多媒體走進了課堂,為教師更好的教學,提供了優越的條件.傳統英語教法「粉筆+黑板」,這種教法「費時較多,收效較低」.多媒體作為一種先進的教學手段被引入課堂,大大提高了課堂教學效果,使學生在輕松愉快的氣氛中,高速度、高質量地獲得知識,發展能力,形成個性,從而給英語教學帶來了新的希望.多媒體形象、直觀、大容量的特點使課堂教學變得生動活潑、豐富多彩,充分調動了學生的學習興趣,加強了學習的積極性,切實提高了教育教學質量.多媒體雖然好處很多,但也要用得恰當,下面本人從多媒體如何優化英語課堂談幾點感受.
1 利用多媒體,挖掘快樂因素,激發學習興趣
興趣是最好的老師.多媒體形象直觀地展示相關圖片或動畫或聲音,學生不知不覺得進入了「多媒體」,從而進入了學習.激發學生的學習興趣,還要在課堂上創設一種平等、民主、和諧、寬松的氛圍,還要以積極的態度和發展的眼光去看待學生,根據新課改提倡的「自主學習」方式,相信每個學生都有巨大的發展潛能,讓學生自發的去問、說、寫或進入角色做游戲等,深挖教材中的「快樂因素」,從學生感興趣的方面入手,緊密結合教材知識點,讓學生融入輕松的英語學習之中.例如:在學習動物名稱時,可以先將各種小動物的聲音錄制下來,讓學生模仿動物的聲音和樣子來學.例如,cat,cat,喵喵喵;dog,dog,汪汪汪;……這樣,學生就會很有興致,有的裝成猴子,有的扮成小狗……再難的單詞在學生口中變得流利起來,枯燥的單詞很快就被學生記住.進而提高學生學習英語的興趣.
2 利用多媒體,營造學習氛圍,培養自主學習的能力
良好的學習環境,能促進人的學習;不良的學習環境,有礙教育、教學的發展.而在母語學習環境的包圍下,英語作為符號系統,而顯得枯燥無味,甚至因為沒有賦予適當的經驗信息而變得抽象.不少學生在學了一段時間之後又不喜歡學了,因為難以用於現實,也不易鞏固,45分鍾的英語學習環境也顯得有些無奈.要走出枯燥的課堂,就要充分利用多媒體的特性營造英語學習環境.如教學過程中,經常播放一些原版的英文歌曲,英文歌的特點是旋律活潑優美,唱詞簡單,學生在欣賞的過程中會不由自主地歌唱.這樣不僅提高了學生的聽說能力,而且極大提高了學生的語感.
在教What is this?這個句型時,我精心設計了一套多媒體的游戲.學生最先看到熒屏上出現無數個問號「?」重疊在一起,我按一下播放鍵,當熒屏的右角上一個「?」顯示為一隻長耳朵,學生就會不由自主地用英語說出ear這個單詞,但它究竟是一種什麼動物呢?於是我引出這個英語句型,啟發學生努力去猜測,並且通過輪番地按下播放鍵與暫停鍵,分層次地在熒屏上展示這種動物的各個部位,逐漸從局部到全部,不斷引起學生的好奇心,邊看邊猜邊說英語,這樣就自然而然地形成了現代技術教學的樂境與奇境,充分調動了學生的各種智力因素.現代技術教學展示的形象既能對學生的視覺與聽覺提供一次又一次的強烈刺激,又能讓學生積極地動腦筋,發揮想像力,有利於培養他們的英語思維能力,讓學生自主地去學習,探究,實踐.從而培養學生自主學習的能力.
3 利用多媒體,突出重難點,提高課堂學習的效率
在課堂中,利用多媒體展示本課學習目標或學習任務,同時也展示本課重難點,讓學生一目瞭然,這節課要解決的問題是什麼,然後帶著這些問題進入學習之中.這樣,學生的注意了力很集中.在自主學習中,可以通過合作、討論、探究,解決重難點問題,尤其是難點知識,學生就不會費時間去走彎路,學生通過合作學習和探究學習,可以省時間,大大提高學習效率.
4 利用多媒體,發揮個性特長,增強學習英語的信心
在教學中,我注意到:有些學生記憶較差,但愛好音樂,英語歌曲頗為拿手,有些學生單詞不熟練,但英語書法較為擅長,有些學生不願回答問題,但對朗讀課文極為愛好.根據學生這些情況,我組織了豐富的第二課堂活動,如「英文歌曲排行榜」、「英語朗誦比賽」、「書法展覽」、辦「英語牆報」等,給他們提供展現特長的機會,發展學生的能力,學生在不同形式英語訓練中的成功表現,使他們重新認識了自己,消除了自卑心理,大大增強了學好英語的信心.有了信心,學生上課就會大膽發言,進入角色去學習,英語課堂就「活」起來了,這樣就提高了學生的「聽、說、讀、寫」能力以及語言運用能力和交際能力.切實提高了教育教學質量.
多媒體技術可以將文、圖、聲、像融為一體,運用多種現代化手段對信息進行加工處理,大大增強了人們對抽象事物的理解與感受,使人們在短時間內獲得大量知識和信息.所以利用多媒體計算機進行輔助英語,不僅能增強學生的記憶,而且有利於激發學生的學習興趣和發揮學生的主體作用;有利於培養學生的合作能力和團隊精神,同時也為教師因材施教提供了更好的條件.總之,教師利用多媒體教學,是時代的需要,發展的必然,大大優化了課堂教學,值得我們廣大教師去利用和探究.
C. 如何利用手邊的智能設備提高學習工作效率
現在普遍用的是智能手機了,其實智能手機在很多方面可以給我們的學習和工作帶來幫助的,用手機就可以查找各方面的資料,也可以搜索各方面的視頻,而且現在打字都可以用語音了,非常方便。還有一些APP可以幫助我們學習專業知識,比如《千聊》這個APP就很好,就像是一本網路全書,裡面什麼知識都有。
D. 搞好設備管理工作的前提是什麼具體怎麼做,如何去學習
一是摸清企業都有哪些設備,包括規格、型號、性能,二是學習這些設備的使用、維護保養、檢測維修的要求,三是按照規定檢查這些設備的使用情況,四是對設備進行經濟分析,提高利用率和經濟性能。
E. 結合自己的教育實踐,談談教師在教學過程應當如何充分的使用信息化教學設備輔
進有效開展教學 任何一種教學手段的運用,必須服務、服從於提高學生學習質量和效率這一目標。
1)靈活的形式促進提高學生學習興趣。在小學教學中廣泛應用的投影儀、計算機和電子白板是比較普遍設備。這些設備輔助教學時使用最多的方式,就是充分利用彩色圖文、光影動漫、音頻視頻等製作的課件,對教學內容進行提示、補充和演示。對小學階段的學生來說,這些設備本身和其展示的內容,都容易吸引他們注意力。
2)交互性為學生參與教學活動提供了更廣闊的空間。學生是教學活動的主體,信息化教學平台可以很好體現學生的主體地位,即時性的人機互動、生生互動、師生互動、學習信息傳達及反饋都可通過網路平台方便實現,增強了學生在整個學習活動中的自主性。
3)網路技術的應用為學生學習提供了有效助力。學生在遇到學習難題時,可以通過登錄學校的網站或者是其他平台,反復觀看教師的教學視頻和課件演示,逐步突破難點。同時,學生可以利用網上的專題論壇,與其他學生進行交流互動,相互啟發,相互學習,在交流中提升學習能力,解決學習問題。特別是微課的興起,以一個環節、一個知識點作為一個內容的短視頻,隨時隨地可供學生瀏覽觀看,為學生有效利用時間學習提供了方便[1]。
培養實際運用能力 培養學習實踐能力是素質教育的重要內容。從實踐角度了解和應用信息技術,就是一種實踐能力提升的過程。因此,應在教學中注重培養學生的實際操作能力。
1)提高觀察分析能力。首先,傳統教學中,也不同程度地運用了實體教具、圖片展示等手段。隨著信息化教學的發展,促進教學方式相比以往發生了巨大變化,從課件製作、課堂呈現、課程導入、考核評估等多個環節,信息手段均得到了廣泛應用。各種教學設備的使用,大大提升了教學過程的直觀性。這一直觀性並非使學習變得簡單化,實質上大大增加了課堂信息量,提供更為豐富的學習內容,要求提高學習的有效性,這就對學生的觀察分析能力提出了更高的要求。因此,教師在教學中,應該有意識地引導學生細致觀察、分辨重、難點,深入分析,精心提煉。
2)培養動手能力。現代教育技術設備在增加了學生自主性的同時,直接對學生們的動手能力提出了要求。無論是個人去互聯網上查詢交流,還是課堂上對課件的使用,無論是對設備的操作還是對教具的管理,都需要學生不斷提高動手能力。教師在教學中,必須對學生進行積極的訓練,使學生們在實際操作中,不斷提高動手能力。
3)發展自學能力。現代教育技術設施方便了學生學習,增強了學生學習興趣,在一定程度上解決了愛不愛學的問題。學生在教學活動中擁有多少自主性,是衡量課堂上體現學生的主體地位是否充分的重要指標,要引導學生學會自主學習,培養自學能力。
形成良好行為習慣 好的行為習慣能夠伴隨一生,是一個人取得成功的重要標志。在信息化技術應用背景下的教育教學,應注重學生形成良好行為習慣。
1)形成主動學習習慣。主動學習需要有明確的目標、積極的興趣、穩定的途徑和自我挑戰的態度。在計算機的應用中、在互聯網上,有太多的寓教於樂的軟體和課件,將各種知識和技能融於其中,吸引學生去學習,去挑戰。由原來的負擔,轉變成實現自我價值的需求,要在這個過程中因勢利導,使主動學習的習慣潛移默化中形成。
2)形成規范管理習慣。教室里的電視、投影儀、電腦、白板等設備都有各自的管理要求和流程。學生在教學中能夠直接看到學校和教師對這些設施設備的使用、保養和維護,這也是最直觀的身教範本。要有意識地培養學生觀察、參與這一過程,將其作為培養學生規范習慣養成的一種方法。
3)形成有始有終的習慣。設施設備的使用,從開到關本身就是一個完整的流程;闖關式的課件演示和游戲式的習題測試,也是一個從起點到目標終點的過程。教師在教育教學中要注意通過這些具體過程強化這種有始有終的訓練,使這種行為模式深刻記憶在學生腦海里,最終習慣成自然