freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

全國高校arm嵌入式教學及科研師資高級培訓班講稿-(編輯修改稿)

2024-08-14 09:35 本頁面
 

【文章內容簡介】 支持多種文件系統(tǒng),這樣它更加靈活,并可以和許多其它種操作系統(tǒng)共存。 ? Virtual File System(虛擬文件系統(tǒng))使得 Linux可以支持多個不同的文件系統(tǒng)。由于系統(tǒng)已將 Linux文件系統(tǒng)的所有細節(jié)進行了轉換,所以 Linux核心的其它部分及系統(tǒng)中運行的程序將看到統(tǒng)一的文件系統(tǒng)。 ? Linux的虛擬文件系統(tǒng)允許用戶同時能透明地安裝許多不同的文件系統(tǒng)。虛擬文件系統(tǒng)是為 Linux用戶提供快速且高效的文件訪問服務而設計的。 52 常用 uClinux文件系統(tǒng) uClinux內核移植 ? Linux系統(tǒng)核心可以支持十多種文件系統(tǒng)類型: JFS、 ext、 ext ext ISO9660、 XFS、 Minx、 MSDOS、 UMSDOS、 VFAT、 NTFS、 HPFS、 NFS、 SMB、 SysV、 PROC、 romfs等。 53 romfs文件系統(tǒng) uClinux內核移植 ? romfs文件系統(tǒng)是一個精簡的、只讀文件系統(tǒng)。相對于一般的 ext2文件系統(tǒng)要求更少的空間。 ? 其空間的節(jié)約來自于兩個方面: ?首先 內核支持 romfs文件系統(tǒng)比支持 ext2文件系統(tǒng)需要更少的代碼 。 ?其次 romfs文件系統(tǒng)相對簡單,在建立文件系統(tǒng)超級塊( superblock)時需要更少的存儲空間 。 ? romfs文件系統(tǒng) 不支持動態(tài)擦寫保存,對于系統(tǒng)需要動態(tài)保存的數(shù)據采用虛擬 ram盤的方法 進行處理( ram盤將采用 ext2文件系統(tǒng))。目前所有的內核 ( )都支持 romfs,但是在一些 linux發(fā)布中可能缺省沒有將其編譯進來。雖然如此,在嵌入式的特殊需求中,仍然被廣泛應用。 jx44b0 uCLinux系統(tǒng)采用romfs文件系統(tǒng) + ext2 ram盤 。 54 編譯 uClinux文件系統(tǒng) uClinux內核移植 ? 配置文件系統(tǒng) ? 編譯文件系統(tǒng)源代碼,生成 uClinux文件系統(tǒng) ? 生成 romfs文件系統(tǒng)映像 ? 編譯 romfs文件系統(tǒng)映像到內核中或者寫到固定位置并由內核從該位置加載 55 uClinux文件系統(tǒng)相關文件和目錄 uClinux內核移植 ? 應用程序源代碼: uClinuxdist/user ? 編譯生成的 uClinux文件系統(tǒng): uClinuxdist/romfs ? 相關的腳本文件: uClinuxdist/vendors/Samsung/44b0x inittab motd passwd rc Makefile 56 標準 C庫 uClinux內核移植 ? uClibc ? uClibc ? 可以配置 57 uClinux文件系統(tǒng)配置 1 uClinux內核移植 ? 在 uClinuxdist目錄下運行菜單配置 :make menuconfig ? 選擇 Kernel/Library/Defaults Selection 58 uClinux文件系統(tǒng)配置 2 uClinux內核移植 ? 在 Kernel/Library/Defaults Selection中選擇 Customize Vendors/User Settings(NEW),選擇配置文件系統(tǒng),然后保存、退出 59 uClinux文件系統(tǒng)配置 3 uClinux內核移植 ? 文件系統(tǒng)配置菜單,可以通過菜單進行文件系統(tǒng)的裁減 60 uClinux文件系統(tǒng)編譯 uClinux內核移植 ? 直接 在 uClinuxdist目錄 下 make將編譯內核和文件系統(tǒng)。 ? make user_only編譯文件系統(tǒng)。 ? 編譯生成的文件系統(tǒng)位于 uClinuxdist/romfs,也就是說uClinux文件系統(tǒng)成功加載后,其根目錄和 uClinuxdist/romfs一致。 ? 編譯生成的文件系統(tǒng)需要通過 genromfs命令生成 romfs文件系統(tǒng)映像。 ? romfs映像可以和內核一起編譯或者由內核從指定位置加載。 61 uClinux內核移植的若干問題 1 uClinux內核移植 ? 源程序閱讀問題 1 ? uClinux內核源代碼非常多,且結構復雜, uClinux內核有接近 10000個文件, 4000000行代碼。 ? 因此,閱讀 uClinux時必須借助一些工具 Source insight Ultraedit等 ? uClinux內核使用 GNU C,它在 ANSI C基礎上進行了一些擴充,因此在許多編程習慣上與 ANSI C不同。 ? 大量使用 宏定義 ,且許多宏定義非常復雜,這也在一定程度上增加了難度。 62 uClinux內核移植的若干問題 1 uClinux內核移植 ? 源程序閱讀問題 2 ? uClinux中并不是所有代碼都編譯進去,對于一個體系結構,只有很少部分的代碼參與編譯,因此,必須掌握uClinux發(fā)布中各目錄的意義才能進一步清楚是否參與編譯。 ? 還可以通過查看 .o文件的方式查看當前參與編譯的是哪個文件,通常 ,只有生成了 .o的文件才參與編譯, 注意:這適合于大部分情況,但是不是絕對的 。 ? uClinux中大量使用 條件編譯 ,閱讀代碼時需要弄清楚,到底哪部分代碼參與編譯。 ifdef xxx … elif … endif 63 uClinux內核移植的若干問題 2 uClinux內核移植 ? GNU C ? 從 C++中吸收了 inline和 const等關鍵字。 ? ANSI C代碼與 GNU C中的保留關鍵字沖突通過雙下劃線 (__)解決:如 inline等價于 __inline__、 asm等價于__asm__ ? 結構體的初始化 64 uClinux內核移植的若干問題 2 uClinux內核移植 ? GNU C結構體初始化 結構體聲明 ANSI C結構體初始化,必須按順序 GNU C結構體初始化,無需按順序 65 uClinux應用程序 uClinux應用程序設計 ? 編寫程序 ? 編寫 Makefile文件 ? 編譯 ? 運行 66 編寫 Makefile文件 uClinux應用程序設計 指定編譯器 生成的執(zhí)行文件和鏈接過程中的目標文件 編譯和鏈接的參數(shù) 編譯命令 拷貝 leddemo映像文件到 romfs中 生成 romfs映像 清除 67 uClinux應用程序運行 1 uClinux應用程序設計 ? 應用程序運行可以采用如下兩種方式: ?在 uClinux內核啟動起來,并且有辦法從主機獲取文件時,可以在 uClinux控制臺直接從主機獲取編譯后的應用程序??梢酝ㄟ^ ftp、 nfs、 ssh等方式達到。 ?也可以在編譯應用程序后將該應用程序拷貝到uClinuxdist/romfs中,然后重新調用 genromfs生成romfs映像文件并重新編譯內核,然后下載運行新的內核 ,此時文件系統(tǒng)已經更新。 68 uClinux應用程序運行 2 uClinux應用程序設計 ? uClinux應用程序必須編譯成平坦格式的 (flat),通過連接參數(shù) Wl,elf2flt完成。 leddemo為平坦格式 平坦格式 69 uClinux應用程序運行 3 uClinux應用程序設計 ? 重新編譯內核時,通常將應用程序添加到 uClinux文件系統(tǒng)的 bin目錄,該目錄有全局路徑。且該文件 應該具有執(zhí)行屬性 ,可以通過如下命令修改: chmod 777 leddemo 在新內核啟動后,直接在命令行輸入文件名即可運行。 ? 當直接在 uClinux控制臺中從主機上獲取應用程序時,必須保存到可寫的位置, 比如 JX44B0中的 ram盤中 :/var目錄下,而不能保存到只有只讀屬性的 /bin里面,也必須修改其具有執(zhí)行屬性 ,且通過如下命令執(zhí)行該程序: ./leddemo 70 配置 uClinux應用程序啟動后自動運行 uClinux應用程序設計 ? 如果需要在系統(tǒng)啟動以后自動運行 leddemo程序,需要編輯 romfs中的啟動腳本文件,該文件為 uClinuxdist/romfs/etc/rc 使用 vi編輯器編輯,在該文件最后添加如下腳本: /bin/leddemo 該腳本將啟動后運行 leddemo,直到程序退出?;? /bin/leddemoamp。 它將在 后臺運行 leddemo,不影響其他的程序運行。 71 linux驅動程序 uClinux驅動程序設計 ? Linux下對外設的訪問只能通過驅動程序進行 ? Linux具有統(tǒng)一的驅動程序接口,以文件操作的方式管理驅動程序 ,如: open、 read、 write、 ioctl… ? 驅動程序是內核的一部分,可以使用中斷、 DMA等操作 ? 驅動程序需要在用戶態(tài)和內核態(tài)之間傳遞數(shù)據 72 uClinux驅動程序 uClinux驅動程序設計 ? uClinux沒有屏蔽應用層對外設的直接訪問 ,可以在用戶態(tài)直接進行如下操作: *((unsigned char *)0x02022022) =0x3e。 ? uClinux下用戶態(tài)無法處理中斷 ? uClinux下對外設的訪問推薦采用驅動程序進行,在內核態(tài)編寫驅動程序(包括直接對外設操作、處理中斷等),用戶態(tài)通過標準驅動程序調用方法進行操作。 73 uClinux驅動程序編譯方式 uClinux驅動程序設計 ? Linux中驅動程序的使用可以按照兩種方式編譯: ?一種是 靜態(tài)編譯進內核 ?另一種是編譯成模塊以供 動態(tài)加載 ? 由于 uClinux不支持模塊動態(tài)加載 ,而且嵌入式 Linux不能夠象桌面 Linux那樣靈活的使用 insmod/rmmod加載卸載設備驅動程序,因而通常在 uClinux中將設備驅動程序靜態(tài)編譯進內核。 74 uClinux下設備驅
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1