|
好久没有写日志了,最近一直忙着改个程序,把原先使用的S3C44B0X改成AT91SAM7X256,省去了外扩的FLASH和SRAM,节省了空间,增加了产品的可靠性。由于第一次使用这个芯片,走了许多弯路,这里把能想起来的给大家汇报一下,希望大家能少走我走过的弯路。
1、设置主机频率的时候一定不要忘了设置FLASH模式寄存器的FMCN(MC_FMR的FMCN),即FLASH每微秒周期数,一定要设置对,一开始没有注意到,以为只会影响FLASH的读写,谁知造成SRAM的读写不对,一开始只是看到显示上面有些点不对,以为线上的干扰,搞了很久一直找不到原因,程序也是莫名其妙的死机,后来确定是SRAM读写有误。把该项设置为主时钟(MASTER CLK)的百万分之一,也就是1US有多少个时钟。
2、几个时钟一定要搞清楚,MAIN CLK是晶振的时钟,它经过分频再倍频获得PLL时钟,这个时钟可以从80M-200M,再分频获得MASTER CLK ,即cpu的工作时钟。PCLK还是很不错的,可以使用PLL时钟,所以可以输出较高的频率用于外围设备,我这次就是用了100M用于采样脉冲。
3、中断比较麻烦一点就是老是要写中断完成位,不适应。
4、程序运行时写自身FLASH其实没什么复杂的,我用的开发环境是MDK,把该段程序所在的文件设置成IRAM运行就行了。在工程管理窗口,右击该文件名,点最上面一个选项,就打开一个设置窗口,在里面设置就行了。
5、因为程序内嵌操作系统,所以比较大,只能在FLASH中运行,无法仿真,所以调起来特别费劲,有时一个问题好几天都解决不了,这时最好缓缓,干点别的,然后再回来也许就有思路了。前一段发现程序运行OSQSEND就容易死机,进去还行,就死到里面了,搞了差不多有一周,就是搞不出来,后来都准备放弃了,用别的方法代替它,但是又会出其他问题,没办法先干别的活了,等了大概一周回来,结果却在半天时间解决问题,原来是中断程序出了点问题。
6、感触倒是挺多的,有时间的话还是要写写日志,把经验和教训分享一下。