基于FPGA+DSP+ARM的數(shù)據(jù)傳送總線變換器
4 系統(tǒng)軟件設計本文引用地址:http://www.ex-cimer.com/article/191587.htm
4.1 嵌入式操作系統(tǒng)
在該數(shù)據(jù)傳送總線變換器中,實時數(shù)據(jù)壓縮的任務由DSP完成。ARM S3C4510B完成與PC之間的以太網(wǎng)通信,其軟件實現(xiàn)所要求的實時性、可靠性和復雜性使得選擇一種帶有TCP/IP協(xié)議包的嵌入式實時操作系統(tǒng)成為必需,而μCLinux是一個帶有完整的TCP/IP協(xié)議的操作系統(tǒng),在μCLinux中加入實時RT-Linux模塊以滿足對嵌入式操作系統(tǒng)的實時性要求。
4.2 驅(qū)動和應用程序的開發(fā)
基于μCLinux操作系統(tǒng)的硬件驅(qū)動和應用程序的開發(fā)是在交叉編譯環(huán)境中進行的,首先在PC機上開發(fā),然后移植到目標機上進行調(diào)試并最終固化到目標機上。所開發(fā)的硬件驅(qū)動有以太網(wǎng)卡控制器驅(qū)動、LCD驅(qū)動、HPI驅(qū)動等驅(qū)動程序。系統(tǒng)軟件結(jié)構如圖4所示。
在μClinux操作系統(tǒng)上運行三個任務:讀取壓縮數(shù)據(jù)、通過以太網(wǎng)發(fā)送數(shù)據(jù)、接收和執(zhí)行來自遠端PC機的命令。其中讀取DSP壓縮數(shù)據(jù)任務對實時性有要求,它通過中斷處理程序來實現(xiàn),而其他的兩個任務則通過用戶進程來實現(xiàn)。以太網(wǎng)發(fā)送數(shù)據(jù)的任務和讀取壓縮數(shù)據(jù)的任務共享一個緩沖區(qū),通過ioctl函數(shù)在其間傳遞緩沖區(qū)雙向鏈表的地址。所以需要為數(shù)據(jù)處理模塊上的通信接口HPI注冊一個驅(qū)動程序,注冊驅(qū)動程序的函數(shù)是:
result=register_chrdev(HPI_MAJOR,hpi,hpi_fops)
驅(qū)動程序的主要結(jié)構如下:
struct file_operations hpi_fops=
{
owner: THIS MODULE,
open: hpi_open,
read: hpi_read,
write: hpi_write,
ioctl: hpi_ioctl,
mmap:hpi_mmap,
release:hpi_release,
};
HPI驅(qū)動程序編寫完成后,將驅(qū)動程序源代碼置于../linux-2.4.x/driver/char目錄下,同時修改同級目錄下的Makefile,在../linux-2.4.x/driver/char/Makefile中加入Obj_y +=hpi.o
同時,為了能夠在?滋Clinux啟動時自動初始化此字符設備,還需要修改 ../linux-2.4.x/driver/char/men.c文件,在其中加入:
(1)新添加的字符驅(qū)動程序初始化函數(shù)聲明:extern void hpi_init(void);
(2)在字符設備統(tǒng)一初始化函數(shù)int _init chr_dev_init(void)中調(diào)用新設備的初始化函數(shù),需要在int _init chr_dev_init(void)中加入語句:hpi_init();
在函數(shù)int _init chr_dev_init(void)中,字符設備的初始化函數(shù)將被統(tǒng)一調(diào)用,并完成字符驅(qū)動file_operations數(shù)據(jù)結(jié)構的注冊,初始化之后就可以使用HPI字符設備了。
本文所設計數(shù)據(jù)傳送總線變換器,不僅解決了由于傳輸距離遠而引起的信號畸變問題,而且滿足了信息傳遞的實時性要求,同時具有網(wǎng)關功能和嵌入式Web功能,能確保系統(tǒng)安全接入Internet。
評論