現在,人們生活中的每個角落都有嵌入式設備的存在,比如數碼相機、移動電話、TV機頂盒及掌上電腦等等。這些嵌入式設備多采用32位RISC嵌入式處理器作為核心部件。
其中基于ARM核的嵌入式處理器獨占鰲頭,在32位RISC處理器中占據超過75%的市場份額。ARM核嵌入式處理器通常采用C語言編程,目前ARM公司的開發工具ADS、RealView以及Keil與arm核處理器結合較好,得到了廣大嵌入式學習者的一致認可。
在傳統的嵌入式系統學習中,嵌入式開發平臺是必不可少的。其中資源少的開發平臺便宜但功能較少,資源多的開發平臺又價格不菲,這對廣大的嵌入式愛好者無疑是個障礙。然而,有沒有在不增加甚至降低開發成本的同時還能進行同樣或更好的開發呢?本文介紹的Proteus軟件就是一個可以完全脫離硬件平臺來學習嵌入式系統進行虛擬開發的利器,可以說是嵌入式系統學習的一次革命。
1 Proteus簡介
Proteus軟件是英國Labcenter electronics公司的EDA工具軟件,是一個電子設計的教學平臺、實驗平臺和創新平臺,涵蓋了電工電子實驗室、電子技術實驗室、單片機應用實驗室等的全部功能。
其革命性的功能是將電路仿真和微處理器仿真進行協調,直接在基于原理圖的虛擬原型上進行處理器編程調試,并進行功能驗證,通過動態器件(如電機、LED、LCD、開關等),配合系統配置的虛擬儀器(如示波器、邏輯分析儀等),可實時看到運行后的輸入輸出的效果,其主要特點如下:
(1)可以仿真、分析各種模擬器件和集成電路,其支持Pillips公司系列的arm(LPC系列),Proteus的仿真是基于SPICE3F5的,因此它也能像其它的EDA軟件那樣進行電路分析,如模擬分析、數字分析、混合信號分析、頻率分析等等;
(2)提供了虛擬示波器、邏輯分析儀、信號發生器、計數器、電表、Virtual Terminal等虛擬儀器儀表供選擇;
(3)能夠進行SCH(原理圖)和PCB(印刷板)電路的設計;
(4)其自身只帶匯編編譯器,不支持C語言。但可以將它與Keil、ADS集成開發環境連接,將用匯編和C語言編寫的程序編譯好之后,可以立即進行軟、硬件結合的系統仿真,達到很好的仿真效果。
2 Proteus環境下的系統設計與仿真
Proteus和PROTEL、EWB等軟件相似,繪制原理圖都要先從器件庫里取出所需的元器件符號并在繪圖區布局好,同時編輯好元件的參數,接著進行連線,添加必要的網絡標號等步驟。下面通過一個簡單的實例說明如何使用Proteus軟件實現arm(以LPC2124為例)系統設計與仿真。實例以 LPC2124控制器為核心,與L297、L298組成步進電機控制器,添加必要的外圍電路,實現對步進電機的正、反轉控制。
2.1 電路原理圖的設計
運行Proteus VSM的ISIS后出現如圖1所示的主窗口界面,點擊“File”—“New Design”新建一個設計項目。接下來就是在其中所需的添加元器件了,點擊元器件添加按鈕會彈出“Pick Devices”對話框,在其中選擇需要添加的元器件,添加到器件列表區中。然后再依次點擊列表區里的元器件,把它們放到繪圖區并編輯其屬性,接著進行合理的布局之后,就可以進行連線了。與PROTEL類似,Proteus也具有自動捕捉節點和自動布線功能,連線時當鼠標的指針靠近一個對象的引腳時,跟著鼠標的指針就會出現一個“×”提示符號,點擊鼠標左鍵即可畫線,在終點再點擊確認一下就完成一段導線,所有導線畫完后,點擊電源按鈕,添加必要的電源和接地符號,并編輯其屬性后,原理圖的繪制就完成了,如圖2所示。
2.2 程序代碼的編寫
程序代碼的編寫主要分四個部分進行:
(1) LPC2124的初始化代碼;
(2) LPC2124異常向量入口及異常向量與C語言代碼的接口,包括初始化堆棧的代碼;
(3) LPC2124目標板特殊的代碼,包括異常處理程序和目標板初始化程序;
(4) 根據我們實例要求,結合原理圖,編寫實現預期功能的代碼,即通常的執行代碼,代碼文件保存為“main.c”。
通常,為了節省開發者的時間,通常把這些文件保存在一個文件夾里,暫且把文件夾命名為“lpc2124模塊”,這樣在以后的程序代碼編寫時就可以直接調用這個模塊,再根據不同的要求改寫“main.c”就行了,而不必要又重新編寫這些程序,節省了大量時間,大大提高了工作效率。
這里主要說明“main.c”的編寫,要實現的功能是用LPC2124控制器、LP297、L298組成的步進電機控制 器,控制步進電機的運轉,原理圖中可以看到各元器件引腳的連接,圖中還設置了七個電壓探針,用數字圖表顯示各電壓節點的電平隨時間變化的曲線。KEY鍵控制電機的正反轉(KEY鍵按下則電機反轉)。程序流程圖如圖3所示。根據程序流程圖編寫好執行代碼文件“main.c”。
圖3 程序流程圖
圖4 ADS編譯環境窗口
2.3 仿真
文中采用ADS集成開發環境進行程序的編譯連接設置,ADS集成開發環境是ARM公司推出的ARM核微控制器集成開發工具,英文全稱為ARM Developer Suite,成熟版本為ADS1.2。ADS1.2支持ARM10以前的所有arm系列微控制器,支持軟件調試,支持匯編、C和C++源程序,具有編譯效率高、系統庫功能強等特點。
打開ADS1.2集成開發環境CodeWarrior IDE,點擊Project→New Project建立一個新的工程lcd.mcp,把以上編好的代碼文件全部添加進工程,如圖4所示。進行相關設置后,選擇Project→Make命令,編譯并連接工程,生成stepper.hex文件。
在原理圖中右擊微控制器LPC2124,再單擊,出現一屬性設置窗口Edit Component,如圖5。在其中的Program File中添加上面生成的stepper.hex文件的路徑,單擊OK完成設置。
點擊原理圖左下角中的運行按鈕,即開始仿真運行。
仿真結果如圖6所示。數字圖表顯示各電壓節點的電平值隨時間變化的曲線,步進電機按要求運行,按下KEY鍵電機反轉。仿真結果完全符合設計要求。
圖5 器件編輯窗口
圖6 仿真結果圖
3 結語
通過以上簡單的步進電機控制系統設計過程可以看出,用Proteus軟件進行ARM虛擬開發的優勢所在。使用Proteus進行arm的虛擬開發,不僅可以減少實驗硬件資本的投入,還突破了實際開發板中實驗內容的局限性,使開發者能夠充分發揮自身的主動性。使用Proteus仿真,大大降低了開發成本,提高了開發效率。筆者相信隨著電子技術的不斷發展、完善,基于軟件的硬件虛擬開發的應用將會發揮越來越重要的作用。