在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用ANSI C代碼實(shí)現(xiàn)RISC-V CPU內(nèi)核

CHANBAEK ? 來(lái)源: FunIO ? 作者: FunIO ? 2023-07-23 11:02 ? 次閱讀

今天在 GitHub 上看到一個(gè) C 語(yǔ)言項(xiàng)目,用大約 600 行代碼實(shí)現(xiàn)了一個(gè) RISC-V CPU 核,甚為感嘆,分享一下。不管是學(xué)習(xí) C,還是學(xué)習(xí) RISC-V,這個(gè)項(xiàng)目都有非常高的學(xué)習(xí)價(jià)值,開(kāi)源萬(wàn)歲!

rv

用 ANSI C 編寫(xiě)的 RISC-V CPU 內(nèi)核。

特征:

  • RV32IMC 用戶級(jí)實(shí)現(xiàn)
  • 通過(guò) riscv 測(cè)試中所有支持的測(cè)試
  • ~600 行代碼
  • 不使用任何大于 32 位的整數(shù)類型,即使對(duì)于乘法也是如此
  • 簡(jiǎn)單 API(兩個(gè)函數(shù),加上您提供的兩個(gè)內(nèi)存回調(diào)函數(shù))
  • 無(wú)內(nèi)存分配

應(yīng)用程序接口

/* Memory access callbacks: data is input/output, return RV_BAD on fault, 0 otherwise */
typedef rv_res (*rv_store_cb)(void *user, rv_u32 addr, rv_u8 data);
typedef rv_res (*rv_load_cb)(void *user, rv_u32 addr, rv_u8 *data);

/* Initialize CPU. */
void rv_init(rv *cpu, void *user, rv_load_cb load_cb, rv_store_cb store_cb);

/* Single-step CPU. Returns 0 on success, one of RV_E* on exception. */
rv_u32 rv_step(rv *cpu);

用法

#include < stdio.h >
#include < string.h >

#include "rv.h"

rv_res load_cb(void *user, rv_u32 addr, rv_u8 *data) {
  if (addr - 0x80000000 > 0x10000) /* Reset vector is 0x80000000 */
    return RV_BAD;
  *data = ((rv_u8 *)(user))[addr - 0x80000000];
  return RV_OK;
}

rv_res store_cb(void *user, rv_u32 addr, rv_u8 data) {
  if (addr - 0x80000000 > 0x10000)
    return RV_BAD;
  ((rv_u8 *)(user))[addr - 0x80000000] = data;
  return RV_OK;
}

rv_u32 program[2] = {
    /* _start: */
    0x02A88893, /* add a7, a7, 42 */
    0x00000073  /* ecall */
};

int main(void) {
  rv_u8 mem[0x10000];
  rv cpu;
  rv_init(&cpu, (void *)mem, &load_cb, &store_cb);
  memcpy((void *)mem, (void *)program, sizeof(program));
  while (rv_step(&cpu) != RV_EECALL) {
  }
  printf("Environment call @ %08X: %un", cpu.pc, cpu.r[17]);
  return 0;
}

rv編譯程序

使用 riscv-gnu-toolchain工具鏈和 rv 鏈接腳本 。

建議使用gcc命令行:

riscv64-unknown-elf-gcc example.S -nostdlib -nostartfiles -Tlink.ld -march=rv32imc -mabi=ilp32 -o example.o -e _start -g -no-pie

然后用 obj 工具將0x80000000起始的二進(jìn)制代碼生成能被rv加載的二進(jìn)制文件:

riscv64-unknown-elf-objcopy -g -O binary example.o example.bin

支持的指令列表

參見(jiàn) 支持指令列表。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1377

    瀏覽量

    40326
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10882

    瀏覽量

    212224
  • ANSI
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    20543
  • C代碼
    +關(guān)注

    關(guān)注

    1

    文章

    89

    瀏覽量

    14323
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2300

    瀏覽量

    46252
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    64位RISC-V CPU發(fā)展現(xiàn)狀和未來(lái)前景

    RISC-V CPU發(fā)展情況 實(shí)際上,目前RISC-V已經(jīng)開(kāi)始64位CPU的研發(fā),也已經(jīng)有相關(guān)內(nèi)核和產(chǎn)品面市,比如平頭哥64位
    的頭像 發(fā)表于 07-22 07:59 ?4066次閱讀

    瑞薩電子推出64位RISC-V CPU內(nèi)核RZ/Five通用MPU,開(kāi)創(chuàng)RISC-V技術(shù)先河

    瑞薩電子今日宣布,推出基于64位RISC-V CPU內(nèi)核的RZ/Five通用微處理器(MPU)——RZ/Five采用Andes AX45MP,基于RISC-V
    發(fā)表于 03-01 13:54 ?1447次閱讀
    瑞薩電子推出64位<b class='flag-5'>RISC-V</b> <b class='flag-5'>CPU</b><b class='flag-5'>內(nèi)核</b>RZ/Five通用MPU,開(kāi)創(chuàng)<b class='flag-5'>RISC-V</b>技術(shù)先河

    瑞薩電子推出采用自研RISC-V CPU內(nèi)核的通用32位MCU

    2024 年 3 月 26 日,中國(guó)北京訊 - 全球半導(dǎo)體解決方案供應(yīng)商瑞薩電子(TSE:6723)今日宣布率先在業(yè)內(nèi)推出基于內(nèi)部自研CPU內(nèi)核構(gòu)建的通用32位RISC-V微控制器(MCU
    發(fā)表于 03-30 22:08

    為什么選擇RISC-V

    。例如,如果工程師在FPGA中實(shí)現(xiàn)RISC-V內(nèi)核,則通常可以使用RTL源代碼。由于RISC-V免版稅,這為將基于
    發(fā)表于 07-27 17:38

    RISC-V MCU開(kāi)發(fā) (一):集成開(kāi)發(fā)環(huán)境

    近年來(lái),RISC-V生態(tài)獲得了空前的繁榮發(fā)展,國(guó)內(nèi)外眾多科技公司紛紛下場(chǎng)布局、行業(yè)應(yīng)用層出不窮,搭載RISC-V內(nèi)核的MCU也逐漸走入了工程師的日常開(kāi)發(fā)工作中。 工欲善其事必先利其器,要想實(shí)現(xiàn)
    發(fā)表于 09-22 14:44

    如何實(shí)現(xiàn)一個(gè)RISC-V內(nèi)核架構(gòu)的芯片移植工作

    使用 common 文件夾中的任務(wù)切換代碼RT-Thread RISC-V 內(nèi)核移植 API 實(shí)現(xiàn)內(nèi)核移植的主要工作內(nèi)容,主要就是
    發(fā)表于 03-25 10:11

    RISC-V基礎(chǔ)知識(shí):模塊化開(kāi)放式的ISA CISC和RISC代碼區(qū)別

    /ti/)TIonal— 一個(gè)開(kāi)放的 ISARISC-V是一種開(kāi)放式指令集架構(gòu)(ISA),這意味著您可以自由地在微處理器或微控制器中實(shí)現(xiàn)RISC-V CPU,而無(wú)需向任何人支付使用此I
    發(fā)表于 12-23 17:51

    RISC-V中國(guó)峰會(huì):RISC-V產(chǎn)業(yè)及生態(tài)發(fā)展

    RISC-V中國(guó)峰會(huì):RISC-V產(chǎn)業(yè)及生態(tài)發(fā)展,CPU創(chuàng)新應(yīng)用,能為大眾所用。
    的頭像 發(fā)表于 06-22 11:28 ?2979次閱讀
    <b class='flag-5'>RISC-V</b>中國(guó)峰會(huì):<b class='flag-5'>RISC-V</b>產(chǎn)業(yè)及生態(tài)發(fā)展

    第一屆RISC-V中國(guó)峰會(huì)看點(diǎn) risc-v開(kāi)發(fā)要怎么優(yōu)化risc-v指令集架構(gòu)代碼密度

    在第一屆RISC-V中國(guó)峰會(huì)上看點(diǎn)很多,RISC-V是開(kāi)源的,那么代碼密度要怎么控制,會(huì)不會(huì)因?yàn)殚_(kāi)源而導(dǎo)致代碼密度特別大? 我們一起來(lái)看看risc-
    發(fā)表于 06-23 18:22 ?9699次閱讀
    第一屆<b class='flag-5'>RISC-V</b>中國(guó)峰會(huì)看點(diǎn) <b class='flag-5'>risc-v</b>開(kāi)發(fā)要怎么優(yōu)化<b class='flag-5'>risc-v</b>指令集架構(gòu)<b class='flag-5'>代碼</b>密度

    RISC-V MCU開(kāi)發(fā) (六):代碼下載

    、CH58x、CH32Fx、CH32Vx等RISC-V/ARM內(nèi)核MCU工程的代碼下載功能。其中,對(duì)于CH56x、CH57x、CH58x等型號(hào),MRS還支持關(guān)閉兩線仿真調(diào)試接口功能;對(duì)于CH32Fx、CH32Vx型號(hào),MRS支持
    發(fā)表于 12-02 09:06 ?11次下載
    <b class='flag-5'>RISC-V</b> MCU開(kāi)發(fā) (六):<b class='flag-5'>代碼</b>下載

    RISC-V CPU調(diào)試機(jī)制的設(shè)計(jì)原理

    本文將詳細(xì)介紹RISC-V CPU調(diào)試機(jī)制的設(shè)計(jì)原理。
    發(fā)表于 10-18 09:19 ?2286次閱讀

    TenstorrentInc首席CPU構(gòu)架師 練維漢:助力數(shù)字化升級(jí)的RISC-V AI 高性能CPU

    ”,曾在水果公司作CPU的架構(gòu)設(shè)計(jì)師。練維漢除介紹RISC-V內(nèi)核的高性能 CPU IP內(nèi)核技術(shù)之外,也對(duì)近期熱門(mén)的
    的頭像 發(fā)表于 08-28 12:05 ?3633次閱讀
    TenstorrentInc首席<b class='flag-5'>CPU</b>構(gòu)架師 練維漢:助力數(shù)字化升級(jí)的<b class='flag-5'>RISC-V</b> AI 高性能<b class='flag-5'>CPU</b>

    內(nèi)核架構(gòu)意義凸顯,RISC-V現(xiàn)新機(jī).zip

    內(nèi)核架構(gòu)意義凸顯,RISC-V現(xiàn)新機(jī)
    發(fā)表于 01-13 09:06 ?2次下載

    新聞快訊 | 瑞薩推出第一代32位RISC-V CPU內(nèi)核

    新聞快訊 全球半導(dǎo)體解決方案供應(yīng)商瑞薩電子(TSE:6723)宣布成功設(shè)計(jì)、測(cè)試并推出基于開(kāi)放標(biāo)準(zhǔn)RISC-V指令集架構(gòu)(ISA)的32位CPU內(nèi)核。瑞薩作為業(yè)內(nèi)首個(gè)為32位通用RISC-V
    的頭像 發(fā)表于 12-08 11:40 ?586次閱讀

    瑞薩推出采用自研CPU內(nèi)核的通用32位RISC-V MCU 加強(qiáng)RISC-V生態(tài)系統(tǒng)布局

    瑞薩推出采用自研CPU內(nèi)核的通用32位RISC-V MCU 加強(qiáng)RISC-V生態(tài)系統(tǒng)布局 RISC-V MCU為開(kāi)發(fā)人員帶來(lái)低功耗、高性能的
    發(fā)表于 03-28 19:00 ?602次閱讀
    主站蜘蛛池模板: 婷婷开心六月久久综合丁香| 婷婷久久久五月综合色| 欧美tube最新的69hd| vip免费观看| 欧美猛操| 轻点灬大ji巴太粗太长了h| 久久99热久久精品99| 一级a爰片久久毛片| 成人亚洲网| 国产激情在线观看| 一区一精品| 狠狠色狠狠色综合久久一| 黄色免费看视频| a毛片免费观看完整| 天天干夜夜草| 成人免费黄色网| 性做久久久久久久免费观看| 曰韩欧美| 日韩免费一级毛片| 久久国产三级| 在线色片| 狠狠干天天爽| 一区二区免费| 亚洲第一页在线| 欧美片欧美日韩国产综合片| 国产一级做a爱免费视频| 亚洲精品美女久久久| 精品午夜久久福利大片免费| 91国内视频| 性孕妇洗澡video国产| 亚洲怡红院在线观看| 色多多黄| 国产成人v爽在线免播放观看| 天天射天天射天天干| 在线黄| 2021久久精品国产99国产| 夜色成人网| 四虎影院观看视频| 国产亚洲视频在线| 欧美成人在线影院| 亚洲视频第一页|