You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nuttx.apache.org by "Ambrocio, Jose" <jo...@aptiv.com.INVALID> on 2024/02/20 16:29:14 UTC
Nuttx not starting after jumping from bootloader
Hello Nuttx team,
I'm currently working on an embedded project that uses a bootloader and an application. The target is a STM32G0B1VCI6 chip. I'm using the initial address (0x0800 0000) for the bootloader with 40K of size. Application starts at 0x0800 A000 with 216K of size. Before jumping to the application I'm setting the main stack pointer and configuring the vector table to point to the start address of the app. I see that the app is executed but it remains in the function irq_initialize and doing some debug I noticed that it is stuck in the assert function, in an infinite loop:
[cid:image003.jpg@01DA63E7.A577AD90]
I wonder if nuttx has some dependencies with the initial addresses or if there is something that must be configured before jumping. This is the code I have for the jumping:
[cid:image004.png@01DA63E7.A577AD90]
Where NUTTX_APPLICATION_ENTRY_POINT is 0x0800A000.
I did a different test using another application (without nuttx) and the bootloader can jump without any problem and the application can be executed.
I would appreciate your help. Thanks
José Daniel Ambrocio
Embedded SW Engineer
Re: Nuttx not starting after jumping from bootloader
Posted by Nathan Hartman <ha...@gmail.com>.
I've run into problems like that before. I recommend ensuring that the
bootloader performs a cleanup: return all peripherals to their
original state and turn off any interrupts it previously enabled.
Otherwise, very subtle and hard-to-find bugs can creep in.
Out of curiosity, is this a custom bootloader or an existing
open-source project? If an open-source project, I recommend to
upstream your fixes...
Cheers,
Nathan
On Wed, Feb 21, 2024 at 11:19 AM Alan C. Assis <ac...@gmail.com> wrote:
>
> Just a update here for people facing similar issue in the future.
>
> Actually Jose discovered the issue was not on NuttX itself, but it was
> an Interrupt enabled in the bootloader that was missing an entry IRQ
> vector table.
>
> Best Regards,
>
> Alan
>
> On 2/20/24, Ambrocio, Jose <jo...@aptiv.com.invalid> wrote:
> > Hello Nuttx team,
> > I'm currently working on an embedded project that uses a bootloader and an
> > application. The target is a STM32G0B1VCI6 chip. I'm using the initial
> > address (0x0800 0000) for the bootloader with 40K of size. Application
> > starts at 0x0800 A000 with 216K of size. Before jumping to the application
> > I'm setting the main stack pointer and configuring the vector table to point
> > to the start address of the app. I see that the app is executed but it
> > remains in the function irq_initialize and doing some debug I noticed that
> > it is stuck in the assert function, in an infinite loop:
> > [cid:image003.jpg@01DA63E7.A577AD90]
> >
> > I wonder if nuttx has some dependencies with the initial addresses or if
> > there is something that must be configured before jumping. This is the code
> > I have for the jumping:
> >
> > [cid:image004.png@01DA63E7.A577AD90]
> > Where NUTTX_APPLICATION_ENTRY_POINT is 0x0800A000.
> > I did a different test using another application (without nuttx) and the
> > bootloader can jump without any problem and the application can be
> > executed.
> > I would appreciate your help. Thanks
> > José Daniel Ambrocio
> > Embedded SW Engineer
> >
Re: Nuttx not starting after jumping from bootloader
Posted by "Alan C. Assis" <ac...@gmail.com>.
Just a update here for people facing similar issue in the future.
Actually Jose discovered the issue was not on NuttX itself, but it was
an Interrupt enabled in the bootloader that was missing an entry IRQ
vector table.
Best Regards,
Alan
On 2/20/24, Ambrocio, Jose <jo...@aptiv.com.invalid> wrote:
> Hello Nuttx team,
> I'm currently working on an embedded project that uses a bootloader and an
> application. The target is a STM32G0B1VCI6 chip. I'm using the initial
> address (0x0800 0000) for the bootloader with 40K of size. Application
> starts at 0x0800 A000 with 216K of size. Before jumping to the application
> I'm setting the main stack pointer and configuring the vector table to point
> to the start address of the app. I see that the app is executed but it
> remains in the function irq_initialize and doing some debug I noticed that
> it is stuck in the assert function, in an infinite loop:
> [cid:image003.jpg@01DA63E7.A577AD90]
>
> I wonder if nuttx has some dependencies with the initial addresses or if
> there is something that must be configured before jumping. This is the code
> I have for the jumping:
>
> [cid:image004.png@01DA63E7.A577AD90]
> Where NUTTX_APPLICATION_ENTRY_POINT is 0x0800A000.
> I did a different test using another application (without nuttx) and the
> bootloader can jump without any problem and the application can be
> executed.
> I would appreciate your help. Thanks
> José Daniel Ambrocio
> Embedded SW Engineer
>