MCPcopy Index your code
hub / github.com/anons-org/opencar

github.com/anons-org/opencar @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
638 symbols 1,306 edges 87 files 37 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OpenCar

openCar 一款仿真Riscv指令集的软件,目标是提供基础的Rv指令模拟环境,实现趋近于芯片功能的仿真环境,为异构的软件生态提供方便的调试观察功能。

人话: - 让Jvm直接运行操作系统 - 不用买开发板就可以在openCar上测试和跟踪软件在riscv上的运行情况。 - 可以在opencar上使用C语言进行操作系统开发以及裸机开发,然后移植到真机

img_1.png

openCar目标

  • 支持rv64 ( I M D F A L Zicsr) 指令集
  • 支持可视化监视和跟踪指令执行
  • 支持gdb指令调试,后期支持在可视化IDE中操作(变量、堆栈、内存、线程、断点)
  • 支持rv机器码反汇编
  • 硬件支持:
  • 串口 (ns16550A)
  • 网络
  • 硬盘
  • LCD

关于调试

opencar在执行C语言的代码时,需要观察堆栈,变量,寄存器,内存值,外设状态和数据;并且还需要模拟LCD等显示设备,由于精力有限 希望有懂javafx也喜欢虚拟技术的朋友一起开发简单的汇编编辑器和汇编调试器 联系Q184377367

想法

  • 完美运行rvos
  • 完美运行xv6
  • 完美运行linux
  • 在opencar上开发一款NES模拟器

相关配置

java

  • jdk11

编译器

  • gcc riscv64-unknown-elf-toolchain-10.2.0-2020.12.8

开发时JVM参数配置

img_2.png

其他依赖的jar包

链接:https://pan.baidu.com/s/1LkXvZFmGi5Y1RtT9HO9_7g?pwd=i3eg 提取码:i3eg 包含 - far-net-0.0.2.jar - scenic-view - riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-w64-mingw32

UI编辑器 JavaFX Scene Builder 17.0.0 自行下载

运行

  • java11
 ./java --module-path javafx-sdk-16\lib --add-modules javafx.controls,javafx.fxml -jar opencar-0.0.1-SNAPSHOT.jar
  • 如果出现 cannot access class jdk.internal.misc.Unsafe 还需要运行增加
--add-opens java.base/jdk.internal.misc=ALL-UNNAMED
-Dio.netty.tryReflectionSetAccessible=true

img.png

如何参与贡献

  • 至少会一门编程语言 java/go/c/c++/C#
  • 至少有一年项目经验
  • 不懂硬件能参与?
  • 实际上opencar除了仿真硬件部分需要硬件知识,其他很多模块只是常规的JAVA开发
  • 支持native语言能在opencar项目中做什么?
  • 可以实现硬件仿真库给java调用
  • 将支持native的语言编译为rv64平台目标文件,进行功能验证

记录更新

  • 2022/12/9
  • 优化寄存器面板,数据格进制格式化后,下次显示的格式和之前的设置一致
  • 支持寄存器设置写前断点

Extension points exported contracts — how you extend this code

IOpcodeTypes (Interface)
(no doc) [22 implementers]
src/main/java/com/far/vms/opencar/instruct/opcodeType/IOpcodeTypes.java
IBus (Interface)
(no doc) [4 implementers]
src/main/java/com/far/vms/opencar/board/IBus.java
INotifyHandler (Interface)
(no doc) [3 implementers]
src/main/java/com/far/vms/opencar/ui/event/Notify.java
IDebugQuest (Interface)
(no doc) [2 implementers]
src/main/java/com/far/vms/opencar/debugger/IDebugQuest.java
IDebuger (Interface)
(no doc) [2 implementers]
src/main/java/com/far/vms/opencar/debugger/IDebuger.java

Core symbols most depended-on inside this repo

get
called by 32
src/main/java/com/far/vms/opencar/instruct/BinCode.java
getRegVal
called by 23
src/main/java/com/far/vms/opencar/board/Register.java
add
called by 22
src/main/java/com/far/vms/opencar/ui/event/Notify.java
getBuild
called by 21
src/main/java/com/far/vms/opencar/ui/entity/SettingDatas.java
getDebugger
called by 17
src/main/java/com/far/vms/opencar/debugger/IDebugQuest.java
formmatData
called by 16
src/main/java/com/far/vms/opencar/ui/main/RightTablePanle/RightTablePanle.java
getRegister
called by 15
src/main/java/com/far/vms/opencar/board/CpuBase.java
getSettingDatas
called by 13
src/main/java/com/far/vms/opencar/OpenCarWindos.java

Shape

Method 530
Class 101
Interface 7

Languages

Java100%

Modules by API surface

src/main/java/com/far/vms/opencar/OpenCarWindos.java39 symbols
src/main/java/com/far/vms/opencar/debugger/Debugger.java32 symbols
src/main/java/com/far/vms/opencar/ui/event/Notify.java23 symbols
src/main/java/com/far/vms/opencar/ui/main/RightTablePanle/RightTablePanle.java22 symbols
src/main/java/com/far/vms/opencar/protocol/debug/mode/QuestRegInfo.java17 symbols
src/main/java/com/far/vms/opencar/board/Register.java16 symbols
src/main/java/com/far/vms/opencar/ui/entity/SettingDatas.java15 symbols
src/main/java/com/far/vms/opencar/board/CpuBase.java15 symbols
src/main/java/com/far/vms/opencar/ui/main/RightTablePanle/RegData.java14 symbols
src/main/java/com/far/vms/opencar/ui/main/RightTablePanle/TabMemoryInfo.java13 symbols
src/main/java/com/far/vms/opencar/debugger/server/SessionManager.java13 symbols
src/main/java/com/far/vms/opencar/board/Dram.java13 symbols

For agents

$ claude mcp add opencar \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact