JP 的网站

这是一篇关于 AlphaStation 500 的 SROM(串行 ROM)的博客文章,主要内容如下:

  • 背景:作者对 90 年代的 RISC 工作站感兴趣,得到一台死机的 AlphaStation 500,其电源正常,但两块 PCI 卡损坏,部分内存过热,不过得到了 18GB 的 SCSI 硬盘和 12 倍速 SCSI CD-ROM。
  • AlphaStation 500 启动方式:与普通 PC 不同,AlphaStation 500 复位后,CPU 内部逻辑产生时钟脉冲驱动外部计数器,提供连续地址到 SROM,1 位输出的 SROM 数据被送入处理器的内部指令缓存,加载完成后处理器执行缓存中的代码,该代码用于配置外部内存总线并找到内存映射的并行 ROM 以移交执行权。
  • SROM 图像选择:AlphaStation 500 主板有八个跳线位置,每个位置对应 SROM 中的一个图像,通过跳线选择要加载的图像,作者推测因内存问题应将跳线从 J11 移到 J12 以查看 Mini 控制台,但未找到。网上有一些 SROM 源代码,但不确定是否适用于作者的机器。
  • 拆分 SROM:作者将 SROM 芯片(Am27C010)取出并使用 TL866-II 闪存编程器进行转储,然后用 Python 代码将八个复用的图像分开,但这些图像不包含 ASCII 字符串和 Alpha 机器代码。
  • 解码图像:SROM 数据逐位加载到缓存行,其中部分位是奇偶校验和元数据,Digital 提供的srom.c工具用于添加标签和奇偶信息以生成可加载的 SROM 图像,作者通过 Rust 代码根据该工具的表格反转编码,将 25 字节的缓存行转换回四个 32 位指令字,并经过试验验证了程序的正确性。
  • 反汇编解码后的图像:将解码后的文件通过objdump进行反汇编,发现其中包含有效的 Alpha 机器代码,如HW_MTPRHW_MFPR指令,还找到了一个get_char函数,用于通过串口接收数据,似乎 SROM 是有效的。
  • 结论:Alpha CPU 从 SROM 启动,SROM 包含八个打包的图像,可通过特定工具解码得到原始图像,Alpha CPU 有特殊的内部处理器寄存器可控制 GPIO 引脚等,作者的 SROM 芯片似乎未损坏,但仍不知道 Alpha 不启动的原因。
  • 链接:提供了作者编写的工具的 Github 源代码链接[https://github.com/thejpster/...]和 Alpha Motherboard Software Developers Kit V4.0 的链接[https://github.com/jramstedt/...]。
阅读 8
0 条评论