平台: xp系统,ARM mini2440
程序名:按键中断控制led灯主要学习内容,S3C2440外部中断
遇到问题
1. 超级终端下载程序时按下d后又跳回到下载界面,没有等待我下载程序、解决办法:这应该是自己的大意,按下d的时候把键盘上大写控制锁住了,超级终端只能输入小写命令,注意细节。
2. 酓ummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf。下载程序后超级终端显示这句话,网上找了很久没找到很好的解决办法,不过看到有人说好像是MMU没有初始化。解决办法,初始化MMU,调用一个MMU_Init()函数就好了,这个函数的定义在MMU.c中,开始我没有添加MMU.c文件编译链接是总是报错。
写在后面,源程序就不贴了,还有很多要改进的,刚刚开始,只是一个雏形而已,嘿嘿,不过解决问题后也挺开心的,记录过程,恩,肚子饿了,吃饭去了。
2011-04-02
今天再次进行串口通信的时候又遇到同样的问题,反复看了这篇以前写过的文章后还是没有得到解决,但我肯定出现酓ummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf这种错误肯定是因为MMU没有初始化,所以我就先初始化MMU然后再进行其他的初始化,问题果然得到解决。重点,先初始化MMU然后再进行其他的初始化设置。
补充:网上搜到的。
使用suppervivi的n功能选项下载到NANDFLASH中可运行原因如下(以下都是从网上找的):
一般情况下,在ARM9调试程序都是下载到RAM中执行的,当然,只要没有中断产生程序看似能够正常执行,
但是一旦中断发生,程序必然会跑飞,原因在于程序中断后,PC默认指向0x00-0x1C处,但是RAM的起始地址是0x30000000,中断向量表默认在0x30000018处,很明显,中断服务程序是不能够正常执行的,
同时ARM内核会通过串口打印"Dummy_isr error........"信息。解决办法:
(1)直接烧写到nand第0块(如果代码大于4K,启动代码中必须要有拷贝到SDRAM功能)
(2)改写自己的程序,在初始化中断之前将中断向量表拷贝到内部SRAM.
(3)利用MMU的重定向功能