新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于ARM的嵌入式網關系統設計與實現

        一種基于ARM的嵌入式網關系統設計與實現

        作者: 時間:2009-08-03 來源:網絡 收藏


        2 協議轉換流程
        當CAN總線上的設備向Ethernet網發送數據時,將接收到的CAN數據包解析,提取數據域中的內容;然后按照TCP/IP協議進行封裝,將經過封裝的數據發送給以太網控制芯片RTL8019AS。由RTL8019AS自動給這些數據添加以太網物理層和邏輯鏈路層所需的相關信息,通過物理接口傳送到以太網。反之,當以太網向CAN總線上設備發送TCP/IP數據包時,它首先將數據發送到RTL8019AS,從RTL8019AS中接收到數據后,提取實際要傳送的數據,然后封裝成CAN總線數據格式,通過CAN總線將數據發送到網絡中的現場設備。
        嵌入式網關硬件必須具有以太網接口和CAN總線接口,而軟件要有TCP/1P協議棧和CAN總線驅動程序;通常嵌入式Linux內核中有完整的TCP/IP協議棧。由于REALTEK公司支持Linux的開發,Linux中已含有RTL8019AS芯片的通用驅動程序,CAN總線協議驅動并不是標準配置。因此,CAN總線接口及其編制驅動程序是嵌入式網關最主要的工作。


        3 CAN驅動程序
        Linux驅動程序屬于Linux內核的一部分,是嵌入式控制硬件的接口,它為用戶屏蔽設備的工作細節,并向用戶提供透明訪問硬件設備的機制。驅動程序的開發在嵌入式開發中具有舉足輕重的地位。開發出穩定、完備的驅動程序可提高整個系統的性能。
        3.1 CAN驅動程序流程
        MCP2510的內部結構框圖如圖2所示。

        MCP2510內含3個發送緩沖器和2個接收緩沖器,同時還具有靈活的中斷管理能力。CAN協議機負責與CAN總線的接口,SPI接口邏輯用于同MCU的通信,而寄存、緩沖器組與控制邏輯則用來完成各種方式的設定和操作控制。
        在Linux多任務操作系統中,CAN總線通信程序的可分為發送數據模塊、接收等待模塊和中斷處理模塊。系統中CAN總線的數據發送和接收是兩個不同的線程。在驅動程序中建立數據發送和接收緩沖區。中斷處理程序只負責填充(或讀取)緩沖區中的數據,然后喚醒等待接收(或發送)數據的任務。數據的發送與接收都通過獨立的緩沖區,并由中斷來實現。操作系統的中斷響應時間在軟件上決定了CAN總線數據的最快收發速度。
        3.2 CAN設備驅動程序的實現要點
        3.2.1 CAN設備驅動操作函數
        CAN設備驅動程序最終提供給應用程序的是一個流控制接口,主要包括:open,realse,read,write,ioctl等操作。添加設備驅動程序,實際上就是給上述操作編寫相應的程序代碼。驅動程序加載到內核時,會首先運行驅動程序的初始化函數,然后等待系統調用在file_operations數據結構中定義的相關函數,實現對設備的操作。系統使用Linux 2.4.18版本,其文件系統接口被寫義為:


        s3c2410_mcp2510_open負責對將要進行的I/O操作做好必要的準備工作,主要包括限制CAN打開次數、清空3個發送緩沖區和2個接收緩沖區等。
        s3c2410_mcp2510_write將要發送的數據通過SPI總線將數據傳送MCP2510的發送緩沖器,再通過MCP2510將數據發送到CAN總線。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 鲜城| 灌阳县| 周口市| 嘉峪关市| 大厂| 姜堰市| 巢湖市| 民县| 金寨县| 衡阳市| 雷山县| 白水县| 桑日县| 精河县| 阿坝| 莎车县| 志丹县| 江达县| 永登县| 上栗县| 建宁县| 石家庄市| 墨竹工卡县| 杭锦旗| 基隆市| 舞阳县| 兴和县| 靖西县| 都安| 临安市| 筠连县| 涿州市| 镇平县| 博白县| 观塘区| 探索| 临城县| 原平市| 牡丹江市| 萍乡市| 泗阳县|