×

易于构建的68008 CPU SBC(单板计算机)68k-MBC

消耗积分:2 | 格式:zip | 大小:0.34 MB | 2022-07-11

石玉兰

分享资料个

PCB图如下:
poYBAGKh34CABy4LAAEgfQevJIc498.jpg
pYYBAGKh34KAQxcKAAEwuZK2FJk130.jpg

描述

68k-MBC:3 IC 68008 自制电脑

 

 

* * 描述 * *

 

68k-MBC 是一种易于构建的 68008 CPU SBC(单板计算机),仅使用容易找到的 TH 部件。

 

它遵循与以前的 Z80-MBC2 ( https://hackaday.io/project/159973 ) 和 V20-MBC ( https://hackaday.io/project/170924 ) 板相同的“概念”,使用 PIC18F47Q10 MCU 作为EEPROM 和“通用”I/O 仿真器(因此不需要“传统”EPROM 编程器)。

 

您可以在两个主要的硬件配置选项之间进行选择:Lite 或 Full。Lite HW 配置选项允许构建一个运行 CP/M-68K 的 3 个 IC 68008 系统。

 

它有一个可选的板载 16x GPIO 扩展器,并为 SD(高清仿真)和 RTC 选项使用常见的廉价附加模块。

 

有两个板载 RS232 串行端口,它允许连接 RS232 终端,如 uTerm-S ( https://hackaday.io/project/176716 )。

 

poYBAGKh34WAKh0tAAElOH6mcZI988.jpg

 

pYYBAGKh34iAYas_AAE1lTbh0qU769.jpg

 

poYBAGKh34qALp1LAACTXYJUl8w110.jpg

 

* * 原型 * *

在设计的第一阶段,我在面包板上使用了一个原型来检查基本的“概念”。

我在我之前制作的定制板上(PicOne上使用了 PIC18F47Q10 作为“伴侣”MCU ,它可以直接插入面包板上,并带有板载 microSD 卡和 USB 串行适配器。:

 

poYBAGKh342AFAs2AAJkBqqgOCg491.jpg

为了制作 PIC18F47Q10 的固件,我使用了带有MCC插件的MPLAB X IDE 。

这里有一个简短的视频,其中包含使用Easy68K作为汇编器和sLoad的自动汇编器工具链,这是一个自定义 SW 实用程序,用于从串行端口加载并执行摩托罗拉 S-record 格式的可执行文件:

 

为了实现真正的自动化工具链,面包板上的自动重置电路从串行 USB 适配器获取 DTR 信号并使用它来重置 MCU(就像在 Arduino Uno 板中一样),因此可以从批量重置面包板使用Tera Term宏在 PC 中运行的文件

 

* * 为什么是图片?* *

那些遵循以前的Z80-MBC2V20-MBC板会注意到我在这里没有使用 Atmega MCU。使用 Atmega MCU 允许使用友好的 Arduino IDE 和多种方式来刷新 MCU,因此这是一个促成因素。

不幸的是,Atmega MCU GPIO 端口与 TTL 不兼容,并且在以前的板中使用 CMOS CPU 解决了这个限制,在给定条件下可以实现 Atmega MCU 的数字电平。

但是这里的 68008 CPU 根本没有 CMOS 技术,所以不能使用 Atmega MCU。

因此,我进行了一些搜索以找到具有三个主要限制的替代 MCU:必须具有 TTL 兼容的 GPIO,必须是 TH 部件并且也便宜。

我发现的唯一部件是 PIC18F47Q10 MCU,我必须说它很好地完成了前面的约束。此外,它是一款现代 MCU,具有许多有趣的功能以及比以前的 Atmega32 MCU 更多的闪存和 RAM 内存。

当然,没有什么是免费的,选择 PIC18F47Q10 会带来一些复杂性。首先是需要一个合适的硬件编程器来烧写它。第二个是使用专有 IDE (MPLAB X) 编写或修改比 Arduino IDE 更复杂的源代码(但我必须说功能强大得多……)。

想要修改固件的人必须安装 MPLAB X IDE 并学习使用它。MPLAB X 是一款专业工具,强大的“力量”也带来了很多复杂性……我希望这不会是个问题,毕竟学会使用像 MPLAB X IDE 这样的专业工具总是一件好事.

 

 

* * 硬件概述 * *

这里是 68k-MBC 硬件主要规格:

 

  • 68008 CPU以 8MHz 运行;
  • 多重启动能力;
  • 两个主要的硬件配置选项:LiteFullLite HW 配置选项允许构建最少 3 个 IC 68008 系统;
  • RAM 可配置为128/512/1024KB(仅 Full HW 配置选项支持 1024KB);
  • 可选的RTCmicroSD(高清仿真)模块(与Z80-MBC2中使用的相同);
  • 可选16x GPIO端口;
  • I2C扩展口;
  • 2 个串口(仅全硬件配置选项支持串口 2);
  • 两个串行端口的板载RS232 驱动程序(仅限全硬件配置选项);
  • 串行端口 2 上的串行 USB 适配器支持,具有独立电源(仅限全硬件配置选项);
  • 用户led和key
  • ICSP连接器(用于 PIC18F47Q10),便于固件安装/升级;
  • 它与uTerm ( https://hackaday.io/project/165325 ) 和uCom ( https://hackaday.io/project/165709 ) 附加板兼容。

 

精简/完整硬件配置选项

68k-MBC 允许在两个主要硬件配置选项之间进行选择:LiteFullLite HW 配置允许构建最少 3 个 IC 68008 系统。

 

两种硬件配置完全不同,一些信号以互补的方式运行。IOS 固件首先检查使用了哪一种硬件配置,并相应地更改信号行为(在需要时)。

 

Lite HW 配置需要的组件少于 Full HW 配置,唯一的例外是一个电阻器 ( R4 ),它仅适用于 Lite HW 配置,而 Full HW 配置不需要(无论如何它不会“伤害”如果存在于完整硬件配置上)。

 

下图显示了填充 Lite 配置的 68k-MBC:

 

pYYBAGKh35aALshOABcZnz96FzQ354.jpg

 

下图显示了填充完整配置的 68k-MBC(以前的 PCB 修订版):

 

pYYBAGKh36SAIhKgABnMjV-IMzU666.jpg

 

为了简化组件的选择,模块化 BOM 显示了两种硬件配置所需的组件。

首先要做的一项重要任务是配置 PCB 底部的三个焊锡跳线 (SJ1、SJ2、SJ3)

 

选择要实施的所需硬件配置后,您必须按以下方式设置三个焊接跳线SJ1SJ2SJ3 :

 

  • 如果您选择了全硬件配置,只需打开所有三个跳线
  • 如果您选择了Lite HW配置,则所有三个跳线都必须短接

 

警告:如果您不按照上述步骤操作,可能会造成永久性损坏!

 

警告:如果在填充 U1、U2 和 U5 时将三个跳线短接,可能会造成永久性损坏!

在下图中,SJ1、SJ2 和 SJ3 都被短路以启用 Lite HW 配置:

 

pYYBAGKh36mAC3FjAAMOg-DDXSc445.jpg

 

Lite 硬件配置选项的限制

Lite HW 配置选项允许以最少的 BOM 构建 68008 系统,但与 Full 相比带来一些限制:

 

  • 不支持 1024KB RAM 配置。允许128/512KB ;
  • AUX连接器中仅存在 I2C 端口;
  • 只能使用串行端口 1(仅在SER1连接器处);
  • 无法使用 CPU 中断。

 

无论如何它可以运行所有提供的软件,包括CP/M-68K。

 

内存配置

两个 Lite/Full HW 选项支持的 RAM 配置不同。

Full HW 选项允许三种不同的RAM 配置:

 

  •    128KB (1x128KB);
  •    512KB (1x512KB);
  •    1024KB (2x512KB)。

 

要设置 128KB RAM 配置,JP1跳线 ( A17 ) 必须保持打开状态,而要设置 512KB 或 1024KB 配置,JP1必须关闭。

 

此操作必须在板子未通电时以及在安装 RAM 芯片的第一次上电之前完成。

 

请注意,使用 128KB RAM(不支持 2x128KB)时,只允许单个 RAM 芯片配置。

 

Lite HW 选项仅支持 128KB 和 512KB,将JP1设置为 Full 选项(Lite HW 选项不支持 1024KB RAM 配置)

 

 

串行端口 1 连接器 (SER1/J2)

SER1端口 ( J1  )可以连接到 TTL-RS232 适配器或串行 USB 适配器,如下图所示(基于 CP2102):

 

poYBAGKh362AOlaFAACwkcsB7ns431.jpg

该串行 USB 适配器还可以作为 68k-MBC 的电源,并具有用于“自动重置”的DTR信号,以在使用sLoad启动模式时触发上传 S-record 格式的流,从而实现自动化工具链。

请注意,当前不支持SER1端口 ( J2 ) 的CTS引脚,并且在使用串行 USB 适配器时必须断开连接(作为 NC 引脚)。

串行 USB 适配器的 3V3 引脚也必须断开:

 

pYYBAGKh38SAR7t-ACIG8g6uLe4643.jpg

下表列出了 J2 的引脚映射以及如何连接串行 USB 适配器:

 

poYBAGKh38eAEWT_AAEGSBR-tT4714.jpg

 

辅助连接器 (AUX/J4)

AUX(J4)连接器扩展了之前板子(V20-MBC和Z80-MBC2)使用的IOEXP连接器,同时支持两个RS232电平的串口,I2C口,TTL电平串口2口和一个serial-USB带独立电源的串口 2 适配器。

两种 Lite/Full HW 选项配置有两种不同的引脚映射(Lite 仅支持几个引脚)。

Full HW 选项J4引脚映射如下:

 

 

pYYBAGKh38qAbEwDAAFw8aoutYQ119.jpg

 

Lite HW 选项J4引脚映射如下:

 

 

poYBAGKh38-ATATcAAEWhhscnqc123.jpg

 

 

GPIO 连接器 (GPIO/J7)

 

 

poYBAGKh39KABjSCAAEyULW3x3I003.jpg

 

 

可选 SD 模块

可选的 SD 模块用作高清仿真。该模块是一个常见的 6 针 microSD 模块,可以在 ebay 上轻松找到:

 

poYBAGKh39WAK9zYAAFm_KAJ21s309.jpg

如果 PIC MCU 使用了插座,则需要进行一点切割,以便很好地插入J6连接器。

切口位于连接器附近的直角处,如下图所示:

 

pYYBAGKh3-OAB9x5AA_scu_fqKQ041.jpg

 

注意插入模块的方式和位置(唯一正确的连接器是标记为SD-MOD的J6)。如果将其插入错误的连接器或以错误的方式插入,可能会对模块和 68k-MBC 板造成永久性损坏!所以插入它,如下图所示:

 

poYBAGKh3_GAd9vHABEYic0mPNo851.jpg

 

 

可选的 RTC 模块

RTC 是基于 DS3231 RTC 的通用模块,如下所示:

 

poYBAGKh3_WAAE1cAAFu__a8324859.jpg

 

这种便宜的模块有一个涓流充电电路,如果您使用标准的 CR2032 电池,可能会导致电池“爆炸”。此外,它还会损坏可充电的 LIR2032 电池。有关更多信息以及如何修复它,请参见 此处

RTC 模块在 SDA 和 SCL 上有自己的上拉电阻。因为该值为 4k7(与 68k-MBC 板内使用的值相同),所以结果值为:

4k7 // 4k7 = 2k3

因为这个值很好,所以不需要去掉 RTC 模块上的上拉电阻。

注意插入模块的方式和位置(唯一正确的连接器是标记为RTC-MOD的J5)。如果将其插入错误的连接器或以错误的方式插入,可能会对模块和 68k-MBC 板造成永久性损坏!所以插入它,如下图所示:

 

poYBAGKh3_yAGx7yAAiCT2--nEo300.jpg

 

 

 

附加板

68k-MBC 与 uTerm (https://hackaday.io/project/165325) 和 uCom (https://hackaday.io/project/165709) 附加板以及垂直的相关 3D 打印部件兼容或水平组装:

 

pYYBAGKh4AmAcu9EABCx7G1cga0871.jpg

 

pYYBAGKh4BWAU8qyABAXasHxkU0792.jpg

 

poYBAGKh4BiAG72OAAJiXciTJH0147.jpg

 

poYBAGKh4BuAFzlfAAJKj_HfLT8213.jpg

 

两块板都允许为 68k-MBC 提供最佳电源。在这种情况下,必须使用 AUX-P (J1) 连接器。

 

* * 软件概述 * *

PIC18F47Q10 MCU 用作通用 I/O 子系统、Eeprom,以及 68008 CPU 的复位和 8MHz 时钟发生器。

运行在 PIC18F47Q10 中的软件是使用带有 MCC 插件的 MPLAB X IDE 编写的 IOS(输入输出子系统)。

IOS 允许将 PIC18F47Q10 直接与 CPU 系统总线接口,在内存映射 I/O 读取、I/O 写入和 IRQ 确认 CPU 总线周期期间模拟所需的 I/O 芯片(参见 68008 数据表)。

此外,IOS 会在引导阶段加载 RAM,向 CPU“提供”加载 RAM 所需的指令。

如果“馈送”算法“看到”存在意外的总线状态,它会中止引导序列并发出一条消息警报。

因为 68008 CPU 有一个两字指令预取机制,所以 IOS 在引导阶段的“馈送”算法中处理这个问题,并在引导阶段结束时附加一个 STOP 指令以确保 CPU 不会走得更远。

IOS模拟的两个串口的参数是:115200波特,8N1无流控(无论如何你可以在“选择启动模式或系统参数”菜单中更改两个串口的速度)。

 

目前IOS允许在各种场景下使用68k-MBC:

  • 作为单机运行CP/M-68k;
  • 运行独立的 Basic 解释器(Enhanced 68K Basic);
  • 使用 sLoad 启动模式作为“现代”嵌入式开发板;
  • 使用 Autoboot 引导模式在开机时运行自定义二进制可执行文件。

 

还有各种工具链可用作交叉编译器:

 

  • 带有 Easy68k 的交叉汇编器(Windows);
  • 使用 gcc (Linux) 的交叉编译器;
  • 使用 68000 IDE (Windows) 的交叉编译器。

 

所有细节都在以下段落中解释。

 

使用 MPLAB IPE 刷新固件

刷新 IOS 固件的最简单方法之一可能是使用 MPLAB IPE 实用程序。我已经使用了 MPLAB PicKit 4 和 MPLAB SNAP 编程器:

 

poYBAGKh4CiACT5DABKkExlNzL8072.jpg

 

要将编程器连接到 68k-MBC,您还需要一根简单的 6 线杜邦电缆,就像上一张照片中的那样,一侧带有母排针,另一侧带有公排针。强烈建议您在两侧标记引脚1,以免连接时出错。

 

接下来假设使用 MBLAB SNAP 作为编程设备。还假设已经安装了 MPLAB IPE,并且您已经阅读了 MPLAB SNAP 手册并且“熟悉”它。

 

第 1 步:您必须先将 MPLAB SNAP 编程器连接到 USB(为其供电),然后使用 ICSP 连接器处的 6 线电缆将其连接到 68k-MBC 板。请注意,68k-MBC * 必须 * 在此阶段不通电。

 

第 2 步:现在您可以为 68k-MBC 板供电,然后启动 MPLAB IPE 实用程序。您必须从设置菜单中选择高级模式:

 

poYBAGKh4CuAbpCrAAELolS4Cvg210.jpg

 

第 3 步:此时您必须使用默认密码(微芯片)登录,选中 Keep me logged in 选项,因此“高级模式”将成为默认模式:

 

pYYBAGKh4C6ARfzVAAExDYdVyJY541.jpg

 

第 4 步:您必须按下连接按钮来激活编程器。此时 MPLAB IPE 应选择正确的 PIC MCU (PIC18F47Q10):

 

pYYBAGKh4DGAJh2PAAGFE2zLSic589.jpg

 

第 5 步:您必须选择要在 PIC 中写入的 .hex 文件,使用“浏览”按钮选择它:

 

poYBAGKh4DSACRe4AAIR2ihC16o748.jpg

 

 

第 6 步:现在是时候按 Program 按钮将 .hex 文件写入 PIC MCU:

 

poYBAGKh4DiAVkd2AAHXtoU8Zp4353.jpg

 

第 7 步:编程结束后,如果您想尝试让 PIC MCU 运行以查看结果,可以选择从复位中释放。考虑到 MPLAB SNAP 编程器连接到 68k-MBC 时,PIC MCU 将看到用户键被永久按下。然后你必须按下断开按钮:

 

pYYBAGKh4DuALYQbAAHUIAJXZcA146.jpg

 

第 8 步:现在您可以(按此顺序)断开目标板 (68k-MBC) 的电源,断开 ICSP 电缆与(68k-MBC 板的)J3 连接器的连接,最后断开 MPLAB SNAP 编程器与 USB 的连接。全部完成。

 

使用 ARDUINO UNO 作为编程器烧写固件

寻找一种无需定制程序员即可对 PIC MCU 进行编程的替代方法,我在这里和这里发现了这个有趣的项目,它使用了一个通用的 Arduino Uno 板,在 PC 端有一个适当的“控制程序”。

所以我已经测试了它(在Linux PC上),经过一点修改它就可以工作了!

之所以需要修改,是因为 PIC18F47Q10 的器件 ID 已与一个非常相似的器件(PIC18F27Q10)交换。

我所做的另一项修改是在 .ino 文件中添加一个开关,将编程器保持在“待机”状态,以允许更安全地连接/断开与未通电目标板的连接/断开连接。当编程器处于此状态时,Arduino Uno 内置 LED 闪烁。

您需要构建一个非常简单的“ICSP Shield”(参见 A170421 原理图),并在 Arduino 板顶部插入一小块穿孔板和一根带有 6 针 Dupont 插座的 4 线电缆,如下图所示(仅针1、3、4 和 5 已连接)用于 ICSP 连接器。

强烈建议您在两侧标记引脚1,以免连接时出错:

 

poYBAGKh4EuAKZVMABgQBhanH5U012.jpg

pYYBAGKh4FGAEkVjAAYe0ic75Ac412.jpg

pYYBAGKh4FeAT93QAAfCU9BMIko351.jpg

poYBAGKh4GiADVAJABdIE-8VCQY831.jpg

 

这里是对 PIC MCU 进行编程的所有步骤。如果你使用的是 linux 机器,你必须首先编译 pp3.c(使用命令:gcc -Wall pp3.c -o pp3)。

 

下面假设:

  • 您已经将 pp.ino 草图刷入了 Arduino Uno 板;
  • 将“ICSP Shield”(A170421)插入 Arduino 板顶部,并将 MODE(SW1)开关设置为 STBY;
  • 您要在 PIC MCU 中写入的文件 .hex 与“控制程序”(Linux 的 pp3 或 Windows 的 pp3.exe)所在的目录相同。

 

第 1 步:您必须先将 Aduino Uno 连接到 USB(为其供电)。验证“ICSP Shield”(A170421) 上的 MODE (SW1) 开关是否处于 STBY 位置,并且 Arduino Uno 板上的 LED 闪烁。此时,使用 ICSP (J3) 连接器(68k-MBC 侧)处的 4 线电缆将其连接到 68k-MBC 板。请注意,68k-MBC * 必须 * 在此阶段不通电。

 

第 2 步:现在您可以为 68k-MBC 板供电,然后将“ICSP Shield”(A170421)上的 MODE(SW1)开关设置在 PROG 位置。Arduino Uno 板上的 LED 现在已关闭。

请注意,在这种状态下,68k-MBC 的 RESET 键被禁用,PIC MCU 将看到用户键被永久按下。

 

第 3 步:从要写入的 .hex 文件和“控制程序”(linux 的 pp3 或 windows 的 pp3.exe)所在的目录打开一个 shell:

 

poYBAGKh4GuAIV7WAAFP9Baw-T4441.png

 

然后使用命令检查一切正常(如果您的系统中的 /dev/ttyACM0 串行端口名称不同,则最终更改):

./pp3 -c /dev/ttyACM0 -s 1700 -p -n -t 18f47q10

 

 

pYYBAGKh4G6AVzZTAAK8IL2wzxE357.png

 

第 4 步:使用以下命令对 MCU 进行编程:

 

./pp3 -c /dev/ttyACM0 -s 1700 -t 18f47q10 S310121.hex

 

将 S310121.hex 更改为 .hex 文件的名称以写入:

 

poYBAGKh4HWAdsIhAAMnERotEvY223.png

 

第 5 步:将“ICSP Shield”(A170421)上的 MODE(SW1)开关设置在 STBY 位置,然后按下 Arduino Uno 板上的 RESET 按钮。此时 Arduino Uno 上的 LED 应该再次闪烁。现在 68k-MBC 的 RESET 键再次起作用,如果需要,您可以尝试运行 68k-MBC 板。

 

第 6 步:断开 68k-MBC 板的电源,然后从 ICSP (J3) 连接器(68k-MBC 侧)断开电缆。

 

第 7 步:断开 Arduino Uno 与 USB 的连接。全部完成。

所有需要的 SW/FW 已经应用了我的更改,并且“ICSP Shield”板 (A170421) 的文档(原理图、BOM 等)位于文件部分。

 

注 1:Arduino Uno PIC 编程器应该能够对 400 多种不同的 PIC 设备进行编程。

 

注 2:我还为“ICSP Shield”(A170421)板制作了一个小型 PCB(18mm x 40mm)。gerber 文件位于 FILES 部分的同一个 .zip 文件中:

 

pYYBAGKh4HmAI6vYAAM83sgAEkM920.jpg

poYBAGKh4ICAbAmwAAnRIgxe_Oc781.jpg

pYYBAGKh4JqAAwEmAB0Uxi2011Q686.jpg

 

标清图像

microSD 的内容(我从现在起简称为 SD)在文件部分被压缩成一个 zip 文件。

当您更新 IOS 固件时,您也必须始终更新 SD 的内容,因为 SD 映像通常适用于给定的 IOS 版本。

您必须将其保留子目录的结构解压缩到 FAT 格式的 SD 卡中,以便各种根文件(在 .zip 中作为各种 .DSK 文件等等......)位于根目录中标清本身。

IOS 仅支持 FAT16 和 FAT32。无论如何,1GB SD 绰绰有余,因为现在很难找到 4GB SD 可能是一个不错的选择。

 

关于 SD 技术,只能使用“传统”SD(又名 SDSC,容量高达 2GB)和 SDHC 卡(2GB - 32GB)。不支持其他最新类型(因此,没有 SDXC、SDUC、...)。

让IOS运行真正需要的只是根文件夹中的所有文件。其他子目录包含源文件或示例或其他类型的内容(请参阅下一段)。

在每个子目录中都有一个可能包含重要信息/更新的 README.TXT 文件。当您第一次使用 SD 图像或更新它时,请阅读它们!

在根目录中有一个 ChangeLog.txt 文件,其中包含更改日志(与 SD 图像内容相关)。

 

如何进入“选择引导模式或系统参数”菜单:

要进入“选择启动模式或系统参数”,您必须按下 RESET 键 (SW2),松开并立即按下 USER 键 (SW1) 并保持按住直到 USER LED (LD4) 开始闪烁。

另一种方法是同时按下两个键,松开 RESET 键并按住 USER 键,直到 USER LED 开始闪烁,或者您在屏幕上看到菜单。

 

这是菜单的屏幕截图:

 

pYYBAGKh4J2AOEIEAAFnCuWs8TM668.png

 

sLoad:加载并执行从串口 1 发送的摩托罗拉 s-record 格式的可执行文件。它是唯一嵌入到 IOS 固件中的加载实用程序,因此可以在最小的硬件配置中使用,无需任何可选的 SD 或 RTC 模块;

增强型 68K Basic:加载并执行独立的 Basic 解释器;

 

Autoboot:加载并执行 SD 上的 68008 二进制文件 (AUTOBOOT.BIN)。

 

从磁盘集 加载操作系统:加载并运行安装到 SD 上当前磁盘集 中的操作系统。

 

更改磁盘集 :将当前磁盘集更改为另一个(仅当它支持多个磁盘集时)。该命令实现了 Multiboot 选择,用于在多个 OS 之间切换。注意:目前只能选择磁盘集 0。

改变串口速度:改变两个串口的速度。更改将在下次重新启动后生效;

 

Change CP/M Autoexec:在 CP/M-68K 冷启动时开启或关闭 AUTOEXEC.SUB 批处理文件的执行。

 

其余的选择是不言自明的。

 

在当前的 SD 映像上,文件 AUTOBOOT.BIN 是用 68008 程序集编写的“Hello World”演示(源代码位于 SD 上的 \src 文件夹中)。

 

自动引导模式

Autoboot 启动模式允许在 SD 的根目录上加载和执行二进制文件 (AUTOBOOT.BIN)。

从 IOS S310121-R250521 开始,Autoboot 引导模式允许为二进制可执行文件 AUTOBOOT.BIN 设置自定义加载值。

要为加载地址(开始加载二进制文件的地址)和执行地址(加载后跳转到的地址)设置自定义十六进制值,您必须在根目录上创建一个文本文件 AUTOBOOT.ADR SD 有一个文本行,其中包含由空格分隔的两个值。

即在 linux PC 上创建 AUTOBOOT.ADR 文件,您可以使用以下命令:

回声“0x400 0x404”> autoboot.adr

将加载地址设置为 0x400,执行地址设置为 0x404。

如果未找到 AUTOBOOT.ADR 文件,则将使用默认值(0x400、0x400)。

现在使用 Autoboot 启动模式时,加载地址和执行地址都将显示如下截图所示(从 startrek.c 源生成并使用 gcc 交叉编译器工具链编译的 autoboot.bin 指定所需的自定义加载autoboot.adr 文件中的参数):

 

poYBAGKh4KGAExfZAAEeOydGPXs567.png

 

波特率恢复虚拟按钮

更改串行端口的速度可能会“失去”对板的控制(即您忘记了速度或设置了错误的速度)。在这种情况下,您可以使用“虚拟按钮”将两个串行端口重置为默认速度(115200 bps),而无需终端。

要激活波特率恢复“虚拟按钮”,您必须同时按下 RESET 和 USER 键,松开 RESET 键并按住 USER 键直到 USER LED 开始闪烁(如“选择启动模式或系统参数”菜单)和保持至少 4 秒以上,直到 USER LED 开始快速闪烁。这是波特率恢复“虚拟按钮”已激活的标志。

下次重新启动时,两个串行端口都将设置为默认速度(115200 bps):

 

poYBAGKh4KSAWc6yAAE_kDLNHHI822.png

注意:从 IOS S310121-R250521 开始,波特恢复虚拟按钮的行为发生了变化。现在只能在至少一个串行端口设置为非默认 (115200) 值时触发。

 

CP/M-68K

这是用于 68000 CPU 的 CP/M-68K v1.3。

CP/M-68K 可以在任何支持的 RAM 配置下运行。我在自定义 Bios 中添加了一个例程来调整已安装 RAM (128/512/1024KB) 的大小并相应地调整 TPA(瞬态程序区,用户程序空间)大小。检测到的 RAM 量打印在登录消息中:

 

pYYBAGKh4KiAUlliAAJTJejquJI991.jpg

 

您有 16 个 8Mbytes 磁盘,从 A: 到 P:。磁盘A:是“系统”磁盘,主要包含CP/M外部命令。

其他磁盘(从 B: 到 P:)可能包含一些 SW 或为空。对于那些包含 SW 的文件,我添加了一个文件 (README.TXT),其中包含内部 SW 的名称以及需要时的其他信息。

如果您想同时使用 IOS 虚拟化的两个串行端口,请记住它们被映射为相应的 CP/M 物理设备名称,如下表所示:

 

物理设备名称 | IOS设备

-------------------------------------------------- -+------------------

CRT:, PTR:, PTP: | 串口1

TTY:, BAT:, UC1:, UR1:, UR2:, UP1:, UP2:, LPT:, UL1: | 串口 2

 

如何使用 CPMTOOLSGUI 在虚拟磁盘中添加文件

68k-MBC将A:B:C:等任意磁盘映射成SD卡上的镜像文件,文件名为:DSxNyy.DSK;

其中 x(从 0 到 9)是包含操作系统的磁盘集:

0 = CP/M-68K v1.3

yy(从 00 到 15)是磁盘(00 = A:01 = B:等)。

 

您可以从这里下载 CpmtoolsGUI(英文 Windows 版)。

在新文件夹中提取文件 CpmtoolsGUI.exe 并添加/覆盖从 SD 内的 cpmtools 文件夹中复制的文件 diskdefs。

 

-> 第 1 步

在 CpmtoolsGUI 工具的左上角窗口(Image File)中选择要添加文件的虚拟磁盘。

对于 CP/M -68K:在 CpmtoolsGUI 的左下方窗口(格式)中为任意磁盘(磁盘 0 - 15)选择“68kMBC-D0-15”。

在下图中选择 (Image File) 磁盘 DS0N00.DSK 对应于 CP/M-68K OS (x = 0) 的磁盘 A: (yy = disk = 00 = A:):

 

pYYBAGKh4KuAFkn7AAHkBqvQoWY879.jpg

 

-> 第 2 步

要将一个或多个文件添加到选定的虚拟磁盘,您只需将右上方的选择窗口指向 PC 中存储新文件的文件夹,使用右下方的选择窗口选择它们,然后按“<-P”按钮. 添加后,您将在中心窗口中看到添加的文件名(以及以前存在的其他文件)。

 

-> 第 3 步

按退出按钮退出 CpmtoolsGUI 工具。

要从虚拟磁盘中提取一个或多个文件,过程相同,只需按“-> G”按钮即可。

要删除虚拟磁盘中的文件,请在中央窗口中选择它,按鼠标右键并选择删除(您无法覆盖虚拟磁盘中的文件,但必须先将其删除)。

 

如何使用 SLOAD

当使用 sLoad 从串口加载摩托罗拉 s-record 格式的可执行程序时,请记住将每条传输线的 15/90ms 延迟设置到您正在使用的 SW 终端的串口设置中。

下图中是 TeraTerm 的设置窗口:

 

poYBAGKh4K6ADikLAAJSKctmPuM286.jpg

这是必需的,因为两个串行端口都不使用任何握手控制。

使用增强型 68K Basic 和上传 Basic 程序时也需要这样做。

 

 

SLOAD:如何使用 EASY68K (WINDOWS) 设置 68008 跨汇编器自动工具链

使用 sLoad 引导模式,可以设置一个自动化工具链,在目标(68k-MBC)上交叉组装、加载和执行 68000 汇编源程序,而无需物理接触板(如“现代”开发板),运行来自 Windows 命令行 shell 的单个批处理文件 (AL.BAT)。

要在 Windows 下设置自动化工具链,您必须首先安装 Tera Term 和 Easy68K 汇编器。

您必须使用带有 DTR 信号的 USB 串行适配器,如硬件部分所述,并且驱动程序必须已安装并“链接”到 COMx:端口(DTR 信号用于从工作站并启动 sLoad 加载和执行会话)。

在 SD 映像 zip 文件内的 \teraterm 文件夹中,有所需的文件和 README.TXT 文件中的详细说明(请记住根据您的安装修改 AL.BAT 和 Load68k.ttl 文件,如 README 中所述.TXT 文件)。

我已经在 Windows 10 和 Windows XP VM 下使用过这个工具链。

这是一个使用 hello_world_demo.X68 源文件示例的视频(在 SD 图像内的 \asm_demo 目录中):

在开始编写您的第一个程序之前,最好先看看“sLoad-S180221.X68”源文件(在 \src 目录中)并阅读开头注释中有关内存分配的详细信息文件。

请注意,当从 AL.BAT 调用宏 (Load68k.ttl) 时,Tera Term 会重置 68k-MBC。这解释了 USB 串行适配器上 DTR 信号的需要(它使用相同的“技巧”来上传 Arduino 草图)。

您必须关闭 Tera Term 窗口才能终止 AL.BAT 批处理的执行(在新运行之前)。

 

SLOAD:如何设置“DOCKERIZED”GCC + NEWLIB 交叉编译自动化工具链(Linux)

可以在这里找到一个“dockerized”准备使用 gcc + newlib(嵌入式设备的标准 C 库)工具链,并为 68k-MBC 板定制自动上传:

https://hub.docker.com/r/just4fun4just/68k-mbc

您必须在您的 linux PC 中安装 docker 和 minicom 才能使用此 docker 映像与 gcc (m68k-elf-gcc) 交叉编译并启用自动上传到 68k-MBC。

按照 68k-MBC Docker Hub 页面上的说明进行操作:

 

poYBAGKh4LGAGoFQAAFZ99zWbyk291.jpg

 

下面是著名的 Startrek 游戏的 C 版本示例:

有关详细信息,请阅读 SD 映像内 /gcc-68k/workdir 文件夹中的 README.TXT 文件。

 

注意 1:从 IOS S310121-R250521 开始,可以将 gcc 生成的 AUTOBOOT.BIN 文件与 Autoboot 引导选项一起使用(您必须将提供的 AUTOBOOT.ADR 文件复制到 SD 映像内的 /gcc-68k/workdir 文件夹中zip 文件到 SD 的根目录,以启用任何 gcc 生成的 AUTOBOOT.BIN 二进制文件的执行)。

 

注意 2:当前 SD 映像包含在 linux 下使用 gcc (m68k-elf-gcc) + newlib(为 68k-MBC 定制的标准 C 库)交叉编译器在本地构建 docker 映像所需的所有文件。有关详细信息,请参阅 SD 映像内 /gcc-68k/docker 文件夹中的 README.TXT 文件。

 

 

 

 

 

 

 

 

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !