本文來源電子發燒友社區,作者: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. 通過編譯源碼的方式獲取
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 安裝,如果發現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文件,當前我采取使用安裝官方軟件的方式獲取基礎API。
1. 下載CSMStudio_22.03.08_x64.zip,并在windows10下安裝軟件。
2. 找到安裝目錄下的CSM32RV20_coremark_32M或CSM32RV20_LED_Breath,并獲取其中的drivers,ld目錄,獲取src下面的vectors.S和main.c。
3. 創建Makefile,至此便可以完成代碼的編譯工作,后續增加下載,調試功能。
附,當前使用的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. 通過編譯源碼的方式獲取
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 安裝,如果發現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文件,當前我采取使用安裝官方軟件的方式獲取基礎API。
1. 下載CSMStudio_22.03.08_x64.zip,并在windows10下安裝軟件。
2. 找到安裝目錄下的CSM32RV20_coremark_32M或CSM32RV20_LED_Breath,并獲取其中的drivers,ld目錄,獲取src下面的vectors.S和main.c。
3. 創建Makefile,至此便可以完成代碼的編譯工作,后續增加下載,調試功能。
附,當前使用的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)
```
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
南京中科微
+關注
關注
0文章
60瀏覽量
1431 -
CSM32RV20
+關注
關注
0文章
40瀏覽量
497
發布評論請先 登錄
相關推薦
熱點推薦
【飛凌嵌入式RV1126B開發板】+兩款開發板之比較
目前兩款常見的RV1126B開發板,一款是靈眸科技推出的EASY EAI Nano-TB(RV1126B)開發套件,另一款就是飛凌嵌入式RV
發表于 03-05 23:32
EASY EAI Nano-TB(RV1126B)開發板試用】1、初識
非常感謝電子發燒友以及靈眸科技給了我這次試用EASY EAI Nano-TB(RV1126B)開發板的機會,星期四確認了我的試用機會,星期五就收到了
發表于 11-16 11:15
【作品合集】中科昊芯Core_DSC280025C開發板測評
Core_DSC280025C開發板試用體驗】+2.RAM工程與FLASH工程對比
【中科昊芯Core_DSC280025C開發板試用體驗】
發表于 09-18 10:52
【作品合集】玄鐵Banana Pi BPI-RV2開發板測評
測試
作者:chen000000009【Banana Pi BPI-RV2開發板試用體驗】開箱+硬件介紹
【Banana Pi BPI-RV2開發板
發表于 09-17 10:58
【作品精選】2025電子發燒友開發板測評大賽作品合集!
Milk-V Duo S 開發板免費試用
玄鐵Banana Pi BPI-RV2開發板試用
玄鐵Banana Pi BPI-CanMV-K2
發表于 09-03 15:24
【Banana Pi BPI-RV2開發板試用體驗】開發環境搭建
參考
https://docs.banana-pi.org/zh/BPI-RV2/BananaPi_BPI-RV2
前言
本文分享開發板基本的ssh登錄,文件傳輸,c開發環境搭建。
上
發表于 06-25 16:07
有獎丨米爾 瑞芯微RK3506開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3506應用處理器的MYD-YR3506開發板免費試用名額來啦~~米爾提供了3塊價值299元的MYD-YR3506
中微愛芯32位MCU開發板AiP32RV15X介紹
AiP32RV15X開發板是一款基于RISCV內核的32位MCU開發板,提供了板載調試器、RESET、WAKEUP按鍵、三色LED、CAN收發器、USB接口、UART、ADC、SPI、
性能強悍!合眾HZ-RK3568開發板試用體驗
月19日 ? 評測數量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發板免費試用 RISC-V開發板深度評測!頂級開發板免費
有獎丨米爾 瑞芯微YR3562開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3562應用處理器的MYD-YR3562開發板免費試用活動來啦~~米爾提供了3塊價值599元的MYD-YR3562
【南京中科微CSM32RV20開發板試用體驗】linux 調試
評論