Merge pull request #5192 from nuclei-community/nuclei/upstream
bsp/nuclei: update nuclei target support code
This commit is contained in:
commit
abf8812802
|
@ -6,7 +6,7 @@ currently we mainly provided the following board support packages.
|
||||||
| **BSP** | **Development Board Name** |
|
| **BSP** | **Development Board Name** |
|
||||||
| :----------------------------------- | :--------------------------------------------------------------------------------------------------------- |
|
| :----------------------------------- | :--------------------------------------------------------------------------------------------------------- |
|
||||||
| [gd32vf103_rvstar](gd32vf103_rvstar) | [Nuclei RV-STAR Arduino Compatible Development Board](https://www.rvmcu.com/quickstart-doc-u-rvstar.html) |
|
| [gd32vf103_rvstar](gd32vf103_rvstar) | [Nuclei RV-STAR Arduino Compatible Development Board](https://www.rvmcu.com/quickstart-doc-u-rvstar.html) |
|
||||||
| [hbird_eval](hbird_eval) | [Nuclei HummingBird FPGA Evaluation Development Board](https://nucleisys.com/developboard.php#ddr200t) |
|
| [nuclei_fpga_eval](nuclei_fpga_eval) | [Nuclei FPGA Evaluation Development Board](https://nucleisys.com/developboard.php#ddr200t) |
|
||||||
|
|
||||||
**If you want to learn more about Nuclei Processors, please click the following links:**
|
**If you want to learn more about Nuclei Processors, please click the following links:**
|
||||||
|
|
||||||
|
|
|
@ -187,9 +187,10 @@ void eclic_irq20_handler(void)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For HBird Uart, when CPU freq is lower than 8M
|
/* For Nuclei demosoc Uart, when CPU freq is lower than 8M
|
||||||
The uart read will only work on baudrate <= 57600 */
|
The uart read will only work on baudrate <= 57600.
|
||||||
#define DRV_UART_BAUDRATE BAUD_RATE_57600
|
Nowadays, we usually distribute FPGA bitsteam with CPU Freq 16MHz */
|
||||||
|
#define DRV_UART_BAUDRATE BAUD_RATE_115200
|
||||||
|
|
||||||
int rt_hw_uart_init(void)
|
int rt_hw_uart_init(void)
|
||||||
{
|
{
|
|
@ -660,7 +660,7 @@ CONFIG_PKG_NUCLEI_SDK_VER="latest"
|
||||||
#
|
#
|
||||||
# Hardware Drivers Config
|
# Hardware Drivers Config
|
||||||
#
|
#
|
||||||
CONFIG_SOC_HUMMINGBIRD=y
|
CONFIG_SOC_DEMOSOC=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Onboard Peripheral Drivers
|
# Onboard Peripheral Drivers
|
|
@ -19,7 +19,7 @@ source "$RTT_DIR/Kconfig"
|
||||||
source "$PKGS_DIR/Kconfig"
|
source "$PKGS_DIR/Kconfig"
|
||||||
source "board/Kconfig"
|
source "board/Kconfig"
|
||||||
|
|
||||||
config SOC_HUMMINGBIRD
|
config SOC_DEMOSOC
|
||||||
bool
|
bool
|
||||||
select ARCH_RISCV
|
select ARCH_RISCV
|
||||||
select PKG_USING_NUCLEI_SDK
|
select PKG_USING_NUCLEI_SDK
|
|
@ -1,14 +1,14 @@
|
||||||
# 芯来科技蜂鸟FPGA评估板
|
# 芯来科技FPGA评估板
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
|
|
||||||
**蜂鸟FPGA系列评估板** 是由芯来科技公司推出的用于一系列测试评估芯来RISC-V内核处理器的FPGA评估板。
|
**芯来科技FPGA系列板** 是由芯来科技公司推出的用于一系列测试评估芯来RISC-V内核处理器的FPGA评估板。
|
||||||
|
|
||||||
更多关于 **蜂鸟FPGA评估板** 开发板的详细资料请参见:
|
更多关于 **芯来科技FPGA评估板** 开发板的详细资料请参见:
|
||||||
|
|
||||||
* [Nuclei DDR200T开发板](https://nucleisys.com/developboard.php#ddr200t)
|
* [Nuclei DDR200T开发板](https://nucleisys.com/developboard.php#ddr200t)
|
||||||
* [Nuclei MCU200T开发板](https://nucleisys.com/developboard.php#mcu200t)
|
* [Nuclei MCU200T开发板](https://nucleisys.com/developboard.php#mcu200t)
|
||||||
* [蜂鸟开发板](https://nucleisys.com/developboard.php#hbird100t)
|
* [蜂鸟开发板](https://nucleisys.com/developboard.php#demosoc100t)
|
||||||
|
|
||||||
### 板载资源
|
### 板载资源
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| 内核 | Nuclei RISC-V N/NX/UX 内核 |
|
| 内核 | Nuclei RISC-V N/NX/UX 内核 |
|
||||||
| 架构 | RV32 or RV64 |
|
| 架构 | RV32 or RV64 |
|
||||||
| 主频 | 8MHz or uncertain freq |
|
| 主频 | 16MHz or uncertain freq |
|
||||||
|
|
||||||
**注意**: 这个上面烧写的是FPGA bitstream文件,所以处理器内核版本根据型号来定,通过修改**rtconfig.py**中的**NUCLEI_SDK_CORE**.
|
**注意**: 这个上面烧写的是FPGA bitstream文件,所以处理器内核版本根据型号来定,通过修改**rtconfig.py**中的**NUCLEI_SDK_CORE**.
|
||||||
|
|
||||||
|
@ -33,28 +33,28 @@
|
||||||
|
|
||||||
#### Windows
|
#### Windows
|
||||||
|
|
||||||
假设工具安装在 **D:\Software\Nuclei**目录下, 则可以修改系统环境变量**PATH**,
|
假设工具安装在 **D:\NucleiStudio\toolchain**目录下, 则可以修改系统环境变量**PATH**,
|
||||||
将**D:\Software\Nuclei\gcc\bin;D:\Software\Nuclei\openocd\bin;**增加到**PATH**中。
|
将**D:\NucleiStudio\toolchain\gcc\bin;D:\NucleiStudio\toolchain\openocd\bin;**增加到**PATH**中。
|
||||||
|
|
||||||
或者在ENV工具命令行中运行
|
或者在ENV工具命令行中运行
|
||||||
|
|
||||||
~~~cmd
|
~~~cmd
|
||||||
set PATH=D:\Software\Nuclei\gcc\bin;D:\Software\Nuclei\openocd\bin;%PATH%
|
set PATH=D:\NucleiStudio\toolchain\gcc\bin;D:\NucleiStudio\toolchain\openocd\bin;%PATH%
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
|
|
||||||
假设工具安装在 **~/Software/Nuclei**目录下, 通过在Linux的``.bashrc``增加如下一行代码
|
假设工具安装在 **~/NucleiStudio/toolchain**目录下, 通过在Linux的``.bashrc``增加如下一行代码
|
||||||
来添加环境变量。
|
来添加环境变量。
|
||||||
|
|
||||||
~~~bash
|
~~~bash
|
||||||
export PATH=~/Software/Nuclei/gcc/bin:~/Software/Nuclei/openocd/bin:$PATH
|
export PATH=~/NucleiStudio/toolchain/gcc/bin:~/NucleiStudio/toolchain/openocd/bin:$PATH
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
或者在ENV工具命令行中运行
|
或者在ENV工具命令行中运行
|
||||||
|
|
||||||
~~~bash
|
~~~bash
|
||||||
export PATH=~/Software/Nuclei/gcc/bin:~/Software/Nuclei/openocd/bin:$PATH
|
export PATH=~/NucleiStudio/toolchain/gcc/bin:~/NucleiStudio/toolchain/openocd/bin:$PATH
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
**注意**: 对应的RISC-V GCC和OPENOCD的路径请替换成自己安装的路径。
|
**注意**: 对应的RISC-V GCC和OPENOCD的路径请替换成自己安装的路径。
|
||||||
|
@ -69,7 +69,7 @@ export PATH=~/Software/Nuclei/gcc/bin:~/Software/Nuclei/openocd/bin:$PATH
|
||||||
|
|
||||||
下载好[RT-Thread](https://github.com/RT-Thread/rt-thread)的代码和[ENV工具](https://www.rt-thread.org/document/site/tutorial/env-video/)以后。
|
下载好[RT-Thread](https://github.com/RT-Thread/rt-thread)的代码和[ENV工具](https://www.rt-thread.org/document/site/tutorial/env-video/)以后。
|
||||||
|
|
||||||
按照ENV工具的教程, 在**rt-thread\bsp\nuclei\hbird_eval**目录打开ENV工具命令行。
|
按照ENV工具的教程, 在**rt-thread\bsp\nuclei\nuclei_fpga_eval**目录打开ENV工具命令行。
|
||||||
|
|
||||||
**注意**: 请确保Nuclei GCC和Nuclei OpenOCD的路径设置正确无误。
|
**注意**: 请确保Nuclei GCC和Nuclei OpenOCD的路径设置正确无误。
|
||||||
|
|
||||||
|
@ -91,9 +91,9 @@ export PATH=~/Software/Nuclei/gcc/bin:~/Software/Nuclei/openocd/bin:$PATH
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
scons: Reading SConscript files ...
|
scons: Reading SConscript files ...
|
||||||
Supported downloaded modes for board hbird_eval are ('ilm', 'flash', 'flashxip'), chosen downloaded mode is ilm
|
Supported downloaded modes for board nuclei_fpga_eval are ('ilm', 'flash', 'flashxip'), chosen downloaded mode is ilm
|
||||||
Upload application rtthread.elf using openocd and gdb
|
Upload application rtthread.elf using openocd and gdb
|
||||||
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/hbird_eval/packages/nuclei_sdk-latest/SoC/hbird/Board/hbird_eval/openocd_hbird.cfg"
|
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/nuclei_fpga_eval/packages/nuclei_sdk-latest/SoC/demosoc/Board/nuclei_fpga_eval/openocd_demosoc.cfg"
|
||||||
--batch -ex "monitor halt" -ex "monitor flash protect 0 0 last off" -ex "load" -ex "monitor resume" -ex "monitor shutdown" -ex "quit"
|
--batch -ex "monitor halt" -ex "monitor flash protect 0 0 last off" -ex "load" -ex "monitor resume" -ex "monitor shutdown" -ex "quit"
|
||||||
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
||||||
Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04:09)
|
Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04:09)
|
||||||
|
@ -119,11 +119,9 @@ Quit anyway? (y or n) [answered Y; input not from terminal]
|
||||||
[Inferior 1 (Remote target) detached]
|
[Inferior 1 (Remote target) detached]
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
下载程序之后, 连接**串口(57600-N-8-1)**, 可以看到 RT-Thread 的输出信息:
|
下载程序之后, 连接**串口(115200-N-8-1)**, 可以看到 RT-Thread 的输出信息:
|
||||||
|
|
||||||
> 由于FPGA评估的Nuclei RISC-V内核主频一般在8MHz左右, 而评估SoC串口
|
> 最新发布出去的评估Bit一般都是16MHz, 串口工作在115200bps下串口读取可以正常工作.
|
||||||
> 在8MHz主频下,工作大于在115200 bps时,串口读取工作不正常,因此这里设置
|
|
||||||
> 波特率为57600bps,特此说明.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
initialize rti_board_start:0 done
|
initialize rti_board_start:0 done
|
||||||
|
@ -161,9 +159,9 @@ msh />
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
scons: Reading SConscript files ...
|
scons: Reading SConscript files ...
|
||||||
Supported downloaded modes for board hbird_eval are ('ilm', 'flash', 'flashxip'), chosen downloaded mode is ilm
|
Supported downloaded modes for board nuclei_fpga_eval are ('ilm', 'flash', 'flashxip'), chosen downloaded mode is ilm
|
||||||
Debug application rtthread.elf using openocd and gdb
|
Debug application rtthread.elf using openocd and gdb
|
||||||
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/hbird_eval/packages/nuclei_sdk-latest/SoC/hbird/Board/hbird_eval/openocd_hbird.cfg"
|
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/nuclei_fpga_eval/packages/nuclei_sdk-latest/SoC/demosoc/Board/nuclei_fpga_eval/openocd_demosoc.cfg"
|
||||||
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
||||||
GNU gdb (GDB) 8.3.0.20190516-git
|
GNU gdb (GDB) 8.3.0.20190516-git
|
||||||
Copyright (C) 2019 Free Software Foundation, Inc.
|
Copyright (C) 2019 Free Software Foundation, Inc.
|
||||||
|
@ -181,7 +179,7 @@ Find the GDB manual and other documentation resources online at:
|
||||||
For help, type "help".
|
For help, type "help".
|
||||||
Type "apropos word" to search for commands related to "word"...
|
Type "apropos word" to search for commands related to "word"...
|
||||||
Reading symbols from rtthread.elf...
|
Reading symbols from rtthread.elf...
|
||||||
Remote debugging using | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/hbird_eval/packages/nuclei_sdk-latest/SoC/hbird/Board/hbird_eval/openocd_hbird.cfg
|
Remote debugging using | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/nuclei_fpga_eval/packages/nuclei_sdk-latest/SoC/demosoc/Board/nuclei_fpga_eval/openocd_demosoc.cfg
|
||||||
Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04:09)
|
Nuclei OpenOCD, i386 Open On-Chip Debugger 0.10.0+dev-g11f0cf429 (2020-07-15-04:09)
|
||||||
Licensed under GNU GPL v2
|
Licensed under GNU GPL v2
|
||||||
For bug reports, read
|
For bug reports, read
|
||||||
|
@ -215,7 +213,7 @@ Continuing.
|
||||||
* https://doc.nucleisys.com/nuclei_sdk/quickstart.html#debug-application
|
* https://doc.nucleisys.com/nuclei_sdk/quickstart.html#debug-application
|
||||||
|
|
||||||
为了更方便的进行调试, 也可以下载**Nuclei Studio**集成开发环境, 创建一个Debug Configuration, 选择编译好的
|
为了更方便的进行调试, 也可以下载**Nuclei Studio**集成开发环境, 创建一个Debug Configuration, 选择编译好的
|
||||||
ELF文件, 然后配置OPENOCD和GDB即可, OPENOCD配置文件路径为**bsp\nuclei\hbird_eval\packages\nuclei_sdk-latest\SoC\hbird\Board\hbird_eval\openocd_hbird.cfg**
|
ELF文件, 然后配置OPENOCD和GDB即可, OPENOCD配置文件路径为**bsp\nuclei\nuclei_fpga_eval\packages\nuclei_sdk-latest\SoC\demosoc\Board\nuclei_fpga_eval\openocd_demosoc.cfg**
|
||||||
|
|
||||||
|
|
||||||
## 驱动支持情况
|
## 驱动支持情况
|
||||||
|
@ -226,9 +224,9 @@ ELF文件, 然后配置OPENOCD和GDB即可, OPENOCD配置文件路径为**bsp\nu
|
||||||
|
|
||||||
**注:**
|
**注:**
|
||||||
|
|
||||||
- 适配RT-Thread的驱动框架的代码在 [../libraries/hbird/HAL_Drivers](../libraries/hbird/HAL_Drivers)目录下。
|
- 适配RT-Thread的驱动框架的代码在 [../libraries/demosoc/HAL_Drivers](../libraries/demosoc/HAL_Drivers)目录下。
|
||||||
- 如果有开发者想适配更多的驱动, 请在对应目录下增加驱动适配支持。
|
- 如果有开发者想适配更多的驱动, 请在对应目录下增加驱动适配支持。
|
||||||
- 目前串口读取功能在主频为8MHz情况下需要工作在57600bps
|
- 目前串口读取功能在主频为8MHz情况下需要工作在57600bps, 目前发布的Bit一般都是16Mhz
|
||||||
- 目前串口读取没有采用中断的方式进行,而是采用单独的任务来读取,等中断信号接入后可以直接中断方式读取
|
- 目前串口读取没有采用中断的方式进行,而是采用单独的任务来读取,等中断信号接入后可以直接中断方式读取
|
||||||
|
|
||||||
## 联系人信息
|
## 联系人信息
|
|
@ -227,7 +227,7 @@
|
||||||
|
|
||||||
/* Hardware Drivers Config */
|
/* Hardware Drivers Config */
|
||||||
|
|
||||||
#define SOC_HUMMINGBIRD
|
#define SOC_DEMOSOC
|
||||||
|
|
||||||
/* Onboard Peripheral Drivers */
|
/* Onboard Peripheral Drivers */
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import platform
|
||||||
|
|
||||||
# toolchains options
|
# toolchains options
|
||||||
ARCH='risc-v'
|
ARCH='risc-v'
|
||||||
|
@ -10,17 +11,23 @@ if os.getenv('RTT_CC'):
|
||||||
|
|
||||||
if CROSS_TOOL == 'gcc':
|
if CROSS_TOOL == 'gcc':
|
||||||
PLATFORM = 'gcc'
|
PLATFORM = 'gcc'
|
||||||
EXEC_PATH = 'D:/Software/Nuclei/gcc/bin'
|
if platform.system().lower() == "windows":
|
||||||
|
EXEC_PATH = 'D:/NucleiStudio/toolchain/gcc/bin'
|
||||||
|
else:
|
||||||
|
EXEC_PATH = '~/NucleiStudio/toolchain/gcc/bin'
|
||||||
|
if os.path.exists(EXEC_PATH) == False:
|
||||||
|
print("Warning: Toolchain path %s doesn't exist, assume it is already in PATH" % EXEC_PATH)
|
||||||
|
EXEC_PATH = '' # Don't set path if not exist
|
||||||
else:
|
else:
|
||||||
print("CROSS_TOOL = {} not yet supported" % CROSS_TOOL)
|
print("CROSS_TOOL = %s not yet supported" % CROSS_TOOL)
|
||||||
|
|
||||||
# if os.getenv('RTT_EXEC_PATH'):
|
if os.getenv('RTT_EXEC_PATH'):
|
||||||
# EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
|
||||||
|
|
||||||
BUILD = 'debug'
|
BUILD = 'debug'
|
||||||
# Fixed configurations below
|
# Fixed configurations below
|
||||||
NUCLEI_SDK_SOC = "hbird"
|
NUCLEI_SDK_SOC = "demosoc"
|
||||||
NUCLEI_SDK_BOARD = "hbird_eval"
|
NUCLEI_SDK_BOARD = "nuclei_fpga_eval"
|
||||||
# Configurable options below
|
# Configurable options below
|
||||||
# DOWNLOAD: https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#download
|
# DOWNLOAD: https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#download
|
||||||
NUCLEI_SDK_DOWNLOAD = "ilm"
|
NUCLEI_SDK_DOWNLOAD = "ilm"
|
|
@ -143,9 +143,7 @@ void rt_hw_context_switch_interrupt(rt_ubase_t from, rt_ubase_t to)
|
||||||
*/
|
*/
|
||||||
void rt_hw_context_switch(rt_ubase_t from, rt_ubase_t to)
|
void rt_hw_context_switch(rt_ubase_t from, rt_ubase_t to)
|
||||||
{
|
{
|
||||||
rt_interrupt_from_thread = from;
|
rt_hw_context_switch_interrupt(from, to);
|
||||||
rt_interrupt_to_thread = to;
|
|
||||||
RT_YIELD();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue