久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 無第三方庫不到5000行C語言 risc-v虛擬機juicevm [打印本頁]

作者: juicerv    時間: 2021-6-1 15:57
標題: 無第三方庫不到5000行C語言 risc-v虛擬機juicevm
本帖最后由 juicerv 于 2021-6-1 16:09 編輯



簡介
https://github.com/juiceRv/JuiceVm
juice vm誕生于2020年,以實現可運行最新kernel主線的RISC-V最小虛擬機為目標而誕生的,設計之初秉承著可以在 RAM 只有 百KB 級別的平臺上運行,不引入除了c99標準外的第三方依賴。

juice vm按照gcc所支持的C99標準編寫,無第三方庫依賴,淺顯易懂,且具有方便移植的特性(可快速移植到多種主流 MCU 及支持c環境的所有平臺上)。

juice vm去掉注釋后展開所有的宏的代碼行數僅12523行,僅36104字,足夠的小巧。

Juice Vm的優點


Juice Vm的組成


Juice Vm 代碼統計


Juice Vm的地址空間分布

虛擬機版本號起始地址大小(字節)寄存器名稱說明所用宏名稱
c21682d30x800000000x12C00000SRAM內部存儲RV_CPU_SIM_RAM_START_ADDR RV_CPU_SIM_RAM_SIZE
c21682d30x92C000000x1UART_WRITEuart發送寄存器pdev_uart0_write_addr
c21682d30x92C000010x1UART_READuart接收寄存器pdev_uart0_read_addr
c21682d30x92C000020x1UART_STATEuart狀態寄存器pdev_uart0_state_addr pdev_uart0_free_state pdev_uart0_readbusy_state
c21682d30x92C000030x8mtimemtime當前計數寄存器pdev_mtime_mtime_addr
c21682d30x92c000070x8mtimecmpmtime當前比較寄存器pdev_mtime_mtimecmp_addr

Juice Vm下的軟件移植進度


快速安裝


編譯中

快速上手


運行freertos 截圖


運行rt-thread 截圖



運行linx 5.0.0 截圖


軟件參數使用說明

參數參數名稱說明
tenable test mode進入固件測試模式<br>當出現下面的狀態會結束運行并且打印出通過還是失敗的字樣,x3_gp寄存器的值為1 和 x17_a7寄存器的值為93時,進入了ecall異常就會觸發。x10_a0 寄存器的值為 0時打印pass字樣,否則打印fail字樣
Tenable trap debug mode使能異常調試模式,出現異常時會打印當前異常的調試信息
denable debug mode打開虛擬機內所有的調試選項,輸出最詳細的調試信息,包括指令譯碼,處理執行,當前寄存器列表,csr列表等
cprint cst operation msg打開虛擬機的csr寄存器讀寫調試信息。讀寫csr寄存器的時候都會打印對應的csr寄存器的值
adiable all debug msg關閉所有調試選項,譯碼調試默認打開
xenable test mode for exception打開異常測試模式,當出現異常時結束運行
genable better readability printing使用可讀性更好的方式打印信息
edisable all error msg關閉所有的錯誤信息打印
ienable all instr debug msg打開所有指令調試信息打印
menable mmu debug msg打開mmu的遍歷調試信息
pprint mmu page 8 byte datahexdump打印mmu頁表里的8字節數據
Pprint mmu page 4K Byte datahexdump打印mmu頁表里的4K字節數據
suart addr not use mmu translation啟用mmu翻譯時,忽略uart的外設地址,在啟用了mmu的時候也可以直接通過uart原始物理地址來操作uart外設
Sswitch mode debug info打開切換mode時的調試信息,m-mode,s-mode和u-mode切換的時候都會打印調試信息
Mdisable mmu err msg關閉mmu缺頁異常,訪問異常,加載異常的錯誤信息
renable trap debug msg打印更詳細的進入中斷的調試信息
Aenable addr translation debug print打印地址轉換的調試打印
L(n)log modeoutput_mode_sel n = 0 -> stdout<br> 1 -> log_buf UNIX SYS ONLY(buf_size:2900)<br> 2 -> none<br> 選擇虛擬機輸出的方式,1,直接標準輸出。2,使用一個buf先緩存,退出的時候再輸出bug大小2900Byte。3,不輸出。<br>
lenable endless loop check (RV_ENDLESS_LOOP_CHECK_EXIT_CNT:3)啟用死循環監測機制,當有連續3次出現同樣的指令執行流程(包括寄存器和csr寄存器的值都沒有改變),結束虛擬機的運行。可以搭配-L參數使用,方便調試固件。一般assert都是直接死循環。

社區支持

   挖坑網首發 感謝暈哥一路的支持:https://whycan.com/t_5844.html

CHANGE LOG

2021-05-25




20210524進展公布,發布包發布juice_vm_release_for_Linux_c21682d3.zip:




20210508更新:




20210427更新:

  1. 提交了RT-Thread 的適配 到官方倉庫:詳情請點擊[url]https://github.com/RT-Thread/rt-thread/tree/master/bsp/juicevm[/url]
復制代碼



20210424更新:

軟件適配進度

1.已完成rt-thread移植。

更新了支持的參數:




202210306更新:

軟件適配進度


更新了支持的參數:




以下 2021-03-06 更新:

無第三方庫不到5000行C語言實現一個risc-v虛擬機,帶mmu

基于指令集 rv64i

實現了mtime,超級精簡的uart和mmu sv39.

更新了支持的參數:


軟件適配進度


鳴謝


聯系作者
https://github.com/juiceRv/JuiceVm
juicemail@163.com







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美国产精品 | 一区二区中文 | 欧美精品一区二区三区在线 | 亚洲欧美成人在线 | 色天堂影院 | 在线观看免费黄色片 | 日韩a视频 | 久久毛片 | 中文字幕一区二区三区四区五区 | 在线视频亚洲 | 男人的天堂中文字幕 | 91av视频在线免费观看 | 亚洲一区二区在线播放 | 综合久久综合久久 | 欧美专区在线 | 黄色一级大片在线免费看产 | www.日韩高清 | 国产91视频免费 | 91视频中文 | 久久久免费少妇高潮毛片 | 国产一区免费 | 91亚洲视频在线 | 欧美日韩精品一区二区 | 日韩一区二区免费视频 | 成人福利电影 | 视频一区中文字幕 | 婷婷综合色 | 国产精品视频播放 | 久久久久久91香蕉国产 | 日韩91| 国产美女视频 | 在线播放国产一区二区三区 | h视频在线免费观看 | 久久综合一区二区 | 亚洲精品天堂 | 精产国产伦理一二三区 | 女同久久| 欧美精品一区二区三区四区五区 | 中文字幕 亚洲一区 | 中文字幕精品一区二区三区精品 | 久久精品国产一区二区电影 |