有时候我必须选择一个人过冬 习惯在冰天雪地里追梦

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:

llc的个人空间 引用 删除 llc   /   2007-07-10 20:29:15
难度非常大,努力修炼中
npcomet的个人空间 引用 删除 npcomet   /   2007-07-10 14:14:04
给我搞一个路由器出来吧
龙的宠物 引用 删除 hew   /   2007-07-10 10:04:03
llc 果然牛人
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-03  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 28546
  • 日志数: 189
  • 图片数: 24
  • 文件数: 6
  • 书签数: 4
  • 建立时间: 2006-04-20
  • 更新时间: 2008-11-30

RSS订阅

Open Toolbar