最小的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的看门狗默认是打开的,且调试模式下会自动关闭,如果忘了关闭,在运行时忘了喂的话就会不时地被咬上一口。
还要记得关闭中断,因为这段代码不知道怎么处理中断,所以就统统关闭,你可以在接下来的代码中自行处理。
- 最小的mini2440初始化代码(二)
- 最小的mini2440初始化代码(三)
- 最小的mini2440初始化代码(四)
- 最小的mini2440初始化代码
- 基于mini2440的Linux音频驱动完全解读(二)——ASoc层的初始化(1)
- Mini2440启动代码的编写(裸奔)
- Mini2440启动代码的编写(裸奔)
- mini2440 led驱动代码(原创)基于iomap<测试初始化没有问题,其它功能待开发>
- u-boot-2009.11移植(适用于TQ2440和MINI2440)第三篇:修改初始化代码
- 移植u-boot到mini2440--初始化代码分析
- FriendlyARM-mini2440-X86-qtopia的编程步骤(二)
- 基于mini2440的按键中断控制LED(裸机代码)
- 基于mini2440简单计算器的实现(裸机代码)
- MINI2440 console 初始化
- mini2440的u-boot-2010.03移植 《二》
- 基于mini2440 的 bootloader 设计 ---- 4、CPU核心初始化
- 基于mini2440 的 bootloader 设计 ---- 5、内存初始化
- 基于mini2440 的 bootloader 设计 ---- 8、NandFlash 初始化
- 完美解决IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别
- 梦
- 转:EVC4.0到VS2005所遇到的问题!
- Hello,
- 快刀斩乱麻,南海我们不能再等了
- 最小的mini2440初始化代码(二)
- 一个指针的问题
- 大家好
- 四叉树索引
- 你的效果有了吗
- 超线程 双核 双路三者的区别
- MD5加密
- 六步使用ICallbackEventHandler实现无刷新回调
- glTexImage2D()和gluBuild2DMipmaps()