为了节省产品成本,选择了比较便宜的NAND Flash与SDRAM,同样的价格可以买到大得多的容量,但天下没有白吃的午餐,朋友们可以把NAND Flash想像成硬盘,程序无法像mask ROM或NOR Flash一样,利用指针,给个地址就能读取,而是必须通过命令才能读写,程序当然也不能在NAND Flash上执行,而SDRAM则是有耗电流高缺点。出于产品需求,与成本考虑,厂商会设计出这样的CPU 自有原因。
现在咱们来推演一下设计这个cpu时的“心路历程”
1:因为产品内的资料量很大,基于成本考虑,不可能使用NOR Flash或mask ROM;
2:市面上大容量且价格合理的内存只有NAND Flash,但NAND Flash无法直接寻址操作,所以要把程序搬一RAM去执行,而SRAM相对较贵,所以最好选用SDRAM;
3:既然程序和资料都存储在无法寻址的NAND Flash,所以必然要有一段小程序将NAND Flash里的程序加载到RAM里面去执行,刚刚已经说过产品设计者不希望增加成本多使用一个NAND Flash或NOR Flash,所以这段小程序只能放在CPU里。
4:CPU里的内存也不便宜,所以这段程序size不能太大,也无法有太多的弹性,所以只能从NAND Flash的第一个block读出程序到RAM,而这个放在NAND Flash里的程序的大小也是有限制的;
5:CPU在设计时根本无法知道客户要用什么样的SDRAM,所以将程序从NAND Flash加载SDRAM是不实际的,刚好这系列的CPU内部都有一块RAM,原本是当做video RAM用的,正好可以把NAND Flash内的boot loader程序加载到这块内部RAM.
6:被CPU加载的程序有大小的限制,所以它就只能是boot loader,配置执行环境,初始化SDRAM,然后负责将主程序从NAND Flash中加载SDRAM,并将控制权交给主程序,从而完成激活程序。 |