秦貞滕 張永狀 鄧志豪 重慶三峽學院電子與信息工程學院通信工程專業(yè)2015級
引言:隨著社會的不斷發(fā)展,無線的傳輸速度和傳輸時延也越來越快,這將推動著物聯(lián)網技術的快速發(fā)展,而嵌入式系統(tǒng)可以說是一種比較好的與各類硬件軟件連接工作的平臺,嵌入式系統(tǒng)可以自定義各種驅動是否含有,讓操作系統(tǒng)能以最小的體積,最合適的功能,不浪費運行空間和設備性能來保證嵌入式設備正常工作。而QT是一種一次開發(fā),多處運行的一種開發(fā)平臺,還是一種面向對象的C++應用程序圖形界面設計,其中的信號與槽機制能有效的開發(fā)所設計的功能。作者就是為了給各位讀者搭建一個基本的開發(fā)嵌入式硬軟件的基本概念和流程。
Linux其實僅僅是代表內核,但大多數人都喜歡用這個單詞代表系統(tǒng),該內核是開源的,免費的,可以自由傳播。Linux系統(tǒng)支持多用戶,多線程,多核CPU的實時操作系統(tǒng),Linux可以自由裁剪,自由選擇驅動和想要的組件,以縮小系統(tǒng)大小,舍去無需的服務以減少運行系統(tǒng)的資源開支。
關于linux系統(tǒng)的實時性,就是在確定的范圍之內響應某個事件的特性,這對于一些嵌入式設備是基本的要求。對于嵌入式硬件,這種對于體積和造價要求比較苛刻的設備來說,里面的硬件資源是寸土寸金的,所以必須嚴格控制軟件占用,讓整個系統(tǒng)平穩(wěn)運作。
Linux系統(tǒng)的移植還需要一個基本工具就是bootloader,用來引導操作系統(tǒng),主要作用是初始化和檢測硬件設備,建立內存空間映射讓基本的硬件都協(xié)調工作,實現(xiàn)基本硬件功能,為了接下來的系統(tǒng)移植提供基本的硬件準備。
Qt是一款跨平臺C++圖形用戶應用開發(fā)平臺,可以開發(fā)GUI應用,也可以開發(fā)非GUI應用,控制臺,服務器等都可以,我們?yōu)榱吮O(jiān)控和控制嵌入式設備一般都是開發(fā)圖形用戶界面來直觀的觀察情況。由于QT的跨平臺性,我們可以在任何一個平臺開發(fā),到其他平臺上編譯,然后去運行,省去了二次開發(fā)的麻煩。QT提供了很多API,包括串口通信,TCP/IP網絡,各種GUI組件和控件,XML支持。QT獨特的信號與槽機制讓各種可以與用戶交互的按鈕和控件可以關聯(lián)到SLOT槽函數里面,交互即執(zhí)行函數,直觀便于理解。
對一些新手開發(fā)者最有利的就是,QT官方提供了大量的開發(fā)文檔,可以在QT creator 里面直接搜索得到解決辦法。
任何項目或者設計在開始之前都需要合理規(guī)劃和分析,然后再去一步一步的開發(fā)和設計,避免從做無用的工作。
開發(fā)人員在開始一個項目之前,需要深入細致的用戶調研,開發(fā)分析,根據客戶的要求和功能實現(xiàn),來初步設計項目的模板,評價項目的可行性,可靠性,把需求轉化為可開發(fā)功能,最后對項目所需人員,財力物力進行評估,才能開始進行開發(fā)。
3.2.1 硬件設備選擇
根據項目規(guī)劃和需求分析選擇最合理,最合適,最擅長的硬件,一來可以縮短開發(fā)周期,二可以節(jié)省開發(fā)成本。
選擇各種硬件設備的時候還要考慮各種硬件之間的兼容性和沖突性,最好選擇兼容性最好的硬件,也便于接下來的維修維護。
3.2.2 系統(tǒng)裁剪和移植
Linux系統(tǒng)移植有著基本的步驟,我們這次設計舉例用Ubuntu系統(tǒng)。
大部分開發(fā)平臺和目標硬件設備是不同的芯片或者操作系統(tǒng),這時候就需要搭建交叉編譯環(huán)境,比如我們在ARM平臺開發(fā)程序,在x64或者x86平臺,就需要搭建arm平臺的編譯環(huán)境,可以安裝編譯器arm-linux-gcc用來編譯開發(fā)主機所需的程序。移植的linux系統(tǒng)也是必須用這個編譯器來編譯。
u-boot移植,分析架構和硬件兼容性,根據u-boot給的origen板子實例,找到與開發(fā)主機相同的芯片編譯文件,拷貝板級文件到編譯目錄,修改Makefile編譯新加入的文件,拷貝板級頭文件,修改boards.cfg配置文件,添加BL1和BL2啟動代碼(根據不同芯片查看開發(fā)主機的芯片手冊),添加看門狗關閉代碼編,關閉中斷,添加電源管理相關代碼,添加串口初始化相關代碼,譯后把u-boot.bin文件燒寫到emmc中即可觀察到串口數據輸出。u-boot移植完成后需要設置網絡tftp服務或者其他通信方法,因為串口通信速度慢。
內核編譯,根據開發(fā)主機選擇linux內核源碼,根據開發(fā)主機芯片型號選擇內核編譯選項和添加配置文件,不需要的功能和一些服務可以去掉,用來節(jié)省空間,編譯后會生成一個uImage鏡像文件。
設備樹文件就是把系統(tǒng)中各種文件分類添加索引,以至內核可以準確找到想要找的文件,編譯設備數文件,為.dtb文件。在編譯內核和設備樹的時候可以根據需求添加驅動。
編譯完成內核和設備樹后就可以通過u-boot的tftp下載到開發(fā)主機中。編譯完成后開發(fā)主機就可以執(zhí)行我們編寫的生成的.out等文件。
3.3.1 開發(fā)主機應用程序
根據開發(fā)主機的搭載芯片,和電路連接,查看芯片手冊和硬件工程師提供資料來開發(fā)程序,實現(xiàn)對應功能,不同寄存器的設置代表不同功能,查看手冊和討論編寫程序來調用芯片相連的硬件,實現(xiàn)目標功能。
3.3.2 圖形化界面開發(fā)
QT開發(fā)我們可以選擇在Windows平臺開發(fā),根據需求繪制圖形化窗口,設置基本需要顯示的數據,圖像,窗口,可以通過無線協(xié)議,有線連接,通過服務器等獲取開發(fā)主機的信息,或者控制開發(fā)主機。
所有工作做完并且沒有錯誤可以運行在主機上,就可以進行調試測試階段,調試包括基本功能測試,穩(wěn)定性測試,干擾分析,連接強度,等一些根據項目具體情況要求的測試。
科技的發(fā)展不會停止,5g通信技術已經在實踐階段,我們不難想象以后的世界會是物物互聯(lián),萬物相通的方向發(fā)展,學習基本的嵌入式設備開發(fā)和軟件調試技巧是非常有必要的。學習基本嵌入式開發(fā)知識對我們今后的學習和工作也有著很重要的作用,當我們拿到任何一個項目或者硬件設備都會有基本的思路來調試。