> However as I see there is no officiaL way of having an out-of-tree boards > directory, and this is my main problem. > If I understand correctly, there is no "proper" way of using NuttX on > custom hardware, without touching its source code.
There is an official way to have out-of-tree boards, and they are configured (almost) the same way as a "normal" in-tree board. Here is an example I use with a relative path: ./tools/configure.sh ../relative_path_to_board/name_of_config. My defconfig has these three configurations set. CONFIG_ARCH_BOARD_CUSTOM_DIR="../boards/boards_name" CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y CONFIG_ARCH_BOARD_CUSTOM_NAME="boards_name" I've got a structure as the following: NuttX -- nuttx/ apps/ custom_boards/ custom_apps/ (this is symlinked to apps/external) The custom boards and apps are completely independent of nuttx/ and apps/, both with their own version control system. > Another thing that I was thinking is about NuttX configuration. The file > .config is included in the .gitignore file. So the actual NuttX > configuration is not tracked. > How do you usually handle this? The .config file is used to generate a complete config.h NuttX configuration file (which is also ignored). The configurations that are tracked are found in boards/*/*/*/configs. On Tue, Jul 14, 2020 at 12:48 PM Fotis Panagiotopoulos <f.j.pa...@gmail.com> wrote: > > Hi, > > Thanks everyone for your suggestions! > > I have read the Wikis, and they are very helpful indeed. > However as I see there is no officiaL way of having an out-of-tree boards > directory, and this is my main problem. > If I understand correctly, there is no "proper" way of using NuttX on > custom hardware, without touching its source code. > > Matias, nice work with that framework! > In fact it is very close to what I was thinking of finally doing. It seems > that a top-level Makefile is needed, that will handle everything else. It > will have to "inject" my custom board to the build system, so as not to > modify the sources. > I may use your framework as an example for setting up my workflow. > > Another thing that I was thinking is about NuttX configuration. The file > .config is included in the .gitignore file. So the actual NuttX > configuration is not tracked. > How do you usually handle this? Maybe also symlink my actual config to > NuttX dir? Also handled by the top-level Makefile? > > Στις Τρί, 14 Ιουλ 2020 στις 12:39 π.μ., ο/η Gregory Nutt < > spudan...@gmail.com> έγραψε: > > > On 7/13/2020 3:00 PM, Fotis Panagiotopoulos wrote: > > > Hi everyone! > > > > > > I am new to Nuttx but I would like to use it for my next projects. > > > For the moment I am porting one of my big projects to Nuttx (that was > > > previously working with another RTOS). However, I am a bit confused on > > how > > > I should set up our development workflow. > > > > > > I will have to create my own apps dir, containing the actual firmware. I > > > will have to create a new board config for our custom hardware. Of course > > > Nuttx shall be configured specifically for the needs of the project. Our > > > projects use git for version control. > > > > > > But what is the recommended way of integrating Nuttx code to my project? > > > I can think of the following cases: > > > > > > 1. Copy the whole Nuttx source code in the project. > > > This workflow seems to be encouraged, but IMO it's not correct. This way > > my > > > copy of Nuttx becomes "detached" to the original repo. It would be very > > > difficult to change versions, update the kernel, or contribute back. > > > Everything would have to be merged manually. > > > > > > 2. Use the export target, and use Nuttx as a library. > > > This seems better, but it is still problematic. Nuttx becomes a "black > > > box". It is not easy to debug it, change configuration, or generally tell > > > what the library contains. Knowledge on what is built and how is lost in > > > our version control and the rest of the developers will not be able to > > > follow any changes. > > > > > > 3. Add Nuttx as a submodule to our git repository. > > > This ticks most of the boxes, but this also means that I will have to > > also > > > fork Nuttx to our git server. I am afraid that this will lead up to > > having > > > lots of forks, each for every one of our projects, and that it will > > become > > > very difficult to manage. > > > > > > So what do others do? How do you integrate Nuttx to your projects? > > > Or is there anything that I am missing or any other solution? > > > > > > -- > > > Fotis Panagiotopoulos > > > > > Perhaps these Wiki pages would be useful to you: > > > > > > https://cwiki.apache.org/confluence/display/NUTTX/Building+NuttX+with+Applications+Outside+of+the+Source+Tree > > > > > > https://cwiki.apache.org/confluence/display/NUTTX/Custom+Application+Directories > > > > > >