arm 2440编译空间安排
可能性判断1:编译生成的main.o没有被完全从nandflash中copy到sdram中运行。
分析head.s文件,也即硬件初始化过程,nandflash的4k由硬件自动从nandflash拷贝到sram中,然后有一个拷贝4k的sram到sdram中,但是nandflash中4k以后的就没人管了哦!!!因此需要一个函数copy nandflash的4k以后的代码到sdram中。
解决办法1: 将nandflash初始化函数和nandflash读函数都固化进init.c中,调试。搞定
主要head.s 代码如下,其他代码可以根据调试信息增添即可难度降低:
@******************************************************************************
@ File: head.S
@ 功能: 设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行
@******************************************************************************
.extern
.text
.global _start
_start:
@******************************************************************************
@ 中断向量,本程序中,除Reset和HandleIRQ外,其它异常都没有使用
@******************************************************************************
@ 0x04: 未定义指令中止模式的向量地址
HandleUndef:
@ 0x08: 管理模式的向量地址,通过SWI指令进入此模式
HandleSWI:
@ 0x0c: 指令预取终止导致的异常的向量地址
HandlePrefetchAbort:
@ 0x10: 数据访问终止导致的异常的向量地址
HandleDataAbort:
@ 0x14: 保留
HandleNotUsed:
@ 0x18: 中断模式的向量地址
@ 0x1c: 快中断模式的向量地址
HandleFIQ:
Reset:
ret_initirq:
halt_loop:
HandleIRQ:
int_return:
arm2440编译空 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)