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

正文內(nèi)容

—嵌入式系統(tǒng)軟件開(kāi)發(fā)技術(shù)-展示頁(yè)

2025-07-26 19:58本頁(yè)面
  

【正文】 6機(jī)器 ? 主機(jī) +目標(biāo)機(jī) ? 主機(jī)可以自由選擇 Linux或 Windows+Cygwin ? 主機(jī)和目標(biāo)機(jī)通過(guò)網(wǎng)絡(luò)共享文件系統(tǒng) ? 內(nèi)核崩潰不會(huì)影響主機(jī) Linux驅(qū)動(dòng)程序的開(kāi)發(fā)環(huán)境(續(xù)) ? 主機(jī) +目標(biāo)機(jī)環(huán)境包括 ? 主機(jī)運(yùn)行的工具鏈 ∶ cross gcc + glibc + gdb, 如果是 windows主機(jī)還要有 cygwin仿真環(huán)境 ? 主機(jī)運(yùn)行遠(yuǎn)程服務(wù),常用的有 tftp用來(lái)傳送內(nèi) 核映像、 initrd, NFS用來(lái)共享文件系統(tǒng) ? 目標(biāo)機(jī)運(yùn)行 ssh或 tel等遠(yuǎn)程登陸服務(wù),用來(lái) 調(diào)試驅(qū)動(dòng)程序 Linux驅(qū)動(dòng)程序的加載方式 ? 驅(qū)動(dòng)程序直接編譯入內(nèi)核 ? 驅(qū)動(dòng)程序在內(nèi)核啟動(dòng)時(shí)就已經(jīng)在內(nèi)存中 ? 可以保留專(zhuān)用存儲(chǔ)器空間 ? 驅(qū)動(dòng)程序以模塊形式存儲(chǔ)在文件系 統(tǒng)里,需要時(shí)動(dòng)態(tài)載入內(nèi)核 ? 驅(qū)動(dòng)程序按需加載,不用時(shí)節(jié)省內(nèi)存 ? 驅(qū)動(dòng)程序相對(duì)獨(dú)立于內(nèi)核,升級(jí)靈活 Linux驅(qū)動(dòng)程序模塊加載 Linux驅(qū)動(dòng)程序開(kāi)發(fā)的任務(wù) ? 規(guī)劃硬件資源的使用 ? 分離硬件相關(guān)和硬件無(wú)關(guān)的代碼 ? 劃分驅(qū)動(dòng)程序的抽象層次 ? 移植驅(qū)動(dòng)程序到新的平臺(tái) Linux驅(qū)動(dòng)程序開(kāi)發(fā)的任務(wù) ? 規(guī)劃硬件資源的使用 ? CPU時(shí)間片分配 ? 中斷處理 ? 系統(tǒng)存儲(chǔ)器空間映射 設(shè)備存儲(chǔ)器的映射 Linux驅(qū)動(dòng)程序開(kāi)發(fā)的任務(wù) ? 分離硬件相關(guān)和硬件無(wú)關(guān)的代碼 ? 劃分驅(qū)動(dòng)程序的抽象層次 Linux驅(qū)動(dòng)程序開(kāi)發(fā)的任務(wù) ? 移植驅(qū)動(dòng)程序到新的平臺(tái) GPL對(duì)驅(qū)動(dòng)程序開(kāi)發(fā)的影響 ? 實(shí)現(xiàn)非 GPL授權(quán)的方法 —— 模塊形 式動(dòng)態(tài)加載 ? 驅(qū)動(dòng)程序可以以私有產(chǎn)權(quán)形式進(jìn)行 商業(yè)授權(quán) 設(shè)備驅(qū)動(dòng)程序的代碼 ? 驅(qū)動(dòng)程序的注冊(cè)與注銷(xiāo) ? register_chrdev() ? register_blkdev() ? 設(shè)備的打開(kāi)與釋放 ? open() ? release() ? 設(shè)備的讀寫(xiě)操作 ? read() ? write() ? 設(shè)備的控制操作 ? ioctl() 設(shè)備驅(qū)動(dòng)的加載 ? 使用模塊的方式動(dòng)態(tài)加載驅(qū)動(dòng) ? int func_init(void) ? Makefile: ? insmod ? lsmod ? rmmod ? 將驅(qū)動(dòng)靜態(tài)編譯到內(nèi)核里面 ? int __init func_init(void) ? Makefile: ? 啟動(dòng)時(shí)自動(dòng)加載 Linux驅(qū)動(dòng)程序模塊加載 編寫(xiě)驅(qū)動(dòng)程序的一些基本概念 ? 無(wú)論是什么操作系統(tǒng)的驅(qū)動(dòng)程序,都有一些通用的概念 ? 操作系統(tǒng)提供給驅(qū)動(dòng)程序的支持也大致相同 ? 以下簡(jiǎn)單介紹網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的一些基本要求 編寫(xiě)網(wǎng)絡(luò)驅(qū)動(dòng)程序 發(fā)送和接收 這是一個(gè)網(wǎng)絡(luò)設(shè)備最基本的功能 ? 如一塊網(wǎng)卡所做的無(wú)非就是收發(fā)工作。 ? 在 Linux內(nèi)核的不斷升級(jí)過(guò)程中,驅(qū)動(dòng)程序的結(jié)構(gòu)還是相對(duì)穩(wěn)定。 Linux驅(qū)動(dòng)程序開(kāi)發(fā) ? 建立嵌入式 Linux平臺(tái),移植和編寫(xiě)驅(qū)動(dòng)程序往往是最具挑戰(zhàn)的工作 ? 驅(qū)動(dòng)程序的開(kāi)發(fā)周期一般較長(zhǎng),對(duì)產(chǎn)品的面世時(shí)間有著重要影響 ? 驅(qū)動(dòng)程序質(zhì)量的好壞,直接關(guān)系到系統(tǒng)工作效能和穩(wěn)定性,對(duì)項(xiàng)目的成敗起著關(guān)鍵作用 設(shè)備驅(qū)動(dòng)程序主要功能 ? 設(shè)備驅(qū)動(dòng)程序主要完成如下功能: ? 檢測(cè)設(shè)備和初始化設(shè)備 ? 使設(shè)備投入運(yùn)行和退出服務(wù) ? 從設(shè)備接收數(shù)據(jù)并提交給內(nèi)核 ? 從內(nèi)核接收數(shù)據(jù)送到設(shè)備 ? 檢測(cè)和處理設(shè)備錯(cuò)誤 Linux設(shè)備驅(qū)動(dòng)程序分類(lèi) ? Linux中所有設(shè)備被抽象出來(lái),都看成文件 ? 設(shè)備的讀寫(xiě)和普通文件一樣 ? Linux系統(tǒng)的設(shè)備分為如下三類(lèi): ? 字符設(shè)備 (char device) ? 塊設(shè)備 (block device) ? 網(wǎng)絡(luò)設(shè)備 (work device) ? 字符設(shè)備是指存取時(shí)沒(méi)有緩存的設(shè)備 ? 塊設(shè)備的讀寫(xiě)都有緩存來(lái)支持,且塊設(shè)備必須能夠隨機(jī)存取 (random access) ? 網(wǎng)絡(luò)設(shè)備在 Linux里做專(zhuān)門(mén)的處理 Linux設(shè)備驅(qū)動(dòng)程序分類(lèi) 網(wǎng)絡(luò)設(shè)備在 Linux里做專(zhuān)門(mén)的處理 ? Linux的網(wǎng)絡(luò)系統(tǒng)主要是基于 BSD unix的 socket 機(jī)制。 Linux設(shè)備驅(qū)動(dòng)程序及開(kāi)發(fā) Linux設(shè)備驅(qū)動(dòng)程序概述 ? Linux設(shè)備驅(qū)動(dòng)程序是處理或操作硬件控制器的軟件,被集成在內(nèi)核中,是常駐內(nèi)存的低級(jí)硬件處理程序的共享庫(kù),設(shè)備驅(qū)動(dòng)程序是系統(tǒng)對(duì)設(shè)備的抽象管理與控制。 嵌入式系統(tǒng)初始化以及 BSP的功能 ? 嵌入式系統(tǒng)的初始化過(guò)程是一個(gè)同時(shí)包括硬件初始化和軟件初始化的過(guò)程;而操作系統(tǒng)啟動(dòng)以前的初始化操作是 BSP的主要功能之一 ? 初始化過(guò)程總可以抽象為三個(gè)主要環(huán)境,按照自底向上、從硬件到軟件的次序依次為: ? 片級(jí)初始化 ? 板級(jí)初始化 ? 系統(tǒng)級(jí)初始化 初始化過(guò)程 ? 片級(jí)初始化: ? 主要完成 CPU的初始化 ? 設(shè)置 CPU的核心寄存器和控制寄存器 ? CPU核心工作模式 ? CPU的局部總線(xiàn)模式等 ? 片級(jí)初始化把 CPU從上電時(shí)的缺省狀態(tài)逐步設(shè)置成為系統(tǒng)所要求的工作狀態(tài) ? 這是一個(gè)純硬件的初始化過(guò)程 初始化過(guò)程(續(xù) 1) ? 板級(jí)初始化: ? 完成 CPU以外的其他硬件設(shè)備的初始化 ? 同時(shí)還要設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級(jí)初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境 ? 這是一個(gè)同時(shí)包含軟硬件兩部分在內(nèi)的初始化過(guò)程 初始化過(guò)程(續(xù) 2) ? 系統(tǒng)級(jí)初始化: ? 這是一個(gè)以軟件初始化為主的過(guò)程,主要進(jìn)行操作系統(tǒng)初始化 ? BSP將控制轉(zhuǎn)交給操作系統(tǒng),由操作系統(tǒng)進(jìn)行余下的初始化操作 : ? 包括加載和初始化與硬件無(wú)關(guān)的設(shè)備驅(qū)動(dòng)程序 ? 建立系統(tǒng)內(nèi)存區(qū) ? 加載并初始化其他系統(tǒng)軟件模塊(如網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)等) ? 最后,操作系統(tǒng)創(chuàng)建應(yīng)用程序環(huán)境并將控制轉(zhuǎn)交給應(yīng)用程序的入口 硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序 ? BSP另一個(gè)主要功能是硬件相關(guān)的設(shè)備驅(qū)動(dòng) ? 與初始化過(guò)程相反,硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序的初始化和使用通常是一個(gè)從高層到底層的過(guò)程 ? 盡管 BSP中包含硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序,但是這些設(shè)備驅(qū)動(dòng)程序通常不直接由 BSP使用 ? 而是在系統(tǒng)初始化過(guò)程中由 BSP把它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動(dòng)程序關(guān)聯(lián)起來(lái),并在隨后的應(yīng)用中由通用的設(shè)備驅(qū)動(dòng)程序調(diào)用,實(shí)現(xiàn)對(duì)硬件設(shè)備的操作。 ? BSP是和操作系統(tǒng)綁在一起運(yùn)行,盡管 BSP的開(kāi)始部分和 BIOS所做的工作類(lèi)似,但是 BSP還包含和系統(tǒng)有關(guān)的基本驅(qū)動(dòng) ? BIOS程序是用戶(hù)不能更改,編譯編程的,只能對(duì)參數(shù)進(jìn)行修改設(shè)臵,但是程序員還可以編程修改 BSP,在 BSP中任意添加一些和系統(tǒng)無(wú)關(guān)的驅(qū)動(dòng)或程序,甚至可以把上層開(kāi)發(fā)的統(tǒng)統(tǒng)放到BSP中 不同系統(tǒng)中的 BSP ? 一個(gè)嵌入式操作系統(tǒng)針對(duì)不同的 CPU,會(huì)有不同的 BSP ? 即使同一種 CPU,由于外設(shè)的一點(diǎn)差別BSP相應(yīng)的部分也不一樣 BSP的特點(diǎn)與功能 ? 硬件相關(guān)性 ? 因?yàn)榍度胧綄?shí)時(shí)系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,所以,作為高層軟件與硬件之間的接口, BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。 — 嵌入式系統(tǒng)軟件開(kāi)發(fā)技術(shù) 2022年 6月 23日 嵌入式系統(tǒng) 主要內(nèi)容 ? 版級(jí)支持包 BSP ? 嵌入式系統(tǒng)初始化以及 BSP的設(shè)計(jì) ? Linux系統(tǒng)驅(qū)動(dòng)程序開(kāi)發(fā) ? 嵌入式聯(lián)網(wǎng) BSP的概念 ? BSP全稱(chēng)“板級(jí)支持包”( Board Support Packages),說(shuō)的簡(jiǎn)單一點(diǎn),就是一段啟動(dòng)代碼,和計(jì)算機(jī)主板的 BIOS差不多,但提供的功能區(qū)別就相差很大 ? 在 Windows CE中, BSP是驅(qū)動(dòng)程序、OEM適應(yīng)層( OEM Adaptation Layers,OAL)、硬件抽象層( HAL)以及啟動(dòng)設(shè)備和使外設(shè)正常工作所需 BIOS文件的集合。 BSP和 BIOS區(qū)別 ? BIOS主要是負(fù)責(zé)在電腦開(kāi)啟時(shí)檢測(cè)、初始化系統(tǒng)設(shè)備(設(shè)臵棧指針,中斷分配,內(nèi)存初始化 ..)、裝入操作系統(tǒng)并調(diào)度操作系統(tǒng)向硬件發(fā)出的指令。 ? 操作系統(tǒng)相關(guān)性 ? 不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu), 因此,不同的操作系統(tǒng)具有特定的硬件接口形式 BSP的設(shè)計(jì)與實(shí)現(xiàn) ? 為實(shí)現(xiàn)上述兩部分功能,設(shè)計(jì)一個(gè)完整的 BSP需要完成兩部分工作: ? 設(shè)計(jì)初始化過(guò)程,完成嵌入式系統(tǒng)的初始化; ? 設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動(dòng),完成操作系統(tǒng)及應(yīng)用程序?qū)唧w硬件的操作。 BSP開(kāi)發(fā)的前提和步驟 ? 開(kāi)發(fā)的前提 : ? 熟悉硬件方面:使用 CPU等 ? 熟悉工具方面:電表,示波器,邏輯分析儀,硬件仿真器,仿真調(diào)試環(huán)境等 ? 語(yǔ)言方面:匯編語(yǔ)言, C語(yǔ)言 ? BSP開(kāi)發(fā)的一般步驟如下: ? 硬件主板研制,測(cè)試 ? 操作系統(tǒng)的選定, BSP編程 ? 上層應(yīng)用程序的開(kāi)發(fā) 編寫(xiě) BSP函數(shù) ? BSP對(duì)板卡中每個(gè)芯片的操作都通過(guò)多個(gè)函數(shù)來(lái)完成 ? 如果應(yīng)用程序?qū)Π蹇ǖ牟僮鞫贾苯油ㄟ^(guò)調(diào)用BSP中的函數(shù)來(lái)完成,那將很不利于源程序的調(diào)試 ,并降低了程序的可移植性 ? 把能完成某個(gè)特定功能的函數(shù)封裝在一個(gè)庫(kù)文件中,并放在應(yīng)用程序與 BSP之間 ? 對(duì)每個(gè)芯片來(lái)說(shuō),都應(yīng)當(dāng)有初始化函數(shù)和狀態(tài)讀取函數(shù) 設(shè)計(jì)實(shí)現(xiàn) BSP的一般方法 ? BSP的開(kāi)發(fā)需要具備一定的硬件知識(shí) ? 要求掌握操作系統(tǒng)所定義的 BSP接口 ? 兩種快捷方法 ? 以經(jīng)典 BSP為參考 ? 使用操作系統(tǒng)提供的 BSP模板 ? 設(shè)計(jì)實(shí)現(xiàn) BSP兩部分功能時(shí)應(yīng)采用以下兩種不同方法 ? “自底向上”地實(shí)現(xiàn) BSP中的初始化操作 ? “自頂向下”地設(shè)計(jì)硬件相關(guān)的驅(qū)動(dòng)程序 BSP設(shè)計(jì)方法的不足與改進(jìn) ? 目前 BSP的設(shè)計(jì)與實(shí)現(xiàn)主要是針對(duì)某些特定的文件進(jìn)行修改 ? 直接修改相關(guān)文件容易造成代碼的不一致性,增加軟件設(shè)計(jì)上的隱形錯(cuò)誤,從而增加系統(tǒng)調(diào)試和代碼維護(hù)的難度 ? 解決這個(gè)問(wèn)題的一個(gè)可行辦法是:設(shè)計(jì)實(shí)現(xiàn)一種具有圖形界面的 BSP開(kāi)發(fā)設(shè)計(jì)向?qū)В稍撓驅(qū)е笇?dǎo)設(shè)計(jì)者逐步完成 BSP的設(shè)計(jì)和開(kāi)發(fā),并最終由向?qū)上鄳?yīng)的 BSP文件,而不再由設(shè)計(jì)人員直接對(duì)源文件進(jìn)行修改 。 ? Linux允許設(shè)備驅(qū)動(dòng)程序作為內(nèi)核可加載模塊實(shí)現(xiàn),即除了可以在系統(tǒng)啟動(dòng)時(shí)進(jìn)行注冊(cè)外,還可以在啟動(dòng)后進(jìn)行加載注冊(cè)。在系統(tǒng)和驅(qū)動(dòng)程序之間定義有專(zhuān)門(mén)的數(shù)據(jù)結(jié)構(gòu) (sk_buff)進(jìn)行數(shù)據(jù)的傳遞 ? 系統(tǒng)里支持對(duì)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩存,提供流量控制機(jī)制,提供對(duì)多協(xié)議的支持 Linux設(shè)備驅(qū)動(dòng)程序分類(lèi) ? 典型的字符設(shè)備包括鼠標(biāo),鍵盤(pán),串行口等 ? 塊設(shè)備主要包括硬盤(pán)、軟盤(pán)設(shè)備、 CDROM等 ? 一個(gè)文件系統(tǒng)要安裝進(jìn)入操作系統(tǒng)必須在塊設(shè)備上 Linux驅(qū)動(dòng)程序介紹 ? 嵌入式 Linux驅(qū)動(dòng)已經(jīng)支持的設(shè)備門(mén)類(lèi)齊全,已成為其相對(duì)其他嵌入式操作系統(tǒng)的一大優(yōu)勢(shì) ? 工業(yè)控制常用的串口,并口 ? 人機(jī)輸入設(shè)備如鼠標(biāo)、鍵盤(pán),觸摸屏 ? 彩色、黑白液晶顯示輸出 ? 網(wǎng)絡(luò)的完善支持,包括 tcp/ip, udp, firewall, WLAN,ip forwarding, ipsec, vpn ? Usb的全面支持,包括 usb硬盤(pán)、 u盤(pán), usb攝像頭 ? 支持豐富的文件系統(tǒng),包括 FAT32, NTFS 嵌入式設(shè)備框圖 驅(qū)動(dòng)程序的功用 驅(qū)動(dòng)程序直接操控硬件 ? 收發(fā)通訊數(shù)據(jù) ? 讀寫(xiě)存儲(chǔ)介質(zhì),比如 flash或硬盤(pán) ? 操作輸出設(shè)備和執(zhí)行機(jī)構(gòu),例如打印,開(kāi)關(guān)門(mén)禁等 驅(qū)動(dòng)程序的功用(續(xù)) 驅(qū)動(dòng)程序提供軟件訪(fǎng)問(wèn)硬件的機(jī)制 ? 應(yīng)用軟件通過(guò)驅(qū)動(dòng)程序安全高效的訪(fǎng)問(wèn)硬件 ? 驅(qū)動(dòng)程序文件可以方便的提供訪(fǎng)問(wèn)權(quán)限控制 ? 驅(qū)動(dòng)程序作為一個(gè)隔離的中間層軟件,將底 層細(xì)節(jié)隱藏起來(lái),提高了軟件的可移植性 訪(fǎng)問(wèn) Linux設(shè)備驅(qū)動(dòng)的方法 ? 設(shè)備提供 dev文件系統(tǒng)節(jié)點(diǎn)和 proc文 件系統(tǒng)節(jié)點(diǎn) ? 應(yīng)用程序通過(guò) dev文件節(jié)點(diǎn)訪(fǎng)問(wèn)驅(qū)動(dòng) 程序 ? 應(yīng)用程序通過(guò) proc文件節(jié)點(diǎn)可以查 詢(xún)?cè)O(shè)備驅(qū)動(dòng)的信息 驅(qū)動(dòng)程序位置 ? 驅(qū)動(dòng)程序位于 drivers目錄下 ? 通常驅(qū)動(dòng)程序占 kernel代碼的 50% ? Linux設(shè)備驅(qū)動(dòng)程序在 Linux的內(nèi)核源代碼中占有很大的比例,源代碼的長(zhǎng)度日益增加,主要是驅(qū)動(dòng)程序的增加。 ? 在 ,驅(qū)動(dòng)程序的編寫(xiě)做了一些改變,但
點(diǎn)擊復(fù)制文檔內(nèi)容
外語(yǔ)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1