《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系統(tǒng)設(shè)計
基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系統(tǒng)設(shè)計
摘要: 近年來,,嵌入式系統(tǒng)設(shè)備全面滲透到人們?nèi)粘I畹母鱾€領(lǐng)域,,本文針對智能家居嵌入式系統(tǒng)的軟硬件設(shè)計需求,,以S3C44B0X為處理器進行智能家居系統(tǒng)的硬件設(shè)計,,以實現(xiàn)μC/OS-Ⅱ在S3C44B0X上的移植。
關(guān)鍵詞: ARM μC/OS-Ⅱ S3C44B0X 智能家居
Abstract:
Key words :

      隨著社會經(jīng)濟的飛速發(fā)展及計算機控制技術(shù)等科技的進步,,人們對自身的生活和工作環(huán)境有了更高的要求,,由此對家居智能化控制系統(tǒng)的要求也越來越緊迫。設(shè)計家居智能化控制系統(tǒng),,對促進住宅現(xiàn)代化建設(shè)具有重要意義,。

      家居智能化控制系統(tǒng)就是指利用先進的計算機技術(shù),、網(wǎng)絡(luò)通信技術(shù)、綜合布線技術(shù),,將與家居生活相關(guān)的各種子系統(tǒng)有機結(jié)合,,從而進行統(tǒng)籌管理,使家居生活更加舒適,、安全,、有效。

  近年來,,嵌入式系統(tǒng)設(shè)備全面滲透到人們?nèi)粘I畹母鱾€領(lǐng)域,,本文針對智能家居嵌入式系統(tǒng)的軟硬件設(shè)計需求,以S3C44B0X為處理器進行智能家居系統(tǒng)的硬件設(shè)計,,以實現(xiàn)μC/OS-Ⅱ在S3C44B0X上的移植,。

  1 軟硬件選擇
  目前主要的嵌入式處理器類型有386EX,SC-400,,Power PC,,MIPS,ARM/Strong,,ARM系列等,,其中ARM以其小體積、低功耗,、低成本,、高性能成為嵌入式處理器首選。S3C44B0X是Samsung公司推出的16/32位RISC處理器,,基于ARM7TDMI內(nèi)核,提供3級流水線結(jié)構(gòu),。它一方面具有ARM處理器低功耗,、高性能的特點,同時又具有非常豐富的片上資源,。其特點如下:
 
  (1)內(nèi)置鎖相環(huán)(PLL),,系統(tǒng)主頻最高達(dá)66 MHz;
  (2)8路10位ADC,,I2C,,I2S總線控制器,6個PWM定時器,;
  (3)4種工作模式,,正常、慢速,、閑置和停止,,可以根據(jù)需要切換系統(tǒng)工作方式,,使系統(tǒng)功耗降低到最低限度;
  (4)內(nèi)置彩色LCD控制器(最大支持256色的DSTN),,71個通用可編程I/O口和實時時鐘(RTC),。
  由此可以看出,S3C44BOX具有高性能,、低功耗,、接口資源豐富的特點。這些特點可以較好地滿足家居智能控制系統(tǒng)的設(shè)計需要,。作為家居智能控制系統(tǒng),,除了具有局域網(wǎng)接口、PSTN接口,、RS 485接口,、藍(lán)牙接口外,還應(yīng)提供音頻視頻接口,、HUB接口,、報警傳感器接口等。這些接口可以實現(xiàn)音頻視頻自動切換,、多臺PC同時上網(wǎng),、與各PC機結(jié)合完成家庭設(shè)備管理等功能。
  μC/OS-Ⅱ是一種源碼公開的實時嵌入式操作系統(tǒng),。它完全是占先式的實時內(nèi)核,,是基于優(yōu)先級的,即總是讓就緒態(tài)中優(yōu)先級最高的任務(wù)先運行,,因此實時性比非占先式的內(nèi)核要好,。它包含了實時內(nèi)核、任務(wù)管理,、時間管理,、任務(wù)問通信同步(信號量、郵箱,、消息隊列)和內(nèi)存管理等功能,;它的絕大部分代碼用C語言編寫,可移植性強,。目前,,μC/OS-Ⅱ絕大多數(shù)可以在8位、16位,、32位以至64位微處理器,、微控制器、數(shù)字信號處理器(DSP)上運行。
  2 智能家居硬件設(shè)計
  在選定了處理器之后,,外圍電路就可按要求進行設(shè)計,。其硬件框圖如圖1所示,主要包括:
圖1 智能家居硬件總體構(gòu)架
  2.1 存儲器系統(tǒng)
  其中靜態(tài)存儲器由FLASH組成,,用于存儲智能家居中的嵌入式操作系統(tǒng),、HTTP服務(wù)器、家庭網(wǎng)絡(luò)服務(wù)器以及支持各種服務(wù)所需的文件系統(tǒng),。動態(tài)存儲器采用SDRAM,,以提高系統(tǒng)的允許速度和采用操作系統(tǒng)來保證系統(tǒng)的穩(wěn)定性,整個智能家居系統(tǒng)軟件平臺存儲在FLASH中,,在系統(tǒng)啟動時,,將從FLASH中運行Boot-loader,解壓縮操作系統(tǒng),,并將其搬移到SDRAM中,,完成搬移之后,所有程序從SDRAM中運行,。其中,,F(xiàn)LASH選用SST公司生產(chǎn)的SST39VF160芯片。39VF160采用CMOS工藝設(shè)計,,支持1 M的地址空間,,20條地址總線,16條數(shù)據(jù)總線,。SDRAM選用Hynix公司生產(chǎn)的HY57V641620芯片,。HY57V641620存儲容量為4組×16 M(8 MB),由于采用行/列地址鎖存機制,,由行列地址共同構(gòu)成20條地址線,,完成1 M的尋址范圍。
  2.2 輸入/輸出系統(tǒng)
  包含LCD液晶顯示,、鍵盤以及微型打印機等,,可以基本滿足測試數(shù)據(jù)等顯示以及人機交互的需要。
  2.3 外部通訊接口
  包括RS 232串口,、以太網(wǎng)接口,。RS 232接口用于系統(tǒng)同PC機之間的通訊,,可以把測試系統(tǒng)保存的數(shù)據(jù)導(dǎo)出來,,本系統(tǒng)采用國際通用的RS 232C作為串行接口;以太網(wǎng)接口則可以把整個測試系統(tǒng)連接到互聯(lián)網(wǎng)上,,從而實現(xiàn)該測試系統(tǒng)的遠(yuǎn)程監(jiān)控,。
  2.4 藍(lán)牙通信模塊
  在家居控制器上使用藍(lán)牙技術(shù)主要是為了給家居控制器的各個功能模塊提供無線傳輸?shù)姆绞健T诩揖又醒肟刂破魃峡梢圆捎盟{(lán)牙模塊加開放藍(lán)牙協(xié)議的方式開發(fā)藍(lán)牙功能,綜合考慮成本,、結(jié)構(gòu)等因素,,信息家電可以采用藍(lán)牙模塊加單片機的方式實現(xiàn)藍(lán)牙功能。將整個藍(lán)牙核心協(xié)議棧移植到單片機中顯然不合實際,,可以采用這樣的開發(fā)方案:在藍(lán)牙HCI層的基礎(chǔ)上,,根據(jù)信息家電信息傳輸?shù)膶嶋H需求,建立相關(guān)協(xié)議,,利用單片機直接和藍(lán)牙硬件模塊交換HCI指令,,實現(xiàn)信息交互。單片機采集信息家電的相關(guān)信息通過藍(lán)牙模塊發(fā)送出去,,藍(lán)牙模塊也可以將接收到的命令用HCI指令傳遞給單片機執(zhí)行,。
   2.5 溫度、濕度檢測和實時時鐘實現(xiàn)模塊
   主要實現(xiàn)對室內(nèi)環(huán)境的監(jiān)控,,便于控制系統(tǒng)采取適當(dāng)?shù)姆绞娇刂剖覂?nèi)環(huán)境,。其中溫度采用溫度傳感器實現(xiàn),實時時鐘采用S3C440BX自帶的RTC模塊實現(xiàn),。
  3 μC/OS-Ⅱ在S3C44B0X上的移植
  μC/OS-Ⅱ在S3C44B0X上的移植,,需要修改3個與ARM體系相關(guān)的文件:OS_CPU.H,OS_CPU_C.C,,OS_CPU.ASM,。在μC/OS-Ⅱ的移植過程中,采用ADS作為編譯器,,ADS由一套完備的應(yīng)用程序構(gòu)成,,可用來編寫和調(diào)試ARM系列的RISC處理器的應(yīng)用程序,并可通過主機和實時分析工具讓使用者對應(yīng)用程序進行完整的分析,,加速實時嵌入式系統(tǒng)的開發(fā)和測試,。
  3.1 設(shè)置OS_CPU.H中與處理器和編譯器相關(guān)的代碼
  這部分代碼的定義主要包括數(shù)據(jù)類型的定義、開關(guān)中斷代碼的宏定義,、任務(wù)切換時執(zhí)行代碼的定義和堆棧增長方向的定義,。在S3C44B0X中,所有的任務(wù)堆棧都是用OS_TSK聲明數(shù)據(jù)類型,,用OS_ENTER_CRITI-CAL()和OS_EXIT_CRITICAL()實現(xiàn)開關(guān)中斷,,用結(jié)構(gòu)常量OS_STK_GROWTH來指定堆棧的生長方式。
  3.2 編寫與操作系統(tǒng)相關(guān)的函數(shù)OS_CPU_C.C
  μC/OS-Ⅱ定義了6個函數(shù)在該文件中,,其中OSTa-skStklnit()是任務(wù)堆棧初始化函數(shù),,其他5個函數(shù)都是Hook函數(shù),即OSTaskCreateHook(),,OSTaskDelHook(),,OSTaskSwHook(  ),OSTaskStatHook(  ),OsTimeTickHook()等接口函數(shù),,是系統(tǒng)預(yù)留給用戶添加功能的,,只要聲明,可以不包含代碼,,當(dāng)用戶需要額外擴展功能時,,在這5個函數(shù)中選擇加入就可。實際上需要修改的只有OSTaskStklnit()函數(shù),,該函數(shù)用來初始化任務(wù)堆棧,,使得任務(wù)堆棧建立時與發(fā)生1次中斷后的堆棧結(jié)構(gòu)相同。S3CA4B0X的堆棧結(jié)構(gòu)如圖2所示,。在修改OSTaskStklnit()函數(shù)時應(yīng)依照該結(jié)構(gòu)進行,。
圖2 S3C44BOX處理器堆棧結(jié)構(gòu)圖
 
  3.3 編寫與處理器相關(guān)的函數(shù)OS_CPU.ASM
 
  這部分代碼是對處理器的寄存器進行操作,必須用匯編語言來編寫,,包括以下4個子函數(shù):
    3.3.1 OSStanHighRdy()
  運行優(yōu)先級最高的就緒任務(wù),,此函數(shù)是在OS-Start()多任務(wù)啟動后,負(fù)責(zé)從最高優(yōu)先級任務(wù)的TCB控制塊中獲得該任務(wù)的堆棧指針SP,,通過SP依次將CPU現(xiàn)場恢復(fù),,這時,系統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務(wù)進程,,直到該任務(wù)堵塞或者被其他更高優(yōu)先級的任務(wù)搶占CPU,。該函數(shù)僅在多任務(wù)啟動時被執(zhí)行一次,之后多任務(wù)的調(diào)度和切換由以下函數(shù)實現(xiàn),。
 
  3.3.2 OSCtxsw()
  可實現(xiàn)任務(wù)級的上下切換,,任務(wù)級切換是通過SWI或者TRAP人為制造的中斷來實現(xiàn)。ISR的向量地址必須指向OSCtxSw(),,這一中斷完成的功能為:保存任務(wù)的環(huán)境變量(主要是寄存器的值,,通過入棧來實現(xiàn)),將當(dāng)前SP存入任務(wù)控制塊中,,載入就緒最高優(yōu)先級任務(wù)的SP,,恢復(fù)就緒態(tài)最高優(yōu)先級任務(wù)的環(huán)境變量,中斷返回,,以完成任務(wù)級的切換,。
 
  3.3.3 OSIntCtxSw()
  中斷級的任務(wù)切換,在時鐘中斷ISR中(中斷服務(wù)例程)如果發(fā)現(xiàn)有高優(yōu)先級等待的時鐘信號到來,,則在中斷中退出后并不返回被中斷任務(wù),,而是直接調(diào)度高優(yōu)先級的任務(wù)執(zhí)行,從而能夠盡快地讓高優(yōu)先級任務(wù)得到響應(yīng),,保證系統(tǒng)的實時性能,。其原理基本上與任務(wù)級的切換相同,但是由于進人中斷時已經(jīng)保存了被中斷任務(wù)的CPU現(xiàn)場,,因此不再進行類似的操作,,只需對堆棧指針做相應(yīng)調(diào)整。
 
  3.3.4 OSTicklSR()
  OSTickISR()是一個周期性函數(shù),,為內(nèi)核提供時鐘節(jié)拍中斷,。頻率越高、系統(tǒng)負(fù)荷越大,、其周期的大小決定了內(nèi)核所能給應(yīng)用系統(tǒng)提供的最小時間間隔,。一般只限于毫秒級(跟處理器有關(guān)),對于要求更加苛刻的任務(wù),,需要用戶自己建立中斷來解決,。該函數(shù)具體內(nèi)容:保存寄存器,調(diào)用OSIntEnter(),,調(diào)用OSTimeTick(),,調(diào)用OSIntExit(),恢復(fù)寄存器,,中斷返回,。但注意不要在OSStaut()之前調(diào)用OSTickISR()。
  完成以上3個程序的改寫,,μC/OS-Ⅱ就可以在S3C44BOX上正確運行,。
 
  4 結(jié)語
  家居智能控制系統(tǒng)是家庭內(nèi)外信息交換和家電控制的平臺。本文采用SAMSUNG公司的S3C44BOX芯片設(shè)計硬件和軟件,,克服8位單片機處理速度慢,、接口資源和存儲資源不足的限制。在實驗調(diào)試過程中,,該系統(tǒng)運行狀況良好,、工作穩(wěn)定。證明其設(shè)計是實用,、有效的,。但智能家居嵌入式系統(tǒng)是一個比較大的系統(tǒng),目前只是涉及到其中核心部分,,其他部分還需繼續(xù)探討,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。