我还是学习DSP吧2812吧
时间:10-02
整理:3721RD
点击:
今天刚解决一个问题,想着我有将近一两个月都没有玩游戏,本来想玩一把DOTA的,谁知道我游戏刚玩到10分钟,出了一把跳刀准备带节奏的时候,宿舍停电了,宿舍本来是一万年都不会停电的,一看我上了游戏,立马就发生了这种万分之一的事情,看样子老天是不想让我玩游戏啊,得了吧,那我还是乖乖的拿出开发板吧。
步入正题,今天发现一个问题关于中断处理函数的,
在编写DSP程序的时候(自己建的工程),使用自定义的中断处理函数的函数指针给PieVectTable中的相应中断赋值时,编译完程序后,跑起来发现能顺利进入中断处理函数;但是,使用默认的中断向量表中的中断处理函数的函数指针给PieVectTable中的相应中断赋值时,进不去中断,而且程序跑飞了,按停止,CCS处于死机状态,过了一段时间才好,而且弹出汇编执行框,为何进不去中断呢?
原来是使用的.lib文件不对,由于是自己建立的工程,而且是新手,没有考虑到。原来rst2800.lib和rst2800_ml.lib有很大不同,关键是第三点:
1,rst2800_ml.lib支持c/c++大内存模式运行库,而rst2800.lib不支持
2,rst2800_ml.lib有大量的浮点运算的处理函数,而rst2800.lib没有
3,rst2800.lib使用near指针访问内存,不能访问到0x3F0000以后的地址,而rst2800_ml.lib可以;而PieVectTable是由VMAP决定的,当VMAP = 0时为0x000000,VMAP = 1时其地址为0x3FFFC0,所以若是程序使用rst2800.lib的话DSP是访问不到中断向量表的,所以出错在这里。
步入正题,今天发现一个问题关于中断处理函数的,
在编写DSP程序的时候(自己建的工程),使用自定义的中断处理函数的函数指针给PieVectTable中的相应中断赋值时,编译完程序后,跑起来发现能顺利进入中断处理函数;但是,使用默认的中断向量表中的中断处理函数的函数指针给PieVectTable中的相应中断赋值时,进不去中断,而且程序跑飞了,按停止,CCS处于死机状态,过了一段时间才好,而且弹出汇编执行框,为何进不去中断呢?
原来是使用的.lib文件不对,由于是自己建立的工程,而且是新手,没有考虑到。原来rst2800.lib和rst2800_ml.lib有很大不同,关键是第三点:
1,rst2800_ml.lib支持c/c++大内存模式运行库,而rst2800.lib不支持
2,rst2800_ml.lib有大量的浮点运算的处理函数,而rst2800.lib没有
3,rst2800.lib使用near指针访问内存,不能访问到0x3F0000以后的地址,而rst2800_ml.lib可以;而PieVectTable是由VMAP决定的,当VMAP = 0时为0x000000,VMAP = 1时其地址为0x3FFFC0,所以若是程序使用rst2800.lib的话DSP是访问不到中断向量表的,所以出错在这里。
然而都没学过
支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。支持加油。
哈哈哈,我也是新手
加油,我会继续努力学习DSP的