本文來(lái)源電子發(fā)燒友社區(qū),作者:jf_25674040, 帖子地址:https://bbs.elecfans.com/jish u_2283042_1_1.html
一、 獲取編譯器1.在https://github.com/riscv-collab/riscv-gnu-toolchain/tags上獲取最新版本,2022.05.15。
2. 通過(guò)編譯源碼的方式獲取
2.1 git clonehttps://github.com/riscv/riscv-gnu-toolchain獲取源代碼
2.2 sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev安裝所需工具
2.3 ./configure --prefix=/opt/riscv --enable-multilib 使能riscv32/risv64輸出。
2.4 sudo make 安裝,如果發(fā)現(xiàn)github下載慢,可以使用的方式下載
cd /home/wps/tmp/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/wps/tmp/riscv-gnu-toolchain/riscv-gcc/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/wps/tmp/riscv-gnu-toolchain/riscv-gcc/
cd /home/wps/tmp/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/wps/tmp/riscv-gnu-toolchain/newlib/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/wps/tmp/riscv-gnu-toolchain/newlib/
git config --global --add safe.directory /home/apps/riscv-gnu-toolchain
cd /home/apps/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/apps/riscv-gnu-toolchain/riscv-gdb/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/apps/riscv-gnu-toolchain/riscv-gdb/
2.5 在bashrc中添加export PATH=/opt/riscv/bin:$PATH
二、獲取api文件,當(dāng)前我采取使用安裝官方軟件的方式獲取基礎(chǔ)API。
1. 下載CSMStudio_22.03.08_x64.zip,并在windows10下安裝軟件。
2. 找到安裝目錄下的CSM32RV20_coremark_32M或CSM32RV20_LED_Breath,并獲取其中的drivers,ld目錄,獲取src下面的vectors.S和main.c。
3. 創(chuàng)建Makefile,至此便可以完成代碼的編譯工作,后續(xù)增加下載,調(diào)試功能。
附,當(dāng)前使用的Makefile
```
#target
TARGET = hello_world
#building variables
#debug
DEBUG =1
OPT = -O2
BUILD_DIR = build
#BIN_DIR = $(BUILD_DIR)/bin
C_SOURCES =
src/main.c
drivers/Src/clic.c
drivers/Src/cmu.c
drivers/Src/gpio.c
drivers/Src/uart.c
drivers/Src/ee_printf.c
drivers/Src/adc.c
drivers/Src/comp.c
drivers/Src/data_always.c
drivers/Src/flash.c
drivers/Src/i2c.c
drivers/Src/iwdg.c
drivers/Src/lowpower.c
drivers/Src/lv.c
drivers/Src/random.c
drivers/Src/rtc.c
drivers/Src/spi.c
drivers/Src/timer.c
drivers/Src/usb.c
drivers/Src/wup.c
ASM_SOURCES =
src/vectors.S
# binaries
PREFIX = riscv64-unknown-elf-
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)g++
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)g++
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
# C_FLAGS
CPU = -march=rv32imac
# mcu
MCU = -mabi=ilp32 $(CPU)
AS_DEFS =
C_DEFS =
AS_INCLUDES =
-Idrivers/Inc
C_INCLUDES =
-Idrivers/Inc
# compile gcc flags
ASFLASGS = -Wall -g $(MCU) -fdata-sections -ffunction-sections -fomit-frame-pointer -mcmodel=medlow -mtune=rocket $(OPT)
ASFLASGS += $(C_DEFS) $(C_INCLUDES)
CFLAGS = -Wall -g $(MCU) -fdata-sections -ffunction-sections -fomit-frame-pointer -mcmodel=medlow -mtune=rocket $(OPT)
CFLAGS += $(C_DEFS) $(C_INCLUDES)
# link script
LDSCRIPT = ld/target.ld
LDFLAGS = $(MCU) -T $(LDSCRIPT) -nostartfiles
LDFLAGS += -Wl,-Map,map.txt
LDFLAGS += -Xlinker --gc-sections -Xlinker --cref
LDFLAGS += --specs=nano.specs --specs=nosys.specs
all: $(BUILD_DIR)/$(TARGET).elf
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.S=.o)))
vpath %.S $(sort $(dir $(ASM_SOURCES)))
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
$(CC) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
$(AS) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(SZ) $@
$(BUILD_DIR):
mkdir $@
clean:
-rm -fR $(BUILD_DIR)
```
一、 獲取編譯器1.在https://github.com/riscv-collab/riscv-gnu-toolchain/tags上獲取最新版本,2022.05.15。
2. 通過(guò)編譯源碼的方式獲取
2.1 git clonehttps://github.com/riscv/riscv-gnu-toolchain獲取源代碼
2.2 sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev安裝所需工具
2.3 ./configure --prefix=/opt/riscv --enable-multilib 使能riscv32/risv64輸出。
2.4 sudo make 安裝,如果發(fā)現(xiàn)github下載慢,可以使用的方式下載
cd /home/wps/tmp/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/wps/tmp/riscv-gnu-toolchain/riscv-gcc/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/wps/tmp/riscv-gnu-toolchain/riscv-gcc/
cd /home/wps/tmp/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/wps/tmp/riscv-gnu-toolchain/newlib/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/wps/tmp/riscv-gnu-toolchain/newlib/
git config --global --add safe.directory /home/apps/riscv-gnu-toolchain
cd /home/apps/riscv-gnu-toolchain &&
flock `git rev-parse --git-dir`/config git submodule init /home/apps/riscv-gnu-toolchain/riscv-gdb/ &&
flock `git rev-parse --git-dir`/config git submodule update /home/apps/riscv-gnu-toolchain/riscv-gdb/
2.5 在bashrc中添加export PATH=/opt/riscv/bin:$PATH
二、獲取api文件,當(dāng)前我采取使用安裝官方軟件的方式獲取基礎(chǔ)API。
1. 下載CSMStudio_22.03.08_x64.zip,并在windows10下安裝軟件。
2. 找到安裝目錄下的CSM32RV20_coremark_32M或CSM32RV20_LED_Breath,并獲取其中的drivers,ld目錄,獲取src下面的vectors.S和main.c。
3. 創(chuàng)建Makefile,至此便可以完成代碼的編譯工作,后續(xù)增加下載,調(diào)試功能。
附,當(dāng)前使用的Makefile
```
#target
TARGET = hello_world
#building variables
#debug
DEBUG =1
OPT = -O2
BUILD_DIR = build
#BIN_DIR = $(BUILD_DIR)/bin
C_SOURCES =
src/main.c
drivers/Src/clic.c
drivers/Src/cmu.c
drivers/Src/gpio.c
drivers/Src/uart.c
drivers/Src/ee_printf.c
drivers/Src/adc.c
drivers/Src/comp.c
drivers/Src/data_always.c
drivers/Src/flash.c
drivers/Src/i2c.c
drivers/Src/iwdg.c
drivers/Src/lowpower.c
drivers/Src/lv.c
drivers/Src/random.c
drivers/Src/rtc.c
drivers/Src/spi.c
drivers/Src/timer.c
drivers/Src/usb.c
drivers/Src/wup.c
ASM_SOURCES =
src/vectors.S
# binaries
PREFIX = riscv64-unknown-elf-
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)g++
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)g++
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
# C_FLAGS
CPU = -march=rv32imac
# mcu
MCU = -mabi=ilp32 $(CPU)
AS_DEFS =
C_DEFS =
AS_INCLUDES =
-Idrivers/Inc
C_INCLUDES =
-Idrivers/Inc
# compile gcc flags
ASFLASGS = -Wall -g $(MCU) -fdata-sections -ffunction-sections -fomit-frame-pointer -mcmodel=medlow -mtune=rocket $(OPT)
ASFLASGS += $(C_DEFS) $(C_INCLUDES)
CFLAGS = -Wall -g $(MCU) -fdata-sections -ffunction-sections -fomit-frame-pointer -mcmodel=medlow -mtune=rocket $(OPT)
CFLAGS += $(C_DEFS) $(C_INCLUDES)
# link script
LDSCRIPT = ld/target.ld
LDFLAGS = $(MCU) -T $(LDSCRIPT) -nostartfiles
LDFLAGS += -Wl,-Map,map.txt
LDFLAGS += -Xlinker --gc-sections -Xlinker --cref
LDFLAGS += --specs=nano.specs --specs=nosys.specs
all: $(BUILD_DIR)/$(TARGET).elf
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.S=.o)))
vpath %.S $(sort $(dir $(ASM_SOURCES)))
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
$(CC) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
$(AS) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(SZ) $@
$(BUILD_DIR):
mkdir $@
clean:
-rm -fR $(BUILD_DIR)
```
聲明:本文內(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)投訴
-
南京中科微
+關(guān)注
關(guān)注
0文章
60瀏覽量
744 -
CSM32RV20
+關(guān)注
關(guān)注
0文章
40瀏覽量
216
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RISC-V 使用J-Link調(diào)試RV-STAR
J-Link調(diào)試器和RV-STAR開(kāi)發(fā)板,且在Nuclei Studio中運(yùn)行和調(diào)試應(yīng)用程序。
關(guān)于Nuclei Studio IDE下載安裝、編譯和
發(fā)表于 12-14 17:47
瑞芯微主板/開(kāi)發(fā)板Linux系統(tǒng)播放音頻方法,觸覺(jué)智能RK3562開(kāi)發(fā)板演示
本文介紹瑞芯微方案主板/開(kāi)發(fā)板Linux系統(tǒng)播放音頻的方法,觸覺(jué)智能RK3562開(kāi)發(fā)板演示,通用RK3566、RK3568、RK3588等
追加名額丨米爾瑞芯微RK3576開(kāi)發(fā)板有獎(jiǎng)試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器的MYD-LR3576開(kāi)發(fā)板免費(fèi)試用活動(dòng)加碼啦~~米爾追加了2塊價(jià)值849元的MYD-LR3576
常用在工業(yè)控制系統(tǒng)上的MCU芯片資料:CSM32RV20
CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 內(nèi)置RISC-V RV32IMAC內(nèi)核(2.6CoreMark/MHz); 蕞高32MHz工作頻率; 內(nèi)置4kB的SRAM; 內(nèi)置8B
有獎(jiǎng)丨米爾 瑞芯微RK3576開(kāi)發(fā)板免費(fèi)試用
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3576應(yīng)用處理器的MYD-LR3576開(kāi)發(fā)板免費(fèi)試用活動(dòng)來(lái)啦~~米爾提供了7塊價(jià)值849元的MYD-LR3576
有獎(jiǎng)試用!!RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用活動(dòng)開(kāi)始報(bào)名
有獎(jiǎng)試用!!RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用活動(dòng)開(kāi)始報(bào)名
嵌入式linux開(kāi)發(fā)板怎么操作
嵌入式Linux開(kāi)發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開(kāi)發(fā)平臺(tái)。它通常包括一個(gè)處理器、內(nèi)存、存儲(chǔ)器、輸入/輸出接口等硬件組件,以及一個(gè)基于L
嵌入式linux開(kāi)發(fā)板芯片的工作原理
嵌入式Linux開(kāi)發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開(kāi)發(fā)平臺(tái),它廣泛應(yīng)用于工業(yè)控制、智能家居、智能交通、醫(yī)療設(shè)備等領(lǐng)域。 嵌入式Linux
linux開(kāi)發(fā)板與樹(shù)莓派的區(qū)別
定義和用途 Linux開(kāi)發(fā)板:Linux開(kāi)發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式開(kāi)發(fā)板,通常用
linux開(kāi)發(fā)板如何編譯curl
在Linux開(kāi)發(fā)板上編譯 curl 庫(kù)通常涉及到幾個(gè)步驟,包括準(zhǔn)備開(kāi)發(fā)環(huán)境、下載源代碼、配置編譯選項(xiàng)以及執(zhí)行編譯和安裝過(guò)程。以下是一個(gè)基本的指南,幫助你在Linux
linux開(kāi)發(fā)板和單片機(jī)開(kāi)發(fā)的區(qū)別
硬件架構(gòu) Linux開(kāi)發(fā)板和單片機(jī)開(kāi)發(fā)在硬件架構(gòu)上有很大的區(qū)別。Linux開(kāi)發(fā)板通常基于ARM、x86或其他處理器架構(gòu),具有較高的處理能力和
香橙派發(fā)布首款RISC-V開(kāi)發(fā)板OrangePi RV
2024年3月,香橙派在全球開(kāi)發(fā)者會(huì)議上發(fā)布了其首款基于RISC-V開(kāi)發(fā)的OrangePi RV主板。這款開(kāi)發(fā)板擁有四核RISC-V U74與S7協(xié)處理器,配備 2MB L2緩存。同時(shí)
fpga開(kāi)發(fā)板與linux開(kāi)發(fā)板區(qū)別
FPGA開(kāi)發(fā)板與Linux開(kāi)發(fā)板是兩種不同的硬件開(kāi)發(fā)平臺(tái),各自具有不同的特點(diǎn)和應(yīng)用場(chǎng)景。在以下的文章中,我將詳細(xì)介紹FPGA開(kāi)發(fā)板和
DIY個(gè)人的Linux開(kāi)發(fā)板教程
作者簡(jiǎn)介:大佬已在硬創(chuàng)社開(kāi)源了近50款開(kāi)發(fā)板,動(dòng)手能力極強(qiáng),于去年年底開(kāi)始接觸學(xué)習(xí)Linux,并由全志V3s、F1C200S等芯片開(kāi)始上手DIY個(gè)人的Linux開(kāi)發(fā)板。
評(píng)論