智能電網中智能家居終端的設計
智能家居終端的硬件實現結構如圖2所示。本文引用地址:http://www.104case.com/article/201806.htm
其中電話控制部分,當用戶在遠程話機鍵盤上按下控制按鈕后,這些信息采用雙音頻方式通過電話線發出,MT8870是一款雙音多頻解碼芯片,能夠實現雙音多頻信號(DTMF)的發送和接收。
以太網控制芯片采用CS8900A,它是Cirrus Logic公司生產的低功耗、性能優越的16位以太網控制器。該芯片的突出特點是使用靈活,其物理層接口、數據傳輸模式和工作模式等都能根據需要而動態調整,通過內部寄存器的設置來適應不同的應用環境。
此外,硬件部分還對SRAM進行了擴展以滿足更大的需求。另外由于智能家居終端上的一些重要參數,需要在系統掉電的情況下保留,所以在終端上還進行了EEPROM擴展。
5 智能家居終端的軟件設計
5.1 程序設計
在硬件結構基礎上,軟件系統采用了Linux嵌入式操作系統,內核版本為2.6.28。鑒于所選ARM芯片的性能,從總體需求出發,軟件部分采用多進程+進程中多線程的編程方案。程序總體分為兩個進程:主進程、Web-Service進程。主進程包括3個線程:主線程、輔線程和次線程。
其中,Web-Service進程為發送命令碼流。此處需要說明的是家庭網關也采用Web-Service的方法,智能家居終端作為客戶端,而家庭網關作為服務器端。
主控制進程實現了大部分功能,是控制中心的主體。由于實時性、信息回復的不確定性,它開機啟動并一直處于運行狀態。主線程在程序啟動時首先進行初始化,包括硬件各部分的驅動初始化,各個功能模塊界面及其基本功能的初始化,還有數據存儲部分數據庫的初始化。初始化完畢后將進入一個while(1)循環,不停地重復遍歷命令結構體鏈表和返回碼流結構體鏈表,并進行相應處理。輔線程完成命令碼流的轉換和處理。次線程監聽返回到終端的命令碼流,并進行相應的轉換和處理。
軟件部分的總體框圖如圖3所示。
5.2 進程間通信
程序中設計了兩個進程,它們之間要進行通信。兩個并行進程可以通過互相發送消息進行合作,消息是通過消息緩沖在進程之間相互傳遞。進程間通信方式采用的是命名管道(FIFO),FIFO是一種先進先出的隊列。它類似于一個管道,只允許數據的單向流動。每個FIFO都有一個名字,允許不相關的進程訪問同一個FIFO。本程序在/tmp文件系統中定義命名管道,這樣當系統重新啟動或更新時,管道將被清除,不會占用過多存儲空間。
此外,為避免兩個進程間同時要求訪問同一共享資源而引起訪問和操作的混亂,在進程對共享資源進行訪問前必須對其進行鎖定,該進程訪問完后再釋放。還有在主進程的3個線程內,為保證兩個或多個關鍵代碼段不被并發調用,線程內還使用了信號量,在進入一個關鍵代碼段之前,線程必須獲取一個信號量,一旦該關鍵代碼段完成,那么該線程必須釋放信號量,其他想進入該關鍵代碼段的線程必須等待,直到第一個線程釋放信號量。
6 結束語
智能家居終端及其配套設備將會得到不斷的發展和完善,為人們提供更為安全、舒適、便利的生活環境。系統的使用也會更加方便、價格低廉、性能可靠。本文給出了基于ARM芯片的智能家居終端的設計方案,設計了一種可行的硬件和軟件模型,在理論上解決了智能家居終端的一些設計問題。
評論