




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、整理課件 第第12章章 嵌入式嵌入式Linux軟件設計軟件設計 整理課件12.1 移植的基本概念移植的基本概念n移植是嵌入式Linux軟件設計中用得最多的一個概念,廣義上講移植包括軟件移植和硬件移植。從狹義上講,移植就是指軟件移植,即將一個軟件從一個平臺遷移到另一個與其不同的平臺上工作。通常情況下,移植分為以下3種情況。n1、從一個硬件平臺移植到另一個硬件平臺、從一個硬件平臺移植到另一個硬件平臺n2、從一個操作系統移植到另一個操作系統、從一個操作系統移植到另一個操作系統n3、從一種軟件庫環境移植到另一種軟件庫、從一種軟件庫環境移植到另一種軟件庫環境環境 整理課件12.2 Bootloader的
2、移植的移植n Bootloader是操作系統和硬件的紐帶,它負責初始化硬件,引導操作系統內核,檢測各種參數給操作系統內核使用。事實上,一個功能完備的大型Bootloader,就相當于一個小型的操作系統。在嵌入式領域中,操作系統移植的關鍵在于Bootloader的移植以及操作系統內核與硬件相關部分的移植。 整理課件12.2.1 關鍵文件的修改關鍵文件的修改n1. vivi頂層Makefile文件的修改nvivi作為Linux系統的啟動代碼,在編譯配置時需要用到函數庫,包括交叉編譯器庫和頭文件,交叉編譯開關選項設置,還包括Linux內核代碼中的庫和頭文件,所以,通常需要修改vivi工程管理文件Ma
3、kefile。n與具體運行在哪一個處理器平臺上相關的文件都存放在vivi/arch/目錄下,本系統使用S3C2410 x處理器,對應的目錄為s3c2410。其中head.s文件是vivi啟動配置代碼,加電復位運行的代碼就是從這里開始的。 整理課件nvivi能從Nor Flash或Nand Flash啟動,因此啟動程序、Linux內核及根文件系統,甚至還包括圖形用戶界面都需要存放在Nor Flash或Nand Flash中。n經過修改后,S3C2410 x開發板能從Nand Flash中啟動運行Linux,也能從Nor Flash中啟動,所以相應地也要修改啟動命令 . 整理課件n5. Flash
4、驅動的實現n移植vivi的最后一步就是實現Flash驅動,程序員需要根據自己系統中具體Flash芯片的型號及配置來修改驅動程序,使Flash設備能夠在嵌入式系統中正常工作。 整理課件12.2.2 串口設置示例串口設置示例n串口作為一種常用的通信方式,在嵌入式開發中起到極其重要的作用,幾乎所有的嵌入式設備都提供了串口的支持,并且都在Bootloader中就給出了支持,以為下一步開發提供方便,比如操作系統內、文件系統等下載等。 整理課件n對vivi而言,串口的初始化是在vivi初始化的第一個階段進行,具體是在arch/s3c2410 /head.s文件中設置,且一般串口波特率設置為115200Bu
5、ad。有關S3C2410數據手冊中的串口相關寄存器的功能和波特率設置見6.1節,比如,若希望波特率設置為115200,而PCLK又等于40MHz,那么UBRDIVn就應該設置為:nUBRDIVn= (int)(40000000/(11520016) ) 1 =(int)(21.7)-1 =20n其中,PCLK=50700000,UBRDIV0的值向下取整。 整理課件12.2.3 Bootloader的交叉編的交叉編譯譯n為了進行交叉編譯,需要修改vivi目錄下的Makefile文件,將其中的編譯器要由gcc改為交叉編譯器arm-linux-gcc。然后使用make命令,系統將根據Makefil
6、e文件自動完成整個編譯。編譯完成后,系統將自動在vivi的根目錄下生成一個名為“vivi” 的二進制目標文件,用于下載到嵌入式目標設備的Flash中。整理課件12.2.4 Bootloader的下載的下載nBootloader的下載(又叫做燒錄)是利用JTAG口進行的,操作平臺可以是Windows或桌面Linux,只是兩者用的工具軟件不同而已,這里以Windows操作平臺以及sjf2410工具軟件為例進行介紹。在下載之前,需要將生成的可執行文件從桌面Linux下轉移到Windows的某個目錄下(如 d:vivi)。整理課件n 利用Jflash線將PC機和嵌入式目標板的JTAG口正確連接。這里要
7、注意,Jflash線和Wiggler線的形狀非常相似,不要混淆。n 啟動sjf服務,安裝giveio.sys驅動。打開sjf目錄下的loaddrv.exe,將彈出LoadDrv窗口.整理課件n 然后再依次點擊install 和start按鈕, 就會提示“service already runing”,也就是驅動已經安裝成功.n 在DOS環境下手動運行sjf2410命令:sjf2410 /f: vivi,其中“/f:是”參數而不是目錄.n vivi下載成功后,用串口將PC和嵌入式目標板連接起來,并啟動Windows中的超級終端.整理課件12.3 嵌入式嵌入式Linux內核的移植內核的移植n 內核
8、是嵌入式Linux系統的核心部分,因為Linux與Windows不同,前者的內核和文件系統、圖形用戶系統(GUI窗口系統)可以分開,它們的開發、移植、下載甚至運行都是可以分開的。內核移植是一個比較復雜的任務,當然也是嵌入式系統開發中非常重要的一個過程。內核移植一般包括內核配置、內核編譯和內核下載3大步驟。 整理課件12.3.1 內核移植的準備內核移植的準備 n移植內核首先要準備好編譯內核的編譯器即交叉編譯工具鏈,然后從相關的網站()下載要移植的內核源代碼代碼(基本上都是C語言編寫) 。整理課件12.3.1 內核移植的準備內核移植的準備n3. arch/arm目錄下目
9、錄下Config.in 修改修改nConfig.in文件是用來設置后面介紹的menuconfig配置菜單的,它們是一一對應關系。這里把嵌入式目標板的CPU平臺加在相應的地方,這樣在配置Linux內核時就能夠選擇是否支持該平臺了。最初標準的2.4.18內核中沒有S3C2410的相關信息,所以需要在該文件中進行有效的配置,以加入支持S3C2410處理器的相關信息。整理課件12.3.1 內核移植的準備內核移植的準備n4. arch/arm/boot目錄下目錄下Makefile 修改修改n編譯出來的內核存放在該目錄下。這里用來指定內核解壓到實際硬件內存系統中的物理地址。一般如果內核無法正常啟動,很可能
10、是這里的地址設置不正確。n5. arch/arm/boot/compressed目錄下目錄下Makefile 修改修改n該文件從vmlinux中創建一個壓縮的vmlinuz鏡像文件。該文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是從arch/arm/boot/Makefile文件中得到的。 整理課件12.3.1 內核移植的準備內核移植的準備n7. arch/arm/def-configs目錄目錄n 這里定義了一些平臺的這里定義了一些平臺的config文件,文件,比如比如lart和和assert等。把配置好的等。把配置好的S3C2410的配置文件復制到這里即
11、可。的配置文件復制到這里即可。整理課件12.3.1 內核移植的準備內核移植的準備n8. arch/arm/kernel目錄下目錄下Makefile 修改修改n該文件主要用來確定文件類型的依賴關系。n9. arch/arm/kernel目錄下的文件目錄下的文件debug-armv.s 修改修改n在該文件中添加如下代碼,目的是關閉外圍設備的時鐘,以保證系統正常運行。整理課件12.3.1 內核移植的準備內核移植的準備n10. arch/arm/kernel目錄下的文件目錄下的文件entry-armv.s 修改修改n在適當的地方加入如下代碼,此為CPU初始化時的處理中斷的匯編代碼。n11. arch/
12、arm/mm目錄下的相關文件目錄下的相關文件n此目錄下的文件是和ARM平臺相關的內存管理內容,只有mm-armv.c文件需要移植。整理課件12.3.1 內核移植的準備內核移植的準備n12. arch/arm/mach-s3c2410目錄下目錄下的相關文件的相關文件n這個目錄在2.4.18版本的內核中是不存在的,但在高版本中已經添加了對這款處理器的支持。不過發布的內核只是對處理器的基本信息提供支持,有關開發板的外設,例如 USB、電源管理等都要用戶自己添加。整理課件12.3.2 關鍵文件的修改關鍵文件的修改n1. 設置目標平臺和指定交叉編譯器設置目標平臺和指定交叉編譯器n在源代碼的最上層根目錄下
13、的Makefile文件中,指定所移植的硬件平臺,以及所使用的交叉編譯器。 n2. arch/arm目錄下目錄下Makefile 修改修改n內核系統的啟動代碼是通過此文件產生的。 整理課件n3. arch/arm目錄下目錄下Config.in 修改修改nConfig.in文件是用來設置后面介紹的menuconfig配置菜單的,它們是一一對應關系。這里把嵌入式目標板的CPU平臺加在相應的地方,這樣在配置Linux內核時就能夠選擇是否支持該平臺了 n4. arch/arm/boot目錄下目錄下Makefile 修改修改n編譯出來的內核存放在該目錄下。這里用來指定內核解壓到實際硬件內存系統中的物理地址
14、。一般如果內核無法正常啟動,很可能是這里的地址設置不正確。整理課件n5. arch/arm/boot/compressed目錄下目錄下Makefile 修改修改n該文件從vmlinux中創建一個壓縮的vmlinuz鏡像文件。該文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是從arch/arm/boot/Makefile文件中得到的。 整理課件n7. arch/arm/def-configs目錄目錄n 這里定義了一些平臺的config文件,比如lart和assert等。把配置好的S3C2410的配置文件復制到這里即可。n8. arch/arm/kernel目錄
15、下目錄下Makefile 修改修改n該文件主要用來確定文件類型的依賴關系。整理課件n9. arch/arm/kernel目錄下的文件目錄下的文件debug-armv.s 修改修改n在該文件中添加如下代碼,目的是關閉外圍設備的時鐘,以保證系統正常運行。 n10. arch/arm/kernel目錄下的文件目錄下的文件entry-armv.s 修改修改n在適當的地方加入如下代碼,此為CPU初始化時的處理中斷的匯編代碼。整理課件n11. arch/arm/mm目錄下的相關文件目錄下的相關文件n此目錄下的文件是和ARM平臺相關的內存管理內容,只有mm-armv.c文件需要移植。n12. arch/ar
16、m/mach-s3c2410目錄下的相目錄下的相關文件關文件n這個目錄在2.4.18版本的內核中是不存在的,但在高版本中已經添加了對這款處理器的支持。不過發布的內核只是對處理器的基本信息提供支持,有關開發板的外設 .整理課件12.3.3 內核的配置與裁剪內核的配置與裁剪n配置內核與裁剪是移植內核過程中很重要的一步,也是非常復雜的一步,配置時一定要小心,否則操作系統將無法運行。配置內核的目的是裁剪掉不必要的文件和目錄,獲得一個最簡的、又能滿足用戶開發的操作系統,以解除嵌入式開發過程中所遇到的存儲空間有限的困擾。整理課件n 通常有4種主要的配置內核的方法。n 1. make confign 2.
17、make oldconfig n 3. make menuconfign 4. make xconfig 整理課件12.3.4 內核的編譯內核的編譯n編譯內核通常也需要幾個步驟,一是清除以前編譯通過的殘留文件;二是編譯內核image文件和可加載模塊;三是安裝模塊。在編譯內核之前,可先參考內核目錄下的README文件和Documentation/Changes文件,其中README文件告訴我們通過的安裝內核的方法,Changes文件主要告訴編譯和運行內核需要的最低工具軟件列表。 整理課件n具體介紹編譯內核的基本步驟如下:n make dep命令用在內核2.4或之前,用于建立源文件之間的依賴關系,
18、在執行內核配置命令之后使用, n make clean命令用于刪除前面留下來的中間文件,該命令不會刪除.config等配置文件。這個步驟是可選的.n make zImage命令用于編譯生成壓縮形式的內核映象,編譯成功后,就會在archarmboot目錄下生成zImage文件 .整理課件n 如果在配置菜單的過程中,有些選項被選擇為模塊的,即選項前為M,并且在回答Enable loadable module support(CONFIG_MODULES)時選了“Yes”的,則接下來就還要用命令make modules來編譯這些可加載模塊,并用make modules_install 將make m
19、odules 生成的模塊文件復制到到相應目錄。 n 如果是直接升級PC桌面Linux系統的內核,那么接下來還要用make install來安裝新內核。 整理課件12.3.5 內核的下載內核的下載n 啟動超級終端(波特率為115200),連好串口線,在開機的瞬間快速的按空格鍵(不能是回車鍵),就進入到vivi控制臺命令行下。n 在vivi命令行上輸入:load flash kernel x(含義就是:向flash芯片中燒寫 kernel,采用xmodem協議),回車后會提示等待。整理課件n 立即選擇要發送的文件,比如zImage文件,這里Linux環境下源代碼arch/arm/boot目錄下的z
20、Image內核映像文件已轉移到windows 的某個目錄下。 整理課件12.4 嵌入式嵌入式Linux文件系統的移植文件系統的移植n文件系統是Linux/UNIX系統的一個重要組成部分,也是操作系統正常工作時的必要組成部分,在啟動時內核需要根文件系統來掛載和組織文件。在目前的Linux操作系統中,內核代碼映像文件保存在根文件系統中,系統引導啟動程序會從這個根文件系統設備上把內核執行代碼加載到內存中去運行。整理課件12.4 嵌入式嵌入式Linux文件系統的移植文件系統的移植n在Linux 中,用戶能看到的文件空間是用一個單樹狀結構來組織的,根文件系統的最頂層稱為root,其下的每一個目錄都有其具
21、體的目的和用途,一般是根據FHS(Filesystem Hierarchy Standard)定義建立一個正式的文件系統結構的。FHS即文件系統結構標準,它在UNIX/L inux操作系統的文件系統中是用于確定在何處存儲何種文件的標準。n常見的根文件系統有Romfs 、JFFS2、NFS、ext2、RamDisk、cramfs等 。整理課件nLinux驅動開發是嵌入式軟件設計中的主要內容,也是嵌入式Linux移植中工作量最大的部分。這里主要概述Linux設備驅動框架、驅動程序的組成及常用的加載驅動程序的方法,并通過一實例來詳細介紹字符設備驅動程序的開發過程。 整理課件12.5.1 驅動程序概述
22、驅動程序概述n設備驅動程序是應用程序與硬件之間的一個中間軟件層,可以看作是一個硬件抽象層(HAL, Hardware Abstract Layer),為應用程序屏蔽了硬件的細節。在應用程序看來,硬件設備只是一個設備文件,應用程序可以像操作普通文件一樣對硬件設備進行操作;在操作系統看來,設備驅動程序是內核的一部分,它主要實現的功能有:對設備進行初始化和釋放;把數據從內核傳送到硬件和從硬件讀取數據;讀取應用程序傳送給設備文件的數據,回送應用程序請求的數據以及檢測和處理設備出現的錯誤。整理課件n1. 設備類型分類設備類型分類 n在Linux操作系統下有3類主要的設備文件類型:字符設備、塊設備、網絡設
23、備。字符設備和塊設備的主要區別在于是否使用了緩沖技術。 n(1) 字符設備字符設備n字符設備(char device)和普通文件之間有主要的區別:普通文件可以來回讀/寫,而大多數字符設備僅僅是數據通道,只能順序讀/寫。 整理課件n(2)塊設備)塊設備 n塊設備(block device)是文件系統的物質基礎,它也支持像文件一樣被訪問。 n(3)網絡設備)網絡設備n網絡設備是一個物理設備,如以太網卡,但軟件也可以作為網絡設備,典型的是回送設備(loopback)。 整理課件n2. 設備驅動與文件系統的關系設備驅動與文件系統的關系nLinux通過設備文件系統對設備進行管理,各種設備都以文件的形式存
24、放在/dev目錄下,稱為“設備文件”。應用程序可以像普通文件一樣打開、關閉和讀/寫這些設備文件。為了管理這些設備,系統為設備編了號,每個設備號又分為主設備號和次設備號。 整理課件12.5.2 重要的數據結構和函數重要的數據結構和函數n1. 設備驅動中關鍵數據結構設備驅動中關鍵數據結構n設備驅動程序所提供的這組入口點由幾個結構向系統進行說明,分別是file_operations數據結構、inode數據結構和file數據結構。n2. 設備驅動開發中的基本函數設備驅動開發中的基本函數n設備驅動程序所提供的入口點,在設備驅動程序初始化的時候向系統進行說明,以便系統在適當的時候調用。同時,初始化部分一般
25、還負責為設備驅動程序申請系統資源,包括內存、中斷、時鐘、I/O端口等(這些資源也可以在open子程序或別的地方申請),在這些資源不用的時候,應該釋放它們,以利于資源的共享。 整理課件n(1)設備注冊函數設備注冊函數n(2)內存操作函數內存操作函數 n(3)中斷申請和釋放函數中斷申請和釋放函數 n(4) I/O端口操作函數端口操作函數 整理課件12.5.3 字符設備驅動程序的字符設備驅動程序的組成組成n設備驅動程序作為內核的一部分它完成的功能包括:對設備初始化和釋放;把數據從內核傳送到硬件并從硬件讀取數據;讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據;檢測和處理設備出現的錯誤。 整理
26、課件n1. 驅動程序的注冊和注銷驅動程序的注冊和注銷n設備驅動程序通過命令insmod以模塊的方式動態加載后此時的入口點是init _module 函數或宏 mdolue init 。 n2. 設備操作設備操作n在設備成功注冊之后,就可對它進行打開、讀寫、控制和釋放等操作。在Linux內核中,字符設備使用fie_operations結構來定義設備的各種操作集合。 整理課件n3. 驅動程序的中斷處理驅動程序的中斷處理n在實際的系統中,設備的許多工作通常與處理器不同步,而且總比處理器慢。如果讓處理器一直等待到設備準備好時才進行操作會造成處理器資源的浪費一種好的方法就是在設備準備好后通知處理器來進行
27、處理,這種方法就是中斷。由于系統的中斷資源有限驅動程序在使用中斷前需要申請,使用完后需要釋放。Linux中,中斷的申請和釋放分別是通過nrequest_irq()函數和free_rq()函數來實現的。整理課件12.5.4 動態和靜態加載方式動態和靜態加載方式nLinux設備驅動模塊屬于內核的一部分,可以用靜態和動態兩種方式來進行編譯和加載。兩者方式的開發過程稍有不同,也各有特點。整理課件n1. 靜態加載方式n(1)特點n靜態方式就是將驅動程序的源代碼事前放到內核源代碼中,和整個內核一起編譯。它需要修改內核源代碼和文件系統,并重新燒錄下載到嵌入式設備中,這樣當內核啟動時就會加載驅動程序。 n(2
28、)內核的修改n設備驅動程序寫完后,就可以將文件加到linux的內核中了。 整理課件n(3)文件系統的修改n在內核中加上驅動程序后,還不能直接在應用程序中使用驅動程序中的函數,如open,close等,因為還需要在文件系統中提供設備訪問接口,也就是/dev/目錄下的設備名與設備號。整理課件n2. 動態加載方式n(1)特點n動態加載方式就是說將驅動程序編譯成一個可加載、卸載的模塊目標文件,然后添加到內核中去即可。這種方法的好處就是通過將于內核中一些不常用的驅動采取動態加載方式,從而可以減少內核的大小,并且模塊被插入內核后,它就和內核其他部分一樣可方便的被使用。 整理課件n(2)驅動程序添加到內核中
29、n 對于動態驅動程序的源代碼,其初始化函數和靜態方式的定義不同 ,這里要用這樣一些函數:int _init device_init (void);void _exit device_exit(void);module_init(device _init);module_exit(device_exit)。 n(3)文件系統下設備名的創建n驅動添加安裝好后,還需要修改文件系統.整理課件12.6 應用程序開發應用程序開發n基于嵌入式Linux的應用程序開發方式與流程,與基于Windows的應用程序開發有很大的不同。在Windows環境中,開發者習慣使用各種功能強大的集成編譯開發環境(IDE),完成
30、程序編輯、編譯后,直接運行即可。但在基于嵌入式Linux的應用程序開發過程中,目前還缺乏比較簡單、高效的開發工具和手段,同時,由于應用程序的最終運行平臺是嵌入式目標系統,而程序開發與調試又仍然需要借助PC平臺的桌面系統來完成,因而在程序的開發與調試過程中,需要頻繁地將目標文件從桌面Linux系統中加載到嵌入式目標設備中,這是一個相對比較耗時的過程。 整理課件12.6.1 應用程序的加載方式應用程序的加載方式n在桌面Linux上編輯源文件,交叉編譯生成ELF可執行文件后,然后需要將生成的可執行文件加載到嵌入式目標系統上運行。此過程的實現有多種方式,最為常見的方式有U盤拷貝、FTP下載和NFS掛載方式。整理課件12.6.2 應用程序的應用程序的GDB/GDBSERVER聯機調試聯機調試n在前面的章節中我們介紹了基于ADS以及單機環境下的多種調試方式,但是嵌入式Linux的聯機環境下,常用的調試代理工具為GDBSERVER。它是一個輕量級的調試器,運行在目標機上,然后與運行在主機上的GDB通過RSP(Remote Serial Pro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國NATS交通信號控制系統數據監測研究報告
- 2025年中國FVC防腐涂料數據監測研究報告
- 2025年中國CD機芯電機數據監測報告
- 2025年中國3-甲氧基補有脂素片數據監測報告
- 2025至2030年中國藥用級二水磷酸氫鈣市場分析及競爭策略研究報告
- 2025至2030年中國羅紋華夫格粗細針市場分析及競爭策略研究報告
- 2025至2030年中國硬鋁母線市場分析及競爭策略研究報告
- 2025至2030年中國電壓互感器手車市場分析及競爭策略研究報告
- 2025至2030年中國燈具組件市場分析及競爭策略研究報告
- 2025至2030年中國汽車空調壓縮機直傘齒輪市場分析及競爭策略研究報告
- 中醫診所各項工作制度
- 基坑安全培訓課件
- 財務案例分析-形成性考核二-國開(SD)-參考資料
- 青藍工程指導教師(師傅)個人工作總結
- (完整版)設備吊裝施工方案
- 接地實驗報告
- 工廠綠植租賃及擺放服務方案
- 合伙意向合同協議書
- 房地產代理撤場協議2024年
- 欠薪工資協商合同范文
- DLT5196-2016 火力發電廠石灰石-石膏濕法煙氣脫硫系統設計規程
評論
0/150
提交評論