一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>RTOS到Linux的應用移植的設計思路和細節(jié)

RTOS到Linux的應用移植的設計思路和細節(jié)

2017-10-19 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

引言
  在過去幾年中,Linux成功地取代了一些最主要的傳統(tǒng)RTOS(實時操作系統(tǒng))平臺,成為了各種各樣的嵌入式設備和應用中首選的嵌入式操作系統(tǒng)。盡管一度曾被認為是不重要的平臺,但今天嵌入式Linux已經(jīng)成為主流,廣泛應用于消費電子、手持和無線設備、數(shù)據(jù)聯(lián)網(wǎng)以及電信設備等領域。Google公司在2007年11月發(fā)布的Android手機操作系統(tǒng)正是基于Linux內(nèi)核的操作系統(tǒng),使得Linux在數(shù)字移動電話業(yè)取得跨越式發(fā)展。
  筆者在從臺式頻譜儀到手持式頻譜儀的項目研發(fā)中實現(xiàn)了RTOS到Linux的應用移植。本文介紹了整體的設計思路和一些關鍵問題的實現(xiàn)細節(jié)。
  1 RTOS到Linux的移植分析
  幾乎所有的RTOS都有一個簡單的編程模型,它由多線程的執(zhí)行(通常稱為任務)構成,包含在單一的地址空間中。在RTOS中,單一主程序下多任務同時運行,具有很高的實時響應能力。
  過去大多數(shù)嵌入式處理器沒有內(nèi)存管理單元,因此RTOS是單地址空間模式,即它們的物理地址和邏輯地址都是一樣的。然而目前大多數(shù)的中高端處理器配備了MMU(內(nèi)存管理單元)。在MMU的支持下,Linux采用虛擬內(nèi)存管理,將地址空間分為物理地址和虛擬地址,因此系統(tǒng)操作硬件時要進行地址映射。
  根據(jù)兩類系統(tǒng)的體系結構,RTOS移植到Linux的基本框架如圖1所示。
  RTOS到Linux的應用移植的設計思路和細節(jié)
  圖1 RTOS移植到Linux的基本框架
  由圖1可看出,移植的基本步驟為:
  ① RTOS的全部應用代碼移植到一個Linux單進程;
 ?、?RTOS的任務轉(zhuǎn)換成Linux線程;
 ?、?RTOS的物理地址空間映射到Linux的虛擬地址空間。
  在具體的應用移植過程中,還應考慮在Linux系統(tǒng)下解決上層應用實時響應底層硬件中斷,應用層與內(nèi)核層的異步通信、數(shù)據(jù)交換,以及多進程、多線程的設計等問題。
  2 RTOS到Linux的移植實現(xiàn)
  2.1 地址映射
  多數(shù)RTOS是針對較早的無MMU的CPU而設計,所以忽略了內(nèi)存管理部分,即使當MMU問世后也是這樣——不區(qū)分物理地址和虛擬地址。大多數(shù) RTOS還全部運行在特權模式,雖然表面上看來是增強了性能,但全部的RTOS應用和系統(tǒng)代碼都能夠訪問整個地址空間、內(nèi)存映射過的設備以及其他I/O操作。這樣,即使存在差別,也很難把RTOS應用程序代碼同驅(qū)動程序代碼區(qū)分開來。
  對于當前包含MMU的處理器而言,Linux系統(tǒng)提供了復雜的存儲管理系統(tǒng),使得進程所能訪問的虛擬內(nèi)存達到4 GB。
  在Linux系統(tǒng)中,進程的4 GB虛擬內(nèi)存空間[1]被分為兩個部分——用戶空間與內(nèi)核空間。用戶地址空間一般分布為0~3 GB,剩下的3~4 GB為內(nèi)核空間。上層應用程序通常情況下只能訪問用戶空間的虛擬地址,不能訪問內(nèi)核空間的虛擬地址。應用程序只有通過系統(tǒng)調(diào)用(代表應用程序進程在內(nèi)核態(tài)執(zhí)行)等方式才可以訪問到內(nèi)核空間。
  而外設I/O資源是不在Linux內(nèi)核虛擬地址空間中的(如SRAM或硬件接口寄存器等),若需要訪問某外設I/O資源,必須先將其物理地址映射到內(nèi)核虛擬地址空間中,然后才能在內(nèi)核空間中訪問它。
  Linux內(nèi)核訪問外設I/O資源的方式有兩種:靜態(tài)映射(map_desc)和動態(tài)映射(ioremap)。對于靜態(tài)映射,內(nèi)核在系統(tǒng)啟動時通過map_desc結構體靜態(tài)創(chuàng)建I/O資源到內(nèi)核地址空間的線性映射表(即page table),這種映射表是一一映射的關系。開發(fā)人員可以自定義該I/O內(nèi)存資源映射后的虛擬地址。創(chuàng)建好了靜態(tài)映射表,在內(nèi)核或驅(qū)動中訪問該I/O資源時則無需再進行ioremap映射,可以直接通過映射后的I/O虛擬地址去訪問它。
  這里主要討論更常用的動態(tài)映射方式。動態(tài)映射方式是直接通過內(nèi)核提供的ioremap函數(shù)動態(tài)創(chuàng)建一段外設I/O內(nèi)存資源到內(nèi)核虛擬地址的映射表,從而可以在內(nèi)核空間中訪問這段I/O資源。代碼如下:
  #define bcon*(volatile unsigned long*)ioremap(0x56000010,4)//動態(tài)映射
  上述代碼的含義是將0x56000010開始的4字節(jié)的物理地址映射到內(nèi)核的虛擬地址中,返回的起始虛擬地址值賦給bcon宏定義。對宏定義的操作即對物理地址的操作。
  ioremap宏定義在asm/io.h內(nèi):
  #define ioremap(addr, size)__ioremap(addr, size, 0)
  __ioremap函數(shù)原型為(arm/mm/ioremap.c):
  void __iomem * __ioremap(unsigned long phys_addr, size_t size, unsigned long flags);
  其中,phys_addr為要映射的起始的I/O地址;size為要映射的空間的大??;flags為要映射的I/O空間和權限有關的標志。
  該函數(shù)返回映射后的內(nèi)核虛擬地址(3G~4G),接著便可以通過讀寫該返回的內(nèi)核虛擬地址去訪問這段I/O內(nèi)存資源。所以,在移植的開始就應該在頭文件中完成設備物理地址的映射,方便后續(xù)的開發(fā)。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費