本站小編為你精心準備了無線通信傳輸技術研究參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
1LINUX文件系統
文件在系統環境中發揮著重要的作用,它為操作系統和設備提供了高效簡單的訪問接口。除了一般文件,程序可以調用硬盤文件、串口文件、打印機文件和其他設備文件。文件目錄也是一種極特殊的文件,目錄文件具有節點號和其包含文件的文件名,每一個目錄入口點就是文件節點。每個文件夾下還包 括一個Makefile文件,文件包含了程序的編譯規則。庫文件為設備和硬盤文件提供了一種高級接口,使系統更智能。設備能夠被使用,也必須借助驅動被內核使用。1.3BOOTLOADER啟動過程步驟(1)硬件初始化CFG_HW_INIT(2)從nandflash加載鏡像到動態內存ram,load_nandflash(IMG_ADDRESS,IMG_SIZE,JUMP_ADDR)(3)處理鏡像文件,decompress_image((void*)IMG_ADDRESS,(void*)JUMP_ADDR,IMG_SIZE)(4)開始應用程序,設置偏移量Crt0_gnu.S文件由匯編語言構成的初始文件。它是首先被執行的指令集,啟動程序乃至整個軟件操作系統運行的第一個文件。應用程序開始的入口點,設置了中斷向量并初始化堆棧等,最后進入main主函數中和跳到應用程序入口。
2設備驅動程序
2.1設備驅動程序基本概念設備驅動在操作系統Linux內核發揮重要作用,使得硬件成為對某些特定程序作出相應反應的內部可編程程序接口,在執行過程中完全隱藏了設備工作的具體細節。通過一系列依賴特定驅動程序的標準指令來實現用戶要完成的行為功能,將這些標準指令組織起來,讓實際硬件根據指令發揮相應的作用,這就是設備驅動要完成的。這個所謂的可編程的接口驅動能夠獨立于內核存在,也可以在內核運行需要時進行加載。事實上許多設備驅動和用戶程序一起發行用來幫助構造和使用目標設備。這些程序包含很多種,從簡單公用程序到完全的圖形化應用程序。
2.2設備驅動程序分類和模塊化Linux將設備驅動分為3種,每個模塊至少完成其中的一種設備驅動類型。這三種設備驅動的類型分別是:字符型設備模塊、塊設備模塊、網絡設備模塊。設備驅動的模塊化使得設備驅動劃分成不同的類型,不同類型之間并不是孤立的,可以用一系列的代碼將不同的設備驅動整合成一個大的模塊具備更強大的功能。通過insmod和rmmod可以對模塊進行加載和卸載,而且只有超級用戶才有權限加載和卸載模塊。通過insmod命令調用模塊中的init_module函數通知內核有模塊進行注冊,然后直接引用內核函數register_capability(),一旦內核有空閑就發送響應請求執行模塊程序。此時,模塊程序中可以直接調用內核函數進行內核操作。模塊注銷時,不用申請響應而是直接通過unregister_capability()注銷。鏈接模塊到內核過程如圖2。
2.3MAKEFILE文件編譯規則Makefile文件是一種腳本文件,把各級目錄下的文件有規則的組織在一起;它是一種程序編譯規則。它的獨特優勢在于“自動化編譯”,就是腳本代碼寫好后,執行命令就會按照腳本進行編譯。在腳本語言中,我們首先要把源文件編譯成中間代碼文件也就是.o文件,然后把.o文件鏈接成可執行文件。書寫規則如下:(1)如果工程沒有編譯過,所有源文件都要編譯并鏈接。(2)如果工程中有文件被修改,只編譯和鏈接被修改的文件。(3)如果工程中頭文件被修改,只編譯引用頭文件的源文件。
3網絡通信硬件結構以及驅動軟
3.1網絡設備工作原理網絡通信的發展方便了我們的生活,因為地形復雜的山地不方便儀器的架設。而通過網絡通信大大豐富了系統的功能。設備發送隊列dev_queue_xmit()申請傳輸數據,在設備結構描述中找到相應的設備發送網絡數據包函數和設備名,發送網絡數據包函數hard_start_xmit()通過物理設備發送網絡數據包。和前兩種驅動類型不同,網絡驅動能夠異步接收和發送數據包文件。它還要完成發地址,修改傳輸參數,阻塞處理和錯誤統計等任務。內核網絡子系統完全依賴網絡協議和硬件協議。網絡協議是實現網絡傳輸的各種協議;硬件協議是網絡設備硬件驅動程序,負責與硬件設備通信與數據傳輸驅動接口都被結構體structnet_device表示:初始化的主要作用是為網絡設備提供一個設備結構文件;網絡設備和結構文件緊密連接,相互依賴。結構包含:打開設備,關閉設備,設備配置,硬件傳輸,I/O控制,設備狀態,重建文件頭,網絡硬件結構件頭,傳輸超時,看門狗超時,地址解析協議禁用標志,設置模塊所有者等參數。網絡硬件結構件頭包含:設備名,設備內存信息,網絡接口的I/O地址,中斷號,接口選擇,DMA通道,設備狀態,指向下一個設備的指針,初始化。網絡硬件結構文件的很多參數都可以在ifconfig中看到。除了以上網絡設備結構文件可見的參數外,網絡設備結構文件中還有很多不可見的參數,這些參數在結構中也都發揮著重要作用。內核網絡子系統即網絡接口是系統初始化時實時自動生成的,內核支持而實際不存在的網絡物理設備。而對于字符設備和塊設備,無論有沒有實際的物理設備,內核都生成其接。當驅動鏈接到內核時,網絡驅動不在內核里聲明此網絡設備結構;而是在drivers/net/space.c里聲明設備結構文件,這個文件的下有很多網絡設備結構的聲明。系統啟動時,網絡初始化代碼把所有的網絡設備結構都初始化,初始化時僅僅是給設備本身一個指針。另外,網絡設備驅動的注冊也不需要創建設備文件,而是直接通過設備名從設備描述結構鏈表中找到對應的structnet_device結構,可以直接用此結構對應的操作函數進行注冊。
3.2網絡通信硬件電路以太網MAC模塊兼容IEEE802.3標準,包含地址檢測,統計和控制寄存器,收發塊,DMA接口。地址檢測辨認4個標準的48位地址,它還包含一個64位應急寄存器來匹配廣播和單發地址。統計寄存器塊對收發操作相關的各種類型事件計數,能讓軟件產生網絡管理統計兼容IEEE802.3,它和狀態字被存在接收緩存表中。DM9161A是具有網絡功能,工作在物理層,低功率收發芯片。從而決定物理層設備的職能,但這些功能依然由協議完成。串口管理接口包括管理數據時鐘和管理數據輸入輸出信號。自動識別媒體功能能夠讓它自動識別是直連還是交叉雙絞線,通過置位某特定寄存器的設置位即可。圖3網絡芯片硬件電路9161原理圖。
3.3網絡通信軟件實現進行網絡編程,套接字是至關重要的;套接字代表通信的端口,通過套接字建立通信的橋梁。套接字有描述符,應用程序可以通過描述符操作套接字。通過socket()創建套接字;同時套接字只有和地址綁定之后才有意義,通過bind()進行地址綁定。函數socket()有四個參數,分別表示通信域,套接字類型,制定協議。通過套接字和connect()函數建立一個連接,建立連接之后,我們就可以通過send()和recv()發送和接收數據了。函數send()有四個參數:第一個表示通信,連接套接字;第二個是設置發送緩沖區;第三個表示發送內容字節數;第四個是傳輸數據標志。發送成功則返回已發送數據的字節數,否則返回-1。函數recv()也有四個參數:第一個用來通信的套接字;第二個讀緩沖區設置;第三個讀最大字節數;第四個接收數據標志。而返回值有三種情況:大于零表示成功接收數據返回已接收字節數目;等于零表示無數據接收;小于零表示接收數據出錯。網絡驅動程序客戶端仔程序流程如圖4。
作者:王慶吉單位:吉林大學儀器科學與電氣工程學院