完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题:
在DSP触发中断SYSCFG_CHIPINT0(28)一次,ARM能收到两次。 有用过的指点一下 附相关代码: /******************************************* * DSP 代码 main.c *******************************************/ struct mdsp_info g_ctx; #pragma DATA_SECtiON(g_ctx,"mem_stru") void ARM_Interrupt() [ L138_SYSTEM->CHIPSIG|=0x0000001; ] void udelay(int n) [ int f=456*1000; while(n>0)[ n--; while(f>0) [ f--; __asm("NOP"); ] ] ] void main() [ struct mdsp_info *info=(struct mdsp_info *)&g_ctx; L138_init();// pinmux etc... for(;;) [ ARM_Interrupt(); udelay(4*1000); info->resvd1[6]++; ] ] ////////////////////////////////////////// // cmd 文件 ////////////////////////////////////////// SECTIONS [ boot > BOOT_MEM [ -l bios.a674 ] mem_stru [] >0x80000000 ] /****************************************** * ARM Linux驱动代码 ******************************************/ struct mdsp_info* p_mdsp=NULL; #define CHIPSIG *(volatile unsigned int*)DA8XX_SYSCFG0_VIRT(0x174) static int mdsp_open(struct inode *inode, struct file *filp) [ return 0; ] static int mdsp_release(struct inode *inode, struct file *filp) [ return 0; ] static ssize_t mdsp_read(struct file* file, char __user *buf, size_t size, loff_t *off) [ return 0; ] static ssize_t mdsp_write(struct file* file, char __user *buf, size_t size, loff_t *off) [ return 0; ] static long mdsp_ioctl (struct file * filp, unsigned int cmd, unsigned long arg) [ struct mdsp_info *info = (struct mdsp_info *)p_mdsp; void __user *argp = (void __user *)arg; printk("dsp_int=%d arm_int=%dn", info->resvd1[6], info->resvd1[8]); return 0; ] static const struct file_operations mdsp_fops = [ .owner = THIS_MODULE, .read = mdsp_read, .write = mdsp_write, .open = mdsp_open, .release = mdsp_release, .unlocked_ioctl = mdsp_ioctl, ]; static struct miscdevice mdsp_dev = [ MISC_DYNAMIC_MINOR, "mdsp", &mdsp_fops ]; static irqreturn_t dsp_data_isr(int irq, void* ctx) [ struct mdsp_info *info=(struct mdsp_info *)ctx; (CHIPSIG_CLR) |=0x1; info->resvd1[8]++; return IRQ_HANDLED; ] static int __init mdsp_init(void) [ p_mdsp = (struct mdsp_info*)ioremap_nocache((dma_addr_t)0x80000000, 0x20000); memset((void*)p_mdsp, 0, sizeof(struct mdsp_info)); request_irq(28, dsp_data_isr, IRQF_TRIGGER_RISING|IRQF_DISABLED, "mdsp", (void*)p_mdsp); misc_register(&mdsp_dev); return 0; ] static int __exit mdsp_exit(void) [ free_irq(28, (void*)p_mdsp); misc_deregister(&mdsp_dev); if (p_mdsp) [ iounmap(p_mdsp); p_mdsp = NULL; ] ] module_init(mdsp_init); module_exit(mdsp_exit); |
|
相关推荐
1 个讨论
|
|
请参考勘误表http://www.ti.com/lit/pdf/sprz301
Advisory 2.3.5 A Single CHIPINTn Interrupt Event Will Register Multiple Times in the DSP Event Combiner Module (ECM) http://processors.wiki.ti.com/index.php/Main_Page Think Over Before Asking. http://www.catb.org/~esr/faqs/smart-questions.html#goal |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
392 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
712 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
619 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1082 浏览 1 评论
780 浏览 0 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
189浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
153浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
22浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
138浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
132浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 12:22 , Processed in 0.902525 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号