ARM·Nand Flash的控制
个人觉得这章内容过于复杂,只需要记住如果nand中4096的程序想要被拷贝出来执行,就把这个代码写进去,红色部分是真正的代码,可以复制过去,直接使用,其他就不做了解了。听了一个小时,这个老师讲的也挺乱的,也没有人能记住这么多东西吧。。。
代码详解,这里先把一部分代码存放在NAND Flash 地址4096之后,当程序启动后通过NAND Flash控制器将他们读出来、执行。
注意:以前的代码都小于4096,开发板启动后他们被自动复制进“Steppingstone”;
SECTIONS {
}
对于这里,我是这样理解的 。head.o init.o nand.o都放在Nand flash0地址处,0x0000 0000是他的链接地址,也就是放在0x0000 0000处运行;mian.o存放在Nand flash 4096地址处,0x3000 0000是他的链接地址,也就是放在0x3000 0000处运行
(可能也就是前一阵子看到的链接地址和加载地址的区别)
当开发板启动时,前4k的代码被考进SRAM,所以我们需要在SRAM内完成初始化和跳转
SECTIONS {
} @******************************************************************************
@ File:head.s
@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行
@******************************************************************************
.text
.global _start
_start:
halt_loop:
*对于这一串代码,很多都是前面学过的知识,这里我们只关注配置Nand的红色代码
bl
*目标地址,源地址,目标长度
这里我们可以跳转到nand_read中可以看一下
void nand_read(unsigned char *buf, unsigned long start_addr, int size)
{
#ifdef LARGER_NAND_PAGE
#else
#endif
#ifdef LARGER_NAND_PAGE
#endif
#ifdef LARGER_NAND_PAGE
#else
#endif
#define LARGER_NAND_PAGE
#define GSTATUS1
#define BUSY
#define NAND_SECTOR_SIZE
#define NAND_BLOCK_MASK
#define NAND_SECTOR_SIZE_LP
#define NAND_BLOCK_MASK_LP
typedef unsi
ARMNandFlas 相关文章:
- arm nandflash&norflash启动原理(11-21)
- ARM 开发板 NAND FLASH空间不足解决方法(11-20)
- ARM NAND FLASH读写错误解决办法(11-11)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)