Re: not possible to have a ROM app that's started by system w/ Redboot?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: not possible to have a ROM app that's started by system w/ Redboot?

Ken Yee
Ilija Kocho wrote:
> This may be example you are looking for:
> http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001623

Got decently far with this angle of changes.
We created a new startup type, and fiddled with most of the options for RAM/ROM in the .cdl file.  But from doing this, it's glaringly obvious that eCos does *NOT* support this setup; a ROM app run from Redboot, at least on the AT91, has to do a hybrid of the ROM and RAM startup types.  The Redboot documentation should clearly state that only apps built in the RAM startup type are supported IMHO.

Anyways, simple test apps seem to run, but one this we hit was that anything that does diag_printf gets stuck in the IF_IN_PUTC call...it just deep spaces (runs until it hits that) there in the debugger.  Single stepping into assembly doesn't even work if you put a breakpoint before that so we can't see where that goes (whether it's to a bad driver, etc.).  The simplest app like this:
void cyg_user_start(void)
{
    diag_printf("\r\nHello world!\r\n");
}
does the hang when compiled as an APPROM (that's what we called it instead of Flash as yours is called...maybe RBROMAPP for RedBootROMApp might be a better acronym?).

Did you hit this problem in your setup at all?  i.e., did you try diag_printf on your kinetis board?

 thanks,

 ken

On 26.09.2012 22:39, Ken Yee wrote:

> Any old timers on the list remember if this has ever been done successfully in the past?
> From the archives, I dug up these:
>
> http://sources.redhat.com/ml/ecos-discuss/2010-09/msg00018.html
> http://sourceware.org/ml/ecos-discuss/2012-06/msg00011.html
>
> The first guy in 2010 was told basically to use the ROMRAM setup (program in ROM, then Redboot copies it into RAM to run).
> No answer to the second guy.
> Can't find any examples in the docs.
>
> I'm getting the sense the answer is no, so we should just get rid of Redboot and run the app directly out of ROM, though it'd be nice if we could use Redboot because Redboot would be useful in unbricking a device w/o a JTAG debugger...
This may be example you are looking for:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001623

I hope this helps

Ilija

DQ1FBOjEwD�#

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
Reply | Threaded
Open this post in threaded view
|

Re: not possible to have a ROM app that's started by system w/ Redboot?

Ilija Kocho [Илија Кочо]
On 05.10.2012 03:43, Ken Yee wrote:
> Ilija Kocho wrote:
>> This may be example you are looking for:
>> http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001623
> Got decently far with this angle of changes.
> We created a new startup type, and fiddled with most of the options for RAM/ROM in the .cdl file.  But from doing this, it's glaringly obvious that eCos does *NOT* support this setup; a ROM app run from Redboot, at least on the AT91, has to do a hybrid of the ROM and RAM startup types.  The Redboot documentation should clearly state that only apps built in the RAM startup type are supported IMHO.

True, you won't find for ROM startup in standard RedBoot. FLASH startup
is [my] experiment for testing the concept. It seems to work, but it's
still experimental. Your tests are valuable, thanks.

>
> Anyways, simple test apps seem to run, but one this we hit was that anything that does diag_printf gets stuck in the IF_IN_PUTC call...it just deep spaces (runs until it hits that) there in the debugger.  Single stepping into assembly doesn't even work if you put a breakpoint before that so we can't see where that goes (whether it's to a bad driver, etc.).  The simplest app like this:

It's true for break points. The target code being in Flash, rather than
RAM, needs hardware break points that are not supported by RedBoor/eCos
GDB stubs at present.

> void cyg_user_start(void)
> {
>     diag_printf("\r\nHello world!\r\n");
> }
> does the hang when compiled as an APPROM (that's what we called it instead of Flash as yours is called...maybe RBROMAPP for RedBootROMApp might be a better acronym?).
>
> Did you hit this problem in your setup at all?  i.e., did you try diag_printf on your kinetis board?

Yes I have.

Try the real (instead of diagnostic) serial driver.

Ilija


--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

Reply | Threaded
Open this post in threaded view
|

Re: not possible to have a ROM app that's started by system w/ Redboot?

Ken Yee
In reply to this post by Ken Yee
> It's true for break points. The target code being in Flash, rather than
> RAM, needs hardware break points that are not supported by RedBoor/eCos
> GDB stubs at present.

I'm actually using a Segger JLink for debugging...not using Redboot's gdb support.
That's why I'm puzzled...I should be able to look at the code behind that macro or single step through the assembly code but I can't do anything w/ that IF_PUTC function.


> Try the real (instead of diagnostic) serial driver.

Is there a way to get "diag_printf" to use the real serial driver?  Interesting that you hit the same issue...I always thought the diag_driver just used the same serial port but with interrupts disabled.
I can't remove all the diag_printf calls in the networking stack in configtool...tried turning off all the debug stuff but on startup, the networking code seems to always print out those "Init: %s[%d]" lines.  I guess I could just change all the ecos code that does this and recompile...

 thanks,

ken

On 05.10.2012 03:43, Ken Yee wrote:
> Ilija Kocho wrote:
>> This may be example you are looking for:
>> http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001623
> Got decently far with this angle of changes.
> We created a new startup type, and fiddled with most of the options for RAM/ROM in the .cdl file.  But from doing this, it's glaringly obvious that eCos does *NOT* support this setup; a ROM app run from Redboot, at least on the AT91, has to do a hybrid
 of the ROM and RAM startup types.  The Redboot documentation should clearly state that only apps built in the RAM startup type are supported IMHO.

True, you won't find for ROM startup in standard RedBoot. FLASH startup
is [my] experiment for testing the concept. It seems to work, but it's
still experimental. Your tests are valuable, thanks.

>
> Anyways, simple test apps seem to run, but one this we hit was that anything that does diag_printf gets stuck in the IF_IN_PUTC call...it just deep spaces (runs until it hits that) there in the debugger.  Single stepping into assembly doesn't even work
 if you put a breakpoint before that so we can't see where that goes (whether it's to a bad driver, etc.).  The simplest app like this:

It's true for break points. The target code being in Flash, rather than
RAM, needs hardware break points that are not supported by RedBoor/eCos
GDB stubs at present.

> void cyg_user_start(void)
> {
>     diag_printf("\r\nHello world!\r\n");
> }
> does the hang when compiled as an APPROM (that's what we called it instead of Flash as yours is called...maybe RBROMAPP for RedBootROMApp might be a better acronym?).
>
> Did you hit this problem in your setup at all?  i.e., did you try diag_printf on your kinetis board?

Yes I have.

Try the real (instead of diagnostic) serial driver.

Ilija



--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
Reply | Threaded
Open this post in threaded view
|

Re: not possible to have a ROM app that's started by system w/ Redboot?

Ilija Kocho [Илија Кочо]
On 05.10.2012 20:19, Ken Yee wrote:
>> It's true for break points. The target code being in Flash, rather than
>> RAM, needs hardware break points that are not supported by RedBoor/eCos
>> GDB stubs at present.
> I'm actually using a Segger JLink for debugging...not using Redboot's gdb support.
> That's why I'm puzzled...I should be able to look at the code behind that macro or single step through the assembly code but I can't do anything w/ that IF_PUTC function.

Then I'm afraid I can't help you much. I would check whether the GDB
server is set for hardware break points.

>
>> Try the real (instead of diagnostic) serial driver.
> Is there a way to get "diag_printf" to use the real serial driver?  Interesting that you hit the same issue...I always thought the diag_driver just used the same serial port but with interrupts disabled.
Yes, enable the respective tty<n> driver and set it as a console
(default is ttydiag).

But, actually you may have hardware problem (does it print  barebone?).
If you power Kwikstik from it's own USB connector there is a voltage
drop on serial diode (I don't recal whether it was D6 or D7) that
hinders RS232.

Ilija


--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

Reply | Threaded
Open this post in threaded view
|

Re: not possible to have a ROM app that's started by system w/ Redboot?

Ken Yee
In reply to this post by Ken Yee
Iliya wrote:
> Yes, enable the respective tty<n> driver and set it as a console
> (default is ttydiag).
> But, actually you may have hardware problem (does it print barebone?).

Yes, it prints barebone (i.e., run as RAM startup type w/ Redboot).  These are only issues w/ trying to get it to run as a Redboot Flash app (the new Redboot ROM app startup type instead of the existing eCos ROM startup type).

FYI, for the diag_printf issue of it going into space on the IF_COMM_PUTC, the problem was the app didn't have "claim comms virtual vectors" checked under the configtool under eCos HAL, the ROM monitor support.  We got a lot further after checking off "claim virtual vector table entries by default", "claim reset virtual vectors", "claim delay_us virtual vectors", "claim data virtual vectors", and "claim comms virtual vectors".  It's interesting that the app's ecos config had to be set to do that instead of letting it use the Redboot vectors automatically, so it seems like we missed a section define somewhere that tells the RAM startup type to use the redboot virtual vector table...

So next issue we've hit is JFFS doesn't read the Redboot FIS table properly so it can't figure out where the internal flash partition is that it's supposed to use...it's progress at least :-)

On 05.10.2012 20:19, Ken Yee wrote:
>> It's true for break points. The target code being in Flash, rather than
>> RAM, needs hardware break points that are not supported by RedBoor/eCos
>> GDB stubs at present.
> I'm actually using a Segger JLink for debugging...not using Redboot's gdb support.
> That's why I'm puzzled...I should be able to look at the code behind that macro or single step through the assembly code but I can't do anything w/ that IF_PUTC function.

Then I'm afraid I can't help you much. I would check whether the GDB
server is set for hardware break points.

>
>> Try the real (instead of diagnostic) serial driver.
> Is there a way to get "diag_printf" to use the real serial driver?  Interesting that you hit the same issue...I always thought the diag_driver just used the same serial port but with interrupts disabled.
Yes, enable the respective tty<n> driver and set it as a console
(default is ttydiag).

But, actually you may have hardware problem (does it print  barebone?).
If you power Kwikstik from it's own USB connector there is a voltage
drop on serial diode (I don't recal whether it was D6 or D7) that
hinders RS232.

Ilija

IChYMTE7I!!

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss