原创 TQ2440学习笔记-裸奔程序流水灯

2011-8-9 17:34 1562 6 6 分类: MCU/ 嵌入式

  了解了S3C2440启动过程后,开始写第一个裸奔程序。直接修改TQ2440-TEST项目里的main.c文件。把main()函数的主循环改为

while(1)

       {

              rGPBDAT&=0x7df; //点亮LED1

              delay(500000);

              rGPBDAT&=0x7bf; //点亮LED2

              delay(500000);

              rGPBDAT&=0x77f;//点亮LED3

              delay(50000);

              rGPBDAT&=0x6ff;//点亮LED4

              delay(500000);

              rGPBDAT|=0x1e0;//全灭

              delay(500000);

       }          

实现流水灯的效果。

       这个程序很简单,做这个实验的目的是学会用HJTAG烧录程序进NOR FLASH。对初学者来说,看到自己写的程序在开发板上运行时一件有成就感的事。

 

       开发板设置成NOR FLASH启动,ADS中把RO BASE设置成0X30000000,用AXD仿真,可以看到流水灯效果,如果把RO BASE设置成0ENTRY POINT设置成0AXD仿真也可以看到流失灯效果,但是AXD仿真应该没有把程序烧录进NOR FLASH,关掉AXD后重新上电,仍然运行NOR FLASH中以前烧录的程序。强调这一点对ARM熟手来说是比较可笑,我开始用AXD仿真时,一直不确定AXF映像文件是否被下载进了开发板中。现在可以确定没有,要下载必须通过烧录的方式。

 

AXD仿真调试后,用HFLASHBIN文件烧录进NOR FLASHHFC文件选开发板光盘中带的h-flash.hfc,这个配置文件设置了DISMMU,如果按照TQ2440开发板使用说明那样设置,会提示FLASH芯片型号选择错误,不能烧录。RO BASE设置成0X300000000生成的BIN文件都可以烧录运行,设置成0X30000000时,应该是先从NOR FLASH启动,然后把程序拷贝进SDRAM运行。设置成0时应该是直接在NOR FLASH里运行。

 

实际测试发现AXD仿真时的delay(500000)延时时间比烧录进NOR FLASH后的延时时间短。AXD仿真时灯闪的很快,程序烧录进NOR FLASH运行时,灯闪的慢。RO BASE设置成0X30000000时,程序烧录进NOR FLASH运行时流水灯闪烁比RO BASE设置成0时快。

 

       接下来我打算弄清楚RO BASE设置成0X300000000时,变量,常量,代码到底是如何存储的。我觉得这才是关键。

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条