我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 900|回复: 0

基于OMAPL138的linux平台8250快速串口实现--UART+EDMA

[复制链接]

该用户从未签到

2

主题

1

回帖

0

积分

一级逆天

积分
0

终身成就奖

QQ
发表于 2018-6-21 18:36:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本文源码基于dvsdk_omapl138-evm_04_03_00_06_setuplinux程序包里的linux3.3.0版本的内核。实现EDMA支持UART功能主要修改dma和8250的源码。

  首先为OMAPL138的arm和DSP分配dma通道资源,此处理器有三个UART,UART1占用EDMA0cc0的channel8(RX)、channel9(TX)通道以及slot8(RX)和slot9(TX);

UART2占用EDMA0cc0的channel12(RX)、channel13(TX)通道以及slot12(RX)和slot13(TX);UART2占用EDMA0cc0的channel30(RX)、channel31(TX)通道以及slot30(RX)和slot31(TX)。我的板子其余的EDMA资源全部分给DSP。因此可以设置dma的通道资源分配结构体为:

static const s16 da850_dma0_rsv_chans[][2] = {

/* (offset, number) */

       { 0, 32},//表示所有的endm0cc0通道都已经使用,其中通道8、9、12、13、30、31是后边8250中通过直接获取通道时使用。

{-1, -1}

};



static const s16 da850_dma0_rsv_slots[][2] = {

/* (offset, number) */

{0,   8},//表示slot0~slot7分配给DSP,如何实现在下边分析

{10,  2},//表示slot10、slot11分配给DSP

{14, 16},//表示slot14~slot30分配给DSP

{32, 96},//剩余的slot全部分给DSP

{-1, -1}//此结构体表示slot8、9、12、13、30、31预留给arm

};



static const s16 da850_dma1_rsv_chans[][2] = {

/* (offset, number) */

{0 , 32},//endm1cc0的32个通道全留给DSP

{-1, -1}

};



static const s16 da850_dma1_rsv_slots[][2] = {

/* (offset, number) */

{0 ,128},//endm1cc0所有的slot全部留给DSP

{-1, -1}

};

现在分析如何实现通道的分配:




出自
https://blog.csdn.net/a6228/article/details/77949346
回复

使用道具 举报

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

本版积分规则

每日签到,有金币领取。


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表