谁知道怎么用linux-kernel/arch/arm/mach-GM下的ahb_dma.c这段代码的,再送100分

guan323333 2010-09-16 02:50:49
RT,做DMA传输,平台是GM8180的,搞了很久都没头绪,试着照ahb_dma.c里的usage去调用,结果还是不成功:

int error = 0;
int size = 128;
char src[128] = {"aaaaaaaaaaaaaccccc"};
char dst[128] = {"bbbbbbbbbbbbbbb"};
char * p1 = (char*)kmalloc(size,GFP_KERNEL);
char * p2 = (char*)kmalloc(size,GFP_KERNEL);
memcpy(p1,src,strlen(src));
memcpy(p2,dst,strlen(dst));
printk("p1=%p:%s %ul\n",p1,p1,virt_to_phys(p1));
printk("p2=%p:%s %ul\n",p2,p2,virt_to_phys(p2));

int ret=0;
printk("11111111111111\n");
ret=fa_request_ahb_dma_ch(0, "test", NULL,NULL, ch, 1) ;
ret=fa_ahb_dma_init(ch,0);
if(ret!=0)
{
printk("11111 error\n");
}
printk("222222222222222222\n");
fa_set_ahb_dma_src_params(ch, virt_to_phys(p1), AHBDMA_MASTER_0, 2,0);
printk("333333333333333333\n");
fa_set_ahb_dma_dst_params(ch, virt_to_phys(p2), AHBDMA_MASTER_0,2,0);
printk("4444444444444444444444\n");
fa_set_ahb_dma_cfg_params(ch, 0, 0, 0, 0);
fa_set_ahb_dma_transfer_params2( ch, AHBDMA_MASTER_0, 32, 0);
printk("55555555555555555555\n");
fa_ahb_dma_add_auto(ch, 32);
fa_ahb_dma_start( ch);
printk("6666666666666666666666666\n");
printk("src=%s dst=%s\n",virt_to_phys(p1),virt_to_phys(p2));
// u_delay(100000);
fa_ahb_dma_clear_int(ch);
fa_ahb_dma_stop(ch);
fa_free_ahb_dma(ch);
kfree(p1);
kfree(p2);


有哪位大哥知道怎么用的,再送100分哦
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
guan323333 2010-09-18
  • 打赏
  • 举报
回复
顶顶顶 谁来说说看啊
erikyo 2010-09-17
  • 打赏
  • 举报
回复
同问,这个问题纠结了很久了。。。。。。期待大侠的指导!

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧