![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
江工
C/C 老码农
展开
-
NOR Flash 和 NAND Flans启动的说明
严格说NOR flash有自己的数据和地址总线,因此可以采用类似RAM的随机访问,因此是可以直接在它上面运行程序的,因此NOR flash是可以用来boot的。这种片上运行叫做execute in place即EIP。 NAND flash的采用了i/o方式读取,他只有8位的数据地址共用的总线,因此需要软件去控制读取时序,因此不能像NOR flash那样直接连到地址和数据总线上,即不能像内存那样访问,因此不能EIP,因此不能直接作为boot之用。 而像s3c241转载 2010-08-01 18:27:00 · 1047 阅读 · 0 评论 -
2440 地址空间的说明
<br /> 2440这是一款32位的cpu,照理说,它是可以寻址4G的地址空间的。但是,芯片引脚上,只给出了27根地址线。这27根引脚,是A0~A26。因此单靠芯片上的 27 根引脚,它只能控制 128M 的空间。那总共的 4G 空间,芯片引脚才用了128M,剩下的在哪里? <br /> 实际上,在cpu芯片手册上,查它的内部寄存器的地址,我们可以找到一部分答案。比如这次总结笔记要讲的存储器控制寄存器,13 个寄存器,每个寄存器的地址,都大于0X4000 0000的地址。而0x4000 0原创 2010-08-03 00:10:00 · 2556 阅读 · 1 评论 -
2440原理图地址线分析
(1) 地址线为什么从A2开始? 因为2440数据宽度为32位,按4字节对齐,即地址只会是0x...0,0x...4,0x..C,0x...E,每次地址增加都是四个字节,所以A0和A1没什么用。(2) SDRM BANK 选择输入BA0/BA1为什么连接的是A24,A25 因为系统内存容量为64M,32bit,由两片64M 16bit的SDRM组成。表示64M的空间需要26根线,所以地址最高两位为A25和A24。(3) 64M需要26根线,为什么实际只用到了A2~A14,A24,A25?原创 2010-08-03 00:46:00 · 2587 阅读 · 4 评论 -
存储器扩展连接理解(S3C2410为例)——SDRAM
<br />由于S3C2410是32位处理器(指令一次能够操作32位数据(运算器一次可以处理32位数据);通用寄存器多是32位寄存器;处理器内部数据通道也是32位的;处理器外部数据总线宽度通常是32位的,地址总线宽度只是代表CPU寻址范围大小,与CPU是多少位的无关,也即32位CPU的地址总线不一定是32根的,例如对于s3c2410,每一个Bank对应27根地址线,寻址能力为128MB,全部8个Bank总的寻址能力为1GB),所以为了最大限度的发挥其性能,内存最好也是32位(指数据宽度)原创 2010-08-02 17:54:00 · 1682 阅读 · 0 评论 -
优先级反转及解决办法
上次去华为面试,被问及优先级反转及解决办法,虽然以前有所了解,但好长时间没用了,回答时竟然具体卡壳,真是汗颜。所以今天有必要再次理顺一下优先级反转的相关知识。 (1)什么是优先级反转 简单从字面上来说,就是低优先级的任务先于高优先级的任务执行了,优先级搞反了。那在什么情况下会生这种情况呢? 假设三个任务准备执行,A,B,C,优先级依次是A>B>C; 首先:C处于运行状态,获得CPU正在执行,同时占有了某种资源; 其次:A进入就绪状态,因为优先级比C高,所以获原创 2010-08-04 14:11:00 · 3667 阅读 · 1 评论 -
C语言 自动打印函数形参的宏
int testaaa(int a, int b){a = 0;b =0;coutreturn 1;}void printFunArgs(int start, ...){ va_list arg_ptr; int nArgValue =start; va_start(arg_ptr,start); //以固定参数的地址为起点确定变参的内存起始地原创 2012-05-30 16:32:50 · 1110 阅读 · 0 评论