2440-触摸屏失败感悟

昨天下午开始搞2440触摸屏,直到现在,以失败结束。。。期间碰到许许多多问题,也算一种别样的收获吧,现在做一下总结。

(参考文件夹:touch_test,文档:Keil ARM RVMDK软件仿真及SDRAM中调试S3C2410程序.doc)

1、  超级终端显示:Dummy_isr  error, interrupt number: 0. INTMSK=0x7fffffff

   

  参考网上的解决方法是(实验未成功):

  #include "mmu.h" 把
  mmu.c和mmu.h加到工程中,接着在主函数中调用MMU_Init();初始化MMU,好像就解决了。

  仿真的时候,你的程序是运行在sdram里面的,也就是0x3000_0000处开始运行
  你的中断向量表通过仿真器已经放在了0x3000_0000处。

  打开mmu是为了把0x3000_0000地址处的值映射到0x0的地方,因为你的中断向量表是保存在0x0开始的地方,当中断发生时的第一时间,CPU会去0x0地方查中断向量表看是发生了什么中断,是reset还是IRQ还是FIQ还是取数据终止或取指令终止按键外部中断是IRQ中断,然后CPU会去IRQ开始的地方找到你的中断服务函数,这个时候轮到了你的中断服务函数运行的时间了,所以你不打开MMU就不会进入中断服务函数


  还有一种方法就是烧写一个简单的小程序到nandflash的block 0,这个小程序要包含中断向量表
  当你上电的时候block 0的东西被CPU复制到了叫作stepping stone的地方,他的地址也是0
  这个时候你仿真你的程序,不打开mmu也是可以找到中断服务函数了,因为你有中断向量表了

2、  链接错误:.\obj\touch_test.axf: Error: L6218E: Undefined symbol ENTRY (referred from mmu.o).

   

  这个只要将定义__ENTRY的文件包含到MMU.c文件就行

   

3、  警告信息:warning: A1876W: Use of ‘|’ as a synonym for the :OR: operator is deprecated。

   

   

       解决方法:将警告敌法的“|”换成“:OR:”。这是因为MDK编译器里的汇编语法与RVDS中的语法有点区别,不过也是兼容的,所以只是给出一个警告。

      

4、  错误信息:error: A1023E: File “option.inc” could not be opened: No such file or directory

  

 

  解决方法:将“option.inc”放到2440init.s所在的文件夹里

5、  错误信息:Error: L6218E: Undefined symbol Image$$RW$$Limit 这样的错误,说没定义RW段。

  解决方法:因为.sct配置分散文件地址的错误,重新编写.sct加载文件即可

6、  错误信息:Error: L6238E: 2440init.o(Init) contains invalid call form ‘~PRES8(后面的省略)

  原因分析:uVision4的每个汇编指令是以8字节对齐的,所以每个汇编文件的首个段要表面是用8字节对齐的。

  解决方法,在2440init.s文件的Init段前面添加PRESERVE 8

   

7、  之前为什么下载不了u-boot到nand flash呢?今天成功了,原因是发现我的u-boot.bin文件有254kB而nand erase 0 30000只擦除192kB的nand flash扇区,所以我将30000该成60000,就成功了(说明文档里要注意细节)

   

8、  之前只能利用三个USB接口完成串口控制,USB下载的功能。今天在甫华指导下发现,拔掉J-Link时要拔掉的是开发板与J-Link的接线,而不是PC与J-Link的接线,如果拔掉的是PC与J-Link的接线,则ARM板会将J-Link当做负载使用,部分引脚电平则受到影响。

posted on 2013-03-16 19:25  suwen  阅读(924)  评论(0编辑  收藏  举报

导航