新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式LINUX的車載導航系統設計

        基于嵌入式LINUX的車載導航系統設計

        作者: 時間:2013-03-18 來源:網絡 收藏

        (2) Linux 在S3C2440 上的移植

        嵌入式 Linux 管理整個導航系統的硬件設備并對所有程序進行調度,是軟件系統的核心。由于Linux 是面向PC 機的操作系統,將其用于嵌入式領域,需要進行移植,它一般包括啟動加載代碼(Bootloader)的移植、內核移植、驅動程序的編寫、文件系統的構建等。將 U-boot 源代碼在ADS 環境下進行編譯,將編譯成功的二進制代碼燒寫到開發板所帶Flash 上,然后在上電啟動。Bootloader 首先完成硬件設備的初始化,然后設置Linux 內核的啟動參數,最后調用Liuux 內核,直接跳轉到Linux 內核的第一條指令處。從 Linux 的方式看待設備可區分為3 種基本設備類型:字符設備,塊設備,或者網絡設備。車載導航系統設備驅動程序由以下三個部分組成:

        (1)自動配置和初始化子程序。初始化子程序首先運行,負責檢測硬件設備是否存在和能否正常運行;

        (2)中斷服務子程序。由嵌入式Liuux 系統來接收硬件中斷,再通過系統來調用中斷服務子程序;

        (3)服務于I/O 請求的子程序。對I/O 設備進行存取。將編寫好的設備驅動編譯到內核中,在系統啟動時和內核一起啟動。

        文件系統構成了 Linux 系統上所有數據的基礎。經過比較,系統設計時決定使用Cramfs文件系統,當訪問文件時,Cramfs 文件系統自動的將要訪問的文件解壓到RAM 中,會盡可能給實際執行的應用程序保留RAM 空間,而且可以為運行時解壓縮挪出額外的CPU 周期。使用mkcramfs 命令生成cramfs 鏡像文件,再將其下載到系統中去,Linux 啟動時自動加載根文件系統,完成系統的啟動。

        (3)多線程技術在Qt 中的應用

        在具有圖形用戶界面的 Qt 應用程序中,主線程由GUI 線程充當,它同時擁有一個或多個非GUI 線程作為工作線程來處理其它耗時操作,例如不斷更新的車輛方向、速度,地圖的匹配等。這樣,即使在負載很重的情況下,應用程序也可以保證圖形用戶界面的響應。依賴 Qt 提供的多線程技術,使得該導航系統中的多數據交互成為可能,GUI 線程在調用了exec()函數后,要么等待一個事件,要么處理一個事件,每一個線程都可以有自己的事件循環,如圖4所示,起始線程通過QcoreApplication::exec()啟動事件循環,其他非GUI 線程通過Qthread::exec()啟動各自的事件循環。

        基于嵌入式LINUX的車載導航系統設計

          圖 4 Qt 線程事件模型

        5 結論

        本文作者的創新點:

        (1)將嵌入式Liuux 操作系統用于車載導航系統,是對傳統的車輛導航系統的重大改進,成本大幅降低,同時利用Linux 系統的多線程技術,可以解決系統中多個任務并行處理的問題,保障了系統的穩定性、可靠性,提高了系統的運行速度。

        (2)顯示系統采用Qt/Embeded 軟件進行用戶顯示界面設計,一次編寫,隨處編譯,方便移植到各種不同的平臺,只需重新編譯即可,使用開源版節約大量軟件授權費用,這些都是傳統WinCE 程序所不能比擬的。

        (3)目前本系統已經裝載在車上試運行,實踐證明本系統能實時顯示車輛當前運行狀況,快速響應用戶操作,為駕駛者提供良好的導航信息。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 班戈县| 长垣县| 集贤县| 措美县| 晋宁县| 定边县| 怀仁县| 玉田县| 玉树县| 惠州市| 赣州市| 锡林浩特市| 延长县| 韶关市| 亳州市| 南宫市| 成都市| 哈尔滨市| 佳木斯市| 嘉黎县| 卢湾区| 独山县| 准格尔旗| 西乡县| 塘沽区| 漳州市| 溆浦县| 绥德县| 宁夏| 嘉善县| 永宁县| 嘉黎县| 临沧市| 岳池县| 富宁县| 广宁县| 樟树市| 尉犁县| 达州市| 柘荣县| 宣化县|