Prefect! I wasn't aware of this PR. It seems that it is what I need.

I will try this out this week.

Thank you.

Στις Κυρ, 20 Σεπ 2020 στις 5:29 μ.μ., ο/η Abdelatif Guettouche <
abdelatif.guettou...@gmail.com> έγραψε:

> What external drivers are you referring to?
> The boards/drivers bit was resolved, right?
>
> Also, note that a new PR has been merged that adds support for
> external (board/arch independent) drivers that are for a reason or
> another not to be upstreamed.  If that's what you want, check it out:
> https://github.com/apache/incubator-nuttx/pull/1786
>
> On Sun, Sep 20, 2020 at 2:32 PM Fotis Panagiotopoulos
> <f.j.pa...@gmail.com> wrote:
> >
> > Hi everyone!
> >
> > Sorry for the very late reply! Vacation and then a tough September...
> >
> > I am still very interested in linking external drivers to NuttX.
> > I am already studying the code on how to implement this.
> >
> > Has anyone else worked on this?
> >
> >
> > Στις Τετ, 12 Αυγ 2020 στις 7:36 μ.μ., ο/η Matias N. <mat...@imap.cc>
> έγραψε:
> >
> > > I'd also prefer to have this on NuttX directly.
> > >
> > > Regarding drivers/platform, I understand it is merely a way for the
> build
> > > system to link
> > > your directory to drivers/platform, right? If so, your suggestion to
> make
> > > the target of this link
> > > configurable would mostly handles this.
> > >
> > > On Wed, Aug 12, 2020, at 13:16, Fotis Panagiotopoulos wrote:
> > > > Yes I am aware of your Workspace Manager. It helped me a lot to set
> up my
> > > > workspace. I am grateful for this contribution.
> > > > But I just don't like to use external tools, or rely on "hacks" for
> such
> > > a
> > > > common thing. Maybe for more "exotic" modifications to the kernel...
> > > >
> > > > Indeed we have A). Through boards/common.
> > > >
> > > > But we also kinda have B) through drivers/platform. So the
> proposition is
> > > > to improve this to truly have the ability to define out-of-tree
> > > high-level
> > > > drivers.
> > > >
> > > > Στις Τετ, 12 Αυγ 2020 στις 7:03 μ.μ., ο/η Matias N. <mat...@imap.cc>
> > > έγραψε:
> > > >
> > > > > Right, so what I was trying to get at is that there are two
> separate
> > > > > topics here: a) board-common drivers (ie: they depend on a given
> board
> > > > > family such as stm32) and b) board-independent drivers (they use
> only
> > > nuttx
> > > > > generic interfaces).
> > > > >
> > > > > a) is already supported (although only for stm32 and cxd65xx)
> while b)
> > > is
> > > > > not. Maybe the best way would be to use the same scheme for both
> > > somehow.
> > > > >
> > > > > On Wed, Aug 12, 2020, at 12:53, Fotis Panagiotopoulos wrote:
> > > > > > As a matter of fact, the exact driver that I am working on now,
> is
> > > for an
> > > > > > out-of-board device.
> > > > > > It uses a UART and an SPI to create a high-level interface
> towards an
> > > > > > external, physically separated device.
> > > > > >
> > > > > > It does not require anything special from the board, other than
> an
> > > UART
> > > > > and
> > > > > > SPI. And in fact will be used on multiple different boards, using
> > > MCUs
> > > > > from
> > > > > > different vendors (NXP & ST).
> > > > > >
> > > > > >
> > > > > > Στις Τετ, 12 Αυγ 2020 στις 6:47 μ.μ., ο/η Fotis Panagiotopoulos <
> > > > > > f.j.pa...@gmail.com> έγραψε:
> > > > > >
> > > > > > > Hi Matias,
> > > > > > >
> > > > > > > Within nuttx/drivers lie high-level drivers, that do not depend
> > > > > directly
> > > > > > > on any board. As I get it the purpose of
> nuttx/drivers/platform is
> > > to
> > > > > > > extend NuttX drivers out-of-tree, exactly as
> > > CONFIG_ARCH_BOARD_CUSTOM
> > > > > does
> > > > > > > for custom boards.
> > > > > > >
> > > > > > > Within board/src lie drivers specific to the selected board.
> > > Low-level
> > > > > > > drivers that make the very specific hardware to work with
> NuttX.
> > > > > > >
> > > > > > > So as long as NuttX architecture has two layers of drivers, I
> > > believe
> > > > > it
> > > > > > > is beneficial to have them separated.
> > > > > > > I indeed added board-specific drivers in my board dir.
> > > > > > > And I want to use drivers/platform for non-board-dependent
> stuff.
> > > > > Think of
> > > > > > > a character device driver for an I2C chip. You instantiate this
> > > > > providing
> > > > > > > an I2C driver, and use it without ever caring about the actual
> > > board.
> > > > > > >
> > > > > > > How I actually plan to use it.
> > > > > > > I want to make various "driver packs" as different
> repositories.
> > > When
> > > > > you
> > > > > > > start a new project you get the desired "packs" as git
> submodules,
> > > > > creating
> > > > > > > a collection of only the needed drivers. Each one is developed
> and
> > > > > > > versioned separately.
> > > > > > >
> > > > > > > I have already done the same regarding the various boards.
> > > > > > > This allows me to have a very modular workspace, and maximize
> code
> > > > > > > reusability.
> > > > > > > (This is also why the directories structure is important to
> me. I
> > > have
> > > > > to
> > > > > > > specify the exact structure that my projects will have to
> support
> > > this
> > > > > kind
> > > > > > > of modularity).
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Στις Τετ, 12 Αυγ 2020 στις 6:15 μ.μ., ο/η Abdelatif Guettouche
> <
> > > > > > > abdelatif.guettou...@gmail.com> έγραψε:
> > > > > > >
> > > > > > >> Take a look under boards/arm/cxd56xx/drivers for an idea of
> what
> > > that
> > > > > > >> folder might contain.
> > > > > > >> During dirlink that folder is linked to drivers/platform if
> it's
> > > not
> > > > > > >> present a dummy folder is linked.
> > > > > > >> I understand that Spresense has some special mechanisms to
> access
> > > on
> > > > > > >> board drivers (the sequencer?) and the logic is grouped under
> > > > > > >> cxd56xx/drivers.
> > > > > > >> We'll need Alin's input for a detailed explanation.
> > > > > > >>
> > > > > > >> I'm not sure how Fotis will/wants to use it.  I also wanted to
> > > ask.
> > > > > > >> Thus far I personally only had to use common/.
> > > > > > >>
> > > > > > >> On Wed, Aug 12, 2020 at 3:56 PM Matias N. <mat...@imap.cc>
> wrote:
> > > > > > >> >
> > > > > > >> > Hi,
> > > > > > >> > I'm trying to follow the discussion to understand what
> would the
> > > > > final
> > > > > > >> layout look for board specific drivers now. I was unaware of
> this
> > > > > > >> CONFIG_SPECIFIC_DRIVERS option. What is the role of
> > > drivers/platform?
> > > > > I
> > > > > > >> would expect board specific drivers to be under the board
> > > directory.
> > > > > > >> >
> > > > > > >> > Best,
> > > > > > >> > Matias
> > > > > > >> >
> > > > > > >> > On Wed, Aug 12, 2020, at 12:13, Abdelatif Guettouche wrote:
> > > > > > >> > > It's PR1571, there was no need to update any config as I
> kept
> > > the
> > > > > > >> same name.
> > > > > > >> > >
> > > > > > >> > > On Wed, Aug 12, 2020 at 3:51 PM Abdelatif Guettouche
> > > > > > >> > > <abdelatif.guettou...@gmail.com> wrote:
> > > > > > >> > > >
> > > > > > >> > > > I'll provide a PR for review.
> > > > > > >> > > > The change by itself is simple, we just need to add one
> > > config
> > > > > > >> option
> > > > > > >> > > > to nuttx/drivers/Kconfig.
> > > > > > >> > > > However we need to update all of Spresense defconfigs
> (for
> > > now
> > > > > only
> > > > > > >> > > > Spresense uses this folder).
> > > > > > >> > > >
> > > > > > >> > > > On Wed, Aug 12, 2020 at 2:33 PM Fotis Panagiotopoulos
> > > > > > >> > > > <f.j.pa...@gmail.com> wrote:
> > > > > > >> > > > >
> > > > > > >> > > > > Unfortunately I am not sure whether I can help with a
> PR.
> > > I
> > > > > don't
> > > > > > >> feel that
> > > > > > >> > > > > I understand the NuttX build system well enough to
> proceed
> > > > > with
> > > > > > >> such a
> > > > > > >> > > > > change.
> > > > > > >> > > > > Could you help on this?
> > > > > > >> > > > >
> > > > > > >> > > > > Of course I can help with testing too.
> > > > > > >> > > > >
> > > > > > >> > > > > Στις Τετ, 12 Αυγ 2020 στις 4:29 μ.μ., ο/η David
> Sidrane <
> > > > > > >> > > > > david.sidr...@nscdg.com> έγραψε:
> > > > > > >> > > > >
> > > > > > >> > > > > > I am volunteering to help test any of these type
> > > changes.
> > > > > There
> > > > > > >> were many
> > > > > > >> > > > > > subtle breakages in the past that tended to slip
> > > through.
> > > > > Also
> > > > > > >> once all
> > > > > > >> > > > > > this
> > > > > > >> > > > > > settles out, it so needs to be documented.
> > > > > > >> > > > > >
> > > > > > >> > > > > > -----Original Message-----
> > > > > > >> > > > > > From: Abdelatif Guettouche [mailto:
> > > > > > >> abdelatif.guettou...@gmail.com]
> > > > > > >> > > > > > Sent: Wednesday, August 12, 2020 6:41 AM
> > > > > > >> > > > > > To: dev@nuttx.apache.org
> > > > > > >> > > > > > Subject: Re: Board-specific drivers in NuttX 9.1.0.
> > > > > > >> > > > > >
> > > > > > >> > > > > > Note that this common board organisation and these
> two
> > > > > folders
> > > > > > >> are
> > > > > > >> > > > > > relatively new and didn't get as much attention as
> they
> > > > > need.
> > > > > > >> > > > > > That said, I like the second suggestion.  Would you
> > > like to
> > > > > > >> prepare a
> > > > > > >> > > > > > PR and see what others have to say?  I could do
> that if
> > > you
> > > > > > >> want.
> > > > > > >> > > > > >
> > > > > > >> > > > > > On Wed, Aug 12, 2020 at 12:31 PM Fotis
> Panagiotopoulos
> > > > > > >> > > > > > <f.j.pa...@gmail.com> wrote:
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Thank you very much.
> > > > > > >> > > > > > > Indeed it now works perfectly.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > However I would propose a little change on this.
> > > > > > >> > > > > > > Currently board drivers require a specific
> directory
> > > > > > >> structure, and this
> > > > > > >> > > > > > > non-obvious (for me) config entry.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Why not instead handle external drivers exactly
> like
> > > > > external
> > > > > > >> boards?
> > > > > > >> > > > > > > That is, add CONFIG_ARCH_DRIVERS_CUSTOM,
> > > > > > >> CONFIG_ARCH_DRIVERS_CUSTOM_DIR,
> > > > > > >> > > > > > > CONFIG_ARCH_DRIVERS_CUSTOM_DIR_RELPATH etc in
> > > > > > >> nuttx/drivers/Kconfig and
> > > > > > >> > > > > > > have the user select whether they need external
> > > drivers
> > > > > and
> > > > > > >> where should
> > > > > > >> > > > > > > they be located, instead of implying things.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Or, at a minimum, I believe
> CONFIG_SPECIFIC_DRIVERS
> > > could
> > > > > be
> > > > > > >> defined in
> > > > > > >> > > > > > > nuttx/drivers/Kconfig. Since the build system uses
> > > this
> > > > > > >> symbol, nuttx
> > > > > > >> > > > > > > should define it, instead of relying on external
> > > Kconfigs.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Στις Τετ, 12 Αυγ 2020 στις 2:02 μ.μ., ο/η
> Abdelatif
> > > > > > >> Guettouche <
> > > > > > >> > > > > > > abdelatif.guettou...@gmail.com> έγραψε:
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > > > It's the drivers/Kconfig that
> > > > > > >> > > > > > > > defines it (i.e. you add it), you can then
> enable it
> > > > > from
> > > > > > >> menuconfig.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > To be clear I meant the "drivers" folder that's
> > > linked
> > > > > to
> > > > > > >> "platform"
> > > > > > >> > > > > > > > not the toplevel nuttx/drivers.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > On Wed, Aug 12, 2020 at 12:51 PM Abdelatif
> > > Guettouche
> > > > > > >> > > > > > > > <abdelatif.guettou...@gmail.com> wrote:
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > As far as I can tell it's the same, current
> > > master[1],
> > > > > > >> 9.1[2],
> > > > > > >> > > > > > 9.0[3],
> > > > > > >> > > > > > > > 8.1[4]
> > > > > > >> > > > > > > > > I do have some flashes about the necessity of
> a
> > > > > drivers
> > > > > > >> folder
> > > > > > >> > > > > > > > > alongside the board folder with custom boards,
> > > but I
> > > > > > >> can't remember.
> > > > > > >> > > > > > > > > That was an issue, it's now resolved.
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > > But the code is not included in the build. I
> > > > > checked my
> > > > > > >> Make.defs,
> > > > > > >> > > > > > > > > > and
> > > > > > >> > > > > > > > it
> > > > > > >> > > > > > > > > > is similar to other Make.defs of the other
> > > drivers:
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > You need CONFIG_SPECIFIC_DRIVERS set.  It's
> the
> > > > > > >> drivers/Kconfig that
> > > > > > >> > > > > > > > > defines it (i.e. you add it), you can then
> enable
> > > it
> > > > > from
> > > > > > >> menuconfig.
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > 1.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >>
> > > > >
> > >
> https://github.com/apache/incubator-nuttx/tree/master/boards/arm/cxd56xx
> > > > > > >> > > > > > > > > 2.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >>
> > > > >
> > >
> https://github.com/apache/incubator-nuttx/tree/releases/9.1/boards/arm/cxd56xx
> > > > > > >> > > > > > > > > 3.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >>
> > > > >
> > >
> https://github.com/apache/incubator-nuttx/tree/releases/9.0/boards/arm/cxd56xx
> > > > > > >> > > > > > > > > 4.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >>
> > > > >
> > >
> https://github.com/apache/incubator-nuttx/tree/nuttx-8.1/boards/arm/cxd56xx
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > On Wed, Aug 12, 2020 at 10:57 AM Fotis
> > > Panagiotopoulos
> > > > > > >> > > > > > > > > <f.j.pa...@gmail.com> wrote:
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > > NB: You'll need this patch too:
> > > > > > >> > > > > > > > > > >
> > > > > https://github.com/apache/incubator-nuttx/pull/1480
> > > > > > >> > > > > > > > > > <
> > > > > https://github.com/apache/incubator-nuttx/pull/1480>
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > Oh, I didn't realize that I had to patch
> v9.1.0
> > > with
> > > > > > >> this. I
> > > > > > >> > > > > > thought
> > > > > > >> > > > > > > > it was
> > > > > > >> > > > > > > > > > already included in the latest releases.
> After
> > > > > > >> patching, linking of
> > > > > > >> > > > > > > > > > my
> > > > > > >> > > > > > > > > > drivers folder into nuttx/drivers/platform
> > > works.
> > > > > > >> > > > > > > > > > Kconfig is parsed, and the new options
> appear in
> > > > > > >> menuconfig.
> > > > > > >> > > > > > > > > > But the code is not included in the build. I
> > > > > checked my
> > > > > > >> Make.defs,
> > > > > > >> > > > > > > > > > and
> > > > > > >> > > > > > > > it
> > > > > > >> > > > > > > > > > is similar to other Make.defs of the other
> > > drivers:
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > >     CSRCS += driver.c
> > > > > > >> > > > > > > > > >     DEPPATH += --dep-path platform
> > > > > > >> > > > > > > > > >     VPATH += :platform
> > > > > > >> > > > > > > > > >     CFLAGS += $(shell $(INCDIR) "$(CC)"
> > > > > > >> > > > > > > > > > $(TOPDIR)$(DELIM)drivers$(DELIM)platform)
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > > The structure has not changed, Xiang patch
> > > made it
> > > > > > >> possible to
> > > > > > >> > > > > > > > > > > omit
> > > > > > >> > > > > > > > > > > the "drivers" folder when it's not
> needed, in
> > > that
> > > > > > >> case a dummy
> > > > > > >> > > > > > > > folder
> > > > > > >> > > > > > > > > > > is linked
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > As I see, in v9.0.0, the structure was:
> > > > > > >> > > > > > > > > > └── boards_dir
> > > > > > >> > > > > > > > > >     └── board1
> > > > > > >> > > > > > > > > >         └── drivers
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > but in v9.1.0 it is
> > > > > > >> > > > > > > > > > └── boards_dir
> > > > > > >> > > > > > > > > >     ├── board1
> > > > > > >> > > > > > > > > >     └── drivers
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > or am I missing anything?
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > Στις Τετ, 12 Αυγ 2020 στις 5:22 π.μ., ο/η
> Xiang
> > > > > Xiao <
> > > > > > >> > > > > > > > > > xiaoxiang781...@gmail.com> έγραψε:
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > > You can try
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >>
> > > > >
> > >
> https://github.com/apache/incubator-nuttx/tree/master/boards/arm/cxd56xx
> > > > > > >> > > > > > > > > > > and compare the difference with yours.
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > -----Original Message-----
> > > > > > >> > > > > > > > > > > > From: Nathan Hartman <
> > > hartman.nat...@gmail.com>
> > > > > > >> > > > > > > > > > > > Sent: Wednesday, August 12, 2020 5:34 AM
> > > > > > >> > > > > > > > > > > > To: dev@nuttx.apache.org
> > > > > > >> > > > > > > > > > > > Subject: Re: Board-specific drivers in
> NuttX
> > > > > 9.1.0.
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > On Tue, Aug 11, 2020 at 1:14 PM Fotis
> > > > > > >> Panagiotopoulos <
> > > > > > >> > > > > > > > > > > f.j.pa...@gmail.com>
> > > > > > >> > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > The structure proposed by Xiang Xiao is
> not
> > > > > working
> > > > > > >> for me.
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > By looking in the Makefiles, I did
> > > understand
> > > > > > >> that the
> > > > > > >> > > > > > > > > > > > > structure
> > > > > > >> > > > > > > > has
> > > > > > >> > > > > > > > > > > > > changed a bit.
> > > > > > >> > > > > > > > > > > > > Now my structure is:
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > ├── CustomBoard
> > > > > > >> > > > > > > > > > > > > │   ├── defconfig
> > > > > > >> > > > > > > > > > > > > │   ├── include
> > > > > > >> > > > > > > > > > > > > │   ├── Kconfig
> > > > > > >> > > > > > > > > > > > > │   ├── Make.defs
> > > > > > >> > > > > > > > > > > > > │   ├── scripts
> > > > > > >> > > > > > > > > > > > > │   └── src
> > > > > > >> > > > > > > > > > > > > └── drivers
> > > > > > >> > > > > > > > > > > > >     ├── driver.c
> > > > > > >> > > > > > > > > > > > >     ├── driver.h
> > > > > > >> > > > > > > > > > > > >     ├── Kconfig
> > > > > > >> > > > > > > > > > > > >     └── Make.defs
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > But still it does not work.
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Any ideas what may break it?
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > Maybe need to make distclean, followed
> by
> > > > > > >> tools/configure.sh,
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > refresh
> > > > > > >> > > > > > > > > > > NuttX's symbolic links?
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > Nathan
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > >
> > > > > > >>
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
>

Reply via email to