最小的mini2440初始化代码(二)

来源:互联网 发布:arm9 linux qt 编辑:程序博客网 时间:2024/04/29 23:50

从单片机开发到嵌入式开发,有很多相通的地方,也有一些区别。就说这BootLoader吧,做单片机的时候没这个概念,单片机里的BootLoader主要是用于代码升级,而嵌入式的主要是用来做初始化工作的。

 

首先得了解启动的流程,再谈初始化的事情。mini2440开发板用的是S3C2440芯片,该芯片支持NOR和NAND启动模式,所以开发板有一个开关用于切换这两种启动模式。NOR启动和NADN启动有一些不同的地方,因为NOR具有字节访问能力,可以直接映射到地址0x0000_0000,在Reset后就会执行NOR上的代码。NAND只有页访问能力,无法映射到地址空间,所以当选择NAND启动是,S3C2440会把NAND最前的4K数据读到片内SRAM,再执行指令,片内SRAM映射的地址空间是0x0000_0000。

 

如果不执行BootLoader又如何?做单片机的时候,一般不需要扩展代码存储器,Flash和RAM都是在片内的,芯片已经配置好了。我用的是ADS1.2+JLink7,可以直接把代码加载到RAM并跳到代码入口点执行。如果不执行BootLoader,也就是说开发板没有初始化,此时的RAM不一定是可用的。加载后发现,RAM中的数据是乱七八糟。

 

写这段初始化代码的目的也是解决这个问题,在读了开发板所带的源码,从中裁剪了一小部分,主要是配置存储器。
还要记得关闭看门狗,因为S3C2440的看门狗默认是打开的,且调试模式下会自动关闭,如果忘了关闭,在运行时忘了喂的话就会不时地被咬上一口。
还要记得关闭中断,因为这段代码不知道怎么处理中断,所以就统统关闭,你可以在接下来的代码中自行处理。

原创粉丝点击