武永華,左瑞娟(.福建江夏學(xué)院,福州 35008 .福建師范大學(xué),福州 350007)
?
應(yīng)用型本科院校電子信息工程專業(yè)《嵌入式系統(tǒng)》課程架構(gòu)設(shè)計
武永華1,左瑞娟2
(1.福建江夏學(xué)院,福州350108 2.福建師范大學(xué),福州350007)
摘要:
關(guān)鍵詞:
《嵌入式系統(tǒng)》課程是一門實踐性很強的課程,該課程主要培養(yǎng)學(xué)生的實踐動手能力。是對學(xué)生綜合能力與創(chuàng)新能力的考查。本文以電子信息工程專業(yè)學(xué)生為背景,以培養(yǎng)應(yīng)用型人才為目標(biāo),對《嵌入式系統(tǒng)》課程教學(xué)架構(gòu)進行了深層次的三層剖析。
《嵌入式系統(tǒng)》課程涉及軟件、硬件、嵌入式操作系統(tǒng)、應(yīng)用程序開發(fā)[1]。課程的設(shè)計必須要和模電、數(shù)電、單片機、、微機原理、C語言、數(shù)據(jù)結(jié)構(gòu)等關(guān)聯(lián)課程知識相結(jié)合。學(xué)習(xí)該課程是目的是培養(yǎng)知識的綜合運用的能力。課堂的講授和實驗是遠遠不夠的,本文將從以培養(yǎng)應(yīng)用型人才為目標(biāo),在結(jié)合電子信息工程專業(yè)知識體系軟硬結(jié)合的特點,對本課程的技能和能力培養(yǎng)相關(guān)課程內(nèi)容、實踐教學(xué)方式和項目帶動課程內(nèi)容的吸收等環(huán)節(jié)進行了整理,對嵌入式《系統(tǒng)課程》架構(gòu)模型進行了研究,并以此構(gòu)建適應(yīng)培養(yǎng)創(chuàng)新型人才的嵌入式系統(tǒng)課程架構(gòu)設(shè)計。
根據(jù)電子專業(yè)的課程特點,將整個課程分為三個教學(xué)層次,如下圖1所示,一是課程基礎(chǔ)內(nèi)容介紹,二是基于S3C2410硬件資源裸機教學(xué)內(nèi)容[2],三是基于S3C2410 Linux[3]操作系統(tǒng)內(nèi)容,采用分層次分內(nèi)容的課程架構(gòu)設(shè)計。
圖1 課程的三個教學(xué)層次
1.1課程基礎(chǔ)內(nèi)容設(shè)計
該課程基礎(chǔ)內(nèi)容的講解主要包括兩個大方向,一是嵌入式系統(tǒng)開發(fā)過程,二是S3C2410 ARM體系結(jié)構(gòu)。
嵌入式系統(tǒng)的開發(fā)過程要讓學(xué)生了解嵌入式電子產(chǎn)品的開發(fā)流程,要理解源代碼的編寫、編譯和鏈接、下載鏡像文件到開發(fā)板以及最重要的交叉調(diào)試的過程。一般通過在源代碼中加入串口的Print語句在串口端來分析程序運行的狀況,來完成調(diào)試程序的過程,這是目前電子行業(yè)調(diào)試程序通用的最簡單的調(diào)試方法。該部分內(nèi)容需要1-2個學(xué)時。
S3C2410 ARM體系結(jié)構(gòu)[4]首先要讓學(xué)生深刻理解ARM公司是IP的供應(yīng)商,本身并沒有生產(chǎn)IC,其次要了解ARM的9種尋址方式和寄存器組織圖以及流水線步驟,第三要掌握程序數(shù)據(jù)的訪問均要通過加載(Load)/存儲(Store)指令進行以及對應(yīng)的ARM的指令系統(tǒng)。該部分設(shè)計匯編指令較多,建議只是講解一下基礎(chǔ)的幾個指令即可。該部分內(nèi)容需要4-6個學(xué)時。
1.2S3C2410硬件資源裸機教學(xué)內(nèi)容設(shè)計
本部分主要針對S3C2410的硬件資源進行一系列的教學(xué)設(shè)計。S3C2410硬件資源的學(xué)習(xí)采用實驗箱原理圖、寄存器和IC的規(guī)格書、C程序的三層架構(gòu)。這樣可以讓學(xué)生更深刻理解電子產(chǎn)品的開發(fā)工作,不僅僅只是寫代碼,原理圖和寄存器也要深刻了解,這樣才能寫出穩(wěn)定性強的代碼。特別是讓學(xué)生看懂寄存器和怎么利用寄存器調(diào)試碰到的問題。該部分主要包括以下8個小節(jié),需要32個學(xué)時。是本課程的重點部分。
(1)基于ARM匯編語言和C語言程序設(shè)計
本小節(jié)讓學(xué)生了解ARM匯編語言的基本框架和C語言的基本架構(gòu),學(xué)會使用ARM的簡單的匯編語言編程和C語言編程。同時了解在Windows環(huán)境下ARM編譯環(huán)境的搭建。
(2)基于ARM的硬件Boot啟動程序設(shè)計
本小節(jié)主要讓學(xué)生理解裸機程序Boot的啟動過程。復(fù)雜的片上系統(tǒng)中多數(shù)硬件模塊都是可配置的,需要由軟件來預(yù)先設(shè)置其需要的工作狀態(tài),因此在用戶的應(yīng)用程序之前,需要由專門的一段代碼來完成對系統(tǒng)基本的初始化工作。由于此類代碼直接面對處理器內(nèi)核和硬件控制器進行編程,故一般均用匯編語言實現(xiàn)。學(xué)生要深刻理解中斷向量表。
(3)ARM的I/O接口
本小節(jié)首先讓學(xué)生看懂實驗箱原理圖,明確要知道兩個LED燈和S3C2410的那兩個GPIO管腳相連的走線,由于S3C2410芯片采用FBGA封裝,所以管腳在芯片底部,這個要讓學(xué)生看S3C2410的底部封裝尺寸圖。其次看懂對應(yīng)GPIO管腳的控制寄存器包括GPXCON、GPXDAT、GPXUP,最后要從代碼部分知道關(guān)于寄存器宏定義語句的方式和關(guān)于GPIO管腳某位BIT采用相與和相或的方式來置位和清零,這是在程序中最基本的操作方式,只操作自己需要的BIT而不能改變其他BIT。
(4)ARM的中斷
掌握ARM9的中斷原理,能夠?qū)3C2410的中斷資源及其相關(guān)中斷寄存器的進行合理配置。學(xué)習(xí)響應(yīng)外部中斷請求的配置方法,并通過響應(yīng)定時器中斷,執(zhí)行中斷服務(wù)子程序使CPU板上的LED指示燈LED1、LED2閃爍。
定時器的初始化程序是重點,要產(chǎn)生一秒的定時間中斷,必須設(shè)定TCFG0、TCFG1、TCNTB1、TCON。通過S3C2410的16 Bit PWM定時器方框圖來了解這幾個寄存器的之間的關(guān)系,在此基礎(chǔ)上請學(xué)生編寫0.5秒和2秒的定時程序。
(5)ARM的DMA傳送方式
本小節(jié)讓學(xué)生深刻理解DMA數(shù)據(jù)傳送方式,這種方式是存儲器與外設(shè)在DMA控制器的控制下,直接傳送數(shù)據(jù)而不通過CPU,這樣CPU可以去處理其他任務(wù)。ARM的DMA通道有4個,要理解DMA通道的初始源寄存器、初始源控制寄存器、初始目標(biāo)寄存器、初始目標(biāo)控制寄存器。本小節(jié)初始源為存儲器、初始目標(biāo)為串口。同時要重點強調(diào)學(xué)生理解S3C2410的結(jié)構(gòu)框圖。理解掛載在APB,AHB總線上的DMA控制器和串口。
(6)ARM的A/D接口
S3C2410的A/D轉(zhuǎn)換器包含一個8路模擬輸入混合器。通過實驗箱原理圖,讓學(xué)生清楚知道是采用哪一路A/D。A/D接口涉及的寄存器主要是兩個ADCCON 和ADCDAT0。A/D采集程序設(shè)計的一般步驟是啟動AD、選擇通道、等待轉(zhuǎn)換結(jié)束、獲取轉(zhuǎn)換結(jié)果四個步驟,這個部分的內(nèi)容是學(xué)生必須深刻理解的一個知識點。
(7)基于HD7279A的七段數(shù)碼管和鍵盤的控制[5]
鍵盤和數(shù)碼管接口控制芯片HD7279的應(yīng)用對于電子專業(yè)的學(xué)生是一個經(jīng)典電路應(yīng)用,此款芯片最多可以同時接8個數(shù)碼管和64個按鍵。學(xué)生要通過實驗箱原理圖看懂S3C2410和HD7279的連接方式(4線:CS、CLK、DATA、KEY)。通過HD7279的Datasheet,掌握HD7279的典型應(yīng)用電路。程序設(shè)計首先通過GPIO仿真出HD7279的控制時序圖,然后才能操作HD7279的寄存器,可以讓學(xué)生寫部分測試程序,包括閃爍、左移等操作。
(8)基本輸入輸出接口
本小節(jié)內(nèi)容主要是讓學(xué)生掌握S3C2410和外圍芯片74LS244&74LS243輸入輸出控制。通過74LS244接收按鍵狀態(tài),然后輸出至74LS243的LED來顯示。通過原理圖要知道這些芯片的片選地址,同時讓學(xué)生要體會到這些芯片都是掛載在總線上的。
這些教學(xué)內(nèi)容是脫離操作系統(tǒng)的Hardware,通過這部分知識的學(xué)習(xí)可以掌握ARM硬件的架構(gòu)和軟件的啟動過程、運行過程,真正理解ARM芯片級的應(yīng)用。
2.3S3C2410 LINUX系統(tǒng)教學(xué)內(nèi)容設(shè)計
在熟悉ARM的硬件資源后,本部分內(nèi)容主要是基于ARM的Linux系統(tǒng),學(xué)生要熟悉Linux基本命令操作。這部分內(nèi)容是難點,學(xué)生要掌握交叉編譯環(huán)境的建立、BootLoader&Kernel&FS這三部分源碼的編譯、鏡像文件的形成和鏡像文件的下載、驅(qū)動程序的設(shè)計、應(yīng)用程序的設(shè)計,該部分內(nèi)容大概需要26課時左右。
(1)Linux基本命令的操作,熟悉VMware的安裝,并導(dǎo)入Linux虛擬機,在Linux終端下面讓學(xué)生練習(xí)一些基本的Shell命令,包括CP、RM、Tar、Chmod、Mount等命令。讓學(xué)生初步了解Linux的環(huán)境和命令操作。
(2)Bootloader-vivi的編譯、下載鏡像文件、vivi模式下命令的輸入。這部分的內(nèi)容首先要在虛擬機上安裝S3C2410的交叉編譯工具鏈,然后在官網(wǎng)下載vivi的源碼,通過編譯器完成編譯,并通過串口調(diào)試工具或者JLINK燒錄鏡像文件到ARM開發(fā)板上面。
(3)內(nèi)核和文件系統(tǒng)的編譯、下載。這部分內(nèi)容首先要下載官網(wǎng)的源碼,然后經(jīng)過裁剪、移植后變成可以在開放板上運行的Linux。由于移植內(nèi)核所涉及的內(nèi)容較多,且也較復(fù)雜,一般也不必太過關(guān)心,網(wǎng)絡(luò)上有專門的非官方組織在完善該事情。學(xué)生所做的移植也偏重于應(yīng)用。內(nèi)核的編譯通過make dep、make clean、make zImage生成鏡像文件。在宿主機架設(shè)NFS服務(wù)器,然后在ARM開發(fā)板通過mount命令把內(nèi)核鏡像和文件系統(tǒng)加載到開發(fā)板上面,通過網(wǎng)絡(luò)燒寫軟件imagewrite更新內(nèi)核和root文件系統(tǒng)到ARM開發(fā)板。
(4)設(shè)備驅(qū)動程序是Linux內(nèi)核和硬件之間的接口。通過填充file_operations的各個域,并編寫子函數(shù)來完成設(shè)備驅(qū)動程序的設(shè)計。
(5)應(yīng)用程序開發(fā)首先設(shè)計完成簡單的hello.c編輯、makefile的生成、編譯、動態(tài)加載運行或者加入文件系統(tǒng)運行。其次結(jié)合裸機的按鍵驅(qū)動模塊,完成按鍵輸出到串口的應(yīng)用程序設(shè)計。
《嵌入式系統(tǒng)》課程是一門實踐性較強的課程,通過建立不同層次的孤立知識點的聯(lián)系,提高理論內(nèi)容和實踐項目的貼合度,讓學(xué)生充分體會到做嵌入式項目的樂趣。本文構(gòu)建的《嵌入式系統(tǒng)》課程架構(gòu)在實際教學(xué)中富有成效,取得了良好的教學(xué)效果,使很多學(xué)生能夠掌握嵌入式項目基本開發(fā),大大提高學(xué)生嵌入式系統(tǒng)設(shè)計的開發(fā)能力。
參考文獻:
[1]白華,張誠,高華. CDIO模式在《嵌入式系統(tǒng)》教學(xué)中的應(yīng)用探討[J].教育教學(xué)論壇,2013(50):67-68.
[2]徐英慧,馬忠梅,王磊,王琳. ARM9嵌入式系統(tǒng)設(shè)計-基于S3C2410與Linux(第3版)[M].北京:北京航空航天大學(xué)出版社,2015.5.
[3]王琳等.嵌入式系統(tǒng)專業(yè)中Linux操作系統(tǒng)教學(xué)研究與設(shè)計[J].計算機教育,2014(24):77-81.
[4]杜春雷. ARM體系結(jié)構(gòu)與編程(第2版)[M].北京:清華大學(xué)出版社,2015,8.
[5]葉克江.鍵盤顯示專業(yè)器件HD7279的接口設(shè)計[J].電子設(shè)計工程,2009,17(3):122-125.
Architecture Design of Embedded System Course of Electronic Information Engineering Specialty for Application-Oriented Colleges and Universities
WU Yong-hua1,ZUO Rui-juan2
(1. Fujian Jiangxia University,F(xiàn)uzhou 350007;2.Fujian Normal University,F(xiàn)uzhou 350007)
Abstract:
Keywords:
《嵌入式系統(tǒng)》課程是一門軟硬結(jié)合的課程。結(jié)合應(yīng)用型本科電子專業(yè)特點,提出該課程的分層次分內(nèi)容的三層課程架構(gòu)設(shè)計,充分考慮該專業(yè)學(xué)生軟硬件能力,結(jié)合每次實驗的原理圖、寄存器、代碼三個內(nèi)容,使學(xué)生能扎實理解并掌握嵌入式課程的基礎(chǔ)設(shè)計并進行二次項目開發(fā)。
嵌入式;原理圖;寄存器;軟硬結(jié)合;應(yīng)用型
基金項目:
福建省教育廳A類(No.JA15105)
文章編號:1007-1423(2016)13-0029-04
DOI:10.3969/j.issn.1007-1423.2016.13.008
作者簡介:
武永華,男,講師,工程師,碩士研究生研究方向為嵌入式系統(tǒng)開發(fā)
左瑞娟,女,講師,碩士研究生,研究方向為模式識別、人工智能、嵌入式系統(tǒng)
收稿日期:2016-02-02修稿日期:2016-04-06
Embedded System course is one course of hardware-software. Combines with characteristics of electronic information engineering specialty,and proposes three layers structure design of level-division and content-division for this course. Also considers student capability of software and hardware for this specialty,combines with three contents of schematic diagram,register,code for every experiment,and this method lets student master base design of Embedded System course and also easily makes secondary project development.
Embedded;Schematic Diagram;Register;Hardware-Software;Application-Oriented