有时候我必须选择一个人过冬 习惯在冰天雪地里追梦
DIY一个小型计算机系统(1)
上一篇 /
下一篇 2007-07-09 18:57:17
/ 个人分类:工作备忘
打算利用MCU及自己掌握的软硬件知识来diy一个小型计算机系统,一个真正的个人电脑,仅属于自己的PC。
大致构想如下:
一、CPU:双MPU——MCU采用STC公司的12C5412AD,PLCC32封装。12C5412AD为单时钟周期的51核MCU,速度飞快,在使用25MHz晶振时能获得大约20MIPS的运算能力,有硬件乘法器及除法器(没有硬件浮点运算器)。内置12K FLASH ROM,512字节SRAM,应该可以满足要求。自带SPI硬件同步通信口,支持主/从模式。支持ISP在线烧录程序(从UART口烧录,简单好用)。集成了EEPROM可以用来保存设置参数,不需要单独的存储芯片。
选择MCU时我主要是基于如下几个因素:
1、 支持ISP在线烧录,这样不用老是拔插MCU进行程序烧写,方便。
2、 必须自带SPI同步通信口,因为太多外设都是用SPI方式,如果用软件来模拟SPI通信非常麻烦
3、 速度尽可能快。
这个双MCU跟现代的双CPU及双核设计不一样,仅能说是伪双CPU结构。我的构想是尽可能设计成两块MCU共享一片扩展内存(有待进一步考虑……难度比较大)。相对于PC上的CPU,MCU的功能太弱了,没有MMU内存管理单元,没有硬件调度器来分配任务。我也没接触过这方面的硬件电路,暂时没法给它设计一个硬件调度电路。现代的双核PC可以把计算任务分配到两个CPU,通过协调完成一次计算,双MCU无法做到这点。我现在能做到的是利用UART中断把两片MCU联系起来,两者能互相通讯,然后自己定义一套通讯命令或协议来进行软件调度,尽量让两片MCU能各自分担一些能独立完成的任务,譬如一块MCU在计算时,如果遇上读磁盘请求,而且另一块MCU在空闲状态,就可以让这块MCU接手磁盘读写的任务。我希望通过优化命令协议软件,尽可能让两片MCU达到最大效率的利用,如果性能能达到单MCU时的1.2倍我已经很满意了。
两片MCU的通信使用UART中断,我是基于以下几点来考虑:
1、使用中断比查询要快,两片MCU要达到高效率,只能使用中断来通讯调度,查询的方式太耗资源了,反而会造成系统性能的急剧下降。
2、12C5412AD里的通讯中断有UART中断和SPI中断两种,SPI口在我的构想是用来连接磁盘设备、音频设备、USB外设等各种外设用,因此SPI中断有另外的重要用途,只能使用UART中断了。
二、扩展内存:暂定是一片STC62256,DIP或SOP封装。62256是一片8位x64K的SRAM,速度非常快,读写也简单,硬件电路上如果能做到两片MCU共享那就最好,如果难度太大,只好取消这扩展内存了。
三、磁盘系统:磁盘系统原打算使用普通的PATA IDE硬盘,但经过一番考虑后决定选用MMC卡作为磁盘存储。如果采用并口IDE硬盘,硬件电路上必须使用8255这些芯片进行IO口扩展,非常麻烦,而且IDE硬盘耗电大,软件读写也麻烦。MMC卡耗电非常小,兼容SPI控制方式,可以直接挂到12C5412AD的SPI口上进行读写,非常方便。最重要的是我有两张闲置的MMC卡可以拿来用,但没有闲置的IDE硬盘-_-!
(未完待续)
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG: