nor与nand

韦东山判断nor,nand启动时:
volatile unsigned int *pZeroAddr = (volatitle usnigned int)0;
int iValOfZeroAddr = *pZeroAddr; //nor flash可以像内存一样去读取。
pZeroAddr = 0x123456; //但是不能像内存这样去写
if(
pZeroAddr!=0x123456)
{
//当前程序是在ram中运行着,也就是nand启动后,然后加载4k到的片内ram,所以是nand启动。
}
else
{
//当前程序还在nor中运行着
}

总结:
能够直接以下面这种方式读写内存的必然是ram

volatile unsigned int *pZeroAddr = (volatitle usnigned int)0;
int iValOfZeroAddr = *pZeroAddr; //可能是nor,可能是ram
*pZeroAddr = 0x123456; //必然是ram,若果是nor的话需要对照手册,有具体的时许,逻辑才能进行写入操作

2、为什么汇编转到c时要设置栈。
因为c又变量的定义,都是存在内存的栈区的,函数跳转等实现都离不开栈,不像汇编直接操作r0-rx这样的寄存器,
不存在栈的概念。

3、内存中栈向下增长,也就是低地址增长?

4、编写裸板程序时,能够可以直接烧写到2440内部中,不需要其它所谓的nor nand?
答:不行,因为2440没有片内rom。

2440自带的RAM是:
16K Instruction cache(icache) + 16K data cache + 4K Boot Internal SRAM(dcache)
但是我们能用到的只有4K Boot Internal SRAM。2440不自带ROM

5、烧写到nand时的裸板程序会将其前4k加载到片内ram,那nor启动的裸板呢,是把程序加载到片内ram还是片外的sdram?
答:由你代码实现决定,若加载到片内ram,要注意是否足够你裸板程序的运行,因为只有4k
//norflash是否可以脱离内存,直接运行程序?答:不行
https://www.cnblogs.com/amanlikethis/p/3332491.html

https://blog.csdn.net/d_a_r_k/article/details/50968016

原文地址:https://www.cnblogs.com/retry/p/11611742.html