新聞中心

        EEPW首頁 > 物聯網與傳感器 > 設計應用 > 多核處理器下智能車載平臺的設計與實現

        多核處理器下智能車載平臺的設計與實現

        ——
        作者:盧朝洪 金曦 唐岳東 楊國青 時間:2013-06-26 來源:電子產品世界 收藏

          資源分區方案

        本文引用地址:http://www.104case.com/article/146841.htm

          本文采用OMAP4430型開發板作為硬件平臺。在該處理器上兩個同構的核上分別部署Android OS和SmartOSEK OS。

          用戶在應用設計階段,對SmartOSEK OS進行靜態配置,確定其占用的內存情況,從而在系統初始化階段將固定的一段物理內存空間分配給SmartOSEK的實時內核。通過修改Android OS中Linux內核的頁表項,將該段物理空間對于Android OS是不可見的,使得虛擬地址空間無法映射到該段物理地址。另外預留出一段物理內存作為兩個操作系統的共享內存空間,以方便二者的通信。

          對于各種硬件外設資源,將其分為三種不同的類型。第一類是硬件不同內核私有的外設資源,如時鐘源。第二類是將公用的硬件外設資源分配到各自的操作系統上,將其視為該操作系統的私有資源。第三類是Android OS和SmartOSEK OS共享的硬件外設資源,在資源分配時要盡可能避免使用第三類資源,針對這種類型的資源需要一定的鎖機制對其統一管理。

          內核通信方式

          Android OS與SmartOSEK OS之間提供同步和異步兩種通信方式。

          同步的通信方式只應用于從Android內核向SmartOSEK內核的消息發送。當Android系統通過同步方式發送消息時,首先將消息發送到共享內存的同步數據緩沖區中,然后向SmartOSEK發送同步信號進行通知,SmartOSEK內核在接收到這個同步的數據接收信號后,需要立即響應,讀取共享內存中同步數據緩沖區存儲的消息,并在讀取結束后通知Android發送方數據接收成功或接收失敗。

          異步的通信方式支持Android和SmartOSEK內核雙向通信。當一方向另一方發送消息時,發送方首先將數據拷貝到該方的共享內存中的異步消息隊列中,完成該操作后向接收方發送異步通信請求的信號。此時接收方只需要更新異步消息隊列的狀態信息。讀取隊列中消息的工作由一個周期性查詢異步消息隊列的進程或任務完成,以緩沖Android內核和SmartOSEK內核實時性的差異。

          平臺實現

          平臺實現的主要工作為以下三部分:在編譯階段實現SmartOSEK OS的存儲映射;在雙操作系統的啟動過程中實現包括內存、中斷、外設等資源的分配;通過共享內存、核間中斷等手段實現兩個操作系統之間相互通信。

          SmartOSEK OS存儲映射

          存儲器分區是實現兩個操作系統資源分區的關鍵之處。在編譯階段利用MMU機制減少兩個操作系統數據在存儲空間上的耦合性,使每個操作系統靜態分配的內存空間盡可能連續,簡化資源分區的難度。SmartOSEK OS是完全靜態的操作系統,在目標鏈接文件vmlinux.lds.S中新建物理段osek,通過使用GNU C編譯器的編譯指令將SmartOSEK OS的數據定義歸于此段中。

          雙核系統啟動

          在U-boot完成對系統鏡像文件的引導加載后,主核cpu0處于SVC模式,cpu1執行WFI指令循環等待cpu0觸發的核間中斷。此時,將在主核cpu0上基于分區的機制執行對各種資源進行初始化分配。圖2描述了雙核啟動及資源分配的具體流程?! ?/p>

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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永丰县| 广水市| 湘西| 固始县| 应用必备| 巴马| 仙桃市| 阿勒泰市| 潮安县| 昔阳县| 宜都市| 岢岚县| 武隆县| 凤城市| 滨州市| 南阳市| 江达县| 治多县| 靖宇县| 扎赉特旗| 霍邱县| 云安县| 诏安县| 武定县| 南丰县| 卢湾区| 文安县| 霍山县| 内黄县| 开原市| 百色市| 临海市| 蓬溪县| 桐庐县| 布拖县| 和林格尔县| 海伦市| 双桥区| 拉孜县| 丰原市| 于都县|