DSPRelated.com
Forums

5509/bios issue running code off chip

Started by peejayblack May 30, 2004
Hello Everyone,

I'm working with the 5509 and am trying to run code off chip.
I want to run my code out of an external flash. I locate time
critical code on chip and swap as needed. The code I run out of
flash is user interface etc. We have to accommodate five languages
so it takes up lots of space. I've done this on the 5409 with no
problems, but on this project I'm having problems. This may be
due to my using the DSP Bios on this project. I have not used it in
my other projects so I am new to it. So far I have just switched to
large memory model, switched to the large library, and set up so the
user code text locates into the proper CE space. I've replaced my
flash with a static ram (Same foot print) and have verified that I
can read and write to it. My program compiles fine and seems to load
ok though the emulator into the external ram. When I try to run the
program it seems to hang on the bios initialization. If I set the
user code text to run on chip the program runs fine.

So I'm asking the throbbing cumulative brain of c55 experts out
there if they have any ideas as to what I'm missing. I welcome
any suggestions I've spent a 2 days on this, and hate to spend any
more time without asking since its probably a obvious oversight on
my part.

Thanks,
PeeJayBlack



PeeJay-

Why would you not locate DSP/BIOS code in onchip mem? It's not a large amount.
Would you not have to do this anyway, when you reach the point of EEPROM boot
vs.
emulator load? You will have to boot something to run, that something should
include
BIOS initialization and any other low-level initialization.

My experience has been: a) keep anything that occurs prior to void main() in
onchip
mem, and b) put low-level code in place using a boot mechanism, either onchip
bootloader or other method such as external logic that loads code via HPI.
Once you
reach main(), then you are free to locate code and mix/match memory spaces as
needed.

We have to support a wide range of TI DSPs here, and that has been our standard
method for C5xxx and C6xxx series.

-Jeff

peejayblack wrote:
>
> Hello Everyone,
>
> I'm working with the 5509 and am trying to run code off chip.
> I want to run my code out of an external flash. I locate time
> critical code on chip and swap as needed. The code I run out of
> flash is user interface etc. We have to accommodate five languages
> so it takes up lots of space. I've done this on the 5409 with no
> problems, but on this project I'm having problems. This may be
> due to my using the DSP Bios on this project. I have not used it in
> my other projects so I am new to it. So far I have just switched to
> large memory model, switched to the large library, and set up so the
> user code text locates into the proper CE space. I've replaced my
> flash with a static ram (Same foot print) and have verified that I
> can read and write to it. My program compiles fine and seems to load
> ok though the emulator into the external ram. When I try to run the
> program it seems to hang on the bios initialization. If I set the
> user code text to run on chip the program runs fine.
>
> So I'm asking the throbbing cumulative brain of c55 experts out
> there if they have any ideas as to what I'm missing. I welcome
> any suggestions I've spent a 2 days on this, and hate to spend any
> more time without asking since its probably a obvious oversight on
> my part.
>
> Thanks,
> PeeJayBlack




Jeff,

Thanks for the reply. Yes thats what I think I'm
trying to do. I have the bios set to run on chip
then you have choices as to where user code is
run. Just as a start I selected user .text
to run off chip, and it hangs on the bios initalization.
They allow you to use your own cmd file as well to locate
user code but scanning the cmd file they generate I can
see no issues.

PeeJayBlack --- In , Jeff Brower <jbrower@s...> wrote:
> PeeJay-
>
> Why would you not locate DSP/BIOS code in onchip mem? It's not a
large amount.
> Would you not have to do this anyway, when you reach the point of
EEPROM boot vs.
> emulator load? You will have to boot something to run, that
something should include
> BIOS initialization and any other low-level initialization.
>
> My experience has been: a) keep anything that occurs prior to
void main() in onchip
> mem, and b) put low-level code in place using a boot mechanism,
either onchip
> bootloader or other method such as external logic that loads code
via HPI. Once you
> reach main(), then you are free to locate code and mix/match
memory spaces as
> needed.
>
> We have to support a wide range of TI DSPs here, and that has been
our standard
> method for C5xxx and C6xxx series.
>
> -Jeff
>
> peejayblack wrote:
> >
> > Hello Everyone,
> >
> > I'm working with the 5509 and am trying to run code off chip.
> > I want to run my code out of an external flash. I locate time
> > critical code on chip and swap as needed. The code I run out of
> > flash is user interface etc. We have to accommodate five
languages
> > so it takes up lots of space. I've done this on the 5409 with no
> > problems, but on this project I'm having problems. This may be
> > due to my using the DSP Bios on this project. I have not used it
in
> > my other projects so I am new to it. So far I have just switched
to
> > large memory model, switched to the large library, and set up so
the
> > user code text locates into the proper CE space. I've replaced my
> > flash with a static ram (Same foot print) and have verified that
I
> > can read and write to it. My program compiles fine and seems to
load
> > ok though the emulator into the external ram. When I try to run
the
> > program it seems to hang on the bios initialization. If I set the
> > user code text to run on chip the program runs fine.
> >
> > So I'm asking the throbbing cumulative brain of c55 experts out
> > there if they have any ideas as to what I'm missing. I welcome
> > any suggestions I've spent a 2 days on this, and hate to spend
any
> > more time without asking since its probably a obvious oversight
on
> > my part.
> >
> > Thanks,
> > PeeJayBlack


PeeJay-

> Thanks for the reply. Yes thats what I think I'm
> trying to do. I have the bios set to run on chip
> then you have choices as to where user code is
> run. Just as a start I selected user .text
> to run off chip, and it hangs on the bios initalization.
> They allow you to use your own cmd file as well to locate
> user code but scanning the cmd file they generate I can
> see no issues.

I'm not sure what you mean. Can you single step until void main() ? If not,
then
what exactly is the last valid code before control is lost?

My approximate guess is that something happens in auto_init() or bios_init()
functions. But you have to get in there to verify.

-Jeff > --- In , Jeff Brower <jbrower@s...> wrote:
> > PeeJay-
> >
> > Why would you not locate DSP/BIOS code in onchip mem? It's not a
> large amount.
> > Would you not have to do this anyway, when you reach the point of
> EEPROM boot vs.
> > emulator load? You will have to boot something to run, that
> something should include
> > BIOS initialization and any other low-level initialization.
> >
> > My experience has been: a) keep anything that occurs prior to
> void main() in onchip
> > mem, and b) put low-level code in place using a boot mechanism,
> either onchip
> > bootloader or other method such as external logic that loads code
> via HPI. Once you
> > reach main(), then you are free to locate code and mix/match
> memory spaces as
> > needed.
> >
> > We have to support a wide range of TI DSPs here, and that has been
> our standard
> > method for C5xxx and C6xxx series.
> >
> > -Jeff
> >
> > peejayblack wrote:
> > >
> > > Hello Everyone,
> > >
> > > I'm working with the 5509 and am trying to run code off chip.
> > > I want to run my code out of an external flash. I locate time
> > > critical code on chip and swap as needed. The code I run out of
> > > flash is user interface etc. We have to accommodate five
> languages
> > > so it takes up lots of space. I've done this on the 5409 with no
> > > problems, but on this project I'm having problems. This may be
> > > due to my using the DSP Bios on this project. I have not used it
> in
> > > my other projects so I am new to it. So far I have just switched
> to
> > > large memory model, switched to the large library, and set up so
> the
> > > user code text locates into the proper CE space. I've replaced my
> > > flash with a static ram (Same foot print) and have verified that
> I
> > > can read and write to it. My program compiles fine and seems to
> load
> > > ok though the emulator into the external ram. When I try to run
> the
> > > program it seems to hang on the bios initialization. If I set the
> > > user code text to run on chip the program runs fine.
> > >
> > > So I'm asking the throbbing cumulative brain of c55 experts out
> > > there if they have any ideas as to what I'm missing. I welcome
> > > any suggestions I've spent a 2 days on this, and hate to spend
> any
> > > more time without asking since its probably a obvious oversight
> on
> > > my part.
> > >
> > > Thanks,
> > > PeeJayBlack > _____________________________________
> Note: If you do a simple "reply" with your email client, only the author of
this message will receive your answer. You need to do a "reply all" if you want
your answer to be distributed to the entire group.
>
> _____________________________________
> About this discussion group:
>
> To Join: Send an email to
>
> To Post: Send an email to
>
> To Leave: Send an email to
>
> Archives: http://www.yahoogroups.com/group/c55x
>
> Other Groups: http://www.dsprelated.com > Yahoo! Groups Links >
>





Hello Jeff,

The crash occurs in "_BIOS_init:".
It locks hard even crashes CCS.

Thanks in advance for any ideas

Peejayblack

--- In , Jeff Brower <jbrower@s...> wrote:
> PeeJay-
>
> > Thanks for the reply. Yes thats what I think I'm
> > trying to do. I have the bios set to run on chip
> > then you have choices as to where user code is
> > run. Just as a start I selected user .text
> > to run off chip, and it hangs on the bios initalization.
> > They allow you to use your own cmd file as well to locate
> > user code but scanning the cmd file they generate I can
> > see no issues.
>
> I'm not sure what you mean. Can you single step until void main() ?
If not, then
> what exactly is the last valid code before control is lost?
>
> My approximate guess is that something happens in auto_init() or
bios_init()
> functions. But you have to get in there to verify.
>
> -Jeff > > --- In , Jeff Brower <jbrower@s...> wrote:
> > > PeeJay-
> > >
> > > Why would you not locate DSP/BIOS code in onchip mem? It's not a
> > large amount.
> > > Would you not have to do this anyway, when you reach the point of
> > EEPROM boot vs.
> > > emulator load? You will have to boot something to run, that
> > something should include
> > > BIOS initialization and any other low-level initialization.
> > >
> > > My experience has been: a) keep anything that occurs prior to
> > void main() in onchip
> > > mem, and b) put low-level code in place using a boot mechanism,
> > either onchip
> > > bootloader or other method such as external logic that loads code
> > via HPI. Once you
> > > reach main(), then you are free to locate code and mix/match
> > memory spaces as
> > > needed.
> > >
> > > We have to support a wide range of TI DSPs here, and that has been
> > our standard
> > > method for C5xxx and C6xxx series.
> > >
> > > -Jeff
> > >
> > > peejayblack wrote:
> > > >
> > > > Hello Everyone,
> > > >
> > > > I'm working with the 5509 and am trying to run code off chip.
> > > > I want to run my code out of an external flash. I locate time
> > > > critical code on chip and swap as needed. The code I run out of
> > > > flash is user interface etc. We have to accommodate five
> > languages
> > > > so it takes up lots of space. I've done this on the 5409 with no
> > > > problems, but on this project I'm having problems. This may be
> > > > due to my using the DSP Bios on this project. I have not used it
> > in
> > > > my other projects so I am new to it. So far I have just switched
> > to
> > > > large memory model, switched to the large library, and set up so
> > the
> > > > user code text locates into the proper CE space. I've replaced my
> > > > flash with a static ram (Same foot print) and have verified that
> > I
> > > > can read and write to it. My program compiles fine and seems to
> > load
> > > > ok though the emulator into the external ram. When I try to run
> > the
> > > > program it seems to hang on the bios initialization. If I set the
> > > > user code text to run on chip the program runs fine.
> > > >
> > > > So I'm asking the throbbing cumulative brain of c55 experts out
> > > > there if they have any ideas as to what I'm missing. I welcome
> > > > any suggestions I've spent a 2 days on this, and hate to spend
> > any
> > > > more time without asking since its probably a obvious oversight
> > on
> > > > my part.
> > > >
> > > > Thanks,
> > > > PeeJayBlack
> >
> >
> > _____________________________________
> > Note: If you do a simple "reply" with your email client, only the
author of this message will receive your answer. You need to do a
"reply all" if you want your answer to be distributed to the entire group.
> >
> > _____________________________________
> > About this discussion group:
> >
> > To Join: Send an email to
> >
> > To Post: Send an email to
> >
> > To Leave: Send an email to
> >
> > Archives: http://www.yahoogroups.com/group/c55x
> >
> > Other Groups: http://www.dsprelated.com
> >
> >
> > Yahoo! Groups Links
> >
> >
> >
> >


PeeJay-

> The crash occurs in "_BIOS_init:".
> It locks hard even crashes CCS.

Yep, sounds familiar. What I do in this case is locate the C source for
BIOS_init()
and follow it through. I seem to recall that the source is in a .src file
somewhere
(CCS CD? TI website?). The CCS librarian tool allows you to pull source for a
function out of the .lib file, make a separate .obj file), re-link (make sure
the new
file has -g turned on), and then you can go through line at a time.

You will find your evil bug.

-Jeff

> --- In , Jeff Brower <jbrower@s...> wrote:
> > PeeJay-
> >
> > > Thanks for the reply. Yes thats what I think I'm
> > > trying to do. I have the bios set to run on chip
> > > then you have choices as to where user code is
> > > run. Just as a start I selected user .text
> > > to run off chip, and it hangs on the bios initalization.
> > > They allow you to use your own cmd file as well to locate
> > > user code but scanning the cmd file they generate I can
> > > see no issues.
> >
> > I'm not sure what you mean. Can you single step until void main() ?
> If not, then
> > what exactly is the last valid code before control is lost?
> >
> > My approximate guess is that something happens in auto_init() or
> bios_init()
> > functions. But you have to get in there to verify.
> >
> > -Jeff
> >
> >
> > > --- In , Jeff Brower <jbrower@s...> wrote:
> > > > PeeJay-
> > > >
> > > > Why would you not locate DSP/BIOS code in onchip mem? It's not a
> > > large amount.
> > > > Would you not have to do this anyway, when you reach the point of
> > > EEPROM boot vs.
> > > > emulator load? You will have to boot something to run, that
> > > something should include
> > > > BIOS initialization and any other low-level initialization.
> > > >
> > > > My experience has been: a) keep anything that occurs prior to
> > > void main() in onchip
> > > > mem, and b) put low-level code in place using a boot mechanism,
> > > either onchip
> > > > bootloader or other method such as external logic that loads code
> > > via HPI. Once you
> > > > reach main(), then you are free to locate code and mix/match
> > > memory spaces as
> > > > needed.
> > > >
> > > > We have to support a wide range of TI DSPs here, and that has been
> > > our standard
> > > > method for C5xxx and C6xxx series.
> > > >
> > > > -Jeff
> > > >
> > > > peejayblack wrote:
> > > > >
> > > > > Hello Everyone,
> > > > >
> > > > > I'm working with the 5509 and am trying to run code off chip.
> > > > > I want to run my code out of an external flash. I locate time
> > > > > critical code on chip and swap as needed. The code I run out of
> > > > > flash is user interface etc. We have to accommodate five
> > > languages
> > > > > so it takes up lots of space. I've done this on the 5409 with no
> > > > > problems, but on this project I'm having problems. This may be
> > > > > due to my using the DSP Bios on this project. I have not used it
> > > in
> > > > > my other projects so I am new to it. So far I have just switched
> > > to
> > > > > large memory model, switched to the large library, and set up so
> > > the
> > > > > user code text locates into the proper CE space. I've replaced my
> > > > > flash with a static ram (Same foot print) and have verified that
> > > I
> > > > > can read and write to it. My program compiles fine and seems to
> > > load
> > > > > ok though the emulator into the external ram. When I try to run
> > > the
> > > > > program it seems to hang on the bios initialization. If I set the
> > > > > user code text to run on chip the program runs fine.
> > > > >
> > > > > So I'm asking the throbbing cumulative brain of c55 experts out
> > > > > there if they have any ideas as to what I'm missing. I welcome
> > > > > any suggestions I've spent a 2 days on this, and hate to spend
> > > any
> > > > > more time without asking since its probably a obvious oversight
> > > on
> > > > > my part.
> > > > >
> > > > > Thanks,
> > > > > PeeJayBlack
> > >
> > >
> > > _____________________________________
> > > Note: If you do a simple "reply" with your email client, only the
> author of this message will receive your answer. You need to do a
> "reply all" if you want your answer to be distributed to the entire group.
> > >
> > > _____________________________________
> > > About this discussion group:
> > >
> > > To Join: Send an email to
> > >
> > > To Post: Send an email to
> > >
> > > To Leave: Send an email to
> > >
> > > Archives: http://www.yahoogroups.com/group/c55x
> > >
> > > Other Groups: http://www.dsprelated.com
> > >
> > >
> > > Yahoo! Groups Links
> > >
> > >
> > >
> > > _____________________________________
> Note: If you do a simple "reply" with your email client, only the author of
this message will receive your answer. You need to do a "reply all" if you want
your answer to be distributed to the entire group.
>
> _____________________________________
> About this discussion group:
>
> To Join: Send an email to
>
> To Post: Send an email to
>
> To Leave: Send an email to
>
> Archives: http://www.yahoogroups.com/group/c55x
>
> Other Groups: http://www.dsprelated.com > Yahoo! Groups Links >
>