arm9_NANDFlash
其实nand flash和nor flash的区别已经没什么好说的了,这里单说在arm9里的启动方式:由于nor有自己独立的地址线和数据线,可以直接运行程序;但nand地址数据公用,启动时cpu只会拿前4KB数据去sram运行,所以对于大于4KB的程序,就要考虑如何完整的实现程序了?即将4KB之后的程序通过在前4KB中复制到sdram中继续运行;项目中用过一款芯片cypres usb3014,虽是arm9的核,他的sram有512kb,而且用的是封装过的thread x实时操作系统,一般512kb足够,外接一个spi_flash就可以了;话题转回来!看下面代码: .s . text . global _start _start : ldr sp , = 4096 @设置堆栈 bl disable_watch_dog @关 WATCH DOG bl memsetup @初始化 SDRAM bl nand_init @初始化 NAND Flash @将 NAND Flash 中地址 4096 开始的 1024 字节代码( main . c 编译得到)复制到 SDRAM 中 @nand_read_ll 函数需要 3 个参数: ldr r0 , = 0x30000000 @ 1. 目标地址= 0x30000000 ,这是 SDRAM 的起始地址 mov r1 , #4096 @2. 源地址