基于FPGA+DSP+ARM的數據傳送總線變換器
4 系統軟件設計本文引用地址:http://www.104case.com/article/191587.htm
4.1 嵌入式操作系統
在該數據傳送總線變換器中,實時數據壓縮的任務由DSP完成。ARM S3C4510B完成與PC之間的以太網通信,其軟件實現所要求的實時性、可靠性和復雜性使得選擇一種帶有TCP/IP協議包的嵌入式實時操作系統成為必需,而μCLinux是一個帶有完整的TCP/IP協議的操作系統,在μCLinux中加入實時RT-Linux模塊以滿足對嵌入式操作系統的實時性要求。
4.2 驅動和應用程序的開發
基于μCLinux操作系統的硬件驅動和應用程序的開發是在交叉編譯環境中進行的,首先在PC機上開發,然后移植到目標機上進行調試并最終固化到目標機上。所開發的硬件驅動有以太網卡控制器驅動、LCD驅動、HPI驅動等驅動程序。系統軟件結構如圖4所示。
在μClinux操作系統上運行三個任務:讀取壓縮數據、通過以太網發送數據、接收和執行來自遠端PC機的命令。其中讀取DSP壓縮數據任務對實時性有要求,它通過中斷處理程序來實現,而其他的兩個任務則通過用戶進程來實現。以太網發送數據的任務和讀取壓縮數據的任務共享一個緩沖區,通過ioctl函數在其間傳遞緩沖區雙向鏈表的地址。所以需要為數據處理模塊上的通信接口HPI注冊一個驅動程序,注冊驅動程序的函數是:
result=register_chrdev(HPI_MAJOR,hpi,hpi_fops)
驅動程序的主要結構如下:
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驅動程序編寫完成后,將驅動程序源代碼置于../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)新添加的字符驅動程序初始化函數聲明:extern void hpi_init(void);
(2)在字符設備統一初始化函數int _init chr_dev_init(void)中調用新設備的初始化函數,需要在int _init chr_dev_init(void)中加入語句:hpi_init();
在函數int _init chr_dev_init(void)中,字符設備的初始化函數將被統一調用,并完成字符驅動file_operations數據結構的注冊,初始化之后就可以使用HPI字符設備了。
本文所設計數據傳送總線變換器,不僅解決了由于傳輸距離遠而引起的信號畸變問題,而且滿足了信息傳遞的實時性要求,同時具有網關功能和嵌入式Web功能,能確保系統安全接入Internet。
評論