欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 無第三方庫不到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://m.raoushi.com/bbs/) Powered by Discuz! X3.1