嵌入式Linux系统下的EMIF与FPGA的接口驱动方法技术方案

技术编号:10313740 阅读:331 留言:0更新日期:2014-08-13 16:04
嵌入式Linux系统下的EMIF与FPGA的接口驱动方法,属于数据传输领域。解决了现有在Linux系统下的DSP的EMIF与FPGA接口无法实现图像数据传输的问题。该方法首先,实现EMIF驱动模块对驱动设备加载函数的加载和卸载函数的卸载,其次,通过EMIF驱动模块,实现发送装置中的DSP的EMIF端口对发送装置中的FPGA中FIFO进行写操作,再次,接收装置中的DSP接收到中断信号后,执行中断处理例程,唤醒读进程;最后,通过EMIF驱动模块,实现接收装置中的DSP的EMIF端口对接收装置中的FPGA中FIFO进行读操作。用于实现EMIF端口与FPGA的接口之间的数据通信。

【技术实现步骤摘要】
嵌入式Linux系统下的EMIF与FPGA的接口驱动方法
本专利技术属于数据传输领域。
技术介绍
随着生活水平的提高和科技水平的发展,人们对图像处理的要求越来越高,如视频会议、视频监控、视频通话等。但是,在达芬奇(Davinci)技术出现之前,针对不同的需要,开发者需要掌握不同的图像处理芯片和软件的开发知识,这大大增加了新产品开发的难度和开发周期。针对上述情况,TI公司在DSP技术的基础上,结合ARM、图像编解码标准,TI编程规范等提出了达芬奇技术架构。Davinci技术架构大大降低了图像处理的复杂度,缩短了产品的研发周期,并且还能提高产品性能。随着DSP处理速度提高和开发工具的完善,其应用范围越来越广泛。由于DSP的内部RAM有限,所以要实现大量数据的采集和处理,需要对DSP的RAM进行扩展。另外,在无线通信的过程中,传输的往往是串行数据,但是由于DSP本身硬件原理和指令的特点,使得DSP不能与无线通信设备进行无缝连接。通过DSP的EMIF接口与FPGA进行连接,可以使得DSP获得较大的外部存储空间。同时,由于FPGA具有编程灵活性的特点,使得DSP能够与众多的模块设备进行无缝连接,这样就大大拓展了DSP的应用范围。
技术实现思路
本专利技术是为了解决现有在Linux系统下的DSP的EMIF与FPGA接口无法实现图像数据传输的问题,本专利技术提供了一种嵌入式Linux系统下的EMIF与FPGA的接口驱动方法。嵌入式Linux系统下的EMIF与FPGA的接口驱动方法,它基于下述发送装置和接收装置实现的,发送装置的数据信号输出端与接收装置的数据信号输入端连接,发送装置包括一个DSP和一个FPGA,其中,所述的DSP的写使能控制信号输出端与FPGA的写使能信号输入端连接,DSP的写时钟信号输出端与FPGA的写时钟信号输入端连接,DSP的数据信号输出端与FPGA的数据信号输入端连接,发送装置中FPGA的数据信号输出端作为发送装置的数据信号输出端;接收装置包括一个DSP和一个FPGA,其中,所述的FPGA的读使能控制信号输入端与DSP的读使能信号输出端连接,FPGA的读时钟信号输入端与DSP的读时钟信号输出端连接,FPGA的中断触发信号输出端与DSP的中断信号输入端连接,FPGA的数据信号输出端与DSP的数据信号输入端连接,接收装置中FPGA的数据信号输入端作为接收装置的数据信号输入端;发送装置中的DSP和接收装置中的DSP均为含有EMIF端口的DSP,发送装置中的DSP和接收装置中的DSP均嵌入了Linux操作系统和EMIF驱动模块,在Linux操作系统下,EMIF驱动模块用于实现DSP与FPGA的通信,嵌入在发送装置中的DSP内部的EMIF驱动模块实现对FPGA接口驱动的方法为,步骤1:实现EMIF驱动模块对驱动设备加载函数的加载和该驱动设备卸载函数的卸载,步骤2:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的写操作映射为对所述的内存地址的写操作,实现发送装置中的DSP的EMIF端口对发送装置中的FPGA中FIFO进行写操作,步骤3:接收装置中的DSP接收到中断触发信号后,执行中断处理例程,使接收装置中的DSP的EMIF端口从接收装置中的FPGA的FIFO中读出指定数目的字节,并存储到Linux操作系统内核的缓存区中,唤醒读进程;步骤4:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的读操作映射为对所述的内存地址的读操作,实现接收装置中的DSP的EMIF端口对接收装置中的FPGA中FIFO进行读操作,即完成EMIF端口与FPGA的接口之间的数据通信。所述的实现EMIF驱动模块对驱动设备加载函数的加载和该驱动设备卸载函数的卸载中,EMIF驱动模块对驱动设备加载函数的加载过程为:在EMIF驱动模块对驱动设备进行驱动的过程中,首先,对设备号进行申请,并将EMIF驱动模块注册到Linux操作系统中,Linux操作系统通过设备号确定该设备对应的EMIF驱动模块,完成EMIF驱动模块对驱动设备加载函数的加载,EMIF驱动模块对驱动设备卸载函数的卸载过程为:将设备号进行释放,并将驱动设备对应的EMIF驱动模块所占用的内存进行释放,并返回I/O资源给系统,完成EMIF驱动模块对驱动设备卸载函数的卸载。所述的实现发送装置中的DSP的EMIF端口对发送装置中的FPGA中FIFO进行写操作的具体过程为,通过写操作write()函数将数据从发送装置中的DSP中复制到发送装置中的FPGA的FIFO中。所述的实现接收装置中的DSP的EMIF端口对接收装置中的FPGA中FIFO进行读操作的具体过程为,通过读操作read()函数将接收装置中DSP的内核缓存区的数据复制到用户空间。所述的接收装置中的DSP接收到中断触发信号后,执行中断处理例程的具体过程为,步骤4-1:清除中断标志,执行步骤4-2,步骤4-2:采用I/O操作函数将接收装置的FPGA中FIFO的数据复制到接收装置的DSP的内核空间的缓存区,执行步骤4-3,步骤4-3:判断内核空间的缓存区是否满一半,结果为是,执行步骤4-4,结果为否,执行步骤4-5,步骤4-4:唤醒阻塞的用户空间的读进程,执行步骤4-5;步骤4-5:中断返回。所述的通过读操作read()函数将接收装置中DSP的内核缓存区的数据复制到用户空间的具体过程为:步骤5-1:判断接收装置中DSP的内核缓存区是否为空,结果为是,执行步骤5-2,结果为否,执行步骤5-3,步骤5-2:读进程休眠,直到缓存区不为空时,执行步骤5-3,步骤5-3:唤醒读进程,执行步骤5-4,步骤5-4:通过读操作read()函数将接收装置中DSP的内核缓存区的数据复制到用户空间,执行步骤5-5,步骤5-5:释放信号量。所述的通过写操作write()函数将数据从发送装置中的DSP中复制到发送装置中的FPGA的FIFO中的具体过程为:步骤3-1:在发送装置中DSP的内核空间申请缓存区后,执行步骤3-2,步骤3-2:将用户空间的数据复制到内核空间的缓存区,执行步骤3-3,步骤3-3:通过写操作write()函数将内核空间缓存区内容复制到发送装置中的FPGA的FIFO中,执行步骤3-4;步骤3-4:释放信号量。所述的发送装置中的DSP和接收装置中的DSP均采用型号为TMS320DM365的芯片实现。整个系统中,设置3个测试点A、B、C,进行测试,测试点A、B、C在系统中的位置如图4所示。在测试过程中,首先发送装置中TMS320DM365向该装置中FPGA发送数据,然后发送装置中FPGA将数据发送给接收装置中FPGA,最后接收装置中FPGA再将数据发送给接收装置中TMS320DM365。其中A、B和C三个测试点的FPGA波形分别如图6、7和8所示,通过比较TMS320DM365发送与接收的数据,证明TMS320DM365与FPGA之间的接口设计是正确的。本专利技术带来的有益效果是,实现了Linux系统下的DSP的EMIF与FPGA接口实现图像数据传输。附图说明图1为具体实施方式一所述的发送装置和接收装置的原理示意图;图2为具体实施方式六中,通过读操作read()函数将接收装置中DSP的内本文档来自技高网...
嵌入式Linux系统下的EMIF与FPGA的接口驱动方法

【技术保护点】
嵌入式Linux系统下的EMIF与FPGA的接口驱动方法,其特征在于,它基于下述发送装置和接收装置实现的,发送装置的数据信号输出端与接收装置的数据信号输入端连接,发送装置包括一个DSP和一个FPGA,其中,所述的DSP的写使能控制信号输出端与FPGA的写使能信号输入端连接,DSP的写时钟信号输出端与FPGA的写时钟信号输入端连接,DSP的数据信号输出端与FPGA的数据信号输入端连接,发送装置中FPGA的数据信号输出端作为发送装置的数据信号输出端;接收装置包括一个DSP和一个FPGA,其中,所述的FPGA的读使能控制信号输入端与DSP的读使能信号输出端连接,FPGA的读时钟信号输入端与DSP的读时钟信号输出端连接,FPGA的中断触发信号输出端与DSP的中断信号输入端连接,FPGA的数据信号输出端与DSP的数据信号输入端连接,接收装置中FPGA的数据信号输入端作为接收装置的数据信号输入端;发送装置中的DSP和接收装置中的DSP均为含有EMIF端口的DSP,发送装置中的DSP和接收装置中的DSP均嵌入了Linux操作系统和EMIF驱动模块,在Linux操作系统下,EMIF驱动模块用于实现DSP与FPGA的通信,嵌入在发送装置中的DSP内部的EMIF驱动模块实现对FPGA接口驱动的方法为,步骤1:实现EMIF驱动模块对驱动设备加载函数的加载和该驱动设备卸载函数的卸载,步骤2:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的写操作映射为对所述的内存地址的写操作,实现发送装置中的DSP的EMIF端口对发送装置中的FPGA中FIFO进行写操作,步骤3:接收装置中的DSP接收到中断触发信号后,执行中断处理例程,使接收装置中的DSP的EMIF端口从接收装置中的FPGA的FIFO中读出指定数目的字节,并存储到Linux操作系统内核的缓存区中,唤醒读进程;步骤4:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的读操作映射为对所述的内存地址的读操作,实现接收装置中的DSP的EMIF端口对接收装置中的FPGA中FIFO进行读操作,即完成EMIF端口与FPGA的接口之间的数据通信。...

【技术特征摘要】
1.嵌入式Linux系统下的EMIF与FPGA的接口驱动方法,其特征在于,它基于下述发送装置和接收装置实现的,发送装置的数据信号输出端与接收装置的数据信号输入端连接,发送装置包括一个DSP和一个FPGA,其中,所述的DSP的写使能控制信号输出端与FPGA的写使能信号输入端连接,DSP的写时钟信号输出端与FPGA的写时钟信号输入端连接,DSP的数据信号输出端与FPGA的数据信号输入端连接,发送装置中FPGA的数据信号输出端作为发送装置的数据信号输出端;接收装置包括一个DSP和一个FPGA,其中,所述的FPGA的读使能控制信号输入端与DSP的读使能信号输出端连接,FPGA的读时钟信号输入端与DSP的读时钟信号输出端连接,FPGA的中断触发信号输出端与DSP的中断信号输入端连接,FPGA的数据信号输出端与DSP的数据信号输入端连接,接收装置中FPGA的数据信号输入端作为接收装置的数据信号输入端;发送装置中的DSP和接收装置中的DSP均为含有EMIF端口的DSP,发送装置中的DSP和接收装置中的DSP均嵌入了Linux操作系统和EMIF驱动模块,在Linux操作系统下,EMIF驱动模块用于实现DSP与FPGA的通信,嵌入在发送装置中的DSP内部的EMIF驱动模块实现对FPGA接口驱动的方法为,步骤1:实现EMIF驱动模块对驱动设备加载函数的加载和该驱动设备卸载函数的卸载,步骤2:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的写操作映射为对所述的内存地址的写操作,实现发送装置中的DSP的EMIF端口对发送装置中的FPGA中FIFO进行写操作,步骤3:接收装置中的DSP接收到中断触发信号后,执行中断处理例程,使接收装置中的DSP的EMIF端口从接收装置中的FPGA的FIFO中读出指定数目的字节,并存储到Linux操作系统内核的缓存区中,唤醒读进程;步骤4:通过EMIF驱动模块,将FPGA的FIFO映射为DSP的一个内存地址,将对FIFO的读操作映射为对所述的内存地址的读操作,实现接收装置中的DSP的EMIF端口对接收装置中的FPGA中FIFO进行读操作,即完成EMIF端口与FPGA的接口之间的数据通信。2.根据权利要求1所述的嵌入式Linux系统下的EMIF与FPGA的接口驱动方法,其特征在于,所述的实现EMIF驱动模块对驱动设备加载函数的加载和该驱动设备卸载函数的卸载中,EMIF驱动模块对驱动设备加载函数的加载过程为:在EMIF驱动模块对驱动设备进行驱动的过程中,首先,对设备号进行申请,并将EMIF驱动模块注册到Linux操作系统中,Linux操作系统通过设备号确定该设备对应的EMIF驱动模块,完成EMIF驱动模块对驱动设备加载函数的加载,EMIF驱动模块对驱动设备卸载函数的卸载过程为:将设备号进行释放,并将驱动设备对应的EM...

【专利技术属性】
技术研发人员:高玉龙张蔚刘佳鑫马永奎李然张中兆
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙江;23

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1