基于ARM9芯片S3C2410a的GPRS數據終端設計
2 嵌入式系統設計
2.1 系統硬件結構
2.1.1 ARM9系統硬件結構
ARM9系統硬件結構見圖1。
2.1.2 GPRS傳輸設備
本文使用的GPRS傳輸設備是北京華榮匯通信設備有限公司開發的GR100型GPRS MODEM,采用了高性能內嵌TCP/IP協議棧GPRS模塊。
2.2 系統運作過程
(1)物理過程。ARM利用AT指令通過GPRSModem撥號,正確反饋及應答后,一條物理通道即GPRS信道就在系統中的GPRS Modem和GPRS網絡之間建立起來。
(2)數據過程。PPP協議將原始的GPRS物理層連接改造成無差錯的數據鏈路,系統將遠程登錄Internet,并得到GPRS網關分配的IP地址。
(3)網絡過程。采用IP協議作為網絡層協議。IP協議將接人Internet的具有不同IP地址的終端都聯系起來。經過IP路由選擇,可以實現系統與連在Internet上的任一IP終端進行數據交互。
(4)傳輸過程。選擇TCP作為傳輸層協議,為數據傳輸提供面向連接,可靠服務。
3 軟件設計
3.1 嵌入式系統的引導代碼Bootloader
Bootloader(引導加載程序)是嵌入式系統加電后運行的第一段代碼,在PC中,引導加載程序由BIOS和位于硬盤MBR中的操作系統引導加載程序一起組成的。
Bootloader啟動大多數分為2個階段。第一階段主要包含依賴于CPU的體系結構硬件初始化的代碼,通常都用匯編語言來實現。這個階段任務有:基本的硬件設備初始化(屏蔽所有的中斷、關閉處理器內部指令,數據Cache等);為第二階段準備RAM空間;如果是從某個固態存儲媒質中,則復制Bootloader的第二階段代碼到RAM中;設置堆棧;跳轉到第二階段的C程序入口點。
第二階段通常用c語言完成,以便實現更復雜的功能。這個階段任務有:初始化本階段要使用到的硬件設備;檢測系統內存映射;將內核映像和根文件系統映像從Flash讀到RAM 為內核設置啟動參數;調用內核。
在U-BOOT(在PPC-BOOT的基礎上進化而來的一個開放源碼的嵌入式BOOTROM程序)中通過下面兩行代碼進行兩個階段的工作交換:
Ldr pc,_start_armboot
_start_armboot:.word staxt_armboot
Bootloader調用Linux內核的方法是直接跳轉到內核的第一指令處,在跳轉時必須滿足下列條件:CPU寄存器設置。R0為O;R1為機器類型ID;R2為啟動參數,標記列表在RAM中的起始基地址,CPU模式。必須禁止中斷(IRQs和VlQs);CPU必須設置為SVC模式。Cache和MMU的設置。MMU必須關閉;指令Cache可以打開也可以關閉;數據Cache必須關閉。在編寫完Bootloader后,利用JTAG下載電纜.燒寫到Nor Flash中即可。
3.2 配置和編譯Linux內核
Linux內核主要由5個子系統組成:進程調度、內存管理、虛擬文件系統、網絡接口、進程間通信。
3.2.1 配置內核
配置內核的命令有make config;make oldcoafig;make menucoafig;make xconfig。無論哪個命令都將產生config文件,并在每一個c源文件中加上Linux/config.h>,使define的宏起全局性的作用。
3.2.2 編譯內核
編譯內核需要3個步驟,分別是創建內核依賴關系、創建內核鏡像文件和創建內核模塊。執行make up命令進行編譯。
生成內核以后,接下來要做的是安裝它。對每一個內核配置來說。要復制4個丈件:沒有壓縮的內核鏡像(zlmage和bzlmage)、壓縮的內核鏡像(vmlinux)、內核符號映射文件(System.map)以及配置文件(config)。
最后用loader.exe燒寫zlmage 或bzImage 到Nor Flash 的0x00010000地址。
4 GPRS數據終端實現
GR100通過RS232接口與ARM9系統連接,最終實現了基于ARM9芯片S3c2410a的GPRS數據終端。該終端內部已移植了Linux操作系統,可在該系統下自主開發軟件,使其功能更加強大,例如連接LCD,實現可視化操作等。
評論