試論將μc/os-ii用於微控制器教學
清華大學 邵貝貝
在2003 年天津舉行的「全國微控制器及嵌入式系統學術年會」上, 來自全國各地幾十所大學的教師對微控制器與嵌入式系統教學展開了熱烈的討論。這裡,就我們的認識介紹如下,以達到拋磚引玉的目的。
1 微控制器與嵌入式系統應用類課程的轉型期當前,微控制器與嵌入式系統應用類課程正處在轉型期。
過去的2 0年中,微控制器市場與需求都是以8 位機為主的。最近幾年來,16 位、32位微控制器的嵌入式應用呈迅速增長的趨勢。在一兩年後, 數量上雖然仍會以8 位為多,但32 位微控制器在產值上會超過8 位微控制器,如圖1 、圖2 所示。今後,微控制器應用將呈現8 位、16 位、32位微控制器並舉的格局。由於微控制器系統的需求越來越複雜、積體電路技術發展又非常快,片上儲存器容量不斷擴大, 使得在片上系統的開發中, 使用嵌入式實時作業系統(rtos)成為可能。計算機對於90% 以上的學生都不能是他的專業,而只是一種工具。同各行各業開發微控制器應用的工程師一樣, 非計算機專業的學生來自各個領域,他們不可能將主要精力花在研究作業系統上,而是要把主要精力放在所研究的專業上,他們需要的是把計算機專家們研究的成果直接拿來使用。r t o s 可以將乙個複雜的應用分解成多個任務, 從而簡化應用程式的設計;r t o s 可以保證系統的實時性達到或接近理論上可以達到的最好水平。而多工本身會帶來一系列的問題,主要是任務間的競爭、死鎖、優先順序反轉、任務間同步與通訊等。這些問題有r t o s 為使用者考慮,只要知道r t o s 的原理,會使用就可以了。故微控制器教學的這次轉型, 引入r t o s 概念是一大特點。
2 微控制器教學史的回顧與思考回憶過去我國微控制器教學走過的路,大多數院校都是從8051 走過來的。故8051 在國內普及微控制器應用方面功不可沒。而總結一下由8 0 5 1 教學模式帶來的***,將有利於目前的轉型。
乙個***是,教學中以一片8051 配以不同的外圍電路去適應各種不同的應用。這就忽略了微控制器應用的多樣性和微控制器應用的個性化定位。微控制器姓「單」,世界上的微控制器至少有上千種,每種微控制器都有各自的定位。我們強調的是s oc ,即片上系統,只有將整個系統都整合在乙個積體電路晶元上,才能做到低成本、高可靠性。只有在不得已的情況下,才擴充額外的介面晶元。故應告訴學生,雖然學的是某種微控制器,但針對不同的應用要選擇最適宜的微控制器。微控制器教學要求教師教會學生一種方法, 會用這種微控制器,自然也會用其它微控制器。
過去8051 教學引入的另一誤區是使用**器。如果說過去開發掩膜型微控制器使用**器屬不得已,則如今微控制器都採用了可以反覆擦寫十萬次以上的f l a s h 儲存器,實在沒有必要使用**器。本人在過去2 0 年的微控制器應用開發中,就從來沒有用過**器,並非沒有**器可用,只是不主張使用**器,特別不主張使用**器教學。**器使微控制器開發變得不直觀,**的**器增加了開發成本,也增加了教學的負擔。開發者不可能為每一類微控制器買一種**器,只好以自己有**器的那種微控制器去適應所有的應用,從而誤入歧途。
3 是教學還是培訓我們這裡講的是教學,不是培訓,教學不同於培訓。俗話說,「授之以魚不如授之以漁」。教學是「授之以漁」,授之以解決問題的方法,培養解決問題的能力,是引導學生入門。通過授課與實驗,要求學生能做到三個看懂,看懂原文手冊、看懂硬體原理圖、看懂別人寫的程式。在此基礎上學會如何掌握一種自己不熟悉的微控制器。我們講c p u 硬體結構,講彙編指令集,教學生如何初始化序列口,從而實現與微控制器的c p u 「對話」,進而學會寫監控程式,然後將如何與c 語言介面,以μ c /os-ii 為例,講rtos 基本概念,進而移植μ c/os-ii。
培訓的目的是讓使用者盡快上手,一周乃至三天後就可以開始寫應用程式。培訓是「授之以魚」, 培訓的典型例子是教學生如何使用某微控制器的**器。教學, 強調的是引導學生入門, 只要我們能正確地引導學生入門, 告訴他們什麼是正確的方法,後面的路他們會自己走。
5 教學內容要在穩定的前提下發展8 位、16 位、32 位微控制器將三分天下已是業界共識,作為教學, 穩定至關重要。雖然微控制器技術發展迅速,但開一門微控制器教學的課程並非易事,需要教師、教材、實驗器材等,特別是實驗平台, 需要較大的投入。
教師要有相當的科研經驗,用微控制器做過研發,還要會講。我的經驗是,講一門新課,至少要講到第三年才能說會講了或能講好了。為了穩定, 每年只能更新一小部分內容, 要善於解決穩定和發展快這一對矛盾。rtos的教學可穩定很多年。μc /os 已經十多年了,仍然好用, 雖然每年都有新發展,但基本原理沒有變化,我看μc /os-ii 至少還可以再講10 年;minix 快20 年了,仍是一部好教材。實驗平台也應盡量穩定的時間長一些,既然講述的是開發方法,使用8 位、16 位還是32 位微控制器其實是無所謂的。
由8 位機一統天下,到8 位、16 位、32 位並舉,轉型期定位微控制器與嵌入式應用類課程的切入點在**為好? 本人擬採用了以16 位機 cpu12 為切入點。它比8 位微控制器複雜, 比3 2 位微控制器簡單,外圍介面豐富(比一般32 位機還要豐富),片內r a m 、r o m 資源適中。講述了以彙編寫監控程式開始,到用c 語言寫程式, 再到移植μc /os 這一方法,同樣適於8 位、32 位微控制器。這種方法本身也始於20 年前,逐漸增加rtos 是近8 年的事, 是相對穩定又有發展的。
對沒有條件由8 位機實驗平台轉向16 位、32 位平台的學校,不必強求,仍可使用8 位機平台。若使用的教學平台有幾kb 的ram、幾十kb 的flash,用於μ c /os-ii 作rtos 教學已足夠好,但希望不要再用**器,而採用我們從寫乙個簡單的監控程式,到移植μ c /os的教學法。不必過多地講授各種i/o 介面的使用方法,讓學生在寫乙個簡單監控程式的基礎上自己去驅動這些i/o 模組。
有條件直接公升級到3 2 位微控制器也是一種選擇。不少學校選用了以a r m 為c p u 的微控制器,但請注意三點。一是定位, 若課程定位在非計算機專業的學生, 執行μc/os 之類r t o s,可選擇片內有幾kb 、十幾kb 的r a m、幾十kb 的f l a s h 、可工作在單片方式下的a r m , 這樣會使教學平台很便宜。第二點是不要炒作, 不要一哄而上。a r m 的應用定位很明確, 是一切與**有關的可攜式低功耗應用。a r m 是32 位c p u ,並不是全部32 位微控制器。以arm 為cpu 擴以幾mb 乃至十幾mb sdram、flash 的、可以上linux 的昂貴平台,只適用於針對某類產品開發應用的培訓,不適於用來教學, 因為l i n u x 在pc 機上也能跑。第3 點是學時與學生的基礎,32 位微控制器對於沒有8 位微控制器基礎的學生是很難掌握的, 沒有足夠的學時,a r m 底層的東西是很難掌握的。
6 關於課程的定位
課程定位不同,即授課物件不同,課程的內容可以很不一樣,但都必須符合學習的客觀規律。我們有2 門微控制器與嵌入式應用課程, 一門定位於電類本科生(我係核電子學專業), 名為「微控制器認識與實踐」,3 2 學時, 只講簡單8 位微控制器的入門知識, 不講r t o s , 面向還沒有學過數位電路課程,對微控制器有興趣的2 年級電類本科生。
由於物理學對計算機的需求幾乎是無限的,故像網際網路這樣的計算機技術最先源於物理學的需求。我們係對部分本科生計算機能力的要求是很高的。接下來,部分學生將做乙個微控制器應用方面的srt (student research and training program) 專案,清華對srt有專門的經費支援。學生設想乙個簡單的微控制器應用原理性演示題目,利用課餘時間,花半年到一年,設計一塊印刷線路板、再把軟體調出來,優秀作品可拿到每年的學生科展上評獎,甚至參加學生挑戰盃的角逐。這些學生在畢業設計中,一般會做乙個微控制器應用方面的課題。這樣上來的研究生甚至可以幫助我當研究生課輔導實驗的小教師。
另一門課程是定位於全校非計算機專業的各系研究生, 特別是那些可能在研究生課題中用到微控制器的各專業學生。我們講以c p u 1 2 為核心的1 6 位微控制器和基於μc/os-ii 的rtos。這兩部分內容共安排課內64 學時,其中授課與教師指導下的實驗約各佔一半。按校方要求,這類課程原則上課內、外學時之比為1 ∶2 ,即學生課外要花1 2 8 學時讀書和進行無輔導下的實驗。由於學生來自不同學科、不同專業, 在微控制器應用方面水平很不一樣。計算機技術的發展是各行各業需求拉動的, 而計算機技術的發展促進了需求。這裡, 需求是矛盾的主要方面。而個別研究生, 特別是外校考入我校的非電類研究生,甚至沒有學過微機原理之類課程。這裡我們只能假設選修這門課的同學都有數位電路課的基礎, 會用c 語言寫程式。由於水平的參差不齊,及學生個人可能安排的課外學時的差異,到課程結束時, 每個人到達的水平也是很不一樣的, 故只能是各按步伐、共同前進。
教學、開課要符合學生認、知的客觀規律,是由簡單到複雜,由8 位到16 位、32 位,由彙編到c,到rtos。
要切記防止浮躁,也要教導我們的學生防止浮躁。我們能做到的僅僅是領學生入門而已,能指出乙個大致正確的方向,不誤人子弟已屬難得。後來,能成為it 高手的,不是我們培養的,而是通過他們自己艱辛努力實現的。
微控制器彩燈移動實驗 基於微控制器的廣告移動彩燈
基於微控制器的廣告移動彩燈 摘要隨著電子技術的迅速發展,微控制器得到了越來越多的應用。本設計用微控制器89s51結合led 發光二極體 製作了乙個廣告移動彩燈,它由一塊89s51組成,通過逐次掃瞄其中一塊的p2.0 p2.7口,從而依次實現彩燈輪流點亮 逐點點亮 間隔點亮。如果控制交流彩燈,可在p1...
微控制器廣告燈實驗總結 基於微控制器的廣告燈實驗方案
1 實驗任務 利用取表的方法,使埠p1做單一燈的變化 左移2次,右移2次,閃爍2次 延時的時間0.2秒 2 電路原理圖 圖4.5.1 3 系統板上硬體連線 把 微控制器系統 區域中的p1.0 p1.7用8芯排線連線到 八路發光二極體指示模組 區域中的l1 l8埠上,要求 p1.0對應著l1,p1.1...
微控制器廣告燈實驗總結 基於微控制器的廣告燈實驗方案
基於微控制器的廣告燈實驗方案 實驗任務 利用取表的方法,使埠 p1做單一燈的變化 左移 次,右移 次,閃爍 次 延時的時間 0.2秒 電路原理圖 圖4.5.1 3 系統板上硬體連線 把微控制器系統區域中的 p1.0 p1.7 用芯排線連線到八路發光二極體指示模組區域中的 l1l8 埠上,要求 p1....