Skip to content

Latest commit

 

History

History
988 lines (846 loc) · 43.2 KB

File metadata and controls

988 lines (846 loc) · 43.2 KB

6502

Work

https://github.com/weimingtom/wmt_cpld_study

CPU DIY套件TD4 自己动手制作CPU套件(PCB及所有元器件)

TD4, 创元素

  • https://vanya.jp.net/td4/
  • (from taobao, 创元素)
    现在,你看此仿真程序运行图,所需要知道的事情有以下几点:
    红色线代表此时该线上电平为高(5V),蓝色代表电平为低(即0V)
    整个系统由CLOCK脉冲驱动进行,RESET低电平有效,即RESET被拉低后,系统里所有数据清零重启
    如果你已经学过数字电路基础,那么你应该还可以尝试记住并理解以下几点,如果不能或全部理解也没关系,可以全部学完,回来再看看
    四个74HC161分别为寄存器A、B、C、D,分别可用于存储4个比特的数据
    第三个寄存器C的输出,用于输出4位电平,驱动LED
    第四个寄存器D的输出,用作指令的译码,即作为地址总线的A0-A3(Address0-Address3)
    两个74HC153组成了一个4位四路数据选择器,用于选择哪一路的4位数据给后续的四位全加器做加数A。 其中,第三路的4位数据来源于4位拨码开关(即输入),第四路不连接被弃用。
    74HC283是一个四路全加器,它的第一个加数来源于两个74HC153的数据选择通道,
    第二个加数来源于指令数据的低4位(即D3-D0),这种被包含在指令中参与运算的数据又叫立即数immediate。
    全加器的求和结果将输出给4位寄存器A、B、C、D均可,选择其中哪一个寄存器记忆结果,
    完全由每个寄存器输入端的LOAD(~LD)信号决定,请注意LOAD是低电平有效,
    这是后续指令译码结果中控制总线的最重要一部分。 全加器有溢出位输出Carry,但是无法记忆上一次的计算结果是否溢出,
    故需要一个D触发器作为溢出标记位记住上一次的求和结果是否溢出,并送给译码器指令。
    图上所有用门电路表示的组合电路,是一个完整的指令解码器,它由取得指令的高4位(即D7-D4)和
    溢出标记位一起作为译码器的输入,由控制四个寄存器的加载(LD)和两个数据选择器的A、B作为输出,
    这是典型的控制总线。
  • Instruction Set
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    MOV A, im 0011 xxxx
    MOV B, im 0111 xxxx
    MOV A, B 0001 0000
    MOV B, A 0100 0000
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ADD A, im 0000 xxxx
    ADD B, im 0101 xxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    IN A, 0010 0000
    IN B, 0110 0000
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    OUT im 1011 xxxx
    OUT B 1001 0000
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    JMP im 1111 xxxx
    JNC im 1110 xxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

CPU自制入门

search baidupan, CPU自制入门
CPU自作入門-HDLによる論理設計・基板製作・プログラミング
https://www.amazon.co.jp/CPU自作入門-HDLによる論理設計・基板製作・プログラミング-水頭-一壽/dp/4774153389
https://gihyo.jp/book/2012/978-4-7741-5338-4/support#supportDownload
https://github.com/sabottenda/llvm-sample-target

自己动手写CPU

https://github.com/Z-Y00/Examples-in-book-write-your-own-cpu
自己动手写处理器之第一阶段(1)——计算机的简单模型、架构、指令集
https://blog.csdn.net/leishangwen/article/details/37506105

OpenTendo, RP2A03

https://github.com/Redherring32/OpenTendo

mc68020

NES on FPGA

http://pgate1.at-ninja.jp/NES_on_FPGA/index.html

TD4 FPGA / Verilog

td4cpu自制入门, 创元素科技

知乎讨论与原理教程:
https://zhuanlan.zhihu.com/p/381501879
套件焊接视频
https://www.bilibili.com/video/BV1V341127cf/
GitHub文档:
https://github.com/johnsonwust/TD4-4BIT-CPU

FreeARM7

https://github.com/Durant35/Cache-based-on-FreeARM7
兼容arm9的软核处理器设计:基于fpga(fpga上实现兼容arm9指令集处理器设计的书)
https://github.com/chsasank/ARM7
优秀的 Verilog/FPGA开源项目介绍(二十七)-小型CPU
https://new.qq.com/omn/20220620/20220620A01I0X00.html

CPU设计实践教程——从数字电路到计算机组成, minisys-1

数字逻辑与组成原理实践教程, cpu31

  • search baidupan, 数字逻辑与组成原理实践教程
  • MIPS CPU 31
  • search baidupan, cpu31_v4_e10_success.rar

Digilent, 数字逻辑设计

自己设计制作CPU与单片机

  • PMC110
  • PMC362

MIPS, Digital Design and Computer Architecture

schoolMIPS, MIPSfpga

apple2fpga, DE2

ben eater

搭建你的数字积木——数字电路与逻辑设计(Verilog HDL&Vivado版)

XUP官方指定的入门级FPGA教学板卡-Basys3

Risc-v, see digilentchina.taobao.com, Cmod A7-15T

单周期mips, 搭建你的数字积木——数字电路与逻辑设计

OpenHW, XUP (Xilinx University Program)

openhwgroup, core-v

vivado软核microblaze

  • 用Verilog设计FPGA样机实例解析 Xilinx Spartan-3版

basys3

DE0 book

  • 数字电路与EDA实验

DE2-115 book

  • FPGA与SOPC设计教程--DE2-115实践
  • DE2-115 实战宝典

EP4CE10 book

  • FPGA Verilog开发实战指南:基于Intel Cyclone IV(基础篇)

重庆大学, 单周期(single cycle) mips

74-gate-computer

picorv32

在 Picorv32 / 蜂鸟 E203 软核上运行 RT-Thread

mister, de10-nano

MCU200T开发板

开发板介绍
https://www.nucleisys.com/developboard.php#mcu200t
教学视频
https://www.rvmcu.com/video.html#cateid43
蜂鸟HBirdv2 SoC
https://github.com/riscv-mcu/e203_hbirdv2
蜂鸟HBird SDK
https://github.com/riscv-mcu/hbird-sdk
蜂鸟demo
https://github.com/Nuclei-Software/nuclei-board-labs/tree/master/e203_hbirdv2/common
https://github.com/Nuclei-Software/nuclei-board-labs/tree/master/e203_hbirdv2/mcu200t/pwm_led
蜂鸟社区讨论
https://www.rvmcu.com/community-show-id-2.html

6502, VHDL应用开发技术与工程实践

《VHDL应用开发技术与工程实践》一书中提及的6502代码片段(主要是2个vhd文件,我把书中中文换回去原文注释)
(1)8位总线控制器,锁存data_in:free6502.vhd的The input registers注释
(2)8位总线控制器,data_out(dout_op由微内码模块提供):free6502.vhd的Data output logic注释
(3)sync输出脚:free6502.vhd的The sync output注释
(4)alu算术逻辑(运算)单元:free6502.vhd的The ALU itself This is purely combinatorial logic注释
(5)alu运算单元摘录(微内码模块): microcode.vhd的ALU_OP_rom_arch模块
(6)用于波形仿真调试的内部寄存器和内部标志寄存器:free6502.vhd的core_65020_debug模块。
其中书中微内码microcode,现在一般称为微码或者微指令,用于CISC中把指令拆成更简单的指令。
6502共有56条指令(汇编指令符),13种寻址,实际有151种指令码。

stepfpga

FPGA开发板

(1)旧教科书里的EPM7128S,大约128
(2)微雪EPM1270, 常见,大约1k,大概100多
(3)VHDL应用开发技术与工程实践的EP20K10E-1(6502架构),大约2k
(4)CPU自制入门的XC3S250E, 不常见,大约5k,大概100多
(5)正点原子和野火的EP4CE10, 常见,大约10k,大概600多
(6)可运行NES的DE0,大约15k
(7)可运行NES的DE1,大约20k
(8)可运行MIPS的DE2,不常见,大约35k,大概1000以上
(9)FPGA入门指南的DE10-lite,两款不常见,大约45k到50k,大概1000以上
(10)basys2, XC3S100E, 2160LUs
我发现basys2就是XC3S100E,就是我上次说的那本《CPU自制入门》
里面提到的那个XC3S250E同系列的。。。可惜这太弱了,
本来XC3S250E就很勉强,100E就更弱了,似乎没有什么收藏的必要
(11)basys3
https://zhuanlan.zhihu.com/p/339014148
https://item.taobao.com/item.htm?id=536711168514
从Spartan®-3E系列芯片改为Artix-7级别的芯片,
Basys 3在硬件性能上取得了卓越的提升。
新的Artix FPGA逻辑单元数量翻了15倍(从2,160到33,280),
并且从倍增器更新到了真正的DSP切片。RAM的容量也增加了超过26倍。

RetroEmbedded/UniversalPPU

https://github.com/RetroEmbedded/UniversalPPU

Redherring32/TinyTendo

https://github.com/Redherring32/TinyTendo

MCL65

https://github.com/MicroCoreLabs/Projects
经典重现!基于Spartan-7/3 FPGA实现MOS Technology 6502克隆版
https://www.sohu.com/a/205787929_292853

free6502 EP4CE10 emu work

  • search baidupan, free6502_v4_success.rar, free6502_v4_success
  • 如果需要模拟6502(例如运行free6502软核),需要知道一些VHDL语法(知道怎么传递ROM数据进去软核中运行代码),
    并且了解6502芯片(例如W65C02)的针脚和6502的汇编生成ROM内容的方法。首先说6502针脚,6502无法像现代的单片机
    那样控制针脚的电平,即GPIO,所以很多例子都是用6522或者锁存器去保存D7到D0的数据。简单来说就是,
    6502软核没有ROM、RAM和外设GPIO,而是提供单一地址空间的16个地址脚(RAM和ROM复用)
    和8个数据脚(ROM输入、RAM输入、RAM输出、外设或协处理器输出复用),
    因此RAM和ROM处于相同的地址空间,ROM的起始地址我这里假设为0x1000
  • 关于6502的第二个问题是如何执行汇编后的二进制(我这里假设起始地址是0x1000)。你可能会疑惑,
    6502如果跳到0x0地址,那岂不是运行不了?倘若6502可以执行0地址的指令,那么遇到jmp怎么办
    (因为jmp会跳到0x1000以后的地址)。我想了很久恍然大悟,觉得这里设计得太绝妙了,
    因为6502会由于ROM地址线的高4位缺失,导致jmp 0x1000溢出,所以jmp 0x1000和jmp 0x0是等效的,
    所以无论是bootloader跳转还是jmp跳转,都会映射到0x0这个基地址上(12位地址值溢出)。
    同理,当设计ROM时,只需要把汇编后的二进制写入到0x0基地址上就可以了,
    不需要写到0x1000上(自动溢出为0)
  • 总体来说free6502有一定的研究价值,不过也有人不用这份代码,而是用verilog重新实现
    (毕竟非常古老了),而且这份代码有一些问题:(1)有没实现的功能
    (2)微码好像是代码生成的(3)缺乏文档说明(4)需要VHDL基础才能自己拼凑出可运行的VHDL代码
    (虽然有一个测试代码)(5)它提供的测试代码跟W65C02的玩法不同,
    W65C02是通过外接协处理器或者锁存器去点灯,所以需要自己手写VHDL代码去实现类似锁存器的功能
    (保存特定内存地址的写入数据),才能模拟出点灯的效果(有些书的模拟做法则是观察内部寄存器A
    的值而非内存的值)
  • http://www.pldworld.com/_hdl/4/_ip/Free6502/www/opcodes.htm
  • www.pldworld.com/_hdl/4/_ip/Free6502/www/
  • 6502 & 6522 Minimal Computer (with Arduino MEGA) Part 2 : 4 Steps - Instructables
  • https://www.instructables.com/6502-6522-Minimal-Computer-With-Arduino-MEGA/
  • https://www.instructables.com/6502-Minimal-Computer-with-Arduino-MEGA/
  • https://github.com/drdavros/6502

StepFPGA M10, Mustang, FP51-1T

TD4 EP4CE10 emu work

  • search baidupan, td4verilog_v1.rar
  • search baidupan, td4vhdl_v1.rar

51单片机的FPGA实现, light52

https://github.com/jaruiz/light52
https://www.bilibili.com/video/BV1KJ411C7QX/
https://github.com/cjhonlyone/light52-ise
https://github.com/cjhonlyone/picorv32_Xilinx

TD4的汇编方法:

(1)生成二进制的方法:在网页上vanya.jp.net/td4/,
只支持单指令汇编。另一个命令行版本:
wuxx/TD4-4BIT-CPU/software/td4as.exe。
(2)示例代码:(TD-4GP02A)vanya.jp.net/td4/,
或者参考wuxx/TD4-4BIT-CPU/software/test/test_0_output.s

6502的汇编方法:

(1)生成二进制的方法:用cc65,方法是ca65 test.asm和ld65 -t none test.o
(如果需要列表文件,可能要da65反汇编或者在ca65中生成,但可能缺少跳转地址)。
或者用dasm,可能会在头部两字节添加偏移,需要自己去掉,或者生成list文件。
注意cc65和dasm的伪指令可能不兼容
(2)示例代码:参考
www.instructables.com/6502-6522-Minimal-Computer-With-Arduino-MEGA
和它的前篇(可以把jmp后面的常量改成标号)。
或者参考free6502的测试汇编

51单片机(8051)的汇编方法:

(1)生成二进制的方法:用Keil C51 uvision2(或者keil 4),A51和L51,待考;
或者用as31和sdcc(在www.pjrc.com/tech/8051),
方法是as31 -l -Fbin test.asm。
或者sdas8051 -l test.asm(需要改成0x表示十六进制常量,但输出二进制可能不正确)。
asx8051似乎编译失败
(2)示例代码:stc-isp有IO的汇编示例(不过太长了);
或者找《8051 单片机P1口实验》MOV P1;
或者找这个《Blinking LED using 8051》
用CPL P1.0取反(只支持P1的位取反,似乎不支持整个P1字节取反):
www.circuitstoday.com/blinking-led-using-8051

mips的汇编方法(准确说是mips32el):

(1)生成二进制的方法:用mars生成汇编二进制(参数参考schoolmips);
或者用gcc工具链Codescape生成,例如:
mips-img-elf-as.exe -O0 -EL test.s
mips-img-elf-objdump -S a.out
mips-img-elf-objcopy -O binary -j .text a.out a.bin
(2)示例代码:流水灯代码待考;参考mars的例子(只有一个);
参考schoolmips的例子(汇编或者用GCC生成的汇编)

mipsfpga sword

f32c, risc-v or mips implementation

  • https://github.com/f32c/f32c
  • RISC-V助力SWORD生态系统演进
  • 近日,基于RISC-V指令集的软核CPU在SWORD4.0上顺利移植,给予用户对SWORD4.0的新体验,用户甚至可以通过Arduino IDE开发RISC-V应用。
    在SWORD4.0上移植的是基于RISC-V指令集的F32C开源CPU。CPU通过配置既可以支持RISC-V指令集也可以支持MIPS指令集。
    用户通过对Arduino IDE简单升级,可以使Arduino IDE支持SWORD4.0的RISC-V编译工作。图形化编程环境和大量Arduino范例都有利于用户进行应用开发。
  • https://www.sohu.com/a/272536883_652907

mrisc32

SuperH, J-core

OpenMIPS, 自己动手写CPU

PicoMIPS

nand2tetris, Building a 16-bit CPU from Scratch on FPGA (nand2tetris)

(IMP, TODO) nand2tetris-fpga, CPU add uart, ili9341, sound functions

https://gitlab.com/x653/nand2tetris-fpga

基于Basys2的八位CPU的设计与FPGA实现

https://blog.csdn.net/LionelZhao/article/details/125889882

mega65

从零开始的RISC-V模拟器开发·第一季·2021春季

https://www.bilibili.com/video/av375079578
https://github.com/plctlab/writing-your-first-riscv-simulator

JsSpim

https://github.com/ShawnZhong/JsSpim

Spim, QtSpim

http://spimsimulator.sourceforge.net/

OpenRisc, Linux, or1200

CPU源代码分析与芯片设计及Linux移植
https://github.com/openrisc/or1200

深入理解BootLoader

  • search baidupan, 深入理解BootLoader
  • pcDuino Nano, 流水灯, 全志A20, Cortex-A7
  • u-boot
  • arm gcc asm

MiniMIPS32

mips in cii (C Interfaces and Implementaions)

xv6-mips

https://github.com/nullpo-head/xv6-mips

最短ARM汇编, 使用ARMCC

  • search baidupan, work_arm_hello_lpc2138_v2.rar

picomips

https://github.com/karthik-0398/picoMIPS
search csdn

龙芯教育 / CPU设计实战, MIPS, LoongsonArch

8051软核处理器设计实战

手把手教你在FPGA上运行一个ARM Cortex-M3软核

KX9016

MC8051

OC8051

ghidra, mips decompile

cygwinmipselfgcc

xv6 windows build

  • https://github.com/mirokuuno/xv6-windows
  • https://github.com/alessandromrc/i686-elf-tools/blob/main/i686-elf-tools.sh
  • frippery.org/busybox/
  • 我测试过,可以在mingw上编译运行xv6。实际上我看到gh上也有人用mingw编译运行xv6,
  • mirokuuno/xv6-windows,不过方法可能跟我有点不一样。我的做法是用一个gh上的
  • 已经编译好的elf交叉工具链去编译(alessandromrc/i686-elf-tools),
  • 修改Makefile即可(类似xv6的macos编译方法)。不过其他还需要修改一些地方,
  • 例如usertests.c中的一处指针要转换为volatile char*,mkfs.c需要替换bzero和
  • index,Makefile需要把dd换成busybox dd,并且在msys中放置一个busybox的
  • windows版(我用的是busybox-w32)

(TODO) mips logisim, cs3410.jar

  • edu.cornell.cs3410
  • 计算机组成原理实践教程——从逻辑门到CPU
  • 控制器设计:MIPS单周期CPU_耳东哇的博客-CSDN博客_单周期mips
  • https://blog.csdn.net/weixin_43930851/article/details/106750718
  • https://gitee.com/ForthewinQ/MIPS-CPU
  • Logisim2.7.1下载并列出电路真值表、卡诺图。 - 腾讯云开发者社区-腾讯云
  • https://cloud.tencent.com/developer/article/2012197
  • 我看到有些课本mips书也吐槽MARS的内存布局,默认不是从0开始算。
    《计算机组成原理实践教程——从逻辑门到CPU》的解释是,因为MARS是带有MMU部件的虚存,
    而且不是哈佛体系。而通常用FPGA实现的MIPS软核是直接访问物理内存,
    而且是哈佛体系,所以这两个很难兼容,需要手工改MARS的虚存地址模式,让data段从0开始计算

MIPSsim

ARM asm

  • 《ARM嵌入式应用开发技术白金手册》
  • ads1.2
  • ads2.2

WinDLX

ridecore, risc-v

https://github.com/ridecore/ridecore

Verilog vs VHDL: Explain by Examples

https://www.fpga4student.com/2017/08/verilog-vs-vhdl-explain-by-example.html

apple1_on_anlogic

https://gitee.com/pan-xingyu/apple1_on_anlogic
https://github.com/alangarf/apple-one
https://www.bilibili.com/video/BV1db4y1p7jD/

开放式实验CPU设计

  • search baidupan, Debugcontroller.exe, by清华大学计算机系
  • 计算机组成原理 8位实验CPU设计与实现

计算机组成原理实践教程——从逻辑门到CPU

CDP1802

rosco_m68k

https://github.com/rosco-m68k/rosco_m68k
Soldering Tutorial for beginners: Five Easy Steps
https://rosco-m68k.com/docs/getting-started
https://github.com/rosco-m68k/uCLinux-rosco

68 Katy, m68k

m68k vhdl

Cortex-M0 开源

LPC2103

m68k asm and emulator, easy68k

loongnix, 龙芯

http://www.loongnix.cn/zh/toolchain/GNU/

user mode qemu

mips, 龙芯, 针对参加龙芯杯的若干建议, 可参考书籍

NaiveMIPS

labeled-RISC-V

xilfpga linux, mipsfpga-plus linux

从目前来看,似乎只有qemu是最简单的运行mips linux的方法。我查过,
其实确实有一段时间xilfpga(就是常说的mipsfpga,不过这个开源项目早已经噶了)
加入到linux源码树中,大概是在4.4到4.14之间,然后消失了(可能跑到别的地方或者被移除)。
另外mipsfpga-plus也有关于加载linux内核的描述,当然开发板太贵不太适合搞来试验

mips 龙芯1c文档

risc-v xv6, fpga

cemu, mips and risc-v

mipssim

jaty68k

  • see wmt_uclinux_study

mips, Minisys-OS

MIPSfpga-Boot

u-boot mips

nuttx, rt-thread mips

gaia xv6, mips xv6, search memfs in Makefile, crosstool-ng

loongson

(IMP) Java mips simulator, can load vmlinux-3.2.0-4-4kc-malta

gxemul-0.4.3.godson.tar.gz

FreeRTOS for MIPS

龙芯baremetal

mips, mipsfpga toolchain

mips工具链

  • 找到sourcery的mips工具链,可以用于后续的研究。目前手头上有这4种mips工具链,
  • sourcery的sde(只支持elf),
  • codescape的mti(支持elf和linux),
  • ubuntu的gnu(似乎只支持linux),
  • 还有buildroot版的交叉工具链(支持elf和linux)。
  • 当然还有开发板的工具链可以用,例如从龙芯或者其他mipsel开发板的工具链那里拿来用

mips delay slot

  • 对比arm和mips,实际上mips有一些诟病的地方,mips似乎有一定的指令约束,叫delay slot,如果不正确的话会执行不下去。
  • 另外mips的版本可能会比arm多,导致工具链臃肿,例如最常见的R3000和4kC,我没搞明白怎么区分(可能类似arm9和cortex的关系)。
  • 但mips有个好处(也是坏处),它比arm要老,而且最常用于科研
  • https://blog.csdn.net/babyfans/article/details/6336476

mips

mips gcc, litebsd

virtualmips, can load vmlinux, for adm5120, pavo (JZ4740)

naivemips

cutecpu

龙芯 (in mips) pmon qemu

loongson, 龙芯

mips, nscscc

mips r3000 os

os161, sys161, mips r2000/r3000, for mipseb, idt30xx

ASFRV32I, iverilog, riscv64-unknown-elf-gcc

qemu launch android root system and dalvik

我以前说猜测可以把内核和根文件系统分开来编译,或者用别人的根文件系统。
这个猜测延展一下,是不是可以用qemu和自己编译的vmlinux,去加载android的根文件系统?
好像有人真的尝试过,似乎是可以的,不过似乎需要修改内核配置。
我找到两篇:《dalvik segfault on embedded linux》
https://stackoverflow.com/questions/16918838/dalvik-segfault-on-embedded-linux
和《用buildroot qemu 运行 Android 系统》
https://blog.csdn.net/span76/article/details/32316499

#
# Android
#
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ASHMEM=y
CONFIG_ANDROID_LOGGER=y
CONFIG_ANDROID_TIMED_OUTPUT=y
# CONFIG_ANDROID_TIMED_GPIO is not set
CONFIG_ANDROID_LOW_MEMORY_KILLER=y
CONFIG_ANDROID_INTF_ALARM_DEV=y
$ wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$ tar xzvf qemu-2.0.0.tar.bz2
$ mkdir ./qemu-2.0.0/bin
$ cd ./qemu-2.0.0/bin/
$ ../configure --target-list=arm-softmmu
$ make

(system 模式,是模拟整个硬件了,user 模式是只模拟arm cpu, sys call 转变为对 host linux-x86的调用)

准备build root, build root 自动下载需要文件编译需要的 kernel, rootfs
$ wget http://buildroot.uclibc.org/downloads/buildroot-2014.05.tar.bz2
$ tar xjvf buildroot-2014.05.tar.bz2
$ cd buildroot-2014.05/
$ make qemu_arm_vexpress_defconfig
$ make menuconfig
Toolchain -> C library -> eglibc
Toolchain -> Enable C++ support
System configuration -> Root filesystem overlay directories -> <path to your alien rootfs dir, e.g. /home/payne/qemu/rootfs_my/>
Target packages -> Show packages that are also provided by busybox
Target packages -> Debugging, profiling and benchmark -> gdb -> full debugger
Target packages -> Networking applications -> dhcpcd
Target packages -> Shell and utilities -> bash
Filesystem images -> cpio the root filesystem
Filesystem images -> tar the root filesystem
$ export BR2_JLEVEL=4
$ make linux-menuconfig
Device Drivers -> (*) Staging drivers -> (*) Android -> (*) Android Binder IPC Driver
File systems -> (*) FUSE (Filesystem in Userspace) support
$ make

ucsim

mini-riscv-os