J2打开处理器:使用Superh ISA的开源处理器

2021-04-20 03:05:54

介绍如何快速入门,J-Core是一个清洁室开源处理器和SoC设计,使用VHDL和可用的皇室和专利在BSD许可证下实施。

此页面的其余部分介绍如何编译和安装A"比特流" Fileto以廉价(约50美元)FPGaboard实现此处理器,然后如何为该板构建Linux并将其启动到Shell提示符。

获得FPGA板(最便宜的选项' ve写了一个Build目标是Numato MIMAS V2)。

引导连接到串行终端(也通过USB)到Linux shell提示符。

Superh Processoris在1990年代后期开发了日本设计'作为一种二次结合混合RISC设计,编译器更容易生成良好的RISC芯片的GoodCode,并且它通过使用Microcoding使用固定长度16位指令(用32位寄存器大小和地址空间)来重新替换前面的CISC设计的代码密度。允许允许执行多个时钟周期的指令。 (早期的Purerisc设计使用每个时钟周期的一个指令即使在该服务不用而是使代码更大并排气编码空间。)

Hitachi开发了4代Superh.sh2在Sega Saturn游戏控制台中向美国提供给美国,Andsh4为Sega Dreamcast提供了动力。它们也广泛应用于美国宇宙市市场的领域,例如日本自动化行业。

但在Superh&#39的高度期间,1997年的亚洲经济危机导致日立收紧腰带,最终与三菱散发出来的微处理器分区,一个新的CompanyCalled"瑞萨"这家新公司并没有继承设计级别的日间工程师,renesas'在Superh Dodn&#39上的进一步发展尝试了甚至对客户提供效果的效果。最终瑞萨搬到了它完全内部开发的新设计,并重视他们的级别......直到专利到期。

然后Jeff Dionne(漫步到Linux Long Endrom的硬件工程师创建uClinux项目回到1990' s,当他搬到日本时,将其移开并在2003年返回托盘软件)创建了一个与TheSuperh指令集兼容的新的处理器设计,公开发布2015年BSDLiense下的第一个版本。这种新设计称为J-Core而不是Superh,因为TheTradeMarks Haven'到期。

第一j核生成j2与SH2指令集兼容,这意味着Linux和GCC,并且只需要轻微调整到支持该处理器。目前的Linux,GCC,Binutils,Andmusl-libc版本支持框中的j-core。 (QEMU支持SH4,后向后兼容SH2 USEMERSPACE,但需要其OwnKernel。)

J2添加了两个Backported SH3桶形换档指令(SCH和SHLD)以提高编译器效率,以及新的CMPXCHG(Mnemonic Cas.L RM,RN,@ R0 Opcode 0010-NNNN-MMMM-0011,用于基于IBM 360指令) Futexs和SMP。支持Someis已经在Vanilla Linux和GCC / Binutils上游(Linux" make arch = sh J2_defconfig"和GCC" ./ configure - target = sh2eb-linux-muslfdpic --with-cpu = mj2& #34;)。

2015年,J-Core开发人员在Linux Consp日本提供了关于它的介绍性演示文稿,这些介绍了Linux每周新闻。2016年开发人员在ELC(幻灯片,视频)上提供了J-Core Design演练演示。

J2是一个Nommu处理器,因为SH2(SEGA Saturngame控制台中的处理器)是,最后的SH2专利于2014年10月到期。SH4处理器(Dreamcast)有一个MMU,但最后的SH4专利Don' Texire至2016年。(更新:我们可以使用更简单的MMU DesignwhiCh将运行相同的用户佩纳软件,但需要内核和qemuupdates,我们' ll在准备好时提交上游。)

j-core' s的设计很小,简单。作为开源硬件,它可以廉价(每个处理器约3美分),并在NSaBackDoors或vendorbackdoors或可利用的固件错误中审核,并且允许在存储设备等存储设备和USB控制器中重新定位的内置额外处理器的系统内置的系统。

理论是你闪光A"比特流"文件进入FPGA板' s onboardspi闪存,配置FPGA以类似于J2处理器。该itbitstream包括一个小引导加载程序,它尝试加载名为" vmlinux&#34的文件;从SD卡,使用串行控制台提供带有root filesystemin initramf的Linux内核。

为此,您需要一个FPGA板,microSD卡,比特流,VMLinuxFile,带有捆绑的InitRamfs,SDCard编写器和带AUSB Connection的计算机(编写SPI闪存并连接到串行控制台;我们使用了Linux笔记本电脑但是Mac工作也是如此)。

Numato:最便宜的可用FPGA开发板(50美元)J2 Build Systemcurly Targets是Numato MIMAS V2(也可以在Amazon上提供)。包含一个Xlinux"斯巴达6" LX9 FPGA可以在50MHz,64兆的SDRAM,USB2 MINI-B和Micro-SD卡插槽中运行J2。

您可能还需要USB Mini-B电缆(种类PlayStationControllers使用,而不是种类的Android手机使用),USB MicroSdcard适配器和空白的microSD卡。 NuMato有一个内置USB SerialConverer,所以它的"串口"已经是USB。 (这个USB端口也可以发电板,NINATO提供了一个Python脚本,通过它写入车载SPI闪存的Python脚本。Alas It'它也在19200年的BPS(有那里是115200到115200的' Numato只提供一个更新它的Windows工具。)

Numato板的主要缺点(慢串行端口除外)是它没有以太网,它可以' t do smp。 (具有缓存禁用的处理器的单个实例占LX9&#39的60%; Scaspacity。)以便在乌龟板上工作。

(J-Core'早期开发是在Avnetmicroboard上完成的,但更昂贵,并且没有内置的SDCardReader,所以需要一个加载电路板来启动Linux。您可以找到Moreabout该板在这里。如果你想搬到J-Coreto其他FPGA板,请在邮件列表中询问我们' LL描述了更多文档的方式。)

开放硬件的点是您可以从VHDL源代码中构建一个比特流,但是对于您的初始烟雾,您可能会抓住一个已知的工作编程并首先安装。

安装SH2裸机编译器(以构建ROM Bootloader)。它不需要特定的安装位置,如果您愿意,您可以提取Itoyour Home目录。

输入Xilinx上下文并添加Cross-Compiler-Sh2elf / Bin目录Toyour $ Path So Sh2elf-CC和Friend可用,以及CD进入BitStreamSource目录。

用:sed -i' s / sh2-elf- / sh2elf-/ g&#39修复工具链前缀; $(grep -rl sh2-elf-。)[todo:check in]

您的比特流应在输出/ * / mimas_v2.bin中结束。 [todo:为什么有关目录?那个' s不是Package Builds Work的工作,在重建时都有输出,overwriteOutput。并使干净不删除这一点?真的?]

裸机编译器与SH2LINIX编译器不同的原因(除了不包含C库之外)是不同的功能。由于ROM引导加载程序(处理器启动并加载SDCard的vmlinux runswhen)的低级别代码是编写程序集合程序,因此它手动指的是前缀函数名称。虽然有一个命令行选项要更改前缀,但编译器包含必须匹配代码的调用约定的LibrationCode(例如libgcc.a)。

将电路板(VGA和USB端口之间)上的黑色开关翻转向USB侧。这是" flash"位置。

使用USB MINI-B电缆将电路板连接到Linux盒子。 (TheKind PlayStation Contormers使用,而不是Android手机使用。)

上面假定Numato串口显示为/ dev / ttyacm0,几乎总是如此。

注意:Ubuntu 14.04决定插入2014年后电脑的任何串行设备都必须是调制解调器(20世纪返回的Telowoneland线路的硬件),并在任何新串行设备的命令下都有一个Hotplug守护程序Sendrandom困惑Numatofirmware加载器。如果您在大型调制解调器复兴中不熟悉,则需要在此处获取sudo service modemmanager stop.se for详情。

Nomato' S串行端口实现仅连接数据发送和接收,这意味着它不提供硬件流量控制。这使得期望RTS和CTS(更不用说DTR或DSR)。我们可以使用sttytool来告诉Linux不关心,然后使用一个简单的终端程序,' t试图让这个本身摆弄。

由于/ dev / ttyacm0设备每次拔掉和卸下USB电缆(那么方便地电源循环电路板),因此我们可以将这两个命令组合到CommandHistory中的单个命令行中。 (所以在电源循环后,光标向上并按串行终端。)

即使没有SDCARD上的VMLinux映像(或没有SDCARD),也应该将其引导加载程序从SMITFLASH运行,该处理器" CPU测试通过"并宣布在抱怨它可以从Thesdcard加载vmlinux之前修订和建立日期。如果它没有做到这一点,你可能忘了把闪光/ runswitch放回正确的位置。 (你必须在拍摄的循环开始。)

再次,您可以构建Linux源,但是为了我们的第一个进入它,Graba Vmlinux映像从aboriginallinux' s sh2eb target。 (" Linux"系统 - Imagetarballs中的文件是为运行J2的Numato板而构建的。)

将SDCard粘在板中,重新启动,重新连接串行控制台,并在提示符(用户root,password admin)上登录。恭喜,在J2上有一个Linux shell提示。

如果你想用手建立这个,vanilla 4.7内核应该支持这项板,富有的菲尔克斯' Smusl-libc Toolchain。您' LL需要从initramfs链接到内核映像的initramfs引导,直到我们更新内核sdcard驱动程序。