Closed RomanBuchert closed 3 years ago
Thank you for your contribution.
- 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
- Make sure you have tested all the application and test code in
application
andtest
folder. For sample application output can be found at https://doc.nucleisys.com/nuclei_sdk/design/app.html- 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
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
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
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
Did you use python3? and installed all the requirements required by the doc build?
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)
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
Is the sipeed nano board using gd32vf103c or gd32vf103v? Could you confirm @RomanBuchert @tuupola ?
Maybe you @tuupola could review the changes submitted by @RomanBuchert , and see which changes need to be maded
It's a gd32vf103c. So I will change the (file)names...
I've also one questions. There are some longan nano avail with 64k and 128k flash. How could we handle theese?
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.
@fanghuaqi I've added some documentation for Sipeeds Longan Nano board. Hope it's ok.
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.
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.
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
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....
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
@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?
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
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!
I can concur my graphics test code compiles and runs fine with this BSP too.
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.
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.
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
.
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.
This PR is merged, maybe @RomanBuchert can add some more information in loogan board documentation to cover the flash/ram difference per discussed above.
Sipeeds Longan Nano board added.