Chinaunix首页 | 论坛 | 博客
  • 博客访问: 264957
  • 博文数量: 25
  • 博客积分: 329
  • 博客等级: 一等列兵
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-24 09:43
文章分类

全部博文(25)

文章存档

2014年(4)

2013年(12)

2012年(9)

分类: LINUX

2012-08-24 09:50:59

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

由于s3c2440支持两种启动方式nor启动、nand启动,当以nor启动的时候,CPU看到的0地址是在nor flash上,CPU可以直接从nor flash上取指令执行。以nand启动,在启动的时候,在硬件上CPU会将nand flash上的前4k的代码复制到s3c2440内部的片内内存中,但是为了以后的更多的代码能正常运行,那么在这4k的代码中就应该完成以下几项工作:

1.为C语言运行创造条件,故设置栈SP的值。

2.在刚启动芯片的时候,看门狗默认是开着的,但是在裸板程序中我们不需要看门狗,所以应该关掉看门狗,如果不关每隔3s就会使系统复位,自动跳到零地址去运行,你的程序无法正常工作。

3.初始化时钟(对于裸机代码可以不用设置,初始化时钟就是使CPU的运行速度加快,对于裸板代码程序,代码本来就很少,设置与否没有太大关系)。

4.为了让大于4k的代码能正常运行,故应该初始化SDRAM。因为mini2440外接的内存是SDRAM,在使用前必须初始化,即设置内存控制器。

5.重定位:将nand flash中的其他代码复制到SDRAM中,并将PC指针指向SDRAM,跳到SDRAM中去执行(在链接脚本中设置的地址一般为0x30000000,但是刚开始时的代码在0地址处运行,为了程序还能正常运行,故应该使用位置无关码去写代码,就是不要使用全局变量和静态变量,进一步确定该代码是否为位置无关码,可以分析反汇编)。

阅读(1783) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:字符设备驱动

给主人留下些什么吧!~~