在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>嵌入式開發>Linux2.6內核解析及其移植應用分析

Linux2.6內核解析及其移植應用分析

2017-10-25 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

隨著多媒體技術與通訊技術相結合的信息技術的快速發展和互聯網的廣泛應用,PC時代也過渡到了后PC時代。在數字信息技術和網絡技術高速發展的后PC時代,嵌入式技術越來越與人們的生活緊密結合。
  操作系統為用戶使用計算機及其外部設備提供最基本的接口程序,管理計算機上的資源。隨著應用領域的擴大,為了適應不同的應用場合,考慮到系統的靈活性、可伸縮性以及可裁剪性,一種以應用為中心、以計算機技術為基礎、軟硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統——嵌入式操作系統隨之延生。
  Linux操作系統是一種性能優良、源碼公開且被廣泛應用的免費操作系統,由于其體積小、可裁減、運行速度高、良好的網絡性能等優點,可以作為嵌入式操作系統。隨著2.6內核的發布,Linux向現有主流的RTOS提供商在嵌入式系統市場提出了巨大挑戰,例如VxWorks和WinCE,具有許多新特性,將成為更優秀的嵌入式操作系統。
  Linux的低成本和開放性,為其在嵌入式系統領域的應用營造了肥沃的土壤。本文著重介紹Linux2.6內核的新特性及其嵌入式應用中的優勢,并將其移植到嵌入式平臺中,成功支持H.264編解碼多媒體系統。
  1Linux2.6內核針對嵌入式開發顯著特點
  實時可靠性是嵌入式應用較為普遍的要求,盡管Linux2.6并不是一個真正的實時操作系統,但其改進的特性能夠滿足響應需求。Linux2.6已經在內核主體中加入了提高中斷性能和調度響應時間的改進,其中有三個最顯著的改進:采用可搶占內核、更加有效的調度算法以及同步性的提高[4]。在企業服務器以及嵌入式系統應用領域,Linux2.6都是一個巨大的進步。在嵌入式領域,Linux2.6除了提高其實時性能,系統的移植更加方便,同時添加了新的體系結構和處理器類型——包括對沒有硬件控制內存管理方案的MMU-less系統的支持,可以支持大容量內存模型、微控制器,同時還改善了I/O子系統,增添更多的多媒體應用功能[4]。
  1.1可搶占內核
  在先前的內核版本中(包括2.4內核)不允許搶占以核心態運行的任務(包括通過系統調用進入內核模式的用戶任務),只能等待它們自己主動釋放CPU。這樣必然導致一些重要任務延時以等待系統調用結束。
  一個內核任務可以被搶占,為的是讓重要的用戶應用程序可以繼續運行。這樣做最主要的優勢是極大地增強系統的用戶交互性。
  2.6內核并不是真正的RTOS(RealTimeOperationSystem),其在內核代碼中插入了搶占點,允許調度程序中止當前進程而調用更高優先級的進程,通過對搶占點的測試避免不合理的系統調用延時。2.6內核在一定程度上是可搶占的,比2.4內核具備更好的響應性。但也不是所有的內核代碼段都可以被搶占,可以鎖定內核代碼的關鍵部分,確保CPU的數據結構和狀態始終受到保護而不被搶占。
  軟件需要滿足最終時間限制與虛擬內存請求頁面調度之間是相互矛盾的。慢速的頁錯誤處理將會破壞系統的實時響應性,而2.6內核可以編譯無虛擬內存系統避免這個問題,這是解決問題的關鍵,但要求軟件設計者有足夠的內存來保證任務的執行。
  1.2有效的調度程序
  2.6版本的Linux內核使用了由IngoMolnar開發的新的調度器算法,稱為O(1)算法,如圖1所示。它在高負載情況下執行得極其出色,并且當有很多處理器并行時也可以很好地擴展[2]。過去的調度程序需要查找整個readytask隊列,并且計算它們的重要性以決定下一步調用的task,需要的時間隨task數量而改變。O(1)算法則不再每次掃描所有的任務,當task就緒時被放入一個活動隊列中,調度程序每次從中調度適合的task,因而每次調度都是一個固定的時間。任務運行時分配一個時間片,當時間片結束,該任務將放棄處理器并根據其優先級轉到過期隊列中。活動隊列中任務全部調度結束后,兩個隊列指針互換,過期隊列成為當前隊列,調度程序繼續以簡單的算法調度當前隊列中的任務。這在多處理器的情況更能提高SMP的效率,平衡處理器的負載,避免進程在處理器間的跳躍。
  Linux2.6內核解析及其移植應用分析
  圖1 O(1)調度算法
  1.3同步原型與共享內存
  多進程應用程序需要共享內存和外設資源,為避免競爭采用了互斥的方法保證資源在同一時刻只被一個任務訪問。Linux內核用一個系統調用來決定一個線程阻塞或是繼續執行來實現互斥,在線程繼續執行時,這個費時的系統調用就沒有必要了。Linux2.6所支持的FastUser-SpaceMutexes可以從用戶空間檢測是不是需要阻塞線程,只在需要時執行系統調用終止線程。它同樣采用調度優先級來確定將要執行的進程[4]。多處理器嵌入式系統各處理器之間需要共享內存,對稱多處理技術對內存訪問采用同等優先級,在很大程度上限制了系統的可量測性和處理效率。Linux2.6則提供了新的管理方法——NUMA(NonUniformMemoryAccess)。NUMA根據處理器和內存的拓撲布局,在發生內存競爭時,給予不同處理器不同級別權限以解決內存搶占瓶頸,提高吞吐量。
  1.4POSIX線程及NPTL
  新的線程模型基于一個1:1的線程模型(一個內核線程對應一個用戶線程),包括內核對新的NPTL(NativePOSIXThreadingLibrary)的支持,這是對以前內核線程方法的明顯改進。2.6內核同時還提供POSIXsignals和POSIXhigh-resolutiontimers。POSIXsignals不會丟失,并且可以攜帶線程間或處理器間的通信信息。嵌入式系統要求系統按時間表執行任務,POSIXtimer可以提供1kHz的觸發器使這一切變得簡單,從而可以有效地控制進度。
  1.5微控制器的支持
  Linux2.6內核加入了多種微控制器的支持。無MMU的處理器以前只能利用一些改進的分支版本,如uClinux,而2.6內核已經將其整合進了新的內核中,開始支持多種流行的無MMU微控制器,如Dragonball、ColdFire、HitachiH8/300。Linux在無MMU控制器上仍舊支持多任務處理,但沒有內存保護功能。同時也加入了許多流行的控制器的支持,如S3C2410等。
  1.6面向應用
  嵌入式應用有用戶定制的特點,硬件設計都針對特定應用開發,這給系統帶來對非標準化設計支持的問題(如IRQ的管理)。為了更好地實現,可以采用部件化的操作系統。Linux2.6采用的子系統架構將功能模塊化,可以定制而對其他部分影響最小。同時Linux2.6提供了多種新技術的支持以實現各種應用開發,如AdvancedLinuxSoundArchitecture(ALSA)和Video4Linux等,對多媒體信息處理更加方便;對USB2.0的支持,提供更高速的傳輸,增加藍牙無線接口、音頻數據鏈接和面向鏈接的數據傳輸L2CAP,滿足短距離的無線連接的需要;而且在2.6內核中還可以配置成無輸入和顯示的純粹無用戶接口系統。
  2應用研究
  在S3C2410開發板上移植嵌入式Linux2.6.11.7內核系統,應用于構建H.264多媒體系統。
  2.1建立交叉編譯環境
  在RedHat9的主機上進行內核移植開發,首先需要建立交叉編譯環境。由于2.6內核中采用了一些新的特性和指令,需要采用較新的工具集,采用binutils-2.15、gcc-3.4.2、glibc-2.2.5、linux-2.6.8、glibc-linuxthreads-2.2.5來建立交叉編譯工具鏈,建立之后將工具鏈路徑加入系統路徑$PATH中。
  2.2內核修改
  Linux2.6.11.7內核加入了對S3C2410芯片的支持,不再需要任何補丁文件。修改內核源碼中Makefile的交叉編譯選項ARCH=arm,CROSS_COMPILE=arm-linux-。針對硬件配置,需要在arch/arm/mach-s3c2410/devs.c或者smdk2410.c中添加FLASH的分區信息s3c_nand_info,如表1。
  表1NANDFLASH分區表
  分區名起始地址大小
  Vivi0x000000000x00020000
  Param0x000200000x00010000
  Kernel0x000300000x001c0000
  Root0x002000000x00200000
  Usr0x004000000x03c00000
  然后在s3c_device_nand中增加.dev={.platform_data=&s3c_nand_info},在arch/arm/mach-s3c2410/mach-smdk2410.c中的__initdata部分增加&s3c_device_nand,使內核在啟動時初始化NANDFLASH信息。
  2.3內核編譯加載
  對內核進行適當的配置是一個量體裁衣的過程。由于2.6內核會根據本地系統配置進行初始設置,可以導入內核源碼默認s3c2410的配置文件,方便加載內核基本配置,然后再選擇所需選項。對MTD配置選擇支持MTD設備驅動以及NANDFLASH驅動;選擇支持要用到的各類文件系統(DEVFS、TMPFS、CRAMFS、YAFFS、EXT2、NFS)以及網絡設備和協議,本系統加載了網絡芯片CS8900以及USB支持;在H.264多媒體系統中還需要加載Framebuffer以支持LCD顯示功能。使用交叉編譯工具編譯內核源碼后,會在arch/arm/boot/下生成名為zImage的內核映像,在Bootloader的命令提示模式下使用下載命令完成內核加載到開發板的存儲設備FLASH中。編譯過程(相對以前版本的編譯過程,2.6內核編譯有所簡化):
  makemrproper
  makemenuconfig(字符界面,或者用makexconfig圖形界面,但需要Qt庫的支持,而makegconfig則需要GTK庫的支持)
  make
  makebzImage
  2.4文件系統
  Linux采用文件系統組織系統中的文件和設備,為設備和用戶程序提供統一接口。Linux支持多種文件系統,本系統使用CRAMFS格式的只讀根文件系統,而將FLASH中的USER區使用支持可讀寫的YAFFS文件系統格式,方便添加自己的應用程序。
  在根文件系統中,為保護系統的基本設置不被更改,采用CRAMFS格式。采用DEVFS來實現基本設備的建立掛載,同時使用BusyBox也是一個縮小根文件系統的辦法,提供了系統的基本指令;還需要建立一些必備的目錄,添加所需配置文件,如fstab、inittab等;還有一個重要的工作就是添加系統應用必備的動態函數庫。使用生成工具mkcramfs將整個根文件目錄里的內容制作成映像文件。
  mkcramfsrootfsrootfs.ramfs
  YAFFS文件系統格式的支持需要將驅動加入到內核代碼樹下fs/yaffs/,修改內核配置文件,就可以在內核編譯中加載對該文件系統的支持。使用mkyaffs工具將NANDFLASH分區格式化為YAFFS分區,將mkyaffsimage生成的應用程序鏡像燒寫進YAFFS分區,在啟動時通過寫入fstab自動加載YAFFS分區即可。
  2.5網絡設備驅動
  系統中采用CS8900A的10M網絡芯片,它使用S3C2410的nGCS3和IRQ_EINT9,相應修改linux/arch/arm/mach-s3c2410/irq.c,并在mach-smdk2410.c的smdk2410_iodesc[]中增加{SMDK2410_ETH_IO,S3C2410_CS2,SZ_1M,MT_DEVICE},內核源碼中加入芯片的驅動程序drivers/net/arm/cs8900.h和cs8900.c,并且配置網絡設備驅動的Makefile和Kconfig文件,加入CS8900A的配置選項,這樣可以在內核編譯時加載網絡設備的驅動。
  在Linux2.6應用的同時,也要看到其與以前版本內核比較存在的一些問題。在內核的編譯時間、內核鏡像大小、內核占用RAM空間大小、系統啟動時間相對Linux2.4而言都存在不同程度的不足,但在硬件條件日益進步的現今可以接受,而且一部分也是由于功能加強必然帶來的。雖然Linux并非一個真正的實時操作系統,但2.6內核的改進能夠滿足大部分的應用需求,所以Linux2.6內核將會在嵌入式系統領域大展身手。
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1IP6823 支持 qi 認證的無線充電發射控制 SOC
  2. 1.01 MB  |  1次下載  |  免費
  3. 2IP6824? 全集成QI?無線充電發射控制SOC
  4. 1.22 MB  |  1次下載  |  免費
  5. 3GD32G5x3 FFT模塊用戶指南
  6. 920.15KB   |  次下載  |  免費
  7. 4GD32H73x/H75x的器件限制
  8. 774.05KB   |  次下載  |  免費
  9. 5PDTA115EU配備PNP電阻的晶體管規格書
  10. 189.74KB   |  次下載  |  免費
  11. 6帶注入電流控制的1.8V通用SP8T-Z和2個SP4T-Z模擬開關
  12. 847.62KB   |  次下載  |  免費
  13. 7PESD18VY1BBIF保護二極管規格書
  14. 4.56MB   |  次下載  |  免費
  15. 8視頻處理器晶振應用方案
  16. 515.02 KB  |  次下載  |  免費

本月

  1. 1A7159和A7139射頻芯片的資料免費下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2零死角玩轉STM32F103—指南者
  4. 26.78 MB   |  41次下載  |  1 積分
  5. 3PIC12F629/675 數據手冊免費下載
  6. 2.38 MB   |  36次下載  |  5 積分
  7. 4PIC16F716 數據手冊免費下載
  8. 2.35 MB   |  18次下載  |  5 積分
  9. 5dsPIC33EDV64MC205電機控制開發板用戶指南
  10. 5.78MB   |  8次下載  |  免費
  11. 6STC15系列常用寄存器匯總免費下載
  12. 1.60 MB   |  7次下載  |  5 積分
  13. 7AN-1267: 使用ADSP-CM408F ADC控制器的電機控制反饋采樣時序
  14. 1.41MB   |  5次下載  |  免費
  15. 8LP9962集成 PFC 和 和的 高壓半橋驅動的 LLC 諧振
  16. 3.30 MB  |  4次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935124次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73813次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 男女交性视频播放 视频 视频 | 特级黄色免费片 | 美女三级网站 | 婷婷色站 | 亚洲精品mv在线观看 | 老师下面很湿很爽很紧 | 激情五月婷婷小说 | 欧美日韩一区二区三区视频在线观看 | 亚洲二区在线观看 | 久久午夜神器 | 日本资源在线观看 | 久久成人性色生活片 | 久久久午夜影院 | 久久亚洲国产成人影院 | 久久久久久久性潮 | 久久久久毛片成人精品 | 六月激情丁香 | 久久国产精品自在自线 | 五月丁五月丁开行停停乱 | 天天插天天插天天插 | 午夜剧j | 久精品视频村上里沙 | 四虎在线成人免费网站 | 97午夜理伦片在线影院 | 男啪女色黄无遮挡免费观看 | 成人久久网 | 成人女人a毛片在线看 | 亚洲精品在线免费观看视频 | 久久www免费人成高清 | 国产精品亚洲玖玖玖在线靠爱 | 啪啪免费观看 | 理论片免费午夜 | 天堂中文在线最新版地址 | 我爱操 | 午夜大片免费完整在线看 | 超级狂色而且免费又超好看 | 国产一区二区三区在线观看视频 | 国产亚洲高清在线精品不卡 | 在线黄视频网站 | 特黄aaaaaa久久片 | 亚洲精品久久片久久 |