基于Teensy 3.5和NCR 5380的SCSI设备仿真器
发布时间:2020-06-29
分享到:
基于Teensy 3.5和NCR 5380的SCSI设备仿真器
发布时间:2020-06-29
分享到:

描述

基于Teensy 3.5(Kinetis MK64FX MCU)和经典NCR 5380 SCSI PHY的SCSI目标仿真器。支持多个目标(设备ID),LUN和设备类型。3.2“ x 1.6”占位面积,可以选择使用或提供总线终端电源。64x48像素OLED状态显示。

TSE80 UI测试

       由于我有一些时间继续进行该项目,因此我对板子进行了重新设计(请参见左侧的图片部分),为两个Teensy微控制器腾出了空间,并为Pimoroni Pirate Audio(或与其他Raspberry Pi兼容)提供了一个接头带有可选屏幕的I2S音频帽子)或Raspberry Pi,以及您要使用的任何帽子(无需第二个Teensy)。此外,还有一个20x30的原型区域,并且安装孔与3.5英寸底部螺钉位置相匹配以进行安装(或者您可以使用直角硬件。)先前的OLED菜单系统正被带到单独的微控制器中,以实现一些更高级的功能。设计通过验证后,我将把新设计上传到项目文件中。对于50美元,您应该能够仅使用NCR5380,后端Teensy 3.5和最少的无源/连接器来构建自己的基本板。只需花费约100美元,您就可以在板上完全装上两个Teensy微控制器和一个前面板LCD /音频模块。

硬盘声音模拟器:

       前端Teensy可以为那些错过此类事情的人实时生成模拟的硬盘驱动器声音(以及最终的CD和磁带机械声音!)。在“文件”部分中有一个示例记录。

CDDA仿真:

       您可以让前端Teensy从其自己的SD卡中播放wav文件,尽管我可以为后端实现直通功能,以发送嵌入在bin / cue图像中的音频。对于Teensy 3.5,这将占用前端控制器上16%的CPU时间。前端Teensy可以是3.5、3.6或4.1。4.1应该足够强大,可以实时解码MP3文件,并且可以进行S / PDIF音频(直通您的声卡!),但是后端仍必须是Teensy 3.5,才能安全地与NCR 5380配合使用。

240x240用户界面:

       使用Pirate Audio帽子,屏幕可以比以前的64x32或128x32 OLED显示屏大得多,并且屏幕色彩也可以达到16位。Pirate Audio帽子有多种版本,一种带有输出,另一种带有小型扬声器。前面的UI允许您安装/卸载图像,更改ID和模式,控制CDDA回放等。已经实现了一些基本的UI元素,以允许更改CDDA和HDD声音模拟的音量。我将很快上传更新后的用户界面的视频。
       因此,我花了一些时间来处理自己组装的TSE板之一,并在上周与HP 712/100 PA-RISC系统一起使用。这样做时,我发现了几个错误,并相应地对该项目进行了一些更改。已要求进行的某些更改与最近版本的teensyduino SDK中缺少的flexbus定义有关。现在,固件回购已上传了flexbus.h,其中包含缺少的定义。当我有机会合并本地不同树之间的某些更改时,我将使用上周修复的错误更新存储库。在处理SCSI消息时,未正确处理ABORT(6)。显然,正确的响应是丢弃所有内容并释放没有消息的总线回发给启动器。然后,在读写操作以及不同扇区大小之间的转换方面存在错误。在经典Mac上,这些不那么容易看到,但是在PA-RISC上,很明显,已为读取请求传输了太多数据。就多目标支持而言,对我来说更加明显的是,当TSE处理两个目标时,立即取消选择另一个目标后立即选择一个目标是有问题的。当主机在引导时扫描驱动器并且仅找到第一个驱动器时,这一点最为明显。我尚不确定该怎么做,但是如果您遇到这种情况,请尝试在TSE处理的目标之间留出1或2个ID的间隔。

       我曾计划使用53c94端口,但正如我之前发现的那样,每个芯片仅支持一个目标ID,因此很难找到53c94的目标固件示例。我确实有一块板,该板使用Z80 cpu作为目标角色使用53c94,我可以在电路或逻辑探针中运行仿真器并转储针对53c94的所有I / O。因此,即使这个项目在过去的几年中已经非常失败,但我还没有放弃。

53c94芯片和电路板已经安装!
新的电路板和芯片已经到货,后来有200多个焊点,Teensy和53c94在通话,菜单按钮在工作。现在,完成剩下的5380代码与目标服务代码的分离,并编写53c94驱动程序。我以前没有注意到53c94的一个缺点,它一次只能监听一个设备ID。它仍然可以为每个设备执行多个LUN,但这意味着大多数模式对于不支持LUN的较旧软件是互斥的。因此,您可以在m68k mac上模拟硬盘,cdrom,以太网或图形适配器,但不能同时模拟其中的任何一个。5380较慢,但在这一点上用途更多。另外,SuperMac SuperView到货了,我可以将其与我的收藏夹中的Quadra 630配合使用(尽管效果很差,因为它会导致本机图形出现问题)。我希望尽快对该协议进行反向工程,并开始在pi Zero软件上工作。

OLED菜单
       OLED菜单系统的启动正在进行中,您将能够启用/禁用单个设备,更改设备类型(磁盘,cdrom,磁带,以太网,图形),启动/停止目标模式,最终执行启动程序模式任务(保存/从真实驱动器中还原磁盘映像),并且无需连接计算机即可对设备配置进行其他各种更改。我已经将前一个状态屏幕的布局调整为仅占据前8个像素,并希望能更清楚地表示正在发生的事情。在这里您可以看到ID 3、4、5已启用,而我刚刚从菜单系统中禁用了ID 2。如上面第一行的点所示,任何设备上都没有活动。SD卡大小和分区等详细状态将通过菜单提供。

53C94电路板布局完成
我花了一天的时间为基于53C94的迭代绘制原理图和电路板布局。现在可以在左侧的硬件仓库中找到TSE94Desktop.sch和TSE94Desktop.brd。电路板和零件现已订购,应在1月中旬。在此之前,将继续基于5380的模型进行工作。

光盘驱动器仿真
并没有花很长时间。非常感谢MAMEDev,SCSI2SD和SCSI CD文档,光盘驱动器仿真工作得很好,足以在我的linux测试平台上安装和验证Debian安装光盘。这意味着现在还支持扇区大小不是512字节的虚拟磁盘/光盘。我还订购了一张SuperMac SuperView SCSI图形卡,希望在事情再次变得疯狂之前可以使用它。我组装了首批电路板之一,即使我的焊接工作很糟糕,它的效果也很好。我发现了一个错误,因为uSD插槽与引脚重叠,导致OLED显示器无法安装在主板的Teensy侧。我怀疑任何将使用OLED显示器的人都可以将其连接在电缆上,或者可以将其安装在NCR 5380上很好,所以这还不是什么大问题。非常感谢Hackaday的撰写:http ://hackaday.com/2016/12/25/the-tiny-scsi-emulator/ !圣诞快乐,节日,圣诞节,光明节,假期和新年!

电路板已插入,SCSI / Link仿真已开始
Rev0开发板来自OSHPark,现在我必须从我的收藏中挖出一些48针插座以适合Teensy 3.5刚刚将主要更改集推送到了bitbucket,通过config.h添加了初始SCSI / Link仿真和集中配置更多计划,更多模拟我花了一整天的时间重新思考TSE的体系结构,并规划最终的支持其他控制器和设备仿真的举措。Cabletron仿真仍然存在问题,但DaynaPort SCSI / Link已加入该软件,希望可以对其进行更好地记录。我已经从以太网仿真中分离出了以太网控制器驱动程序,因此在不久的将来有可能进行混合和匹配。作为WiFi桥接器,Particle Photon / Spark Core具有潜力,可以处理所有网络任务并将SCSI留给Teensy。通过USB的RNDIS是另一个可以探索的选择。万一我最终实现了RFC 2143,启动器的实现也被推高了一点,这需要同时成为目标和启动器,并支持完整的总线仲裁,并朝着这个方向发展。在具有特定芯片组和驱动程序的Linux主机之外,我不知道该标准的任何其他实现。我仍然计划将TSE用作独立的SCSI克隆盒。如果我可以获取任何类型的文档或可以对一个文档进行反向工程(捐助方),ScuzzyGraph和PowerView都将备受关注,以备将来实施。运输机制是另一种探索途径。是否有记录良好的磁带/ CD保管库?有一个完整的ISO映像目录可供选择,然后从本机应用程序中挂载它们将很有趣。如果我不必写前端,那就更好了。我仍在等待OSHPark的第一批开发板,因此目前所有测试仍在试验板上进行。我已经挖出一个牺牲性的VaxStation主板(由于盖子泄漏,啮齿动物污染而损坏),以窃取一对5380芯片,并在需要时使用一个SCSI软盘控制器来窃取另一个。

向前走几步,向后退几步
       附带我的Quadra 630(需要运行NetBSD),我对以太网的支持已经走得更远。现在,Cabletron诊断程序可以识别该设备。可能由于模式感知实现不完整,NetBSD及其相关工具不喜欢我的磁盘仿真。对于不可预见的复杂性,我现在必须在以太网和oled驱动程序上放置某种形式的互斥锁/锁定,这使我更接近切换到RTOS并更改我处理SCSI PHY的方式。

更新:我只是在安装硬壳驱动程序。Cabletron MacOS驱动程序不是您所期望的扩展,而是使用实际的驱动程序修补了System文件,并具有某种修补的Ethertalk扩展。我比以前走得更远,但是没有原始硬件可以与之相比,我只是通过阅读NetBSD驱动程序源代码来盲目实现它们的协议。驱动程序经历了向帧过滤器添加协议和多播地址,并询问是否有可用帧的过程。如果安装了统计数据DA,它也会尝试轮询。我怀疑当没有要检索的帧但在NetBSD驱动程序中找不到任何引用时,卡将返回某种“无数据,请稍后再询问”的响应。

 

声明:本文系电路城独家所有,转载请注明出处

加入微信技术交流群

技术交流,职业进阶

关注电路设计技能公众号

了解最新技术方案

加入电路城 QQ 交流群

与技术大牛交朋友

讨论