葛毅, 龔輝
(1.南瑞集團有限公司(國網電力科學研究院有限公司),江蘇 南京 211106;2.國電南瑞科技股份有限公司,江蘇 南京 211106;3.國電南瑞南京控制系統有限公司,江蘇 南京 211106)
嵌入式Linux在硬件開發方面應用性較強,內核小且可適用于開發源代碼,在軟件方面嵌入式Linux能夠實現系統移植,驅動開發芯片。在軟件道路中,嵌入式Linux的驅動系統較為穩定,并且嵌入式Linux不僅提供了包括千兆的以太網絡,而且能夠進行RISC、CISC和64位處理器的運行;作為電子技術行業的技術支撐,單片機的發展在一定程度上代表了電子技術行業未來的發展前景,它可以通過智能電子設備收集的數據、負載的狀態來調節電壓和電流的輸出,能夠控制能耗,使得設備更加節能,單片機在人機交互環節能夠通過邏輯處理分析、智能處理等環節提高硬件響應時間;如今單片機也較多地應用于醫療行業中,如血壓和心率測量手環、孕婦胎心監測手環等,實時監測患者的身體特征數據,對就醫者的健康狀況及時處理。在智能家居領域、人工智能領域、自動駕駛領域以及更加先進高端的科技領域中,單片機都有著較大的適用范圍和較為廣闊的應用前景。
基于嵌入式Linux下單片機的智控系統設計應當按照功能目標來設計硬件電路,在硬件設計中需要滿足系統的一系列要求,根據單片機以及擴展的外部設備芯片來進行軟件設計,在單片機的選型以及芯片和模型的選擇上是一個重要而且艱巨的任務,為了能夠基于實際情況和場合要求來進行電路設計、數據采集等,需要設計人員在設計硬件時協調考慮系統精度、系統功能、智能化控制以及芯片掌握等問題,在之后的編寫程序中不斷地改進完善,吸取之前的實踐經驗進行系統功能的創新拓展,最終實現真正的智能化和自動化。
嵌入式Linux下的單片機,指的是它把嵌入式Linux系統稱為主系統。Linux是一個控制目標應用系統行為的邏輯處理系統,它在物理上依賴于單片機,嵌入式Linux安裝在單片機上,為單片機的運行專用系統。第四代嵌入式系統是伴隨著移動數據網絡和物聯網的興起而出現的,實現了信息家電、工業控制組網,構成了嵌入式系統和嵌入設備的結合。
智控系統邏輯較為復雜,需要操作系統軟件支持,嵌入式Linux下的單片機專業性較強,低功耗低電壓,提供了靈活、高效的解決方案,根據當前的智控技術、嵌入式技術以及以及運動控制技術,結合實際情況,本文研究的嵌入式Linux下單片機的智控系統設計目標如下:
首先,該嵌入式Linux單片機智控裝置通過攝像機的數據采集來傳輸到計算機的監控中心,在視頻采集前端采用專用的視頻壓縮采集卡,采用視頻壓縮技術使得系統具有可重用性和可移植性,能夠獲取現場實時圖像視頻數據,確保圖像的流暢和清晰度,能夠自主調整視野角度;
其次,在通信方式下采用無線通信,具備一定程度的可靠傳輸距離,用戶操作簡單方便,支持PC和Android控制終端;
最后,可以實現模塊化設計,保證系統的通用靈活和拓展性,有利于后期的維護和升級。
通過梳理大量的文獻和參考目前智控研究領域中較為先進的硬件方案,本文將嵌入式Linux下的硬件方案設置如下:
首先,通用微處理器采用AVR單片機,AVR單片機開發較為簡單且價格低廉,內存資源較小,運行中不帶操作系統的裸機程序。
其次,確定硬件方案后,我們選擇硬件原理圖和電路板設計,焊接硬件電路調試元件,并反饋調試過程中的問題,改進設計,重復上述設計過程來建設硬件環境。
最后,在軟件開發階段,必須為每個處理器創建安裝交叉編譯工具包,建立適合的交叉編譯開發環境,配置主機服務器,然后將其移植到目標內核開發平臺,并創建一個根文件系統。在硬件環境中運行最小的嵌入式Linux系統,而后裁剪和優化內核配置,使硬件設備正常工作。
單片機的引薦電路設計是智控機械的基礎,系統內編程和應用內編程無需將微控制器從實際最終產品中移除,以用作STC12C5620AD的核心來支持用戶系統程序和數據。設備可以編寫非應用程序。STC12C5620AD有9個源、4個優先級中斷結構、10位ADC(10萬次/秒)、片內晶振、MAX810專用復位電路、4通道PCA和PWM、SPI、一次性啟用看門狗定時器等。
這種智能控制機制的主要功能是“連接”,在單片機控制器硬件電路中通過無線網卡和遠程控制終端建立網絡連接,并接受終端發送的控制命令。以ARM為核心處理器,運行嵌入式Linux操作系統的方案來進行圖像采集、壓縮和傳輸,在指令集的處理器上選擇“蜂鳥”處理器,“蜂鳥”和S5PC110的功能一樣,適用于智能手機,運行主頻較大,主頻可達到1GHz,64/32位內部總線結構,具備強大的硬件編解碼功能,內建高性能PowerVR SGX540 3D圖形引擎和2D圖形引擎,同時還可以支持OpenG2.0等PC級別顯示技術來進行多標準、全高清的視頻編碼,實現流暢播放和錄制1080P的視頻文件;內部還能夠支持MPEG-1/2/4格式的視頻編解碼,因此支持模擬,具備JPEG硬件編碼器可以實現視頻數據的硬件編碼。
2.2.1 單片機主控制器
單片機選擇8051內核8位微控制器STC12C5A60S2,它內部含有集成2路PWM電路,適合電機控制、數據采集等應用,開發較為簡單,RAM數據存儲器容量為1280字節,晶振頻率為22,1184mHz,其主控制器最小系統以及外設連接如圖1所示。

圖1 主控制器最小系統
2.2.2 直流電機驅動電路
單片機普遍IO口輸出電流不能夠滿足四個直流電機的正常工作,難以控制電機轉速,要實現對電機速度的控制需要調節脈寬,使用PWM方式驅動較為簡單,功率損耗較低、效率較高、響應速度較快、調速范圍較廣,電路中加入蓄流二極管保障芯片安全。
2.2.3 蜂鳴器和LED驅動
根據本智控機械的需要,在本設計中加入了名企電路,在機械異常狀態時進行蜂鳴器報警,提醒用戶注意;考慮到光線較暗的地方中保障視頻拍攝的質量,所以在本設計中增加1.5WLED照明燈,采用DC-DC降壓恒流驅動芯片XL4001來控制電源開關運行。
硬件電路主要使用高性能Cortex-A8核心板Smart210,Smart210核心板采用2.0mm間距的雙排針,尺寸為74*55mm。共引出208Pin引腳、Smart210核心板集成網卡和聲卡芯片,核心板硬件資源為512Mb DDR2 RAM@200Mhz內存,32Bit數據總線,FLASH存儲標配1GB SLC NAND Flash,核心板采用5V供電,兩路USB HOST接口采用三路串口,人機交互采用LCD,方便系統開發和調試,在主機端和下游USB設備傳輸連接中采用48PIN LQFP,在外接器件較少的設備中采用USB HUB功能,兩根差分的數據線DP*和DM*。
采用UVC普通USB攝像頭,集成了鏡頭、圖像處理器、模數轉換電路、DSP處理器以及USB控制器的選擇,在CAMERA接口的COMS攝像頭中不經過DSP數據處理,直接進行輸出并行數據,在圖像傳感器方面采用要求較高、專用的攝像設備,COMS在功耗、成本方面具有巨大的優勢,本設計采用的攝像頭支持USB1.1、USB2.0協議,最大分辨率為640*480,具備30萬像素。
采用RT3070無線網卡,通過USB接口來傳輸數據,由Mac控制器、基帶處理器、功率放大器以及調制解調器等組成,該無線網卡支持64/128位WEP過渡版加密認證,支持工作在STA模式和AP模式,支持所有操作系統。通過改裝外接SMA 2DBI天線,信號強度大大提高。最重要的是,Linux內核已經對RT3070芯片的無線網卡有很好的驅動支持,只需要對內核進行相應的配置,再通過相應軟件設置,使該網卡工作于AP模式或STA模式,即可構建起一個本地局域網絡。
在LCD驅動器中選擇和玻璃基板集成在一起,LCD控制器集成在微處理器中,“蜂鳥”處理器中自帶LCD控制器,能夠簡化TTL接口,實現低壓查分LVDS接口和RGB接口之間的傳輸,在本設計中采用A70i 7寸液晶屏,型號為AT070TN83(數字屏),分辨率為800*480,顏色RGB為6-6-6,方便拆卸和固定。
典型的Linux系統從第一個版本到生成支持多用戶、基于網絡編程多任務、多線程的操作系統,嵌入式Linux系統在嵌入式處理器的遷移中發揮了重要作用。Linux系統的內核源代碼已經開發完成,內核兼容POSIX可移植操作系統。接口標準適用于本設計的ARM架構,在Linux系統內部,針對視頻文件能夠實現設備和程序的相輔相成,Linux系統自動引導程序引導安裝系統內核、文件系統、程序。
本設計在啟動過程中使用了U-BOOT。UBOOT支持NFS網絡文件系統,具有良好的系統接口幫助功能。U-BOOT可以通過設置相關參數來控制操作系統的內核,以完成不同開發階段的操作系統調試。U-BOOT可以檢測上述的自動電源檢測器、SDRAM、FLASH。U-BOOT可以實現上述自動上電檢測、SDRAM、FLASH檢測、SDRAM硬件故障檢測。CR232檢查內核可以提供檢查RAMDISK文件系統中損壞圖像文件的能力。引導器允許將嵌入式系統內核加載到FLASH存儲器中,從而使嵌入式系統和文件系統能夠連續加載和卸載,并使串行終端能夠監控目標機。
Linux內核是整個系統的重要組成部分。Linux內核的組件包括處理器內核、內存管理、進程管理,在Linux內核的每一層又細分為子系統。Linux系統版本支持大多數現有處理器。輸入子系統提供對硬件設備上各個寄存器的讀寫訪問,提供驅動程序對系統識別的標準輸入事件的相應轉換,為開發提供相應的標準編程接口。驅動層在inputdev數據結構的實現中,當有事件產生的時候驅動層能夠自動提交相應的事件和對應的鍵值以及坐標;典型的Linux系統輸入子系統和TTY子系統支持各種常見輸入設備的系統級管理軟件,可以實現進程管理、進程間通信和內存管理。本設計的驅動程序開發使用現代Linux內核數據結構和接口進行編程。
基于linux系統內核來對各種文件在系統的存放和各目錄的組織結構進行抽象為統一的文件形式,在Linux內核之后要安裝的第一個文件系統是基于根文件系統的,文件系統鏡像文件由上述步驟創建。為了避免各個linux發行版本不同,所以在建立文件系統各級目錄上首先建立根目錄,建立文件系統其它目錄命令為:mkdir bin/sbin/etc/dev/root/home/lib/mnt/proc/sys/usr/mnt/tmp/;之后選擇編譯安裝busybox,建立動態鏈接庫,將常用函數封裝成動態庫形式;其次,構件設備dev目錄、etc目錄,配置U-BOOT來燒入到NandFlash中。
本設計中使用的桌面版和嵌入式linux設施版本Qt/內置,桌面版Qt底層圖像技術是基于X窗口系統頂端,管理版Qt根據系統資源要求,減少了系統內存消耗,加快了顯示速度;同時,外部輸入事件被抽象為鼠標和鍵盤輸入事件,統一了系統輸入接口。桌面和嵌入式版本Qt被稱為相同的API程式開發,不需要擔心具體的底層問題。程序遷移是非常方便的,基于Qt來實現Pc控制終端軟件設計,網絡通信模塊應當針對TCP協議,建立起客戶端和服務器端的網絡通信連接,在視頻顯示模塊應該移植Open CV,調用函數 cv Create Video Writer(filenme,CV_FOURCC('M','J','P','G'),20,cvSize(640,480),1)初始化一個MJPG格式的視頻文件寫入器,基于Android進行開發環境的搭建,之后進行通信協議的搭建。
本文設計并實現了一個基于嵌入式Linux的微控制器的智能機械裝置,詳細描述了硬件和軟件的實現過程,主要包括嵌入式Linux硬件電路設計、調試、U-BOOT移植、Linux內核移植和切割、根文件系統創建等,分析了應用程序每一部分的設計。雖然本設計基本完成了嵌入式linux單片機的基本控制,對于視頻數據和傳感器數據的采集都進行了相關介紹和分析,但由于能力有限,本文在機械的多傳感器信息數據融合上還需要綜合判斷各種因素,從而建立起來相對完整的數學模型。