[BSP] Support YD-CH32V307VCT6 (#8473)
This commit is contained in:
parent
74ac685b9a
commit
db5bdb1ffa
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,21 @@
|
|||
mainmenu "RT-Thread Configuration"
|
||||
|
||||
config BSP_DIR
|
||||
string
|
||||
option env="BSP_ROOT"
|
||||
default "."
|
||||
|
||||
config RTT_DIR
|
||||
string
|
||||
option env="RTT_ROOT"
|
||||
default "../../../.."
|
||||
|
||||
config PKGS_DIR
|
||||
string
|
||||
option env="PKGS_ROOT"
|
||||
default "packages"
|
||||
|
||||
source "$RTT_DIR/Kconfig"
|
||||
source "$PKGS_DIR/Kconfig"
|
||||
source "../Libraries/Kconfig"
|
||||
source "board/Kconfig"
|
|
@ -0,0 +1,97 @@
|
|||
# YD-CH32V307VCT6 BSP Introduction
|
||||
|
||||
## 1 Introduction
|
||||
|
||||
YD-CH32V307VCT6 is a RISC-V core-based development board with a maximum main frequency of 144Mhz. It delivers the best value for developers to try and get started with RISC-V architecture.
|
||||
|
||||
This document records the execution instruction of the BSP (board support package) provided by the RT-Thread community for the CH32V307V-R1 development board.
|
||||
|
||||
The document is covered in three parts:
|
||||
|
||||
- Board Resources Introduction
|
||||
- Compiling
|
||||
- Quickly Get Started
|
||||
|
||||
By reading the Quickly Get Started section developers can quickly get their hands on this BSP and run RT-Thread on the board.
|
||||
|
||||
![board](./figures/VCC-GND-Studio-CH32V307-RISC-V-Ethernet-board.jpg)
|
||||
|
||||
**Features**
|
||||
|
||||
- MCU: CH32V307VCT6, main frequency 144MHz,FLASH and RAM are available for configuration.
|
||||
- LED: 2, user LEDs (blue and red).
|
||||
- Button: 3, Reset, Boot, User.
|
||||
- SPI Flash: 32M-bit serial flash memory (W25Q32).
|
||||
- I2C EEPROM: 64k-bit serial EEPROM (24C64).
|
||||
- USB: 2, Type-C.
|
||||
- Network Port: 1, 10M PHY inside.
|
||||
- SDIO: microSD connector.
|
||||
- Debug interface: SWD.
|
||||
- 8 MHz external quartz oscillator (HSE).
|
||||
- 32,768 Hz external RTC quartz oscillator (LSE).
|
||||
|
||||
For more details about this board, please refer to:
|
||||
- [Board YD-CH32V307VCT6 VCC-GND Studio](http://152.32.187.208:8080/yd-data/YD-CH32V307VCT6/YD-CH32V307VCT6/)
|
||||
- [CH32V307](https://www.wch.cn/products/CH32V307.html)
|
||||
- [CH32V307 official document](https://github.com/openwch/ch32v307)
|
||||
|
||||
## 2 Compiling
|
||||
|
||||
The BSP supports the RISC-V GCC development environment, here's the specific version information:
|
||||
|
||||
| IDE/Compiler | Version Tested |
|
||||
| ------------ | -------------------- |
|
||||
| GCC | WCH RISC-V GCC 8.2.0 |
|
||||
|
||||
## 3 Quickly Get Started
|
||||
|
||||
### 3.1 Using Linux to compile BSP
|
||||
|
||||
This section is about to introduce how to compile the BSP in Linux.
|
||||
|
||||
#### 3.1.1 Compile BSP
|
||||
|
||||
1. [Download WCH Compile Toolchain](https://github.com/NanjingQinheng/sdk-toolchain-RISC-V-GCC-WCH/releases)
|
||||
2. [Download the RT-Thread latest code](https://github.com/RT-Thread/rt-thread/archive/refs/heads/master.zip)
|
||||
3. Install SCons construction tool (similar GNU Make): sudo apt install scons
|
||||
4. Edit the variable **EXEC_PATH** in file **rtconfig.py** to point to the directory with executable WCH Compile Toolchain (file riscv-none-embed-gcc).
|
||||
5. Configure RT-Thread and hardware board: scons --menuconfig
|
||||
6. Start compilation: scons
|
||||
7. After compilation, the **rtthread.bin** file will be generated
|
||||
|
||||
#### 3.1.2 Download
|
||||
|
||||
1. Clone source file: git clone https://github.com/jmaselbas/wch-isp.git
|
||||
2. Compile and install :
|
||||
- cd wch-isp
|
||||
- make && sudo make install && sudo make load
|
||||
3. Use a USB cable Type-C to connect board to the PC. Hold button **BOOT0**, press briefly button **RST** and release button **BOOT0**.
|
||||
4. Check board connection:
|
||||
```sh
|
||||
wch-isp list
|
||||
0: BTVER v2.9 UID 10-46-89-26-3b-38-d4-a4 [0x1770] CH32V307VCT6
|
||||
MCU current flash size: 256 Kbyte
|
||||
```
|
||||
|
||||
> Note that Chip Mem here is set to 256K ROM + 64K RAM (see Table 2-1 of datasheet CH32V307, and chapter 32.6 "User Option Bytes" of Reference Manual CH32V2x_V3x).
|
||||
|
||||
5. Download firmware to board:
|
||||
```
|
||||
wch-isp -p flash ./rtthread.bin && wch-isp reset
|
||||
```
|
||||
|
||||
#### 3.1.3 Running Result
|
||||
|
||||
1. Connect USB-UART converter to board:
|
||||
- board pin A9 (UART1_TX) -> converter RX
|
||||
- board pin A10 (UART1_RX) -> converter TX (optional, for enter commands)
|
||||
2. In the terminal tool, open the converter serial port (default 115200-8-1-N), and after resetting the device, you can see the output information of RT-Thread on the serial port:
|
||||
```
|
||||
\ | /
|
||||
- RT - Thread Operating System
|
||||
/ | \ 5.1.0 build Jan 6 2024 17:12:03
|
||||
2006 - 2022 Copyright by RT-Thread team
|
||||
SystemClk: 144000000 Hz
|
||||
msh >
|
||||
```
|
||||
On board LEDs (red and blue) blinking.
|
|
@ -0,0 +1,15 @@
|
|||
# for module compiling
|
||||
import os
|
||||
Import('RTT_ROOT')
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
objs = []
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for d in list:
|
||||
path = os.path.join(cwd, d)
|
||||
if os.path.isfile(os.path.join(path, 'SConscript')):
|
||||
objs = objs + SConscript(os.path.join(d, 'SConscript'))
|
||||
|
||||
Return('objs')
|
|
@ -0,0 +1,65 @@
|
|||
import os
|
||||
import sys
|
||||
import rtconfig
|
||||
from SCons.Script import *
|
||||
|
||||
if os.getenv('RTT_ROOT'):
|
||||
RTT_ROOT = os.getenv('RTT_ROOT')
|
||||
else:
|
||||
RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..')
|
||||
|
||||
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
|
||||
try:
|
||||
from building import *
|
||||
except:
|
||||
print('Cannot found RT-Thread root directory, please check RTT_ROOT')
|
||||
print(RTT_ROOT)
|
||||
exit(-1)
|
||||
|
||||
|
||||
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
|
||||
|
||||
DefaultEnvironment(tools=[])
|
||||
env = Environment(tools = ['mingw'],
|
||||
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
|
||||
CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
|
||||
AR = rtconfig.AR, ARFLAGS = '-rc',
|
||||
CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
|
||||
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
|
||||
env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
|
||||
|
||||
if rtconfig.PLATFORM in ['iccarm']:
|
||||
env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
|
||||
env.Replace(ARFLAGS = [''])
|
||||
env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map')
|
||||
|
||||
Export('RTT_ROOT')
|
||||
Export('rtconfig')
|
||||
|
||||
SDK_ROOT = os.path.abspath('./')
|
||||
|
||||
if os.path.exists(SDK_ROOT + '/Libraries'):
|
||||
libraries_path_prefix = SDK_ROOT + '/Libraries'
|
||||
else:
|
||||
libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/Libraries'
|
||||
|
||||
SDK_LIB = libraries_path_prefix
|
||||
Export('SDK_LIB')
|
||||
|
||||
# prepare building environment
|
||||
objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
|
||||
|
||||
ch32_library = 'ch32v30x_libraries'
|
||||
rtconfig.BSP_LIBRARY_TYPE = ch32_library
|
||||
|
||||
bsp_vdir = 'build'
|
||||
library_vdir = 'build/libraries'
|
||||
|
||||
# include libraries
|
||||
objs.extend(SConscript(os.path.join(libraries_path_prefix, ch32_library, 'SConscript'), variant_dir=library_vdir + '/ch32_library', duplicate=0))
|
||||
|
||||
# common include drivers
|
||||
objs.extend(SConscript(os.path.join(libraries_path_prefix, 'ch32_drivers', 'SConscript'), variant_dir=library_vdir + '/ch32_drivers', duplicate=0))
|
||||
|
||||
# make a building
|
||||
DoBuilding(TARGET, objs)
|
|
@ -0,0 +1,15 @@
|
|||
from building import *
|
||||
import os
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
CPPPATH = [cwd]
|
||||
src = ['main.c']
|
||||
|
||||
group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
||||
list = os.listdir(cwd)
|
||||
for item in list:
|
||||
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||
group = group + SConscript(os.path.join(item, 'SConscript'))
|
||||
|
||||
Return('group')
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2022, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2024-01-06 GSunwinder first version
|
||||
*
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtdevice.h>
|
||||
|
||||
#include "ch32v30x.h"
|
||||
#include "board.h"
|
||||
|
||||
/*********************************************************************
|
||||
* @fn main
|
||||
*
|
||||
* @brief Main program.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
|
||||
int main(void)
|
||||
{
|
||||
printf("SystemClk: %d Hz\r\n", SystemCoreClock);
|
||||
|
||||
rt_pin_mode(LED_BLUE, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(LED_RED, PIN_MODE_OUTPUT);
|
||||
|
||||
while (1)
|
||||
{
|
||||
rt_pin_write(LED_RED, PIN_LOW);
|
||||
rt_pin_write(LED_BLUE, PIN_HIGH);
|
||||
rt_thread_mdelay(1000);
|
||||
rt_pin_write(LED_RED, PIN_HIGH);
|
||||
rt_pin_write(LED_BLUE, PIN_LOW);
|
||||
rt_thread_mdelay(1000);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,574 @@
|
|||
menu "Hardware Drivers Config"
|
||||
|
||||
config SOC_CH32V307VC
|
||||
bool
|
||||
select SOC_RISCV_SERIES_CH32V3
|
||||
select RT_USING_COMPONENTS_INIT
|
||||
select RT_USING_USER_MAIN
|
||||
default y
|
||||
|
||||
menu "Onboard Peripheral Drivers"
|
||||
endmenu
|
||||
|
||||
menu "On-chip Peripheral Drivers"
|
||||
config BSP_USING_GPIO
|
||||
bool "Enable GPIO"
|
||||
select RT_USING_PIN
|
||||
default y
|
||||
|
||||
menuconfig BSP_USING_UART
|
||||
bool "Enable UART"
|
||||
select RT_USING_SERIAL
|
||||
default n
|
||||
|
||||
if BSP_USING_UART
|
||||
config BSP_USING_UART1
|
||||
bool "Enable UART1"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART2
|
||||
bool "Enable UART2"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART3
|
||||
bool "Enable UART3"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART4
|
||||
bool "Enable UART4"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART5
|
||||
bool "Enable UART5"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART6
|
||||
bool "Enable UART6"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART7
|
||||
bool "Enable UART7"
|
||||
default n
|
||||
|
||||
config BSP_USING_UART8
|
||||
bool "Enable UART8"
|
||||
default n
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_ADC
|
||||
bool "Enable ADC"
|
||||
select RT_USING_ADC
|
||||
default n
|
||||
|
||||
if BSP_USING_ADC
|
||||
config BSP_USING_ADC1
|
||||
bool "Enable ADC1"
|
||||
default n
|
||||
|
||||
config BSP_USING_ADC2
|
||||
bool "Enable ADC2"
|
||||
default n
|
||||
|
||||
config ADC_CHANNEL_16
|
||||
bool "Enable ADC CHANNEL 16 (inside temperature)"
|
||||
default n
|
||||
|
||||
config ADC_CHANNEL_17
|
||||
bool "Enable ADC CHANNEL 17 (inside Verf)"
|
||||
default n
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_DAC
|
||||
bool "Enable DAC"
|
||||
select RT_USING_DAC
|
||||
default n
|
||||
|
||||
if BSP_USING_DAC
|
||||
config BSP_USING_DAC_CHANNEL1
|
||||
bool "Enable DAC CHANNEL1"
|
||||
default n
|
||||
config BSP_USING_DAC_CHANNEL2
|
||||
bool "Enable DAC CHANNEL2"
|
||||
default n
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_SOFT_I2C
|
||||
bool "Enable I2C Bus"
|
||||
select RT_USING_I2C
|
||||
select RT_USING_I2C_BITOPS
|
||||
select RT_USING_PIN
|
||||
default n
|
||||
|
||||
if BSP_USING_SOFT_I2C
|
||||
config BSP_USING_I2C1
|
||||
bool "Enable I2C1 Bus (software simulation)"
|
||||
default n
|
||||
|
||||
if BSP_USING_I2C1
|
||||
comment "Notice: PB10 --> 26; PB11 --> 27"
|
||||
|
||||
config BSP_I2C1_SCL_PIN
|
||||
int "i2c1 SCL pin number"
|
||||
range 0 79
|
||||
default 26
|
||||
config BSP_I2C1_SDA_PIN
|
||||
int "i2c1 SDA pin number"
|
||||
range 0 79
|
||||
default 27
|
||||
endif
|
||||
|
||||
config BSP_USING_I2C2
|
||||
bool "Enable I2C2 Bus (software simulation)"
|
||||
default n
|
||||
|
||||
if BSP_USING_I2C2
|
||||
comment "Notice: PC1 --> 33; PC0 --> 32"
|
||||
config BSP_I2C2_SCL_PIN
|
||||
int "i2c2 SCL pin number"
|
||||
range 0 79
|
||||
default 32
|
||||
config BSP_I2C2_SDA_PIN
|
||||
int "i2c2 SDA pin number"
|
||||
range 0 79
|
||||
default 33
|
||||
endif
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_SPI
|
||||
bool "Enable SPI"
|
||||
select RT_USING_SPI
|
||||
|
||||
if BSP_USING_SPI
|
||||
config BSP_USING_SPI1
|
||||
bool "Enable SPI1"
|
||||
default n
|
||||
|
||||
config BSP_USING_SPI2
|
||||
bool "Enable SPI2"
|
||||
default n
|
||||
|
||||
config BSP_USING_SPI3
|
||||
bool "Enable SPI3"
|
||||
default n
|
||||
|
||||
if BSP_USING_SPI3
|
||||
config BSP_USING_SPI_FLASH
|
||||
bool "Enable SPI Flash"
|
||||
default n
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_SOFT_SPI
|
||||
bool "Enable SOFT SPI"
|
||||
select RT_USING_SPI_BITOPS
|
||||
|
||||
if BSP_USING_SOFT_SPI
|
||||
config BSP_USING_SOFT_SPI1
|
||||
bool "Enable SSPI1 Bus (User SPI)"
|
||||
default n
|
||||
if BSP_USING_SOFT_SPI1
|
||||
comment "Notice: PB9 --> 25; PB8 --> 24; PB7 --> 23"
|
||||
config BSP_S_SPI1_SCK_PIN
|
||||
int "sspi1 SCL pin number"
|
||||
range 1 79
|
||||
default 25
|
||||
config BSP_S_SPI1_MOSI_PIN
|
||||
int "sspi1 MISO pin number"
|
||||
range 1 79
|
||||
default 24
|
||||
config BSP_S_SPI1_MISO_PIN
|
||||
int "sspi1 MOSI pin number"
|
||||
range 1 79
|
||||
default 23
|
||||
endif
|
||||
|
||||
config BSP_USING_SOFT_SPI2
|
||||
bool "Enable SSPI2 Bus (soft SPI)"
|
||||
default n
|
||||
if BSP_USING_SOFT_SPI2
|
||||
comment "Notice: PE0 --> 64; PE1 --> 65; PE2 --> 66"
|
||||
config BSP_S_SPI2_SCK_PIN
|
||||
int "sspi2 SCL pin number"
|
||||
range 1 79
|
||||
default 64
|
||||
config BSP_S_SPI2_MOSI_PIN
|
||||
int "sspi2 MISO pin number"
|
||||
range 1 79
|
||||
default 65
|
||||
config BSP_S_SPI2_MISO_PIN
|
||||
int "sspi2 MOSI pin number"
|
||||
range 1 79
|
||||
default 66
|
||||
endif
|
||||
endif
|
||||
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
default n
|
||||
|
||||
if BSP_USING_RTC
|
||||
choice
|
||||
prompt "Using clock for RTC"
|
||||
default BSP_USING_RTC_LSI
|
||||
|
||||
config BSP_USING_RTC_LSI
|
||||
bool "LSI"
|
||||
|
||||
config BSP_USING_RTC_LSE
|
||||
bool "LSE"
|
||||
|
||||
config BSP_USING_RTC_HSE_128
|
||||
bool "HSE div 128"
|
||||
|
||||
endchoice
|
||||
endif
|
||||
|
||||
config LSI_VALUE
|
||||
int
|
||||
default 39000
|
||||
|
||||
config BSP_USING_IWDT
|
||||
bool "Enable IWDT"
|
||||
select RT_USING_WDT
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_CAN
|
||||
bool "Enable CAN"
|
||||
default n
|
||||
select RT_USING_CAN
|
||||
if BSP_USING_CAN
|
||||
config BSP_USING_CAN1
|
||||
bool "Using CAN1"
|
||||
default n
|
||||
config BSP_USING_CAN2
|
||||
bool "Using CAN2"
|
||||
default n
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM
|
||||
bool "Using TIMx"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM
|
||||
config BSP_USING_HWTIMER
|
||||
bool
|
||||
select RT_USING_HWTIMER
|
||||
default n
|
||||
|
||||
config BSP_USING_PWM
|
||||
bool
|
||||
select RT_USING_PWM
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM1
|
||||
bool "using TIM1"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM1
|
||||
config BSP_USING_TIM1_HWTIMER
|
||||
bool "Using TIM1 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM1_PWM
|
||||
bool "Using TIM1 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM1_PWM
|
||||
config BSP_USING_TIM1_PWM_CH1
|
||||
bool "Using TIM1 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM1_PWM_CH2
|
||||
bool "Using TIM1 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM1_PWM_CH3
|
||||
bool "Using TIM1 channel 3"
|
||||
|
||||
config BSP_USING_TIM1_PWM_CH4
|
||||
bool "Using TIM1 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM1_HWTIMER && BSP_USING_TIM1_PWM
|
||||
comment "BSP_USING_TIM1_HWTIMER and BSP_USING_TIM1_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM2
|
||||
bool "Using TIM2"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM2
|
||||
config BSP_USING_TIM2_HWTIMER
|
||||
bool "Using TIM2 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM2_PWM
|
||||
bool "Using TIM2 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM2_PWM
|
||||
config BSP_USING_TIM2_PWM_CH1
|
||||
bool "Using TIM2 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM2_PWM_CH2
|
||||
bool "Using TIM2 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM2_PWM_CH3
|
||||
bool "Using TIM2 channel 3"
|
||||
|
||||
config BSP_USING_TIM2_PWM_CH4
|
||||
bool "Using TIM2 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM2_HWTIMER && BSP_USING_TIM2_PWM
|
||||
comment "BSP_USING_TIM2_HWTIMER and BSP_USING_TIM2_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM3
|
||||
bool "Using TIM3"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM3
|
||||
config BSP_USING_TIM3_HWTIMER
|
||||
bool "Using TIM3 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM3_PWM
|
||||
bool "Using TIM3 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM3_PWM
|
||||
config BSP_USING_TIM3_PWM_CH1
|
||||
bool "Using TIM3 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM3_PWM_CH2
|
||||
bool "Using TIM3 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM3_PWM_CH3
|
||||
bool "Using TIM3 channel 3"
|
||||
|
||||
config BSP_USING_TIM3_PWM_CH4
|
||||
bool "Using TIM3 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM3_HWTIMER && BSP_USING_TIM3_PWM
|
||||
comment "BSP_USING_TIM3_HWTIMER and BSP_USING_TIM3_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM4
|
||||
bool "Using TIM4"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM4
|
||||
config BSP_USING_TIM4_HWTIMER
|
||||
bool "Using TIM4 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM4_PWM
|
||||
bool "Using TIM4 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM4_PWM
|
||||
config BSP_USING_TIM4_PWM_CH1
|
||||
bool "Using TIM4 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM4_PWM_CH2
|
||||
bool "Using TIM4 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM4_PWM_CH3
|
||||
bool "Using TIM4 channel 3"
|
||||
|
||||
config BSP_USING_TIM4_PWM_CH4
|
||||
bool "Using TIM4 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM4_HWTIMER && BSP_USING_TIM4_PWM
|
||||
comment "BSP_USING_TIM4_HWTIMER and BSP_USING_TIM4_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM5
|
||||
bool "Using TIM5"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM5
|
||||
config BSP_USING_TIM5_HWTIMER
|
||||
bool "Using TIM5 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM5_PWM
|
||||
bool "Using TIM5 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM5_PWM
|
||||
config BSP_USING_TIM5_PWM_CH1
|
||||
bool "Using TIM5 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM5_PWM_CH2
|
||||
bool "Using TIM5 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM5_PWM_CH3
|
||||
bool "Using TIM5 channel 3"
|
||||
|
||||
config BSP_USING_TIM5_PWM_CH4
|
||||
bool "Using TIM5 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM5_HWTIMER && BSP_USING_TIM5_PWM
|
||||
comment "BSP_USING_TIM5_HWTIMER and BSP_USING_TIM5_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM6
|
||||
bool "Using TIM6"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM6
|
||||
config BSP_USING_TIM6_HWTIMER
|
||||
bool "Using TIM6 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM7
|
||||
bool "Using TIM7"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM7
|
||||
config BSP_USING_TIM7_HWTIMER
|
||||
bool "Using TIM7 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM8
|
||||
bool "Using TIM8"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM8
|
||||
config BSP_USING_TIM8_HWTIMER
|
||||
bool "Using TIM8 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM8_PWM
|
||||
bool "Using TIM8 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM8_PWM
|
||||
config BSP_USING_TIM8_PWM_CH1
|
||||
bool "Using TIM8 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM8_PWM_CH2
|
||||
bool "Using TIM8 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM8_PWM_CH3
|
||||
bool "Using TIM8 channel 3"
|
||||
|
||||
config BSP_USING_TIM8_PWM_CH4
|
||||
bool "Using TIM8 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM8_HWTIMER && BSP_USING_TIM8_PWM
|
||||
comment "BSP_USING_TIM8_HWTIMER and BSP_USING_TIM8_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM9
|
||||
bool "Using TIM9"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM9
|
||||
config BSP_USING_TIM9_HWTIMER
|
||||
bool "Using TIM9 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM9_PWM
|
||||
bool "Using TIM9 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM9_PWM
|
||||
config BSP_USING_TIM9_PWM_CH1
|
||||
bool "Using TIM9 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM9_PWM_CH2
|
||||
bool "Using TIM9 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM9_PWM_CH3
|
||||
bool "Using TIM9 channel 3"
|
||||
|
||||
config BSP_USING_TIM9_PWM_CH4
|
||||
bool "Using TIM9 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM9_HWTIMER && BSP_USING_TIM9_PWM
|
||||
comment "BSP_USING_TIM9_HWTIMER and BSP_USING_TIM9_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
config BSP_USING_TIM10
|
||||
bool "Using TIM10"
|
||||
default n
|
||||
|
||||
if BSP_USING_TIM10
|
||||
config BSP_USING_TIM10_HWTIMER
|
||||
bool "Using TIM10 as hwtimer mode"
|
||||
select BSP_USING_HWTIMER
|
||||
|
||||
config BSP_USING_TIM10_PWM
|
||||
bool "Using TIM10 as PWM mode"
|
||||
select BSP_USING_PWM
|
||||
|
||||
if BSP_USING_TIM10_PWM
|
||||
config BSP_USING_TIM10_PWM_CH1
|
||||
bool "Using TIM10 channel 1"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM10_PWM_CH2
|
||||
bool "Using TIM10 channel 2"
|
||||
default n
|
||||
|
||||
config BSP_USING_TIM10_PWM_CH3
|
||||
bool "Using TIM10 channel 3"
|
||||
|
||||
config BSP_USING_TIM10_PWM_CH4
|
||||
bool "Using TIM10 channel 4"
|
||||
endif
|
||||
|
||||
if BSP_USING_TIM10_HWTIMER && BSP_USING_TIM10_PWM
|
||||
comment "BSP_USING_TIM10_HWTIMER and BSP_USING_TIM10_PWM can only be chosen for one!"
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Board extended module Drivers"
|
||||
|
||||
endmenu
|
||||
|
||||
endmenu
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
import os
|
||||
import rtconfig
|
||||
from building import *
|
||||
|
||||
Import('SDK_LIB')
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
|
||||
# add general drivers
|
||||
src = Split('''
|
||||
board.c
|
||||
software_irq.c
|
||||
''')
|
||||
|
||||
path = [cwd]
|
||||
|
||||
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path)
|
||||
Return('group')
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2022, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2022-08-23 liYony first version
|
||||
*/
|
||||
|
||||
#include "board.h"
|
||||
#include <stdint.h>
|
||||
#include "drv_usart.h"
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
extern uint32_t SystemCoreClock;
|
||||
|
||||
static uint32_t _SysTick_Config(rt_uint32_t ticks)
|
||||
{
|
||||
NVIC_SetPriority(SysTicK_IRQn, 0xf0);
|
||||
NVIC_SetPriority(Software_IRQn, 0xf0);
|
||||
NVIC_EnableIRQ(SysTicK_IRQn);
|
||||
NVIC_EnableIRQ(Software_IRQn);
|
||||
SysTick->CTLR = 0;
|
||||
SysTick->SR = 0;
|
||||
SysTick->CNT = 0;
|
||||
SysTick->CMP = ticks - 1;
|
||||
SysTick->CTLR = 0xF;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will initial your board.
|
||||
*/
|
||||
void rt_hw_board_init()
|
||||
{
|
||||
/* System Tick Configuration */
|
||||
_SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
|
||||
|
||||
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
||||
rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END);
|
||||
#endif
|
||||
|
||||
/* USART driver initialization is open by default */
|
||||
#ifdef RT_USING_SERIAL
|
||||
rt_hw_usart_init();
|
||||
#endif
|
||||
#ifdef RT_USING_CONSOLE
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
#endif
|
||||
#ifdef RT_USING_PIN
|
||||
/* pin must initialized before i2c */
|
||||
rt_hw_pin_init();
|
||||
#endif
|
||||
/* Call components board initial (use INIT_BOARD_EXPORT()) */
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
rt_components_board_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
void SysTick_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
GET_INT_SP();
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
SysTick->SR = 0;
|
||||
rt_tick_increase();
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
FREE_INT_SP();
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2024, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2022-08-23 liYony first version
|
||||
* 2024-01-06 GSunwinder add define LED pins
|
||||
*/
|
||||
|
||||
/* <<< Use Configuration Wizard in Context Menu >>> */
|
||||
#ifndef __BOARD_H__
|
||||
#define __BOARD_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include "ch32v30x.h"
|
||||
#include "drv_gpio.h"
|
||||
#include "drv_pwm.h"
|
||||
|
||||
/* board configuration */
|
||||
#define SRAM_SIZE 64
|
||||
#define SRAM_END (0x20000000 + SRAM_SIZE * 1024)
|
||||
|
||||
extern int _ebss, _susrstack;
|
||||
#define HEAP_BEGIN ((void *)&_ebss)
|
||||
#define HEAP_END ((void *)&_susrstack)
|
||||
|
||||
/* defined the LED pin */
|
||||
#define LED_BLUE rt_pin_get("PB.4")
|
||||
#define LED_RED rt_pin_get("PA.15")
|
||||
|
||||
|
||||
void rt_hw_board_init(void);
|
||||
|
||||
#endif /* __BOARD_H__ */
|
|
@ -0,0 +1,209 @@
|
|||
ENTRY( _start )
|
||||
|
||||
__stack_size = 2048;
|
||||
|
||||
PROVIDE( _stack_size = __stack_size );
|
||||
|
||||
|
||||
MEMORY
|
||||
{
|
||||
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K
|
||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||
}
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
|
||||
.init :
|
||||
{
|
||||
_sinit = .;
|
||||
. = ALIGN(4);
|
||||
KEEP(*(SORT_NONE(.init)))
|
||||
. = ALIGN(4);
|
||||
_einit = .;
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.vector :
|
||||
{
|
||||
*(.vector);
|
||||
. = ALIGN(64);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.text :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.rodata)
|
||||
*(.rodata*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.gnu.linkonce.t.*)
|
||||
|
||||
/* section information for finsh shell */
|
||||
. = ALIGN(4);
|
||||
__fsymtab_start = .;
|
||||
KEEP(*(FSymTab))
|
||||
__fsymtab_end = .;
|
||||
. = ALIGN(4);
|
||||
__vsymtab_start = .;
|
||||
KEEP(*(VSymTab))
|
||||
__vsymtab_end = .;
|
||||
. = ALIGN(4);
|
||||
|
||||
/* section information for initial. */
|
||||
. = ALIGN(4);
|
||||
__rt_init_start = .;
|
||||
KEEP(*(SORT(.rti_fn*)))
|
||||
__rt_init_end = .;
|
||||
. = ALIGN(4);
|
||||
|
||||
/* section information for modules */
|
||||
. = ALIGN(4);
|
||||
__rtmsymtab_start = .;
|
||||
KEEP(*(RTMSymTab))
|
||||
__rtmsymtab_end = .;
|
||||
. = ALIGN(4);
|
||||
|
||||
/* section information for initial. */
|
||||
. = ALIGN(4);
|
||||
__rt_init_start = .;
|
||||
KEEP(*(SORT(.rti_fn*)))
|
||||
__rt_init_end = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
|
||||
PROVIDE(__ctors_start__ = .);
|
||||
KEEP (*(SORT(.init_array.*)))
|
||||
KEEP (*(.init_array))
|
||||
PROVIDE(__ctors_end__ = .);
|
||||
|
||||
. = ALIGN(4);
|
||||
|
||||
_etext = .;
|
||||
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.fini :
|
||||
{
|
||||
KEEP(*(SORT_NONE(.fini)))
|
||||
. = ALIGN(4);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
PROVIDE( _etext = . );
|
||||
PROVIDE( _eitcm = . );
|
||||
|
||||
.preinit_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||||
KEEP (*(.preinit_array))
|
||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.init_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__init_array_start = .);
|
||||
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
||||
KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
|
||||
PROVIDE_HIDDEN (__init_array_end = .);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.fini_array :
|
||||
{
|
||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
|
||||
KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
|
||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.ctors :
|
||||
{
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
doesn't matter if the user does not
|
||||
actually link against crtbegin.o; the
|
||||
linker won't look for a file to match a
|
||||
wildcard. The wildcard also means that it
|
||||
doesn't matter which directory crtbegin.o
|
||||
is in. */
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*crtbegin?.o(.ctors))
|
||||
/* We don't want to include the .ctor section from
|
||||
the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
end of ctors marker and it must be last */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.dtors :
|
||||
{
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*crtbegin?.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.dalign :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
PROVIDE(_data_vma = .);
|
||||
} >RAM AT>FLASH
|
||||
|
||||
.dlalign :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
PROVIDE(_data_lma = .);
|
||||
} >FLASH AT>FLASH
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.gnu.linkonce.r.*)
|
||||
*(.data .data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
. = ALIGN(8);
|
||||
PROVIDE( __global_pointer$ = . + 0x800 );
|
||||
*(.sdata .sdata.*)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s.*)
|
||||
. = ALIGN(8);
|
||||
*(.srodata.cst16)
|
||||
*(.srodata.cst8)
|
||||
*(.srodata.cst4)
|
||||
*(.srodata.cst2)
|
||||
*(.srodata .srodata.*)
|
||||
. = ALIGN(4);
|
||||
PROVIDE( _edata = .);
|
||||
} >RAM AT>FLASH
|
||||
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
PROVIDE( _sbss = .);
|
||||
*(.sbss*)
|
||||
*(.gnu.linkonce.sb.*)
|
||||
*(.bss*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON*)
|
||||
. = ALIGN(4);
|
||||
PROVIDE( _ebss = .);
|
||||
} >RAM AT>FLASH
|
||||
|
||||
PROVIDE( _end = _ebss);
|
||||
PROVIDE( end = . );
|
||||
|
||||
.stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
|
||||
{
|
||||
PROVIDE( _heap_end = . );
|
||||
. = ALIGN(4);
|
||||
PROVIDE(_susrstack = . );
|
||||
. = . + __stack_size;
|
||||
PROVIDE( _eusrstack = .);
|
||||
PROVIDE( __rt_rvstack = . );
|
||||
} >RAM
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2024, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2021-09-09 WCH the first version
|
||||
* 2023-01-04 WangShun Remove redundant files
|
||||
*/
|
||||
#include "rtconfig.h"
|
||||
#if defined (SOC_RISCV_SERIES_CH32V1)
|
||||
#include "ch32v10x.h"
|
||||
#elif defined (SOC_RISCV_SERIES_CH32V2)
|
||||
#include "ch32v20x.h"
|
||||
#elif defined (SOC_RISCV_SERIES_CH32V3)
|
||||
#include "ch32v30x.h"
|
||||
#else
|
||||
#error "CH32 architecture doesn't support!"
|
||||
#endif
|
||||
void rt_trigger_software_interrupt(void)
|
||||
{
|
||||
/*CH32V103 does not support systick software interrupt*/
|
||||
#if defined(SOC_RISCV_SERIES_CH32V1)
|
||||
NVIC_SetPendingIRQ(Software_IRQn);
|
||||
#else
|
||||
SysTick->CTLR |= (1 << 31);
|
||||
#endif
|
||||
}
|
||||
|
||||
void rt_hw_do_after_save_above(void)
|
||||
{
|
||||
__asm volatile ("li t0,0x20" );
|
||||
__asm volatile ("csrs 0x804, t0");
|
||||
/*CH32V103 does not support systick software interrupt*/
|
||||
#if defined(SOC_RISCV_SERIES_CH32V1)
|
||||
NVIC_ClearPendingIRQ(Software_IRQn);
|
||||
#else
|
||||
SysTick->CTLR &= ~(1 << 31);
|
||||
#endif
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 174 KiB |
Binary file not shown.
After Width: | Height: | Size: 193 KiB |
|
@ -0,0 +1,262 @@
|
|||
#ifndef RT_CONFIG_H__
|
||||
#define RT_CONFIG_H__
|
||||
|
||||
/* Automatically generated file; DO NOT EDIT. */
|
||||
/* RT-Thread Configuration */
|
||||
|
||||
/* RT-Thread Kernel */
|
||||
|
||||
#define RT_NAME_MAX 8
|
||||
#define RT_CPUS_NR 1
|
||||
#define RT_ALIGN_SIZE 8
|
||||
#define RT_THREAD_PRIORITY_32
|
||||
#define RT_THREAD_PRIORITY_MAX 32
|
||||
#define RT_TICK_PER_SECOND 1000
|
||||
#define RT_USING_OVERFLOW_CHECK
|
||||
#define RT_USING_HOOK
|
||||
#define RT_HOOK_USING_FUNC_PTR
|
||||
#define RT_USING_IDLE_HOOK
|
||||
#define RT_IDLE_HOOK_LIST_SIZE 4
|
||||
#define IDLE_THREAD_STACK_SIZE 512
|
||||
#define RT_USING_TIMER_SOFT
|
||||
#define RT_TIMER_THREAD_PRIO 4
|
||||
#define RT_TIMER_THREAD_STACK_SIZE 512
|
||||
|
||||
/* kservice optimization */
|
||||
|
||||
#define RT_USING_DEBUG
|
||||
#define RT_DEBUGING_COLOR
|
||||
#define RT_DEBUGING_CONTEXT
|
||||
|
||||
/* Inter-Thread communication */
|
||||
|
||||
#define RT_USING_SEMAPHORE
|
||||
#define RT_USING_MUTEX
|
||||
#define RT_USING_EVENT
|
||||
#define RT_USING_MAILBOX
|
||||
#define RT_USING_MESSAGEQUEUE
|
||||
|
||||
/* Memory Management */
|
||||
|
||||
#define RT_USING_SMALL_MEM
|
||||
#define RT_USING_SMALL_MEM_AS_HEAP
|
||||
#define RT_USING_HEAP
|
||||
#define RT_USING_DEVICE
|
||||
#define RT_USING_CONSOLE
|
||||
#define RT_CONSOLEBUF_SIZE 128
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart1"
|
||||
#define RT_VER_NUM 0x50100
|
||||
#define RT_BACKTRACE_LEVEL_MAX_NR 32
|
||||
#define RT_USING_HW_ATOMIC
|
||||
#define ARCH_RISCV
|
||||
|
||||
/* RT-Thread Components */
|
||||
|
||||
#define RT_USING_COMPONENTS_INIT
|
||||
#define RT_USING_USER_MAIN
|
||||
#define RT_MAIN_THREAD_STACK_SIZE 2048
|
||||
#define RT_MAIN_THREAD_PRIORITY 10
|
||||
#define RT_USING_MSH
|
||||
#define RT_USING_FINSH
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_THREAD_NAME "tshell"
|
||||
#define FINSH_THREAD_PRIORITY 20
|
||||
#define FINSH_THREAD_STACK_SIZE 1024
|
||||
#define FINSH_USING_HISTORY
|
||||
#define FINSH_HISTORY_LINES 5
|
||||
#define FINSH_USING_SYMTAB
|
||||
#define FINSH_CMD_SIZE 80
|
||||
#define MSH_USING_BUILT_IN_COMMANDS
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_ARG_MAX 10
|
||||
#define FINSH_USING_OPTION_COMPLETION
|
||||
|
||||
/* DFS: device virtual file system */
|
||||
|
||||
|
||||
/* Device Drivers */
|
||||
|
||||
#define RT_USING_DEVICE_IPC
|
||||
#define RT_UNAMED_PIPE_NUMBER 64
|
||||
#define RT_USING_SERIAL
|
||||
#define RT_USING_SERIAL_V1
|
||||
#define RT_SERIAL_RB_BUFSZ 64
|
||||
#define RT_USING_PIN
|
||||
|
||||
/* Using USB */
|
||||
|
||||
|
||||
/* C/C++ and POSIX layer */
|
||||
|
||||
/* ISO-ANSI C layer */
|
||||
|
||||
/* Timezone and Daylight Saving Time */
|
||||
|
||||
#define RT_LIBC_USING_LIGHT_TZ_DST
|
||||
#define RT_LIBC_TZ_DEFAULT_HOUR 8
|
||||
#define RT_LIBC_TZ_DEFAULT_MIN 0
|
||||
#define RT_LIBC_TZ_DEFAULT_SEC 0
|
||||
|
||||
/* POSIX (Portable Operating System Interface) layer */
|
||||
|
||||
|
||||
/* Interprocess Communication (IPC) */
|
||||
|
||||
|
||||
/* Socket is in the 'Network' category */
|
||||
|
||||
|
||||
/* Network */
|
||||
|
||||
|
||||
/* Memory protection */
|
||||
|
||||
|
||||
/* Utilities */
|
||||
|
||||
|
||||
/* RT-Thread Utestcases */
|
||||
|
||||
|
||||
/* RT-Thread online packages */
|
||||
|
||||
/* IoT - internet of things */
|
||||
|
||||
|
||||
/* Wi-Fi */
|
||||
|
||||
/* Marvell WiFi */
|
||||
|
||||
|
||||
/* Wiced WiFi */
|
||||
|
||||
|
||||
/* CYW43012 WiFi */
|
||||
|
||||
|
||||
/* BL808 WiFi */
|
||||
|
||||
|
||||
/* CYW43439 WiFi */
|
||||
|
||||
|
||||
/* IoT Cloud */
|
||||
|
||||
|
||||
/* security packages */
|
||||
|
||||
|
||||
/* language packages */
|
||||
|
||||
/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
|
||||
|
||||
|
||||
/* XML: Extensible Markup Language */
|
||||
|
||||
|
||||
/* multimedia packages */
|
||||
|
||||
/* LVGL: powerful and easy-to-use embedded GUI library */
|
||||
|
||||
|
||||
/* u8g2: a monochrome graphic library */
|
||||
|
||||
|
||||
/* tools packages */
|
||||
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* enhanced kernel services */
|
||||
|
||||
|
||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||
|
||||
|
||||
/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
|
||||
|
||||
|
||||
/* Micrium: Micrium software products porting for RT-Thread */
|
||||
|
||||
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
/* sensors drivers */
|
||||
|
||||
|
||||
/* touch drivers */
|
||||
|
||||
|
||||
/* Kendryte SDK */
|
||||
|
||||
|
||||
/* AI packages */
|
||||
|
||||
|
||||
/* Signal Processing and Control Algorithm Packages */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
/* project laboratory */
|
||||
|
||||
/* samples: kernel and components samples */
|
||||
|
||||
|
||||
/* entertainment: terminal games and other interesting software packages */
|
||||
|
||||
|
||||
/* Arduino libraries */
|
||||
|
||||
|
||||
/* Projects and Demos */
|
||||
|
||||
|
||||
/* Sensors */
|
||||
|
||||
|
||||
/* Display */
|
||||
|
||||
|
||||
/* Timing */
|
||||
|
||||
|
||||
/* Data Processing */
|
||||
|
||||
|
||||
/* Data Storage */
|
||||
|
||||
/* Communication */
|
||||
|
||||
|
||||
/* Device Control */
|
||||
|
||||
|
||||
/* Other */
|
||||
|
||||
|
||||
/* Signal IO */
|
||||
|
||||
|
||||
/* Uncategorized */
|
||||
|
||||
#define SOC_RISCV_FAMILY_CH32
|
||||
#define SOC_RISCV_SERIES_CH32V3
|
||||
|
||||
/* Hardware Drivers Config */
|
||||
|
||||
#define SOC_CH32V307VC
|
||||
|
||||
/* Onboard Peripheral Drivers */
|
||||
|
||||
/* On-chip Peripheral Drivers */
|
||||
|
||||
#define BSP_USING_GPIO
|
||||
#define BSP_USING_UART
|
||||
#define BSP_USING_UART1
|
||||
#define LSI_VALUE 39000
|
||||
|
||||
/* Board extended module Drivers */
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,70 @@
|
|||
import os
|
||||
ARCH = 'risc-v'
|
||||
CPU = 'ch32'
|
||||
# toolchains options
|
||||
CROSS_TOOL = 'gcc'
|
||||
|
||||
#------- toolchains path -------------------------------------------------------
|
||||
if os.getenv('RTT_CC'):
|
||||
CROSS_TOOL = os.getenv('RTT_CC')
|
||||
|
||||
if CROSS_TOOL == 'gcc':
|
||||
PLATFORM = 'gcc'
|
||||
EXEC_PATH = r'/opt/MRS_Toolchain_Linux_x64_V1.90/RISC-V_Embedded_GCC/bin/'
|
||||
else:
|
||||
print('Please make sure your toolchains is GNU GCC!')
|
||||
exit(0)
|
||||
|
||||
if os.getenv('RTT_EXEC_PATH'):
|
||||
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
||||
|
||||
BUILD = 'debug'
|
||||
#BUILD = 'release'
|
||||
|
||||
CORE = 'risc-v'
|
||||
MAP_FILE = 'rtthread.map'
|
||||
LINK_FILE = './board/linker_scripts/link.lds'
|
||||
TARGET_NAME = 'rtthread.bin'
|
||||
|
||||
#------- GCC settings ----------------------------------------------------------
|
||||
if PLATFORM == 'gcc':
|
||||
# toolchains
|
||||
PREFIX = 'riscv-none-embed-'
|
||||
CC = PREFIX + 'gcc'
|
||||
CXX= PREFIX + 'g++'
|
||||
AS = PREFIX + 'gcc'
|
||||
AR = PREFIX + 'ar'
|
||||
LINK = PREFIX + 'gcc'
|
||||
TARGET_EXT = 'elf'
|
||||
SIZE = PREFIX + 'size'
|
||||
OBJDUMP = PREFIX + 'objdump'
|
||||
OBJCPY = PREFIX + 'objcopy'
|
||||
|
||||
DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
|
||||
CFLAGS = DEVICE
|
||||
CFLAGS += ' -save-temps=obj'
|
||||
AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp'
|
||||
LFLAGS = DEVICE
|
||||
LFLAGS += ' -Wl,--gc-sections,-cref,-Map=' + MAP_FILE
|
||||
LFLAGS += ' -T ' + LINK_FILE
|
||||
AFLAGS += ' -I.'
|
||||
CPATH = ''
|
||||
LPATH = ''
|
||||
|
||||
if BUILD == 'debug':
|
||||
CFLAGS += ' -O0 -g3'
|
||||
AFLAGS += ' -g3'
|
||||
else:
|
||||
CFLAGS += ' -O2'
|
||||
|
||||
CXXFLAGS = CFLAGS
|
||||
|
||||
POST_ACTION = OBJCPY + ' -O binary $TARGET ' + TARGET_NAME + '\n'
|
||||
POST_ACTION += SIZE + ' $TARGET\n'
|
||||
|
||||
def dist_handle(BSP_ROOT, dist_dir):
|
||||
import sys
|
||||
cwd_path = os.getcwd()
|
||||
sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools'))
|
||||
from sdk_dist import dist_do_building
|
||||
dist_do_building(BSP_ROOT, dist_dir)
|
Loading…
Reference in New Issue