1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      基于ARM9的32位高端嵌入式微處理器和嵌入式操作系統內核研究

      更新時間: 2008-09-02 14:44:26來源: 粵嵌教育瀏覽量:1187

        Embedded data acquisition platform and the software design of network part

        Abstract: This paper researches a new data acquisition system which is based on an 32 bit higher-end microprocessor of ARM9 and embedded operating system kernel. This program is imbursed by innovation base of Chongqing University. The exploitation software is operated under uclinux operating system. This paper introduces in detail the establish of uclinux development and translation environment, RS-232 serial module and software design of Ethernet module. Key Words: embedded system; ARM9 S3C2410; uClinux operating system ; data acquisition

        摘 要:本文研究的是基于ARM9的32位高端嵌入式微處理器和嵌入式操作系統內核,設計新型數據采集系統平臺,是得到重慶大學創新實驗室資助的研發項目。開發軟件在uclinux操作系統下進行,本文詳細介紹了uclinux開發環境的建立及編譯運行、RS232串口模塊和以太網模塊的軟件設計。
        關鍵詞:嵌入式; ARM9 S3C2410; uClinux操作系統; 數據采集平臺


        本文是基于嵌入式系統ARM9平臺的設計,并得到了重慶大學創新實驗室的資助,其系統設計及網絡軟件編程均經過實踐檢驗,具有較強的通用性,部分功能的改變只需添加或刪除相關的代碼,不必對整個系統進行大改動,提供的實驗步驟具有可操作性。本文是研發小組在研發過程中進行的軟件部分總結而編寫的。
      1 嵌入式數據采集平臺整體設計
        一個完整的嵌入式數據采集平臺系統包括硬件和軟件兩部分。在硬件方面,由于ARM9芯片本身集成的接口比較多,而ARM7本身集成的接口較少,從整個系統的成本來看,選擇ARM9與選擇ARM7作為控制器的系統總體成本基本上相差不大;而從效果來看,由于ARM9大多數接口都在芯片內部集成,對硬件設計和調試來說,都方便了很多,因此我們采用三星的ARM9芯片S3C2410。由于ARM9芯片的封裝基本上都采用BGA封裝格式,電路板的設計、制作以及芯片的焊接都比較麻煩,因此采用核心板的方式,這樣底板就可以使用兩層板,可以節省電路板的制作費用(BGA封裝的芯片一般必須使用多層板,制板費比較貴),并且核心板可以重復利用,只要接口相同,同一塊核心板可以在不同的底板上使用。
      2 嵌入式數據采集平臺硬件
        Embest Arm EduKit II 開發板是實驗系統的主要硬件平臺,它是英蓓特公司開發的一款全功能ARM開發板,基于Samsung 公司的S3C2410x處理器(ARM920T),資源豐富,特別集成了可連接多種液晶控制器及串行USB主/從控制器單元。硬件系統包含了嵌入式系統開發應用所需的
        大部分設備,如串口、以太網口、USB口、音頻輸出、LCD及TSP觸摸屏、5*4的小鍵盤、大容量的FLASH和SDRAM等等,完全自主設計的軟硬件系統,可以支持使用Embest 或ARM JTAG 仿真器的開發調試[1]。
        由ARM完成了數據包的預處理功能,包括數據包類型的讀取;源IP地址,目的IP地址的讀取、比較;數據包協議類型的提取;IP數據包頭的奇偶校驗;TCP/UDP數據包端口提取,檢測等。特征值的數據采樣也由ARM完成[3]。

      3 嵌入式數據采集平臺軟件設計
      3. 1 建立uclinux開發環境
        為了實現基于uclinux的應用系統的開發和研究,就必須建立一個完備的 uclinux開發環境。基于uclinux系統的應用開發環境一般是由目標板和宿主PC機所構成。目標板用于運行操作系統和系統應用程序,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成。雙方之間一般通過串口和以太網口建立連接。
      3.1.1 宿主機安裝uclinux-Cygwin軟件
        Cygwin軟件是一個運行于windows下的Linux模擬環境。它由二部分組成: 其一:動態鏈接庫Cygwin.dll。作為Windows環境下的Linux模擬層,提供標準的Linux API函數。 其二:一組Linux 工具集。使用戶可以在Windows環境下使用Linux 環境所提供的各種工具。
        Cygwin提供的一組功能強大的工具,包括大多數GNU軟件(如gcc,gdb,xfree86,bash,tetex,opengl,perl,python等),可以將應用程序從Linux移植到Windows平臺。 Cygwin對于學習掌握Linux操作環境,或者進行某些特殊的開發工作,尤其是使用GNU工具集在Windows上進行嵌入式系統開發,非常有用[3]。
      3.1.2 宿主機安裝開發工具鏈
      (1)工具鏈源代碼
        工具鏈源代碼從uclinux官方網站下載,下載地址為http://www.uclinux.org/pub/uClinux/arm-elf-tools/tools-20030314
      (2)工具鏈的安裝
        Win2000系統Cygwin環境的工具鏈安裝軟件和Linux系統下的工具鏈安裝解壓包:arm-elf-compiler.tar.gz ,linux系統下工具鏈安裝解壓包,在控制臺使用以下命令安裝
      tar xvzf arm-elf-compiler.tar.gz ,安裝arm-elf-tools-cygwin.sh 。
      Win2000下工具鏈安裝腳本文件,在Cygwin下使用以下命令安裝 ,
      ./arm-elf-tools-cygwin.sh ,顯示提示信息后直接按回車鍵安裝,工具鏈將被安裝到 /usr/local/armtools目錄。
      3.1.3編譯運行uClinux
      uClinux源代碼包,文件名為uClinux-dist.tar.gz。
      解壓uCLinux源代碼包,執行命令:
      mkdir /usr/local/src,
      cd /usr/local/src ,
      tar xzvf /tmp/uclinux-dist/uclinux-dist.tar.gz ,解壓完畢后,在/usr/local/src下面會有一個文件夾uclinux-dist存放源代碼,以后的操作均在此目錄下進行。
      3.1.4 配置uClinux
        執行 make xconfig 命令后彈出配置窗口。點擊 Target Platform Selection(目標平臺選擇),彈出窗口,用戶根據要求進行設置。
      3.1.5 用戶程序配置
        在上節的目標平臺配置過程中,選擇定制用戶程序后將彈出用戶程序配置窗口,該窗口詳細列出了用戶程序配置選項,用戶根據應用的需求進行選擇,選中的用戶程序終將出現在文件系統中并影響文件系統的大小,用戶需要考慮系統是否有相當的資源。在配置過程中不涉及修改的選項采用默認設置。
      編譯uClinux ,在Cygwin中依次執行以下命令完成uClinux的編譯過程:
      cd /usr/local/src/uclinux-dist , make dep , make clean ,PATH=”/usr/local/armtools/
      bin:$PATH” , make lib_only , make user_only ,make romfs ,make image ,終在images目錄下生成2個文件: zImage( uClinux 內核2.4.x的壓縮方式可執行映像文件)、romfs.img (文件系統的映像文件)。
      3.1.6 運行uClinux
        燒寫映像文件 使用Embest Flash Programmer 和Embest ARM 仿真器或者其他燒寫工具
      將啟動軟件映像文件bootloader.bin、自己編譯生成的內核映像文件zImage、文件系統映像文件romfs.img 燒寫到扇區。 然后配置并啟動超級終端,啟動Win2000下超級終端軟件,并設置超級終端為115200 波特率,無校驗,1 位停止位,無數據流控制。運行uClinux ,復位系統,在超級終端將顯示提示信息,在出現命令提示符“/>”后可輸入uclinux各類命令進行操作。
      3.2 以太網模塊軟件設計
        Linux Socket是通過標準的UNIX文件描述符和其它程序通信的一個方法,其實質是提供了一個進程的端點,可以看作是一種特殊的管道。每個套接字都有一個半相關描述協議,本地地址、本地端口,或者一個全相關描述協議,本地地址、本地端口、遠程地址、遠程端口。每一個套接字都有一個本地的由操作系統分配的的套接字號。本文采用的流式Socket提供可靠的、面向連接的通信流,并使用TCP協議,從而保證了數據傳輸的正確性。Socket是為通用的一種基于TCP/IP的網絡通信編程機接口,也是在Internet上進行應用程序開發為通用的一種API。嵌入式Socket通信所要調用的主要庫函數有:Socket()函數、 bind()函數、connect()函數、listen()函數、accept()函數、send()和receive()函數、 receive()函數。
      3.3 網絡協議分析及socket編程相關原理
        uCLinux 下的 TCP/IP 網絡協議棧的各層之間是通過一系列互相連接層的軟件來實現 Internet 地址族的。其中 BSD socket 層由專門用來處理 BSD socket的通用套接字管理軟件來處理,它由 INET socket 層來支持。INET socket 為基于 IP 的協議 TCP 和 UDP 管理傳輸端點。UDP(用戶數據報協議)是一個無連接協議,而 TCP(傳輸控制協議)是一個可靠的端對端協議。傳輸 UDP 包的時候,uCLinux 不知道也不關心它們是否安全到達了目的地。TCP 則不同。在 TCP 連接的兩端都需要加上一個編號,以保證傳輸的數據被正確接收。在IP 層,實現了 Internet 協議代碼,這些代碼要給傳輸的數據加上一個 IP 頭,并且知道如何把傳入的 IP 包送給 TCP 或者 UDP 協議。在 IP 層以下,就是網絡設備來支持所有的 uCLinux 網絡工作,如 PLIP、SLIP 和以太網。
      網絡的 socket 數據傳輸是一種特殊的 I/O,socket 也是一種文件描述符,也具有一個類似文件的函數調用 socket()。該函數返回一個整型的 socket 描述符,隨后的連接建立、數據傳輸等操作都是通過該 socket 函數實現的。常用的socket 類型有兩種:流式 socket 和數據報式 socket。兩者的區別在于:前者對應于 TCP 服務,后者對應于 UDP 服務。
      3.4 實現步驟與結果
        基于uClinux下的網絡接口編寫應用程序,要求實現一個簡單的客戶機/服務器應用,服務器程序接收客戶機發送來的字符串并回傳給客戶端,同時將接收到的字符串打印到串口終端。在uClinux系統下映射主機目錄進行程序的調試[3]。
      本節由兩部分組成:(1) 開發板做客戶端,PC機做服務器;(2)開發板做服務器,PC機做客戶端。
      3.4.1 開發板做客戶端,PC機做服務器
      首先在寫字板上編寫客戶端程序client.c完成以后將其拷貝到工作目錄
      f/cygwin/usr/local/src/uclinux-dist/user/app中在cygwin軟件中執行以下操作:
      cd /, ls , export PATH=/usr/local/armtools/bin:$PATH(設置路徑),
      cd /usr/local/src/uclinux-dist/user/app(進入工作目錄),
      ls, arm-elf-gcc –o client client.c –elf2flt,生成二進制client 并復制到目錄f/cygwin/usr/local/src/uclinux-dist/romfs/bin中,
      gcc –o client client.c ,cd ..,cd ..,退回到目錄usr/local/src/uclinux-dist中,
      make image,生成鏡像文件zImage在f/cygwin/usr/local/src/uclinux-dist/image中
      下面我們要做的就是將這個生成的鏡像文件燒寫到開發板的flash中,步驟如下:
      打開英倍特軟件進行配置,點擊按鈕programm進行燒寫。
      打開 /開始/程序/附件/通信/超級終端,設置串口設置,在超級終端執行以下指令:
      ifconfig eth0 192.168.1.200,//修改開發板的IP為192.168.1.200
      cd /bin,./client 192.168.105(服務器IP),//運行 client 并修改服務器IP
      結果顯示send to server...default test string字樣。
       在另一PC機上打開tcp&udp測試工具,并進行以下設置 :創建服務器—端口統一設置為8000,本地端口設置為8000,選擇TCP方式,設置好后點擊連接,連接成功后即可向服務器發送數據。
      3.4.2 開發板做客戶端,PC機做服務器
      首先在寫字板上編寫服務器程序server.c。完成以后將其拷貝到工作目錄f/cygwin/usr/local/src/uclinux-dist/user/app中在cygwin軟件中執行以下操作:
      cd /,ls,export PATH=/usr/local/armtools/bin:$PATH(設置路徑),cd /usr/local/src/uclinux-dist/user/app(進入工作目錄),ls,arm-elf-gcc –o server server.c –elf2flt,生成二進制server 將其復制到目錄f/cygwin/usr/local/src/uclinux-dist/romfs/bin中,gcc –o server server.c,cd ..,cd ..,退回到目錄usr/local/src/uclinux-dist中,make image,生成鏡像文件zImage在f/cygwin/usr/local/src/uclinux-dist/image中。
      下面我們要做的就是將這個生成的鏡像文件燒寫到開發板的flash中,步驟如下:
      打開英倍特軟件進行配置,方法同上。點擊按鈕programm進行燒寫。燒寫需要一段時間,燒寫完成后,打開開始/程序/附件/通信/超級終端,重新啟動開發板。
      ifconfig eth0 192.168.1.200,修改開發板的IP為192.168.1.200,cd bin,進入目錄bin
      ./server ,運行server。顯示server listening...wait for cnnect…開發板進入查詢等待狀態。
      在另一PC機上打開tcp&udp測試工具,并進行以下設置 :創建服務器—端口統一設置為8000,本地端口設置為8000,選擇TCP方式,目標板IP:192.168.1.200(即服務器地址)設置好后點擊連接,連接成功。
      在建立連接的過程中間,會出現各種設置都正確的情況下建立連接失敗的問題,這個時候應該點擊“開始”按鈕,打開  “運行”看兩臺PC機能否PING通,如果互相不能PING通,要看IP設置是否在同一網段,若已經在同一網段,試著取消PC機的防火墻,這樣應該可以建立連接了。
      4 總結
        本文作者創新點是研究了數據采集平臺涉及的關鍵技術,系統運行的硬軟件平臺,完成了uclinux開發環境的建立及編譯運行,在此基礎上進行了網絡通信的軟件設計。通過應用程序的編寫與調試,總結了網絡通信的調試方法及步驟,具有指導實際開發的意義。
      參考文獻
      [1]田澤. ARM7嵌入式開發實驗與實踐 .北京:北京航空航天大學出版社,2006-9
      [2]田澤.ARM7 Clinux開發實驗與實踐.北京:北京航空航天大學出版社,2006-11
      [3]李鐵峰,林白,李鷗. 基于FPGA的網絡應用硬件開發平臺的實現,微計算機信息,2005,(05)
      [4]田澤.嵌入式系統開發與應用教程 .北京:北京航空航天大學出版社,2006-10
      [5]田澤.嵌入式系統開發與應用實驗教程.北京:北京航空航天大學出版社,2004,136-143

      作者簡介:冷建筑(1974-),男(漢族),四川成都市人,重慶大學通信工程學院, 電路與系統專業,碩士,主要從事嵌入式硬軟件開發和網絡編程。

      通信地址:(400044 重慶市沙坪壩區 重慶大學通信工程學院A區主樓2311室) 冷建筑


      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜福利93波多野结衣 | 日韩丝袜亚洲国产欧美一区 | 亚洲精品自在在线观看 | 日本中文字幕在线视频 | 在线视频亚洲图片 | 亚洲国产精品午夜伦不卡 |