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