Nuclei-Software / nuclei-sdk

Nuclei RISC-V Software Development Kit
https://doc.nucleisys.com/nuclei_sdk
Apache License 2.0
122 stars 51 forks source link

SoC: Add Sipeed Longan Nano BSP for gd32vf103 SoC #12

Closed RomanBuchert closed 3 years ago

RomanBuchert commented 3 years ago

Sipeeds Longan Nano board added.

RomanBuchert commented 3 years ago

Thank you for your contribution.

  1. Could you add documentation for this longan Nano board, previous examples could be found here: https://github.com/Nuclei-Software/nuclei-sdk/tree/master/doc/source/design/board, and you can follow https://doc.nucleisys.com/nuclei_sdk/develop/builddoc.html to build the documentation
  2. Make sure you have tested all the application and test code in application and test folder. For sample application output can be found at https://doc.nucleisys.com/nuclei_sdk/design/app.html
  3. Make sure the openocd configuration file you provided can work with your JTAG used on this board, and mention about what jtag you are using.

Thanks Huaqi I tried to build the tests. But they fail in the same place with both the longan board and the rvstar board. testbuild_longan.txt testbuild_rvstar.txt

fanghuaqi commented 3 years ago

Hi @RomanBuchert ,

Here are my log for the test application using master branch:

Current Configuration: RISCV_ARCH=rv32imac RISCV_ABI=ilp32 SOC=gd32vf103 BOARD=gd32vf103v_rvstar CORE=n205 DOWNLOAD=flashxip
"Assembling : " ../../SoC/gd32vf103/Common/Source/GCC/intexc_gd32vf103.S
"Assembling : " ../../SoC/gd32vf103/Common/Source/GCC/startup_gd32vf103.S
"Compiling  : " ../../SoC/gd32vf103/Board/gd32vf103v_rvstar/Source/gd32vf103v_rvstar.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_adc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_bkp.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_can.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_crc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dac.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dbg.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dma.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_exmc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_exti.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_fmc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_fwdgt.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_gpio.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_i2c.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_pmu.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_rcu.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_rtc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_spi.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_timer.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_usart.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_wwdgt.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/clock_getres.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/clock_gettime.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/clock_settime.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/close.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/execve.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/exit.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/fork.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/fstat.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/getpid.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/gettimeofday.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/isatty.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/kill.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/link.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/lseek.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/open.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/read.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/sbrk.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/stat.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/times.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/unlink.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/wait.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/Stubs/write.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/gd32vf103_soc.c
"Compiling  : " ../../SoC/gd32vf103/Common/Source/system_gd32vf103.c
"Compiling  : " main.c
"Compiling  : " test_atomic.c
"Compiling  : " test_compiler.c
"Compiling  : " test_csr.c
"Compiling  : " test_eclic.c
"Compiling  : " test_fpu.c
"Compiling  : " test_pmp.c
"Compiling  : " test_timer.c
"Linking    : " test.elf
   text    data     bss     dec     hex filename
  52350    2144    6728   61222    ef26 test.elf

Could you check if there is any changes you maded to startup files?

Toolchain version(2020.08) I use is downloaded from: https://nucleisys.com/download.php

Thanks Huaqi

RomanBuchert commented 3 years ago

I did a pull from your repository. I think, there was a problem with my version from yesterday. Now it also works with both boards.

Current Configuration: RISCV_ARCH=rv32imac RISCV_ABI=ilp32 SOC=gd32vf103 BOARD=gd32vf103v_longan_nano CORE=n205 DOWNLOAD=flashxip
Assembling :  ../../SoC/gd32vf103/Common/Source/GCC/intexc_gd32vf103.S
Assembling :  ../../SoC/gd32vf103/Common/Source/GCC/startup_gd32vf103.S
Compiling  :  ../../SoC/gd32vf103/Board/gd32vf103v_longan_nano/Source/gd32vf103v_longan_nano.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_adc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_bkp.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_can.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_crc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dac.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dbg.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_dma.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_exmc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_exti.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_fmc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_fwdgt.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_gpio.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_i2c.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_pmu.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_rcu.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_rtc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_spi.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_timer.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_usart.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Drivers/gd32vf103_wwdgt.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/clock_getres.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/clock_gettime.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/clock_settime.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/close.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/execve.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/exit.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/fork.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/fstat.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/getpid.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/gettimeofday.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/isatty.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/kill.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/link.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/lseek.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/open.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/read.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/sbrk.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/stat.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/times.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/unlink.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/wait.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/Stubs/write.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/gd32vf103_soc.c
Compiling  :  ../../SoC/gd32vf103/Common/Source/system_gd32vf103.c
Compiling  :  main.c
Compiling  :  test_atomic.c
Compiling  :  test_compiler.c
Compiling  :  test_csr.c
Compiling  :  test_eclic.c
Compiling  :  test_fpu.c
Compiling  :  test_pmp.c
Compiling  :  test_timer.c
Linking    :  test.elf
   text    data     bss     dec     hex filename
  52120    2144    6728   60992    ee40 test.elf
RomanBuchert commented 3 years ago

HI @fanghuaqi, now I have the next problem. When I try to build the docs as descripted in https://doc.nucleisys.com/nuclei_sdk/develop/builddoc.html I get an error, that the file nuclei-sdk/doc/source/contents.rst is not found. The python requirements are installed. builddoc.txt

fanghuaqi commented 3 years ago

Did you use python3? and installed all the requirements required by the doc build?

RomanBuchert commented 3 years ago

I found the mistake. I had to install the requirements global (root) not only as local user.

Sphinx v2.2.2 in Verwendung
/home/roman/.local/lib/python3.7/site-packages/sphinx/util/docutils.py:285: RemovedInSphinx30Warning: function based directive support is now deprecated. Use class based directive instead.
  RemovedInSphinx30Warning)
making output directory... erledigt
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 27 source files that are out of date
updating environment: [new config] 27 added, 0 changed, 0 removed
/home/roman/.local/lib/python3.7/site-packages/sphinx/util/nodes.py:151: FutureWarning:                                                                                                                                                                                        
   The iterable returned by Node.traverse()
   will become an iterator instead of a list in Docutils > 0.16.
  for classifier in reversed(node.parent.traverse(nodes.classifier)):
reading sources... [100%] quickstart                                                                                                                                                                                                                                           
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:785: WARNING: Inline emphasis start-string without end-string.
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:785: WARNING: Inline emphasis start-string without end-string.
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:800: WARNING: Inline emphasis start-string without end-string.
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:800: WARNING: Inline emphasis start-string without end-string.
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:815: WARNING: Inline emphasis start-string without end-string.
/home/roman/localgit/risc-v/nuclei/nuclei-sdk/doc/source/develop/buildsystem.rst:815: WARNING: Inline emphasis start-string without end-string.
looking for now-outdated files... none found
pickling environment... erledigt
checking consistency... erledigt
preparing documents... erledigt
writing output... [100%] quickstart                                                                                                                                                                                                                                            
generating indices...  genindexerledigt
writing additional pages...  search/usr/lib/python3/dist-packages/sphinx_rtd_theme/search.html:21: RemovedInSphinx30Warning: To modify script_files in the theme is deprecated. Please insert a <script> tag directly in your theme instead.
  {% endblock %}
erledigt
copying images... [100%] asserts/images/nuclei_app_helloworld_uart.png                                                                                                                                                                                                         
copying static files... ... erledigt
copying extra files... erledigt
dumping search index in English (code: en)... erledigt
dumping object inventory... erledigt
build abgeschlossen, 6 warnings.

The HTML pages are in build/html.

Did you use python3? and installed all the requirements required by the doc build?

Yes, I'm using python3 and installed the requierements as descriped on https://doc.nucleisys.com/nuclei_sdk/develop/builddoc.html

roman@nb-usbdebug:~/localgit/risc-v/nuclei/nuclei-sdk/doc$ python3 -m 'pip' install -r requirements.txt
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: breathe~=4.13.1 in /home/roman/.local/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (4.13.1)
Requirement already satisfied: commonmark~=0.9.1 in /home/roman/.local/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (0.9.1)
Requirement already satisfied: recommonmark~=0.6.0 in /home/roman/.local/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (0.6.0)
Requirement already satisfied: Sphinx~=2.2.0 in /home/roman/.local/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (2.2.2)
Requirement already satisfied: sphinx-rtd-theme~=0.4.3 in /usr/lib/python3/dist-packages (from -r requirements.txt (line 5)) (0.4.3)
Requirement already satisfied: six>=1.9 in /usr/lib/python3/dist-packages (from breathe~=4.13.1->-r requirements.txt (line 1)) (1.12.0)
Requirement already satisfied: docutils>=0.12 in /home/roman/.local/lib/python3.7/site-packages (from breathe~=4.13.1->-r requirements.txt (line 1)) (0.16)
Requirement already satisfied: requests>=2.5.0 in /usr/lib/python3/dist-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.21.0)
Requirement already satisfied: Pygments>=2.0 in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.7.2)
Requirement already satisfied: snowballstemmer>=1.1 in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.0.0)
Requirement already satisfied: babel!=2.0,>=1.3 in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.9.0)
Requirement already satisfied: sphinxcontrib-devhelp in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.0.2)
Requirement already satisfied: sphinxcontrib-jsmath in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.0.1)
Requirement already satisfied: Jinja2>=2.3 in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.11.2)
Requirement already satisfied: packaging in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (20.4)
Requirement already satisfied: alabaster<0.8,>=0.7 in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (0.7.12)
Requirement already satisfied: sphinxcontrib-applehelp in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.0.2)
Requirement already satisfied: sphinxcontrib-htmlhelp in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.0.3)
Requirement already satisfied: sphinxcontrib-qthelp in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.0.3)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (40.8.0)
Requirement already satisfied: sphinxcontrib-serializinghtml in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.1.4)
Requirement already satisfied: imagesize in /home/roman/.local/lib/python3.7/site-packages (from Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.2.0)
Requirement already satisfied: pytz>=2015.7 in /usr/lib/python3/dist-packages (from babel!=2.0,>=1.3->Sphinx~=2.2.0->-r requirements.txt (line 4)) (2019.1)
Requirement already satisfied: MarkupSafe>=0.23 in /home/roman/.local/lib/python3.7/site-packages (from Jinja2>=2.3->Sphinx~=2.2.0->-r requirements.txt (line 4)) (1.1.1)
Requirement already satisfied: pyparsing>=2.0.2 in /home/roman/.local/lib/python3.7/site-packages (from packaging->Sphinx~=2.2.0->-r requirements.txt (line 4)) (2.4.7)
tuupola commented 3 years ago

Ah someone else was also working on this. I started to add Longan Nano support too and I am able to compile things successfully.

https://github.com/tuupola/nuclei-sdk/tree/longan-nano

Will try this one too

fanghuaqi commented 3 years ago

Is the sipeed nano board using gd32vf103c or gd32vf103v? Could you confirm @RomanBuchert @tuupola ?

fanghuaqi commented 3 years ago

Maybe you @tuupola could review the changes submitted by @RomanBuchert , and see which changes need to be maded

RomanBuchert commented 3 years ago

It's a gd32vf103c. So I will change the (file)names...

RomanBuchert commented 3 years ago

I've also one questions. There are some longan nano avail with 64k and 128k flash. How could we handle theese?

fanghuaqi commented 3 years ago

I've also one questions. There are some longan nano avail with 64k and 128k flash. How could we handle theese?

Currently there is no good idea on handling this, currently I am not expecting to make this project too complex with a new Makefile variable, any good suggestion about it? we can discuss about it.

RomanBuchert commented 3 years ago

@fanghuaqi I've added some documentation for Sipeeds Longan Nano board. Hope it's ok.

tuupola commented 3 years ago

I've also one questions. There are some longan nano avail with 64k and 128k flash. How could we handle theese?

Longan Nano has GD32VF103CBT6 which has 128K flash and 32K sram. There is also Longan Nano Lite which has GD32VF103C8T6 which has 64K flash and 20K sram. These two are different boards so they could be handled by Nuclei SDK as different boards too. Ie.

$ make SOC=gd32vf103 BOARD=gd32vf103c_longan_nano all
$ make SOC=gd32vf103 BOARD=gd32vf103c_longan_nano_lite all

BTW if nitpicking this PR adds support for new board instead of SoC. It should probably be labeled as board.

tuupola commented 3 years ago

Maybe you @tuupola could review the changes submitted by @RomanBuchert , and see which changes need to be made

Ok, will do. I have some old school demo effects which compile and run ok with my unfinished Longan Nano BSP. I don't have video of GD32V version yet but here is ESP32 version. I will try to compile them with this one too since this looks more finished.

fanghuaqi commented 3 years ago

I've also one questions. There are some longan nano avail with 64k and 128k flash. How could we handle theese?

Longan Nano has GD32VF103CBT6 which has 128K flash and 32K sram. There is also Longan Nano Lite which has GD32VF103C8T6 which has 64K flash and 20K sram. These two are different boards so they could be handled by Nuclei SDK as different boards too. Ie.

$ make SOC=gd32vf103 BOARD=gd32vf103c_longan_nano all
$ make SOC=gd32vf103 BOARD=gd32vf103c_longan_nano_lite all

BTW if nitpicking this PR adds support for new board instead of SoC. It should probably be labeled as board.

If the two boards are almost just the same but the chip is different, maybe we can add a variable called BDVARIANT, if the BDVARIANT is lite, then we use the linker script of lite version.

If the two boards are different, we can add a new board support package.

Thanks Huaqi

RomanBuchert commented 3 years ago

Can we extend the SOC-name by two letters and use GigaDevices naming scheme to detect the flash size? The scheme is GD32VF103xy

The values for x are:

The values for y are:

But I have no idea how to implement this....

fanghuaqi commented 3 years ago

Can we extend the SOC-name by two letters and use GigaDevices naming scheme to detect the flash size? The scheme is GD32VF103xy

* x is the package

* y is the flashsize / ramsize

The values for x are:

* T: QFN36

* C: LQFP48

* R: LQFP64

* V: LQFP100

The values for y are:

* 4: 16k/6k

* 6: 32k/10k

* 8: 64k/20k

* B: 128/32k

But I have no idea how to implement this....

My suggestion about this is using BDVARIANT to cover the gd32vf103 variants used on the board, maybe VARIANT is a better variable.

Thanks Huaqi

RomanBuchert commented 3 years ago

@fanghuaqi Does it make sense to change / expand the LED names in LEDR, LEDG and LEDB so that they can be called up by the color name?

fanghuaqi commented 3 years ago

Hi @RomanBuchert , I think we can open another PR to discuss about the naming for different gd32vf103 boards, you can add LEDR, LEDG, LEDB in your header file, which keep together with the LED0-LED3.

I will squash the commits into one and merge to master branch, if you don't have more commits?

Thanks Huaqi

RomanBuchert commented 3 years ago

Hi @fanghuaqi, I think, this was the last commit for this PR. For further changes - if any- I will open a new PR.

Thanks for your help and support!

tuupola commented 3 years ago

I can concur my graphics test code compiles and runs fine with this BSP too.

fanghuaqi commented 3 years ago

Thanks @RomanBuchert for your PR, and @tuupola for your review, if possible, you can open an issue to discuss about the gd32vf103 board level common API naming.

It would be better for @RomanBuchert to force push several commits to cover board changes and doc changes following the commit guidance https://doc.nucleisys.com/nuclei_sdk/contribute.html#git-commit-guide, so I can directly use rebase and merge, otherwise I will just squash all commits into one commit.

I will merge this PR tomorrow if no more changes from your side.

RomanBuchert commented 3 years ago

Thanks @RomanBuchert for your PR, and @tuupola for your review, if possible, you can open an issue to discuss about the gd32vf103 board level common API naming.

It would be better for @RomanBuchert to force push several commits to cover board changes and doc changes following the commit guidance https://doc.nucleisys.com/nuclei_sdk/contribute.html#git-commit-guide, so I can directly use rebase and merge, otherwise I will just squash all commits into one commit.

I will merge this PR tomorrow if no more changes from your side.

@fanghuaqi for me it's ok, if you squash all commits into one. Next time I will follow your commit guidelines. From my point of view all changes are done.

tuupola commented 3 years ago

It would be better for @RomanBuchert to force push several commits to cover board changes and doc changes following the commit guidance

Also it is bit easier to work if the PR:s are made from a feature branch instead of master.

RomanBuchert commented 3 years ago

It would be better for @RomanBuchert to force push several commits to cover board changes and doc changes following the commit guidance

Also it is bit easier to work if the PR:s are made from a feature branch instead of master.

...Next time I promise to improve. This was my first PR on an OS project.

fanghuaqi commented 3 years ago

This PR is merged, maybe @RomanBuchert can add some more information in loogan board documentation to cover the flash/ram difference per discussed above.