chun2495 发表于 2019-4-1 17:26:37

请教一下嵌入式Linux下SRAM驱动的开发

现在要做一个项目FPGA和ARM-linux通讯。中间的缓存芯片是SRAM。通过这个SRAM,FPGA和ARM进行数据交互。
哪位坛友有这方面的开发经验或者思路呢?

浮华一生 发表于 2019-4-1 17:29:26

FPGA 需要做个总线仲裁吧。

chun2495 发表于 2019-4-1 17:33:56

浮华一生 发表于 2019-4-1 17:29
FPGA 需要做个总线仲裁吧。

这个不是问题,fpga这边只要做好分时复用就行了。主要是arm这边不知道如何来挂载sram和驱动。

浮华一生 发表于 2019-4-1 17:50:34

chun2495 发表于 2019-4-1 17:33
这个不是问题,fpga这边只要做好分时复用就行了。主要是arm这边不知道如何来挂载sram和驱动。 ...

这个就是属于协议层了吧。比如 Magic Number让FPGA确定 ARM这边已经可以正常读写SRAM了之类得。

chun2495 发表于 2019-4-1 18:10:09

浮华一生 发表于 2019-4-1 17:50
这个就是属于协议层了吧。比如 Magic Number让FPGA确定 ARM这边已经可以正常读写SRAM了之类得。...

可能我表达的不清楚,其实可以描述成“linux下sram驱动的开发和应用”这个问题。

hongfadg 发表于 2019-4-1 18:22:00

chun2495 发表于 2019-4-1 18:10
可能我表达的不清楚,其实可以描述成“linux下sram驱动的开发和应用”这个问题。 ...

Sram属于arm硬件资源,有的话直接配置下寄存器,直接就可以用地址访问数据了,很简单。如果芯片不支持sram的话,怎么折腾也没用,io模拟不现实!

浮华一生 发表于 2019-4-1 19:40:10

hongfadg 发表于 2019-4-1 18:22
Sram属于arm硬件资源,有的话直接配置下寄存器,直接就可以用地址访问数据了,很简单。如果芯片不支持sra ...

对得, 配置一下就是访问地址得事情 C 一个指针搞定啊   哈哈

chun2495 发表于 2019-4-1 19:44:16

hongfadg 发表于 2019-4-1 18:22
Sram属于arm硬件资源,有的话直接配置下寄存器,直接就可以用地址访问数据了,很简单。如果芯片不支持sra ...

不是用sram当Linux内存的,是用来做通讯数据的,也可以这样配置吗?

appleboy 发表于 2019-4-1 19:51:32

SRAM是FPGA驱动的,FPGA实现双端口ram,arm通过FPGA写SRAM,如果缓存大小和数据流匹配,可以做成实时写入,否则加busy信号

redroof 发表于 2019-4-1 19:55:08

chun2495 发表于 2019-4-1 19:44
不是用sram当Linux内存的,是用来做通讯数据的,也可以这样配置吗?

sram没有驱动这一说啊。
它是挂在你的单片机的外部总线上吧?就表现为一块正常的sram吧?也就是除了你正常的系统主ram之外,这里还有一小块特殊的双口ram,它也是有地址的。
那么在应用程序里面直接用mmap把这一片地址映射过来就行了,然后它的表现就跟你程序里别的内存没区别,随便用个指针指过去读写就可以了。
为了跟fpga可以通迅,一般来说在fpga里面还得做几个寄存器,对吧。但是,在linux里面看来这几个控制寄存器的操作还是跟那一块ram没区别,无非是地址不同

NJ8888 发表于 2019-4-1 20:09:36

两者之间应该弱耦合,避免大量数据在两这之间转移

hongfadg 发表于 2019-4-1 20:39:22

chun2495 发表于 2019-4-1 19:44
不是用sram当Linux内存的,是用来做通讯数据的,也可以这样配置吗?

Stm32fsmclcd驱动楼主研究下,这个研究明白了,你就全明白了!

chun2495 发表于 2019-4-1 21:46:15

hongfadg 发表于 2019-4-1 20:39
Stm32fsmclcd驱动楼主研究下,这个研究明白了,你就全明白了!

这个裸机的搞过。就是Linux下的没弄过。网上也说是字符设备。当究竟怎样操作 还是一头雾水……

chun2495 发表于 2019-4-1 21:49:03

redroof 发表于 2019-4-1 19:55
sram没有驱动这一说啊。
它是挂在你的单片机的外部总线上吧?就表现为一块正常的sram吧?也就是除了你正 ...

有没有这一块的例程?第一次玩这个有点无从下手。

NJ8888 发表于 2019-4-1 22:06:26

楼主应该断了这个方式念头,sram要很多引脚,你没办法连接到你芯片。难道你与linux原来自带DDR存储共用地址数据吗?

redroof 发表于 2019-4-1 22:14:03

chun2495 发表于 2019-4-1 21:49
有没有这一块的例程?第一次玩这个有点无从下手。

在用户看来就是没有驱动。内存无需驱动。
如果非要说驱动,其实是由你cpu的外部总线控制器来驱动它。取决于你cpu的型号,或许你得正确的初始化总线控制器,按硬件设计师接的地址来初始化,比如设定用哪个片选,读写周期多少之类。不过一般来说你的bsp里面应该自带这些的。
这些做好后,它就是普通的物理内存而已,打开de/mem文件,用mmap映射一下就可以读写了

redroof 发表于 2019-4-1 22:16:22

NJ8888 发表于 2019-4-1 22:06
楼主应该断了这个方式念头,sram要很多引脚,你没办法连接到你芯片。难道你与linux原来自带DDR存储共用地址 ...

难道不是简单的挂在cpu的外总线上吗?有那么麻烦嘛。很多cpu的ddr内存接口是单独的,然后另有一个普通的外总线接口,随便你挂什么东西,比如外置网卡,外置usb控制器之类

chun2495 发表于 2019-4-2 18:28:19

NJ8888 发表于 2019-4-1 22:06
楼主应该断了这个方式念头,sram要很多引脚,你没办法连接到你芯片。难道你与linux原来自带DDR存储共用地址 ...

那如果用iic或者spi来通讯的话,是否可以满足需求(大概一次200000byte数据)

NJ8888 发表于 2019-4-2 18:46:33

chun2495 发表于 2019-4-2 18:28
那如果用iic或者spi来通讯的话,是否可以满足需求(大概一次200000byte数据) ...

spi快些,你一次需要多少时间传输完成?linux写spi访问如果用通常驱动方式,效率不高。要mmap写寄存器

redroof 发表于 2019-4-2 18:59:35

chun2495 发表于 2019-4-2 18:28
那如果用iic或者spi来通讯的话,是否可以满足需求(大概一次200000byte数据) ...

你先给岀你的arm的型号,看它有没有单独的外总线。用共享ram来跟fpga通迅当然是性能最好的,只是比较费引脚。。。。

boyiee 发表于 2019-4-2 19:20:59

很多项目都是arm和fpga配合,当做sram来操作,这样速度和难度都还可以,当成sram并不是接到ddr2接口上,像ti fsl这些芯片都有专门的外部总线接口,复用下就可以了,还可以用zynq这样的一体芯片,非常方便,刚用zynq做了个8轴控制器的项目,比分开的方便太多了,通讯带宽也非常高。

chun2495 发表于 2019-4-2 22:10:58

redroof 发表于 2019-4-2 18:59
你先给岀你的arm的型号,看它有没有单独的外总线。用共享ram来跟fpga通迅当然是性能最好的,只是比较费引 ...

itop-4412这块板子 三星的exynos4412

chun2495 发表于 2019-4-2 22:11:49

NJ8888 发表于 2019-4-2 18:46
spi快些,你一次需要多少时间传输完成?linux写spi访问如果用通常驱动方式,效率不高。要mmap写寄存器 ...

实时图像 500*400 ,大概每秒10帧吧

chun2495 发表于 2019-4-2 22:13:59

boyiee 发表于 2019-4-2 19:20
很多项目都是arm和fpga配合,当做sram来操作,这样速度和难度都还可以,当成sram并不是接到ddr2接口上,像t ...

我这个主要是跑界面,上安卓的,问过他们,说目前不能跑安卓。

chun2495 发表于 2019-4-2 22:17:44

boyiee 发表于 2019-4-2 19:20
很多项目都是arm和fpga配合,当做sram来操作,这样速度和难度都还可以,当成sram并不是接到ddr2接口上,像t ...

难道不是fpga—sram—linux这种硬件结构吗?

chun2495 发表于 2019-8-12 08:38:01

pbwy123123 发表于 2019-7-29 17:19
楼主这其实是FPGA驱动,数据流是SRAM->FPGA->ARM LINUX, FPGA是挂在arm的总线接口的,需要初始化总线接口及 ...

是这个思路,现在项目选用IMX6Q+FPGA方案。
IMX6Q通过EIM总线进行读写FPGA操作。
FPGA分析EIM时序,对SRAM进行读写,完成通讯。

浮华一生 发表于 2019-8-12 08:47:17

chun2495 发表于 2019-8-12 08:38
是这个思路,现在项目选用IMX6Q+FPGA方案。
IMX6Q通过EIM总线进行读写FPGA操作。
FPGA分析EIM时序,对SRA ...

你们还没做完啊

chun2495 发表于 2019-8-12 10:42:53

浮华一生 发表于 2019-8-12 08:47
你们还没做完啊

已经完了
页: [1]
查看完整版本: 请教一下嵌入式Linux下SRAM驱动的开发