新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA+DSP+ARM的數(shù)據(jù)傳送總線變換器

基于FPGA+DSP+ARM的數(shù)據(jù)傳送總線變換器

作者: 時(shí)間:2010-09-02 來(lái)源:網(wǎng)絡(luò) 收藏

  4 系統(tǒng)軟件設(shè)計(jì)

本文引用地址:http://m.butianyuan.cn/article/191587.htm

  4.1 嵌入式操作系統(tǒng)

  在該總線變換器中,實(shí)時(shí)數(shù)據(jù)壓縮的任務(wù)由完成。 S3C4510B完成與PC之間的以太網(wǎng)通信,其軟件實(shí)現(xiàn)所要求的實(shí)時(shí)性、可靠性和復(fù)雜性使得選擇一種帶有TCP/IP協(xié)議包的嵌入式實(shí)時(shí)操作系統(tǒng)成為必需,而μCLinux是一個(gè)帶有完整的TCP/IP協(xié)議的操作系統(tǒng),在μCLinux中加入實(shí)時(shí)RT-Linux模塊以滿足對(duì)嵌入式操作系統(tǒng)的實(shí)時(shí)性要求。

  4.2 驅(qū)動(dòng)和應(yīng)用程序的開(kāi)發(fā)

  基于μCLinux操作系統(tǒng)的硬件驅(qū)動(dòng)和應(yīng)用程序的開(kāi)發(fā)是在交叉編譯環(huán)境中進(jìn)行的,首先在PC機(jī)上開(kāi)發(fā),然后移植到目標(biāo)機(jī)上進(jìn)行調(diào)試并最終固化到目標(biāo)機(jī)上。所開(kāi)發(fā)的硬件驅(qū)動(dòng)有以太網(wǎng)卡控制器驅(qū)動(dòng)、LCD驅(qū)動(dòng)、HPI驅(qū)動(dòng)等驅(qū)動(dòng)程序。系統(tǒng)軟件結(jié)構(gòu)如圖4所示。


  在μClinux操作系統(tǒng)上運(yùn)行三個(gè)任務(wù):讀取壓縮數(shù)據(jù)、通過(guò)以太網(wǎng)發(fā)送數(shù)據(jù)、接收和執(zhí)行來(lái)自遠(yuǎn)端PC機(jī)的命令。其中讀取壓縮數(shù)據(jù)任務(wù)對(duì)實(shí)時(shí)性有要求,它通過(guò)中斷處理程序來(lái)實(shí)現(xiàn),而其他的兩個(gè)任務(wù)則通過(guò)用戶進(jìn)程來(lái)實(shí)現(xiàn)。以太網(wǎng)發(fā)送數(shù)據(jù)的任務(wù)和讀取壓縮數(shù)據(jù)的任務(wù)共享一個(gè)緩沖區(qū),通過(guò)ioctl函數(shù)在其間傳遞緩沖區(qū)雙向鏈表的地址。所以需要為數(shù)據(jù)處理模塊上的通信接口HPI注冊(cè)一個(gè)驅(qū)動(dòng)程序,注冊(cè)驅(qū)動(dòng)程序的函數(shù)是:

  result=register_chrdev(HPI_MAJOR,hpi,hpi_fops)

  驅(qū)動(dòng)程序的主要結(jié)構(gòu)如下:

  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ū)動(dòng)程序編寫完成后,將驅(qū)動(dòng)程序源代碼置于../linux-2.4.x/driver/char目錄下,同時(shí)修改同級(jí)目錄下的Makefile,在../linux-2.4.x/driver/char/Makefile中加入Obj_y +=hpi.o

  同時(shí),為了能夠在?滋Clinux啟動(dòng)時(shí)自動(dòng)初始化此字符設(shè)備,還需要修改 ../linux-2.4.x/driver/char/men.c文件,在其中加入:

  (1)新添加的字符驅(qū)動(dòng)程序初始化函數(shù)聲明:extern void hpi_init(void);

  (2)在字符設(shè)備統(tǒng)一初始化函數(shù)int _init chr_dev_init(void)中調(diào)用新設(shè)備的初始化函數(shù),需要在int _init chr_dev_init(void)中加入語(yǔ)句:hpi_init();

  在函數(shù)int _init chr_dev_init(void)中,字符設(shè)備的初始化函數(shù)將被統(tǒng)一調(diào)用,并完成字符驅(qū)動(dòng)file_operations數(shù)據(jù)結(jié)構(gòu)的注冊(cè),初始化之后就可以使用HPI字符設(shè)備了。

  本文所設(shè)計(jì)總線變換器,不僅解決了由于傳輸距離遠(yuǎn)而引起的信號(hào)畸變問(wèn)題,而且滿足了信息傳遞的實(shí)時(shí)性要求,同時(shí)具有網(wǎng)關(guān)功能和嵌入式Web功能,能確保系統(tǒng)安全接入Internet。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: FPGA DSP ARM 數(shù)據(jù)傳送

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉