OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3683|回复: 5

阿尔法IMX6ULL 如何使用SPI DMA?(传输大文件)

[复制链接]

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
发表于 2022-4-20 17:28:20 | 显示全部楼层 |阅读模式
5金钱
如题:
目前想使用IMX6ULL的spi 传输大的文件数据。使用espi3。
默认使用的是内核中spidev.c中的数据。主要应用就是

1、初始化
int main(int argc, char *argv[])
{
    int ret = 0;
    int fd;

    parse_opts(argc, argv);

    if (input_tx && input_file)
        pabort("only one of -p and --input may be selected");

    fd = open(device, O_RDWR);
    if (fd < 0)
        pabort("can't open device");

    /*
     * spi mode
     */
    ret = ioctl(fd, SPI_IOC_WR_MODE32, &mode);
    if (ret == -1)
        pabort("can't set spi mode");

    ret = ioctl(fd, SPI_IOC_RD_MODE32, &mode);
    if (ret == -1)
        pabort("can't get spi mode");


2、收发回环传输
static void transfer(int fd, uint8_t const *tx, uint8_t const *rx, size_t len)
{
    int ret;
    int out_fd;
    struct spi_ioc_transfer tr = {
        .tx_buf = (unsigned long)tx,
        .rx_buf = (unsigned long)rx,
        .len = len,
        .delay_usecs = delay,
        .speed_hz = speed,
        .bits_per_word = bits,
    };
。。。
。。。
。。。
}



这个虽然能收发,但是相当的慢,配置20M spi时钟,收发30M的文件、数组。耗时30多秒,这个也太慢了。。。。
而且一次最大只能发送4096字节

所以想考虑 有没有能用linux 的spi dma收发



求教





















正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2022-4-21 08:56:10 | 显示全部楼层
回复

使用道具 举报

2

主题

446

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4137
金钱
4137
注册时间
2018-5-14
在线时间
903 小时
发表于 2022-4-21 09:00:22 | 显示全部楼层
DMA并不能解决速度问题吧,只是把同步操作变成了异步操作。
回复

使用道具 举报

0

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2552
金钱
2552
注册时间
2019-12-5
在线时间
352 小时
发表于 2022-4-21 10:40:48 | 显示全部楼层
本帖最后由 watsonxia 于 2022-4-21 10:47 编辑

可以将SPI 的时钟配置成100M 以上呀
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2022-4-21 17:51:39 | 显示全部楼层
我在内核中添加打印信息,调用了万能驱动spidev,测试过程显示调用了dma。相当于解决了
回复

使用道具 举报

11

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2018-3-26
在线时间
107 小时
 楼主| 发表于 2022-4-22 09:11:43 | 显示全部楼层
watsonxia 发表于 2022-4-21 10:40
可以将SPI 的时钟配置成100M 以上呀

SPI的时钟最大不是60Mhz吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表