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

正文內(nèi)容

基于三星嵌入式平臺的傳感器驅(qū)動開發(fā)及測試(本科畢業(yè)論文-全文預(yù)覽

2024-12-10 15:00 上一頁面

下一頁面
  

【正文】 ,可以使用與普通文件相同的文件操作命令對字符設(shè)備文件進行操作,例如打開、關(guān)閉、讀寫、控制等。塊設(shè)備將信息存儲在固定大小的塊中,每 個塊都有自己的地址。 ( 3)網(wǎng)絡(luò)接口設(shè)備 任何網(wǎng)絡(luò)事務(wù)都 通過一個接口來進行 , 就是說 , 一個能夠與其他主機交換數(shù)據(jù)的設(shè)備。 每個設(shè)備文件都有其文件屬性 (c/b),表示是字符設(shè)備還是塊設(shè)備。 (如圖 所示) 圖 Linux 的空間模型 19 字符設(shè)備的數(shù)據(jù)結(jié)構(gòu) Linux 操作系統(tǒng)保持了 Unix“一切都是文件 ”的思想,將設(shè)備節(jié)點作為文件來對待和 操作。 file_operations 的主要結(jié)構(gòu)成員有: struct module *owner。 int (*open) (struct inode *, struct file *)。 int (*release) (struct inode *, struct file *)。指針參數(shù) flip 為進行讀取信息的目標文件結(jié)構(gòu)體指針,第二個整型參數(shù)為文件定位的目標偏移量,參數(shù) offset 為對文件定位的起始地址,這個值可以為文件開頭、當前位置和文件末尾。 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *)。 inode 和 filp指針是對 應(yīng)應(yīng)用程序傳遞的文件描述符 fd 的值, cmd 參數(shù)由用戶空間傳入,并且可選的參數(shù) arg 參數(shù)以一個 unsigned long 形式傳遞,不管它是否由用戶給定為一個整數(shù)或幾個指針。 mmap 用來請求將設(shè)備內(nèi)存映射到進程的地址空間。當文件的所有實例都關(guān)閉之后,內(nèi)核釋放這個數(shù)據(jù)結(jié)構(gòu)。 inode 結(jié)構(gòu)體 內(nèi)核中用 inode 結(jié)構(gòu)表示具體的文件,也就是對應(yīng)與硬盤上面具體的文件。這是二者間最重要的關(guān)系。 inode 結(jié)構(gòu)中的靜態(tài)信息取自物理設(shè)備上的文件系統(tǒng),由文件系統(tǒng)指定的函數(shù)填寫,它只存在于內(nèi)存當中,可以通過 inode 緩存訪問。 常見的成員有表示哈希表、索引節(jié)點鏈表、目錄項鏈表、節(jié)點號、引用計數(shù)、硬鏈接數(shù)、使用者 id 等等。其原型如下: struct cdev{ struct kobject kobj; //內(nèi)嵌 kboject 模塊 struct module *owner; //所屬模塊 conststruct file_operations*ops; //文件操作結(jié)構(gòu)體 struct list__head list; //鏈表 dev_t dev; //設(shè)備號 unsigned int count; //被引用次數(shù) ); 總結(jié)一下, struct operations 存在于設(shè)備驅(qū)動程序內(nèi)部,起著聯(lián)系應(yīng)用程序和設(shè)備驅(qū)動的作用。如果調(diào)用成功, ioctl 返回給進程一個非負的值。在要更改文件屬性的時候,需要通過這兩個指針來找到所需的設(shè)備文件。 Ioctl 函數(shù)的主題是一個 switch+case 的分支結(jié)構(gòu)。具體的說,就是將多個待檢測的文件放 入到一個列表中,可以檢測這些文件可讀、可寫或者其他的狀態(tài)。 Poll 函數(shù)與。應(yīng)用程序就會返回滿足要求的文件數(shù)量,繼而可以調(diào)用回調(diào)函數(shù)來喚醒正在等待或者睡眠的進程。 如果函數(shù)返回正常值,則表示函數(shù)調(diào)用正確;如果傳入的非法命令, ioctl返回錯誤號 EINVAL。 Linux 系統(tǒng)建議按照 8位設(shè)備類型、 8 位序列號、 2 位方向、 13/14 位數(shù)據(jù)尺寸的方式 設(shè)備類型字段是一個 “幻數(shù) ”,可以是 00xff 之間的任何一個數(shù)。 Ioctl 函數(shù)的原型如下: int (*ioctl) (struct inode * node, struct file *filp, unsigned int cmd, unsigned long arg)。 struct file 是在執(zhí)行 open 函數(shù)時產(chǎn)生的,每打開一個文件就產(chǎn)生一個 struct file,供設(shè)備驅(qū)動關(guān)聯(lián)的函數(shù)使用 。 cdev 中定義了內(nèi)嵌 kobject 對象 kobj、所屬模塊 owner、文件操作符 op、和設(shè)備號 dev。 每個進程為每個打開的文件分配一個 文件描述符,每個文件描述符對應(yīng)一個file 結(jié)構(gòu),同一個文件被不同的進程打開后,在不同的進程中會有不同的 file 文件結(jié)構(gòu),其中包括了文件的操作方式 (只讀\只寫\讀寫 ),偏移量,以及指向 inode的指針等等。 21 它包含文件訪問權(quán)限、屬主、組、大小、生成時間、訪問時間、最后修改時間等文件信息。 inode 譯成中文就是索引節(jié)點。這樣, file 是結(jié)構(gòu)體本身, flip 是指向該結(jié)構(gòu)的指針。 file 結(jié)構(gòu)體 文件結(jié)構(gòu)代表一個打開的文件描述符,它不是專門給驅(qū)動程序使用的,系統(tǒng)中每一個打開的文件在內(nèi)核中都有一個關(guān)聯(lián)的 struct file。因此類型檢查在這個額外參數(shù)上被關(guān)閉,編譯器不能警告一個無效的參數(shù)被傳遞給 ioctl,錯誤將無法查找。此函數(shù)用來發(fā)送數(shù)據(jù)給設(shè)備。 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *)。 release 函數(shù)的主要任務(wù)是清理未結(jié)束的輸入輸出操作,釋放資源,用戶自定義的按排他標志復(fù)位等。如果這項被賦值為 NULL,設(shè)備打開一直成功,但是驅(qū)動程序不會得到通知。這個成員用來阻止模塊在使用時被卸載。 file_operations 結(jié)構(gòu)體 Linux 使用 file_operations 結(jié)構(gòu)訪問驅(qū)動程序的函數(shù),這個結(jié)構(gòu)的每一個成員的名字都對應(yīng)著一個調(diào)用。對于本文所研究的九軸傳感器,屬于字符型設(shè)備,因此本文將重點討論字符型設(shè)備的設(shè)備驅(qū)動。一個網(wǎng)絡(luò)接口負責(zé)發(fā)送和接收數(shù)據(jù)報文 , 在內(nèi)核網(wǎng)絡(luò)子系統(tǒng)的驅(qū)動下 , 不必知道單個事務(wù)是如何映射到實際的被發(fā)送的報文上的 。塊設(shè)備的基本特征是每個塊都能獨立于其他的塊而讀寫。 ( 2)塊設(shè)備 塊設(shè)備則是按照一定數(shù)量字節(jié)數(shù)讀取數(shù)據(jù)的設(shè)備。例如鍵盤、打印機、串口等等。無論這些設(shè)備是否真的安裝,在 /dev 目錄中都將有一個文件,稱作設(shè)備文件,對應(yīng)著每一個具體設(shè)備。每個模塊由目標代碼組成(沒有連接成一個完整可執(zhí)行文件),可以動態(tài)連接到運行中的內(nèi)核中,通過 insmod 程序,以及通過 rmmod 程序去連接。 17 第三章 Linux 字符型設(shè)備驅(qū)動方法 字符設(shè)備器驅(qū)動程序基本概念 Linux 的眾多優(yōu)良特性之一就是可以在運行時擴展由內(nèi)核提供的特性的能力。 本項目由于涉及團隊中多人同時開發(fā),因此也使用 git 工具來完成代碼的更新維護。 Workspace 中的工程師修改完自己的代碼以后,可以 push 到 host 中,經(jīng)過 host 的整理調(diào)試沒有問題之后,形成一個 repository, push 到 remote host 上。根據(jù)打印的信息就可以找到 bug 所在的位置,便于程序的調(diào)試。 通過 CRT,一方面可以遠程登錄到服務(wù)器上,使用服務(wù)器的硬件來對代碼進行編譯,利用 SSH 的特性,可以保證傳輸?shù)陌踩?。而通過使用 SSH 客戶端與服務(wù)器端通訊時,用戶名及口令均進行了加密,有效防止了對口令的竊聽。 ( 3)終端仿真程序 Secure CRT SecureCRT 是一款支持 SSH( SSH1 和 SSH2)的終端仿真程序,同時支持Tel 和 rlogin 協(xié)議。主要幫助開發(fā)者完成四方面的任務(wù): 啟動程序,按照自己定義的要求運行程序 可以讓調(diào)試的程序在所指定的調(diào)置 斷點處停住。于是,我們可以使用 Makefile 文件來定義編譯的規(guī)則,用它來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至進行更復(fù)雜的功能操作,極大提高了軟件開發(fā)的效率。 在安裝了 GCC 之后,就可以按照 GCC 的規(guī)范來使用這個編譯器。具體的操作方式在 linux 界面下的幫助文檔中可以獲得。 只有在 Insert mode 下,才可以做文字輸入,按「 ESC」鍵可回到命令行模式。 Nano 是一款 單模式的編輯器,操作使用比較簡單,與 windows 中 notepad(記事本)的用法非常相似。 Linux 相對與windows 相比,具有安全性高、支持多用戶 /多任務(wù)等特點,在開發(fā)中能給團隊帶來合作上的便利,因此被廣泛地使用在了工程開發(fā)當中。 Linux 的軟件資源十分豐富,每一種通用程序在 Linux上幾乎都可以找到,并且數(shù)量還在不斷增加。技術(shù)文檔需要按照規(guī)范書寫,易于閱讀、便于操作。傳感器芯片的提供商在銷售芯片的同時,會提供函數(shù)庫和參考代碼,根據(jù)開發(fā)平臺的特性,重新編寫代碼,使得硬件能在新的平臺上正常的工作,驅(qū)動程序的任務(wù)就完成了。這些將在驅(qū)動程序中。這些代碼被放置在 TC4_Kernel/drivers/misc 目錄下和其他(例如 c2c、 eeprom 等)驅(qū)動程序在同一個目錄下,便于文件的管理。一些和平臺相關(guān)的代碼,被放在 arch 目錄下。 ( 5)其他工具 另外還有一些小的工具能完成一些燒錄工作,比如用于制作 SD 卡的工具等等,這些工具都會根據(jù)客戶的需求打包給客戶。 fastboot w 清除緩存區(qū)中的內(nèi)容。常用的命令如下: fastboot flash bootloader \path\ 燒錄 uboot。 在開發(fā)過程中, adb 用來下載測試程序到開發(fā)板中,一個典型的例子就是 monkey 測試,需要下載測試代碼到板子中,然后對板子進行一些隨機的模擬點擊操作,仿真人體對其的大量點擊,完成壓力測試,找到系統(tǒng)穩(wěn)定性上潛在的問題。 ( 2) adb 11 adb 的全稱為 Android Debug Bridge,就是起到調(diào)試橋的作用。具體的工具如下: ( 1) Trace32 TRACE32 是由德國 Lauterbach 公司研制開發(fā)的一款仿 真測試工具。在這個內(nèi)核之上, Android 還定義了系統(tǒng)運行庫層、應(yīng)用程序框架層和應(yīng)用程序?qū)印? 嵌入式操作系統(tǒng) TC4平臺是針對 Samsung公司 Exynos 4x12應(yīng)用處理器片上系統(tǒng)開發(fā)的平臺。 本項目的 bootloader 原理框圖如下, bootloader 可以大致分成 4 個步驟,bl1(Bootloader Stage1)、 bl2(Bootloader Stage 2)、 TZ(TrustZone)和 uboot(Universal Bootloader) 。 對于小的程序,可以通過 arm2020q3 o hello 命令來編譯;當工程文件復(fù)雜時,則通常使用 Makefile文件中的 CC/CFLAGS選項來配置 編譯器的類型,使用 make 命令就能快捷編譯。 值得一提的是,在傳感器支持方面, TC4 平臺在傳感器的支持方面非常領(lǐng)先,不但支持光傳感器、加速度傳感器等。此外, 4210支持先進的多媒體功能,諸如視頻編碼器 /解碼器,使消費者用每秒 30 幀的速度錄制和播放 1080P 全高清的高分辨率圖像。 4212 處理器內(nèi)置兩個 CortexA9 1GHz 核心和 1MB 二級緩存,擁有 1G LP DDR2 800 內(nèi)存,并內(nèi)置有 Mali400 MP 圖形處理芯片,綁定 8GB 存儲卡。是三星公司推出多核處理器( x 表示內(nèi)核的數(shù)量, x 為 2 時表示雙核, x 為 4 時表示 4核)。應(yīng)用處理器市場也以每年 10%左右的增長率不斷壯大。驅(qū)動程序也會提供一些操作系統(tǒng)之上與硬件無關(guān)的函數(shù)庫。開發(fā)人員需要理清各個結(jié)構(gòu)之間的關(guān)系,正確調(diào)用接口函數(shù),來實現(xiàn)對設(shè)備的驅(qū)動,使得處理器可以和器件通信。 Exynox4x12 芯片在內(nèi)部已經(jīng)集成了 I2C 的模塊。全新的 版本的操作系統(tǒng),將帶來全新的 UI 人性化體驗界面、提供針對多核處理器的優(yōu)化功能、全面提升運行速度;最重要的是, 將統(tǒng)一智能手機和平板電腦系統(tǒng):谷歌新一代安卓系統(tǒng) Ice Cream Sandwich 將只有一個版本,同時支持智能手機、平板電腦,這將解決安卓 系統(tǒng)和安卓 操作系統(tǒng)版本分化的問題,開發(fā)者 為平板電腦和智能手機開發(fā)的應(yīng)用也將可以通用。整合 MEMS 加速計、陀螺儀和地磁感應(yīng)計的模塊正在進入更多市場。 自 2020 年 iPhone4 采用陀螺儀起,陀螺儀在手機中被迅速采用。 加速度傳感器通過 MEMS 器件向處理器提供三個方向的加速度數(shù)值。傳感器( Gsensor);返回 x、 y、 z 三軸的環(huán)境磁場數(shù)據(jù)的磁力傳感器( Msensor);返回三軸的角度數(shù)據(jù),方向數(shù)據(jù)的單位是角度的方向傳感器( Osensor);返回 x、 y、 z 三軸的角加速度數(shù)據(jù)的陀螺儀傳感器( Gyrosensor);檢測實時的光線 強度的光線感應(yīng)傳感器;返回當前的壓強的壓力傳感器;返回當前的溫度的溫度傳感器;檢測物體與手機的距離的接近傳感器;輸出重力數(shù)據(jù)的重力傳感器( GVsensor);返回減去重力加速度之后加速度值的線性加速度傳感器( LAsensor)以及返回旋轉(zhuǎn)矢量的旋轉(zhuǎn)矢量傳感器( RVsensor)。從而帶來更加的用戶體驗。新的 32nm HKMG 技術(shù)可以幫助降低功耗,和其前代比,會減低 20% 的功耗。 Exynos 421
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1