Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RISC-V] ECLIC Port and GD32VF103 HAL Support #266

Merged
merged 111 commits into from
Apr 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
b729125
Add Nucleisys NMSIS sources
KarlK90 Mar 16, 2021
bb7a299
Add RISC-V ECLIC startup and port files
KarlK90 Mar 16, 2021
5abb73e
Migrate port and startup code to nmsis
KarlK90 Mar 17, 2021
a44a68b
Add eclic interrupt driver
KarlK90 Mar 17, 2021
479375a
Add eclic system reset
KarlK90 Mar 19, 2021
6b195cf
Add GD32 registry STM32 renames will follow
KarlK90 Mar 19, 2021
ecf1e48
Add platform makefile
KarlK90 Mar 19, 2021
3467aa8
Add STM32 HAL Drivers, already adjusted for eclic interrupts
KarlK90 Mar 19, 2021
a9a4e46
Replace STM32_ with GD32_
KarlK90 Mar 20, 2021
73336cf
Increase idle stacksize, add isr locking/unlocking
KarlK90 Mar 20, 2021
352a602
Rename stm32_ to gd32_ , remove obsolete tim headers
KarlK90 Mar 20, 2021
7d90a99
Sort and deduplicate trigger handlers
KarlK90 Mar 20, 2021
f53e5a8
Remove DMA features not found on gd32vf103
KarlK90 Mar 20, 2021
161449d
Rename DMA1 -> DMA0 and channels to start at zero
KarlK90 Mar 20, 2021
92646d6
Rename DMA2 -> DMA1 and channels to start at zero
KarlK90 Mar 20, 2021
1d3f664
Add renumbered dma channel definitions
KarlK90 Mar 21, 2021
9627708
Rename DMA interrupt flags
KarlK90 Mar 21, 2021
186264d
Rename DMA ISR register to INTF
KarlK90 Mar 21, 2021
51b420e
DMA rename IFCR -> INTC
KarlK90 Mar 22, 2021
5cec991
Rename DMA CCR -> CTL
KarlK90 Mar 22, 2021
adb9afc
Rename DMA CNDTR CPAR CMAR registers
KarlK90 Mar 22, 2021
6a3caa6
GPIO Remove obsolete ports, rename registers
KarlK90 Mar 22, 2021
2da7835
Rename GPIO registers
KarlK90 Mar 22, 2021
29be2ac
Rename AFIO register definitions
KarlK90 Mar 22, 2021
11e6646
Remove SD card interface defines
KarlK90 Mar 22, 2021
b8976b4
Remove USB HS peripheral, start rename registers
KarlK90 Mar 23, 2021
3a51ec0
Rename OTG1 -> USBFS
KarlK90 Mar 23, 2021
9dace8a
Rename otg -> usbfs
KarlK90 Mar 23, 2021
05a0aab
Remove OTG definitions, those are present in gd32_otg.h
KarlK90 Mar 23, 2021
3ef423c
Remove otg stepping, continue rename registers usbfs
KarlK90 Mar 23, 2021
3839d68
Rename missing otg host registers
KarlK90 Mar 24, 2021
27551a2
Rename OTG device registers
KarlK90 Mar 24, 2021
6f1d0ca
Rename missed register, fix rename bug, otg done
KarlK90 Mar 24, 2021
5a3ca17
Remove I2C3 peripheral, as it isn't present in this chip
KarlK90 Mar 25, 2021
0058d3d
Rename I2C registers, add fast mode plus register
KarlK90 Mar 25, 2021
7394975
Add fast mode plus stub
KarlK90 Mar 25, 2021
7178909
Remove STM32F1x specific checks
KarlK90 Mar 25, 2021
1aa20a7
Correct DMA channel macros to start from 0
KarlK90 Mar 25, 2021
ef39596
Add i2c fast mode plus
KarlK90 Mar 25, 2021
ff5541e
Rename I2C1 -> I2C0
KarlK90 Mar 25, 2021
22b8934
Rename I2C2 -> I2C1
KarlK90 Mar 25, 2021
9ddf61a
Rename USART registers
KarlK90 Mar 25, 2021
031cd83
Remove USART peripherals not present in this device
KarlK90 Mar 25, 2021
3edcc0f
Rename USARTx to start at 0
KarlK90 Mar 25, 2021
9ffb8cf
Rename UARTx to start at 0
KarlK90 Mar 25, 2021
c9cbc6d
No DMA for UART4
KarlK90 Mar 25, 2021
8d45fbc
Revert AFIO USART remapping register changes
KarlK90 Mar 25, 2021
cfdbcfe
Remove CAN peripheral not present on this device
KarlK90 Mar 26, 2021
8539fe7
Add POC GD32 overclocking flags
KarlK90 Mar 26, 2021
004ed9d
CAN Register renames
KarlK90 Mar 26, 2021
07e5348
Rename missing CAN registers
KarlK90 Mar 28, 2021
f48ec44
Rename DAC peripheral registers
KarlK90 Mar 29, 2021
454aadd
Rename missing DAC register definitions
KarlK90 Mar 29, 2021
b4dd59e
Remove DAC features not found on this device
KarlK90 Mar 29, 2021
ccaf60a
Rename RTC registers
KarlK90 Mar 29, 2021
bdc648d
Rename SPI registers
KarlK90 Mar 29, 2021
3fb341f
Rename i2s registers
KarlK90 Mar 29, 2021
c384a54
Remove I2S Peripherals not found on this device
KarlK90 Mar 29, 2021
4f93d00
Renumber SPI to begin at 0
KarlK90 Mar 29, 2021
a421b98
Rename Independent Watchdog registers
KarlK90 Mar 29, 2021
3cfa2c8
Rename TIM registers
KarlK90 Mar 30, 2021
b2d27ad
Remove timers not found on this device
KarlK90 Mar 30, 2021
0fb4a9b
Renumber TIM to begin at 0
KarlK90 Mar 30, 2021
14a840f
Use NMSIS functions for periodic systick handling
KarlK90 Mar 30, 2021
4aa9da0
Rename ADC registers
KarlK90 Mar 30, 2021
da97c81
Rename FLASH registers
KarlK90 Mar 30, 2021
66e83a4
Rename RCC -> RCU
KarlK90 Mar 31, 2021
4eef25a
Rename RCU registers
KarlK90 Mar 31, 2021
116f34b
Rename PWR -> PMU
KarlK90 Mar 31, 2021
fcb2d49
Rename STM32F1xx -> GD32VF103
KarlK90 Mar 31, 2021
53ddaa3
Rename PMU register defines
KarlK90 Mar 31, 2021
cc58c38
Rename BKP registers
KarlK90 Mar 31, 2021
b8f128c
Rename EXMC -> FSMC
KarlK90 Mar 31, 2021
7636389
Rename STM32 clocks to GD32 names
KarlK90 Mar 31, 2021
1ea62bc
Rename RCU pll clock names
KarlK90 Apr 1, 2021
3525672
Rename f105 hal to gd32vf103 hal
KarlK90 Apr 1, 2021
a3b80a3
Rename EXTI registers, remove 5..9 handler
KarlK90 Apr 5, 2021
b507baf
Rename missed adc registers
KarlK90 Apr 5, 2021
94397bd
Rename EXTI15_10 to EXTI10_15
KarlK90 Apr 5, 2021
0104b80
GD32VF103 define rename
KarlK90 Apr 5, 2021
b047b96
Revert "remove 5..9 handler"
KarlK90 Apr 5, 2021
4ec485f
Renumber CAN peripherals to start from 0
KarlK90 Apr 5, 2021
389dbc2
Remove unified can interrupts which are not present on this device
KarlK90 Apr 5, 2021
c7e847a
Rename DAC1 to just DAC
KarlK90 Apr 5, 2021
2cd74f3
Replace GD32_DAC_DAC with GD32_DAC
KarlK90 Apr 5, 2021
387ccb8
Renumber ADC peripherals to begin at 0
KarlK90 Apr 5, 2021
d25731f
Delete unused exti and control defines
KarlK90 Apr 5, 2021
302e61b
Remove unused USB OTG Defines
KarlK90 Apr 5, 2021
d304133
Rename RCU_CIR and RCU_APB2RST registers
KarlK90 Apr 5, 2021
f6d7eda
Renumber SPI RCU defines to begin at 0
KarlK90 Apr 5, 2021
7262f2e
Rename RCU APB1RSTR register and remove unused peripherals
KarlK90 Apr 5, 2021
9ef3cfc
Rename RCU_AHBENR
KarlK90 Apr 5, 2021
e6822d9
Rename RCU registers
KarlK90 Apr 5, 2021
4206c04
Remove unused RCU_CFG1 defines
KarlK90 Apr 5, 2021
cf2e6d4
Rename CMSIS header file to gd32vf103.h
KarlK90 Apr 5, 2021
93c9c69
Merge HAL files
KarlK90 Apr 6, 2021
f093fe5
Remove STM32 registry
KarlK90 Apr 6, 2021
3c39240
Rename STM32 to GD32
KarlK90 Apr 6, 2021
5dc6aa1
Add SystemCoreClock again
KarlK90 Apr 6, 2021
f39fb50
Correct default values and usb prescaler defines
KarlK90 Apr 6, 2021
2463c10
Explicitly define all capabilities in gd32registry
KarlK90 Apr 6, 2021
fcb66ed
Add previously undefined constants
KarlK90 Apr 6, 2021
e90664f
Add Sipeed Longan Nano Board
KarlK90 Apr 6, 2021
6e2b731
Fix periodic tick timer
KarlK90 Apr 6, 2021
5557082
Update longan nano board
KarlK90 Apr 6, 2021
bd7f5f4
Add USB CDC demo for the longan nano board
KarlK90 Apr 6, 2021
b32f8bb
Move ECLIC IRQ triggers to driver files
KarlK90 Apr 6, 2021
4f56e32
Update demo mcuconf.h with ECLIC triggers
KarlK90 Apr 6, 2021
d783126
Remove duplicate defines
KarlK90 Apr 6, 2021
35a04fc
Add myself to copyright notes :-)
KarlK90 Apr 6, 2021
31f37e9
Fix VBUSSENS for Longan Nano
KarlK90 Apr 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions AUTHORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,8 @@ https://github.com/alexclewontin

Ein Terakawa aka a_p_u_r_o
https://github.com/elfmimi

Stefan Kerkmann aka KarlK90
https://github.com/KarlK90
RISC-V ECLIC port
GD32VF103 Platform port
50 changes: 50 additions & 0 deletions demos/GD32VF103/USB_CDC_IAD/.cproject
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.1487191575">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1487191575" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1487191575" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.1487191575." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1471343573" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.1471343573.621927840" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.750820837" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.2127406235" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.1729841372" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1508038223" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.797753085" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.643916244" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.626880334" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.154285937" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="STM32F4xx-USB_CDC_IAD.null.1373754647" name="STM32F4xx-USB_CDC_IAD"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.1487191575">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope"/>
</cproject>
38 changes: 38 additions & 0 deletions demos/GD32VF103/USB_CDC_IAD/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>STM32F4xx-USB_CDC_IAD</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>os</name>
<type>2</type>
<locationURI>CHIBIOS/os</locationURI>
</link>
<link>
<name>test</name>
<type>2</type>
<locationURI>CHIBIOS/test</locationURI>
</link>
</linkedResources>
</projectDescription>
180 changes: 180 additions & 0 deletions demos/GD32VF103/USB_CDC_IAD/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
##############################################################################
# Build global options
# NOTE: Can be overridden externally.
#

# Compiler options here.
ifeq ($(USE_OPT),)
USE_OPT = -Os -g2
endif

# C specific options here (added to USE_OPT).
ifeq ($(USE_COPT),)
USE_COPT =
endif

# C++ specific options here (added to USE_OPT).
ifeq ($(USE_CPPOPT),)
USE_CPPOPT = -fno-rtti
endif

# Enable this if you want the linker to remove unused code and data.
ifeq ($(USE_LINK_GC),)
USE_LINK_GC = yes
endif

# Linker extra options here.
ifeq ($(USE_LDOPT),)
USE_LDOPT =
endif

# Enable this if you want link time optimizations (LTO).
ifeq ($(USE_LTO),)
USE_LTO = yes
endif

# Enable this if you want to see the full log while compiling.
ifeq ($(USE_VERBOSE_COMPILE),)
USE_VERBOSE_COMPILE = no
endif

# If enabled, this option makes the build process faster by not compiling
# modules not used in the current configuration.
ifeq ($(USE_SMART_BUILD),)
USE_SMART_BUILD = yes
endif

#
# Build global options
##############################################################################

##############################################################################
# Architecture or project specific options
#

# Stack size to be allocated to the Cortex-M process stack. This stack is
# the stack used by the main() thread.
ifeq ($(USE_PROCESS_STACKSIZE),)
USE_PROCESS_STACKSIZE = 0x800
endif

#
# Architecture or project specific options
##############################################################################

##############################################################################
# Project, target, sources and paths
#

# Define project name here
PROJECT = usbcdc

# Target settings.
MCU_ARCH = rv32imac
MCU_ABI = ilp32
MCU_CMODEL = medlow

# Imported source files and paths.
CHIBIOS_CONTRIB := ../../..
CHIBIOS := ../../../../ChibiOS
BUILDDIR := ./build
DEPDIR := ./.dep
CONFDIR := ./cfg
BOARDDIR := $(CHIBIOS_CONTRIB)/os/hal/boards/SIPEED_LONGAN_NANO

# Licensing files.
include $(CHIBIOS)/os/license/license.mk
# Startup files.
include $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/startup_gd32vf103.mk
# HAL-OSAL files (optional).
include $(CHIBIOS)/os/hal/hal.mk
include $(CHIBIOS_CONTRIB)/os/hal/ports/GD/GD32VF103/platform.mk
include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk
include $(BOARDDIR)/board.mk
# RTOS files (optional).
include $(CHIBIOS)/os/rt/rt.mk
include $(CHIBIOS_CONTRIB)/os/common/ports/RISCV-ECLIC/compilers/GCC/mk/port.mk
# Auto-build files in ./source recursively.
include $(CHIBIOS)/tools/mk/autobuild.mk
# Other files (optional).
include $(CHIBIOS)/test/lib/test.mk
include $(CHIBIOS)/test/rt/rt_test.mk
include $(CHIBIOS)/test/oslib/oslib_test.mk
include $(CHIBIOS)/os/hal/lib/streams/streams.mk
include $(CHIBIOS)/os/various/shell/shell.mk

# Define linker script file here
LDSCRIPT= $(STARTUPLD)/GD32VF103xB.ld

# C sources that can be compiled in ARM or THUMB mode depending on the global
# setting.
CSRC = $(ALLCSRC) \
$(TESTSRC) \
usbcfg.c \
main.c

# C++ sources that can be compiled in ARM or THUMB mode depending on the global
# setting.
CPPSRC = $(ALLCPPSRC)

# List ASM source files here.
ASMSRC = $(ALLASMSRC)

# List ASM with preprocessor source files here.
ASMXSRC = $(ALLXASMSRC)

# Inclusion directories.
INCDIR = $(CONFDIR) $(ALLINC) $(TESTINC)

# Define C warning options here.
CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes

# Define C++ warning options here.
CPPWARN = -Wall -Wextra -Wundef

#
# Project, target, sources and paths
##############################################################################

##############################################################################
# Start of user section
#

# List all user C define here, like -D_DEBUG=1
UDEFS =

# Define ASM defines here
UADEFS =

# List all user directories here
UINCDIR =

# List the user directory to look for the libraries here
ULIBDIR =

# List all user libraries here
ULIBS =

#
# End of user section
##############################################################################

##############################################################################
# Common rules
#

RULESPATH = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC/mk
include $(RULESPATH)/riscv64-unknown-elf.mk
include $(RULESPATH)/rules.mk

#
# Common rules
##############################################################################

##############################################################################
# Custom rules
#

#
# Custom rules
##############################################################################
Loading