s3c2440 mmu 裸机程序

来源:互联网 发布:书店管理系统数据库 编辑:程序博客网 时间:2024/05/19 06:48

程序用的韦东山的第七章的示例代码。这里总结下问题:

  1. 韦东山的代码写的挺好的。注释比较多,结合芯片手册以及920T内核手册页很容易看懂。
  2. 我用的JLINK直接在内存里调试裸机程序。因此不需要使用H-JTAG烧写nandflash,程序直接下载到内部ram里面运行。编译好的mmu.bin大小为3KB,内部ram为4KB。
  3. FL2440的几个led灯对应于GPB5,6,8,10.因此改了下leds.c的一些代码。如下:
  4. 在测试的时候遇到一个问题,那就是led不是按照我所预想的4个灯以i的值进行闪烁。而是常亮。

           经过仔细对比前面章节的led实验,以及代码。发现:

          

           其中可以看出,对*.c 进行O2优化,因此在leds.c中wait函数中dly变量可能被优化。

           将static inline void wait(unsigned long dly) 改为 static inline void wait(volatileunsigned long dly),防止编译进行优化操作。

           这篇文章对编译器优化原因以及volatile关键字用法做了详细说明http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.html

           或者我们将Makefile中的优化选项去除,同样能达到效果。有兴趣的同学可以试试。

           arm-linux-gcc -Wall -c -o $@ $<

原创粉丝点击