DSPRelated.com
Forums

(bootloader) jump to 0x00 does't work sometimes, why?

Started by ghos...@163.com March 29, 2010
Hi:

I use C6713 with a UART(16L784).

fisrtly, I make a img with SBL and programmed in flash 0x90000000. When power up, the SBL of this img (first 1k bytes) is loaded int 0x00~0x400 by DSP and run. the SBL loads rest code to ram.

In this Img, I could receive a new( usr app) img from UART, and program it to flash 0x90040000. The usr app img also has a SBL.

So, I wan't the first img to be a powerful boot loader. I hope it could load the usr app img's SBL to 0x00~0x400 and run. Then I write a function to do this, copy 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.

Like this:

;copy
;0x90040000 ~ 0x90040400
;to
;0x00 ~ 0x400
zero B1
b B1
nop 5

But, I find sometimes my usr app can boot up and work well, sometimes can't boot up.

Can anybody help me? Thanks.

_____________________________________
Zhou-

> I use C6713 with a UART(16L784).
>
> fisrtly, I make a img with SBL and programmed in flash
> 0x90000000. When power up, the SBL of this img (first
> 1k bytes) is loaded int 0x00~0x400 by DSP and run. the
> SBL loads rest code to ram.
>
> In this Img, I could receive a new( usr app) img from
> UART, and program it to flash 0x90040000. The usr app
> img also has a SBL.
>
> So, I wan't the first img to be a powerful boot loader.
> I hope it could load the usr app img's SBL to 0x00~0x400 and
> run. Then I write a function to do this, copy
> 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.
>
> Like this:
>
> ;copy
> ;0x90040000 ~ 0x90040400
> ;to
> ;0x00 ~ 0x400
> zero B1
> b B1
> nop 5
>
> But, I find sometimes my usr app can boot up and work well, sometimes can't boot up.

When you copy over low mem, your code is already running, so it could be that you're overwriting some mem-mapped
registers that are "in use". Did you try disabling interrupts before doing the copy? Maybe there are some other
disables that need to be done also, not sure... suggest to get the C6713 data sheet and take a close look at what
mem-mapped registers you're overwriting.

-Jeff

_____________________________________
Thank you Jeff.
I refered the datasheet for the mem-mapped register, but have not get much help.
Actually I'm not sure which register I should handle and how to handle.
I just use IRQ_globalReset() to disable all maskable interrupt and clear their status, but it does not work.

Hi:
>
>I use C6713 with a UART(16L784).
>
>fisrtly, I make a img with SBL and programmed in flash 0x90000000. When power up, the SBL of this img (first 1k bytes) is loaded int 0x00~0x400 by DSP and run. the SBL loads rest code to ram.
>
>In this Img, I could receive a new( usr app) img from UART, and program it to flash 0x90040000. The usr app img also has a SBL.
>
>So, I wan't the first img to be a powerful boot loader. I hope it could load the usr app img's SBL to 0x00~0x400 and run. Then I write a function to do this, copy 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.
>
>Like this:
>
> ;copy
> ;0x90040000 ~ 0x90040400
> ;to
> ;0x00 ~ 0x400
> zero B1
> b B1
> nop 5
>
>But, I find sometimes my usr app can boot up and work well, sometimes can't boot up.
>
>Can anybody help me? Thanks.
>
>_____________________________________

_____________________________________
Zhou-

>>> I use C6713 with a UART(16L784).
>>>
>>> fisrtly, I make a img with SBL and programmed in flash
>>> 0x90000000. When power up, the SBL of this img (first
>>> 1k bytes) is loaded int 0x00~0x400 by DSP and run. the
>>> SBL loads rest code to ram.
>>>
>>> In this Img, I could receive a new( usr app) img from
>>> UART, and program it to flash 0x90040000. The usr app
>>> img also has a SBL.
>>>
>>> So, I wan't the first img to be a powerful boot loader.
>>> I hope it could load the usr app img's SBL to 0x00~0x400 and
>>> run. Then I write a function to do this, copy
>>> 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.
>>>
>>> Like this:
>>>
>>> ;copy
>>> ;0x90040000 ~ 0x90040400
>>> ;to
>>> ;0x00 ~ 0x400
>>> zero B1
>>> b B1
>>> nop 5
>>>
>>> But, I find sometimes my usr app can boot up and work well,
>>> sometimes can't boot up.
>>
>> When you copy over low mem, your code is already running, so it could be that you're overwriting some mem-mapped
>> registers that are "in use". Did you try disabling interrupts before doing the copy? Maybe there are some other
>> disables that need to be done also, not sure... suggest to get the C6713 data sheet and take a close look at what
>> mem-mapped registers you're overwriting.

> I refered the datasheet for the mem-mapped register,
> but have not get much help.
> Actually I'm not sure which register I should handle
> and how to handle.

I don't get you. Why do you need to "handle" any mem-mapped register? I'm trying to tell you *not* to write over
mem-mapped registers when you copy low mem starting at zero. For example, why would you copy over the Reset vector
(location 0x0) or timer interrupt vector registers (int 14, int 15 vector locations) when your code is already
running? Isn't that a bad idea? For example, if you overwrite timer interrupts and then DSP/BIOS gets a timer
interrupt, what would happen? I don't know but if I were you, I wouldn't waste time figuring it out. Do you see my
point?

> I just use IRQ_globalReset() to disable all maskable
> interrupt and clear their status, but it does not work.

What does this function actually do? Is this permitted if you have DSP/BIOS running?

One thing you could try: check each mem value before you copy -- are they different? If so, then don't copy. And you
can study those locations and see what is the difference. That may give you some clue as to what goes wrong.

-Jeff

PS. Please don't cut text from previous post. I had to go back and copy text from my previous e-mail which is a waste
of time and not fun. It's supposed to be fun to help people, please don't make it un-fun.

_____________________________________
Zhou,

On Wed, Mar 31, 2010 at 10:43 AM, Jeff Brower wrote:

> Zhou-
> >>> I use C6713 with a UART(16L784).
> >>>
> >>> fisrtly, I make a img with SBL and programmed in flash
> >>> 0x90000000. When power up, the SBL of this img (first
> >>> 1k bytes) is loaded int 0x00~0x400 by DSP and run. the
> >>> SBL loads rest code to ram.
> >>>
> >>> In this Img, I could receive a new( usr app) img from
> >>> UART, and program it to flash 0x90040000. The usr app
> >>> img also has a SBL.
> >>>
> >>> So, I wan't the first img to be a powerful boot loader.
> >>> I hope it could load the usr app img's SBL to 0x00~0x400 and
> >>> run. Then I write a function to do this, copy
> >>> 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.
> >>>
> >>> Like this:
> >>>
> >>> ;copy
> >>> ;0x90040000 ~ 0x90040400
> >>> ;to
> >>> ;0x00 ~ 0x400
> >>> zero B1
> >>> b B1
> >>> nop 5
> >>>
> >>> But, I find sometimes my usr app can boot up and work well,
> >>> sometimes can't boot up.
>

I think that you might be trying to dynamically update the firmware of a
running system. If this is the case, your design is likely at fault. If this
what you are trying to do, you might try something like the following
simplified description.
1. Divide Flash into 3 sections on sector boundaries. [a] Even revision of
firmware, [b] Odd revision of firmware, and [c] extended boot loader and
update firmware. a & b must contain revision information at a predefined
offset.
2. During boot, the extended loader reads the revision number from a & b.
The larger value is selected to be loaded.
3. During update, interrupts are disabled and only code from c is executed.
If ROM is not executable, the code for c must reside in a dedicated area of
RAM.

If these constraints are met, you can perform the 'copy level 1 boot and
execute' procedure successfully [if your code is correct].

mikedunn

> >>
> >> When you copy over low mem, your code is already running, so it could be
> that you're overwriting some mem-mapped
> >> registers that are "in use". Did you try disabling interrupts before
> doing the copy? Maybe there are some other
> >> disables that need to be done also, not sure... suggest to get the C6713
> data sheet and take a close look at what
> >> mem-mapped registers you're overwriting.
>
> > I refered the datasheet for the mem-mapped register,
> > but have not get much help.
> > Actually I'm not sure which register I should handle
> > and how to handle.
>
> I don't get you. Why do you need to "handle" any mem-mapped register? I'm
> trying to tell you *not* to write over
> mem-mapped registers when you copy low mem starting at zero. For example,
> why would you copy over the Reset vector
> (location 0x0) or timer interrupt vector registers (int 14, int 15 vector
> locations) when your code is already
> running? Isn't that a bad idea? For example, if you overwrite timer
> interrupts and then DSP/BIOS gets a timer
> interrupt, what would happen? I don't know but if I were you, I wouldn't
> waste time figuring it out. Do you see my
> point?
> > I just use IRQ_globalReset() to disable all maskable
> > interrupt and clear their status, but it does not work.
>
> What does this function actually do? Is this permitted if you have DSP/BIOS
> running?
>
> One thing you could try: check each mem value before you copy -- are they
> different? If so, then don't copy. And you
> can study those locations and see what is the difference. That may give you
> some clue as to what goes wrong.
>
> -Jeff
>
> PS. Please don't cut text from previous post. I had to go back and copy
> text from my previous e-mail which is a waste
> of time and not fun. It's supposed to be fun to help people, please don't
> make it un-fun.
>
>
>

--
www.dsprelated.com/blogs-1/nf/Mike_Dunn.php
U29ycnksIEknbSBhIGZyZXNoIG1hbiBpbiBkc3ByZWxhdGVkLCBJIHJlcGx5ZWQgaW4gdGhl
IGZvcnVtLCBzbyB0aGUgdGV4dCB3YXMgY3V0dGVkLgpJIGRpZCBub3QgdXNlIERTUC9CSU9T
LgpZb3UnciByaWdodCB0aGF0IEknbSB0cnlpbmcgdG8gdXBkYXRlIG15IHN5c3RlbSAgZHlu
YW1pY2FsbHkuCkkgcHJvcG9zZSB0byBtYWtlIDIgc3lzdGVtcywgTk8uMSB3YXMgcHJvZ3Jh
bWVkIGludG8gaW4gMH4zIHNlY3Rpb25zIG9mIGZsYXNoLCBhbmQgTk8uMiBpbiA0fjcuCkJv
dGggb2YgdGhlbSBoYXZlIGEgc2Vjb25kIGJvb3QgbG9hZGVyLgpXaGVuIHBvd2VyIHVwLCBO
Ty4xJ3MgU0JMIHdhcyBsb2FkZWQgaW4gIDB4MDB+MHg0MDAgYnkgZHNwLCBzbyBpdCBib290
IHVwLgogCkkgaG9wZSB0aGUgTk8uMSBjb3VsZCBsb2FkIHRoZSBOTy4yJ3MgU0JMIHRvIDB4
MDB+MHg0MDAsdGhlbiBqdW1wIHRvIDB4MDAsIHRoZW4gdGhlIE5PLjIgYm9vdCB1cCBpdHNl
bGYuCkJlY2F1bHNlIEkgdGhvdWdodCB0aGUgMHgwMH4weDQwMCB3YXMgdW51c2Ugd2hlbiBh
IHN5c3RlbSBib290IHVwLCBTbyBJIGNhbiBjb3ZlciBpdC4KIApUb2RheSwgSSBmb3VuZCBO
Ty4xIGNvdWxkIGxvYWQgTk8uMidzIFNCTCB0byAweDAwIHN1Y2Nlc3NmdWwsIGFuZCBOTy4y
IGNvdWxkIGJvb3QgdXAuCkJVVCwgTk8uMiBtdXN0IGJlIGEgc21hbGwsICBpZiBpdCdzIGJp
ZywgdGhlIERTUCB3aWxsICJydW5pbmcgYXdheS4iClNvLCBJJ20gbm90IHN1cmUgbWF5YmUg
c29tZSByZWdpc3RlcnMgd2FzIGJlIG1vZGlmaWVkIGJ5IE5PLjEsIGFuZCBub3Qgc2V0IHRv
IGl0J3MgZGVmYXVsdCAgdmFsdWUgd2hlbiBQQyBqdW1wcyB0byAwLgpJdCBhZmZlY3RzIHRo
ZSBOTy4yJ3MgcnVuaW5nLgpJIHdvbmRlciBpZiB0aGVyZSBpcyBzb21lIHdheSB0byBzZXQg
dGhlIHJlZ2lzdGVyIHRvIGlzIGRlZmF1bHQgdmFsdWUsIHdoaXRvdXQgYSBoYXJkd2FyZSBy
ZXNldC4KTXkgZW5nbGlzaCBpcyBzbyBwb29yIGFuZCBJJ20gZGVwcmVzc2VkLkNhbiB5b3Ug
Z2V0IG1lPwoKCuWcqDIwMTAtMDQtMDEgMTM6MDM6MDbvvIwiTWljaGFlbCBEdW5uIiA8bWlr
ZS5kdW5uLjAwMUBnbWFpbC5jb20+IOWGmemBk++8mgpaaG91LAoKCk9uIFdlZCwgTWFyIDMx
LCAyMDEwIGF0IDEwOjQzIEFNLCBKZWZmIEJyb3dlciA8amJyb3dlckBzaWduYWxvZ2ljLmNv
bT4gd3JvdGU6CgogCgpaaG91LQoKCgo+Pj4gSSB1c2UgQzY3MTMgd2l0aCBhIFVBUlQoMTZM
Nzg0KS4KPj4+Cj4+PiBmaXNydGx5LCBJIG1ha2UgYSBpbWcgd2l0aCBTQkwgYW5kIHByb2dy
YW1tZWQgaW4gZmxhc2gKPj4+IDB4OTAwMDAwMDAuIFdoZW4gcG93ZXIgdXAsIHRoZSBTQkwg
b2YgdGhpcyBpbWcgKGZpcnN0Cj4+PiAxayBieXRlcykgaXMgbG9hZGVkIGludCAweDAwfjB4
NDAwIGJ5IERTUCBhbmQgcnVuLiB0aGUKPj4+IFNCTCBsb2FkcyByZXN0IGNvZGUgdG8gcmFt
Lgo+Pj4KPj4+IEluIHRoaXMgSW1nLCBJIGNvdWxkIHJlY2VpdmUgYSBuZXcoIHVzciBhcHAp
IGltZyBmcm9tCj4+PiBVQVJULCBhbmQgcHJvZ3JhbSBpdCB0byBmbGFzaCAweDkwMDQwMDAw
LiBUaGUgdXNyIGFwcAo+Pj4gaW1nIGFsc28gaGFzIGEgU0JMLgo+Pj4KPj4+IFNvLCBJIHdh
bid0IHRoZSBmaXJzdCBpbWcgdG8gYmUgYSBwb3dlcmZ1bCBib290IGxvYWRlci4KPj4+IEkg
aG9wZSBpdCBjb3VsZCBsb2FkIHRoZSB1c3IgYXBwIGltZydzIFNCTCB0byAweDAwfjB4NDAw
IGFuZAo+Pj4gcnVuLiBUaGVuIEkgd3JpdGUgYSBmdW5jdGlvbiB0byBkbyB0aGlzLCBjb3B5
Cj4+PiAweDkwMDQwMDAwIH4gMHg5MDA0MDQwMCB0byBJUkFNIDB4MDAgfiAweDQwMCBhbmQg
anVtcCAweDAwLgo+Pj4KPj4+IExpa2UgdGhpczoKPj4+Cj4+PiA7Y29weQo+Pj4gOzB4OTAw
NDAwMDAgfiAweDkwMDQwNDAwCj4+PiA7dG8KPj4+IDsweDAwIH4gMHg0MDAKPj4+IHplcm8g
QjEKPj4+IGIgQjEKPj4+IG5vcCA1Cj4+Pgo+Pj4gQnV0LCBJIGZpbmQgc29tZXRpbWVzIG15
IHVzciBhcHAgY2FuIGJvb3QgdXAgYW5kIHdvcmsgd2VsbCwKPj4+IHNvbWV0aW1lcyBjYW4n
dCBib290IHVwLgoKPG1sZD4KSSB0aGluayB0aGF0IHlvdSBtaWdodCBiZSB0cnlpbmcgdG8g
ZHluYW1pY2FsbHkgdXBkYXRlIHRoZSBmaXJtd2FyZSBvZiBhIHJ1bm5pbmcgc3lzdGVtLiBJ
ZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3VyIGRlc2lnbiBpcyBsaWtlbHkgYXQgZmF1bHQuIElm
IHRoaXMgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkbywgeW91IG1pZ2h0IHRyeSBzb21ldGhp
bmcgbGlrZSB0aGUgZm9sbG93aW5nIHNpbXBsaWZpZWQgZGVzY3JpcHRpb24uIDx0aGlzIGlz
IG9ubHkgb25lIHdheSB0byBhZGRyZXNzIHRoZSBwcm9ibGVtPgoxLiBEaXZpZGUgRmxhc2gg
aW50byAzIHNlY3Rpb25zIG9uIHNlY3RvciBib3VuZGFyaWVzLiBbYV0gRXZlbiByZXZpc2lv
biBvZiBmaXJtd2FyZSwgW2JdIE9kZCByZXZpc2lvbiBvZiBmaXJtd2FyZSwgYW5kIFtjXSBl
eHRlbmRlZCBib290IGxvYWRlciBhbmQgdXBkYXRlIGZpcm13YXJlLiAgYSAmIGIgbXVzdCBj
b250YWluIHJldmlzaW9uIGluZm9ybWF0aW9uIGF0IGEgcHJlZGVmaW5lZCBvZmZzZXQuICAK
Mi4gRHVyaW5nIGJvb3QsIHRoZSBleHRlbmRlZCBsb2FkZXIgcmVhZHMgdGhlIHJldmlzaW9u
IG51bWJlciBmcm9tIGEgJiBiLiBUaGUgbGFyZ2VyIHZhbHVlIGlzIHNlbGVjdGVkIHRvIGJl
IGxvYWRlZC4KMy4gRHVyaW5nIHVwZGF0ZSwgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgYW5k
IG9ubHkgY29kZSBmcm9tIGMgaXMgZXhlY3V0ZWQuICBJZiBST00gaXMgbm90IGV4ZWN1dGFi
bGUsIHRoZSBjb2RlIGZvciBjIG11c3QgcmVzaWRlIGluIGEgZGVkaWNhdGVkIGFyZWEgb2Yg
UkFNLiAgCgpJZiB0aGVzZSBjb25zdHJhaW50cyBhcmUgbWV0LCB5b3UgY2FuIHBlcmZvcm0g
dGhlICdjb3B5IGxldmVsIDEgYm9vdCBhbmQgZXhlY3V0ZScgcHJvY2VkdXJlIHN1Y2Nlc3Nm
dWxseSBbaWYgeW91ciBjb2RlIGlzIGNvcnJlY3RdLgoKbWlrZWR1bm4KCj4+Cgo+PiBXaGVu
IHlvdSBjb3B5IG92ZXIgbG93IG1lbSwgeW91ciBjb2RlIGlzIGFscmVhZHkgcnVubmluZywg
c28gaXQgY291bGQgYmUgdGhhdCB5b3UncmUgb3ZlcndyaXRpbmcgc29tZSBtZW0tbWFwcGVk
Cj4+IHJlZ2lzdGVycyB0aGF0IGFyZSAiaW4gdXNlIi4gRGlkIHlvdSB0cnkgZGlzYWJsaW5n
IGludGVycnVwdHMgYmVmb3JlIGRvaW5nIHRoZSBjb3B5PyBNYXliZSB0aGVyZSBhcmUgc29t
ZSBvdGhlcgo+PiBkaXNhYmxlcyB0aGF0IG5lZWQgdG8gYmUgZG9uZSBhbHNvLCBub3Qgc3Vy
ZS4uLiBzdWdnZXN0IHRvIGdldCB0aGUgQzY3MTMgZGF0YSBzaGVldCBhbmQgdGFrZSBhIGNs
b3NlIGxvb2sgYXQgd2hhdAo+PiBtZW0tbWFwcGVkIHJlZ2lzdGVycyB5b3UncmUgb3Zlcndy
aXRpbmcuCgoKPiBJIHJlZmVyZWQgdGhlIGRhdGFzaGVldCBmb3IgdGhlIG1lbS1tYXBwZWQg
cmVnaXN0ZXIsCj4gYnV0IGhhdmUgbm90IGdldCBtdWNoIGhlbHAuCj4gQWN0dWFsbHkgSSdt
IG5vdCBzdXJlIHdoaWNoIHJlZ2lzdGVyIEkgc2hvdWxkIGhhbmRsZQo+IGFuZCBob3cgdG8g
aGFuZGxlLgoKCkkgZG9uJ3QgZ2V0IHlvdS4gV2h5IGRvIHlvdSBuZWVkIHRvICJoYW5kbGUi
IGFueSBtZW0tbWFwcGVkIHJlZ2lzdGVyPyBJJ20gdHJ5aW5nIHRvIHRlbGwgeW91ICpub3Qq
IHRvIHdyaXRlIG92ZXIKbWVtLW1hcHBlZCByZWdpc3RlcnMgd2hlbiB5b3UgY29weSBsb3cg
bWVtIHN0YXJ0aW5nIGF0IHplcm8uIEZvciBleGFtcGxlLCB3aHkgd291bGQgeW91IGNvcHkg
b3ZlciB0aGUgUmVzZXQgdmVjdG9yCihsb2NhdGlvbiAweDApIG9yIHRpbWVyIGludGVycnVw
dCB2ZWN0b3IgcmVnaXN0ZXJzIChpbnQgMTQsIGludCAxNSB2ZWN0b3IgbG9jYXRpb25zKSB3
aGVuIHlvdXIgY29kZSBpcyBhbHJlYWR5CnJ1bm5pbmc/IElzbid0IHRoYXQgYSBiYWQgaWRl
YT8gRm9yIGV4YW1wbGUsIGlmIHlvdSBvdmVyd3JpdGUgdGltZXIgaW50ZXJydXB0cyBhbmQg
dGhlbiBEU1AvQklPUyBnZXRzIGEgdGltZXIKaW50ZXJydXB0LCB3aGF0IHdvdWxkIGhhcHBl
bj8gSSBkb24ndCBrbm93IGJ1dCBpZiBJIHdlcmUgeW91LCBJIHdvdWxkbid0IHdhc3RlIHRp
bWUgZmlndXJpbmcgaXQgb3V0LiBEbyB5b3Ugc2VlIG15CnBvaW50PyAKCgo+IEkganVzdCB1
c2UgSVJRX2dsb2JhbFJlc2V0KCkgdG8gZGlzYWJsZSBhbGwgbWFza2FibGUKPiBpbnRlcnJ1
cHQgYW5kIGNsZWFyIHRoZWlyIHN0YXR1cywgYnV0IGl0IGRvZXMgbm90IHdvcmsuCgoKV2hh
dCBkb2VzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgZG8/IElzIHRoaXMgcGVybWl0dGVkIGlm
IHlvdSBoYXZlIERTUC9CSU9TIHJ1bm5pbmc/CgpPbmUgdGhpbmcgeW91IGNvdWxkIHRyeTog
Y2hlY2sgZWFjaCBtZW0gdmFsdWUgYmVmb3JlIHlvdSBjb3B5IC0tIGFyZSB0aGV5IGRpZmZl
cmVudD8gSWYgc28sIHRoZW4gZG9uJ3QgY29weS4gQW5kIHlvdQpjYW4gc3R1ZHkgdGhvc2Ug
bG9jYXRpb25zIGFuZCBzZWUgd2hhdCBpcyB0aGUgZGlmZmVyZW5jZS4gVGhhdCBtYXkgZ2l2
ZSB5b3Ugc29tZSBjbHVlIGFzIHRvIHdoYXQgZ29lcyB3cm9uZy4KCi1KZWZmCgpQUy4gUGxl
YXNlIGRvbid0IGN1dCB0ZXh0IGZyb20gcHJldmlvdXMgcG9zdC4gSSBoYWQgdG8gZ28gYmFj
ayBhbmQgY29weSB0ZXh0IGZyb20gbXkgcHJldmlvdXMgZS1tYWlsIHdoaWNoIGlzIGEgd2Fz
dGUKb2YgdGltZSBhbmQgbm90IGZ1bi4gSXQncyBzdXBwb3NlZCB0byBiZSBmdW4gdG8gaGVs
cCBwZW9wbGUsIHBsZWFzZSBkb24ndCBtYWtlIGl0IHVuLWZ1bi4KCgoKCgoKLS0gCnd3dy5k
c3ByZWxhdGVkLmNvbS9ibG9ncy0xL25mL01pa2VfRHVubi5waHAKCgotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCllvdSBjYW4gbm93IHBvc3QgYSBtZXNzYWdlIG9y
IGFjY2VzcyBhbmQgc2VhcmNoIHRoZSBhcmNoaXZlcyBvZiB0aGlzIGdyb3VwIG9uIERTUFJl
bGF0ZWQuY29tOgpodHRwOi8vd3d3LmRzcHJlbGF0ZWQuY29tL2dyb3Vwcy9jNngvMS5waHAK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTm90ZTogSWYgeW91IGRv
IGEgc2ltcGxlICJyZXBseSIgd2l0aCB5b3VyIGVtYWlsIGNsaWVudCwgb25seSB0aGUgYXV0
aG9yIG9mIHRoaXMgbWVzc2FnZSB3aWxsIHJlY2VpdmUgeW91ciBhbnN3ZXIuICBZb3UgbmVl
ZCB0byBkbyBhICJyZXBseSBhbGwiIGlmIHlvdSB3YW50IHlvdXIgYW5zd2VyIHRvIGJlIGRp
c3RyaWJ1dGVkIHRvIHRoZSBlbnRpcmUgZ3JvdXAuCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFib3V0IHRoaXMgZGlzY3Vzc2lvbiBncm91cDoKCkFyY2hpdmVz
OiAgaHR0cDovL3d3dy5kc3ByZWxhdGVkLmNvbS9ncm91cHMvYzZ4LzEucGhwCgpUbyBQb3N0
OiAgU2VuZCBhbiBlbWFpbCB0byBjNnhAeWFob29ncm91cHMuY29tCgpPdGhlciBEU1AgUmVs
YXRlZCBHcm91cHM6IGh0dHA6Ly93d3cuZHNwcmVsYXRlZC5jb20vZ3JvdXBzLnBocFlhaG9v
ISBHcm91cHMgTGlua3MKCjwqPiBUbyB2aXNpdCB5b3VyIGdyb3VwIG9uIHRoZSB3ZWIsIGdv
IHRvOgogICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYzZ4LwoKPCo+IFlvdXIg
ZW1haWwgc2V0dGluZ3M6CiAgICBJbmRpdmlkdWFsIEVtYWlsIHwgVHJhZGl0aW9uYWwKCjwq
PiBUbyBjaGFuZ2Ugc2V0dGluZ3Mgb25saW5lIGdvIHRvOgogICAgaHR0cDovL2dyb3Vwcy55
YWhvby5jb20vZ3JvdXAvYzZ4L2pvaW4KICAgIChZYWhvbyEgSUQgcmVxdWlyZWQpCgo8Kj4g
VG8gY2hhbmdlIHNldHRpbmdzIHZpYSBlbWFpbDoKICAgIGM2eC1kaWdlc3RAeWFob29ncm91
cHMuY29tIAogICAgYzZ4LWZ1bGxmZWF0dXJlZEB5YWhvb2dyb3Vwcy5jb20KCjwqPiBUbyB1
bnN1YnNjcmliZSBmcm9tIHRoaXMgZ3JvdXAsIHNlbmQgYW4gZW1haWwgdG86CiAgICBjNngt
dW5zdWJzY3JpYmVAeWFob29ncm91cHMuY29tCgo8Kj4gWW91ciB1c2Ugb2YgWWFob28hIEdy
b3VwcyBpcyBzdWJqZWN0IHRvOgogICAgaHR0cDovL2RvY3MueWFob28uY29tL2luZm8vdGVy
bXMvCgo
TXkgZnVsbCB2ZXJzaW9uIE5PLjIgdXNyLWFwcCBjYW4gd29yayB3ZWxsIGlmIEkgcHJvZ3Jh
bSBpdCB0byBzZWN0b3IgMCB+IDMuCkJ1dCBjYW4gbm90IHdvcmsgY29ycmVjdGx5IHdoZW4g
bG9hZGVkIGJ5IE5PLjEuCldoZW4gSSBkZWxldGUgc29tZSBjb2RlLCBtYWtlIGEgbGVhc3Qg
c3lzdGVtLCBJIGNhbiB3b3JrIHdlbGwuCk15IHN0YWNrIHNpemUgaXMgMHhhMDAwLCBoZWVw
IHNpemUgaXMgMHgxMDAwLCBJIHRoaW5rIGl0J3Mgbm90IHNtYWxsLgoK5ZyoMjAxMC0wNC0w
MSAxMzowMzowNu+8jCJNaWNoYWVsIER1bm4iIDxtaWtlLmR1bm4uMDAxQGdtYWlsLmNvbT4g
5YaZ6YGT77yaClpob3UsCgoKT24gV2VkLCBNYXIgMzEsIDIwMTAgYXQgMTA6NDMgQU0sIEpl
ZmYgQnJvd2VyIDxqYnJvd2VyQHNpZ25hbG9naWMuY29tPiB3cm90ZToKCiAKClpob3UtCgoK
Cj4+PiBJIHVzZSBDNjcxMyB3aXRoIGEgVUFSVCgxNkw3ODQpLgo+Pj4KPj4+IGZpc3J0bHks
IEkgbWFrZSBhIGltZyB3aXRoIFNCTCBhbmQgcHJvZ3JhbW1lZCBpbiBmbGFzaAo+Pj4gMHg5
MDAwMDAwMC4gV2hlbiBwb3dlciB1cCwgdGhlIFNCTCBvZiB0aGlzIGltZyAoZmlyc3QKPj4+
IDFrIGJ5dGVzKSBpcyBsb2FkZWQgaW50IDB4MDB+MHg0MDAgYnkgRFNQIGFuZCBydW4uIHRo
ZQo+Pj4gU0JMIGxvYWRzIHJlc3QgY29kZSB0byByYW0uCj4+Pgo+Pj4gSW4gdGhpcyBJbWcs
IEkgY291bGQgcmVjZWl2ZSBhIG5ldyggdXNyIGFwcCkgaW1nIGZyb20KPj4+IFVBUlQsIGFu
ZCBwcm9ncmFtIGl0IHRvIGZsYXNoIDB4OTAwNDAwMDAuIFRoZSB1c3IgYXBwCj4+PiBpbWcg
YWxzbyBoYXMgYSBTQkwuCj4+Pgo+Pj4gU28sIEkgd2FuJ3QgdGhlIGZpcnN0IGltZyB0byBi
ZSBhIHBvd2VyZnVsIGJvb3QgbG9hZGVyLgo+Pj4gSSBob3BlIGl0IGNvdWxkIGxvYWQgdGhl
IHVzciBhcHAgaW1nJ3MgU0JMIHRvIDB4MDB+MHg0MDAgYW5kCj4+PiBydW4uIFRoZW4gSSB3
cml0ZSBhIGZ1bmN0aW9uIHRvIGRvIHRoaXMsIGNvcHkKPj4+IDB4OTAwNDAwMDAgfiAweDkw
MDQwNDAwIHRvIElSQU0gMHgwMCB+IDB4NDAwIGFuZCBqdW1wIDB4MDAuCj4+Pgo+Pj4gTGlr
ZSB0aGlzOgo+Pj4KPj4+IDtjb3B5Cj4+PiA7MHg5MDA0MDAwMCB+IDB4OTAwNDA0MDAKPj4+
IDt0bwo+Pj4gOzB4MDAgfiAweDQwMAo+Pj4gemVybyBCMQo+Pj4gYiBCMQo+Pj4gbm9wIDUK
Pj4+Cj4+PiBCdXQsIEkgZmluZCBzb21ldGltZXMgbXkgdXNyIGFwcCBjYW4gYm9vdCB1cCBh
bmQgd29yayB3ZWxsLAo+Pj4gc29tZXRpbWVzIGNhbid0IGJvb3QgdXAuCgo8bWxkPgpJIHRo
aW5rIHRoYXQgeW91IG1pZ2h0IGJlIHRyeWluZyB0byBkeW5hbWljYWxseSB1cGRhdGUgdGhl
IGZpcm13YXJlIG9mIGEgcnVubmluZyBzeXN0ZW0uIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlv
dXIgZGVzaWduIGlzIGxpa2VseSBhdCBmYXVsdC4gSWYgdGhpcyB3aGF0IHlvdSBhcmUgdHJ5
aW5nIHRvIGRvLCB5b3UgbWlnaHQgdHJ5IHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcg
c2ltcGxpZmllZCBkZXNjcmlwdGlvbi4gPHRoaXMgaXMgb25seSBvbmUgd2F5IHRvIGFkZHJl
c3MgdGhlIHByb2JsZW0+CjEuIERpdmlkZSBGbGFzaCBpbnRvIDMgc2VjdGlvbnMgb24gc2Vj
dG9yIGJvdW5kYXJpZXMuIFthXSBFdmVuIHJldmlzaW9uIG9mIGZpcm13YXJlLCBbYl0gT2Rk
IHJldmlzaW9uIG9mIGZpcm13YXJlLCBhbmQgW2NdIGV4dGVuZGVkIGJvb3QgbG9hZGVyIGFu
ZCB1cGRhdGUgZmlybXdhcmUuICBhICYgYiBtdXN0IGNvbnRhaW4gcmV2aXNpb24gaW5mb3Jt
YXRpb24gYXQgYSBwcmVkZWZpbmVkIG9mZnNldC4gIAoyLiBEdXJpbmcgYm9vdCwgdGhlIGV4
dGVuZGVkIGxvYWRlciByZWFkcyB0aGUgcmV2aXNpb24gbnVtYmVyIGZyb20gYSAmIGIuIFRo
ZSBsYXJnZXIgdmFsdWUgaXMgc2VsZWN0ZWQgdG8gYmUgbG9hZGVkLgozLiBEdXJpbmcgdXBk
YXRlLCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBhbmQgb25seSBjb2RlIGZyb20gYyBpcyBl
eGVjdXRlZC4gIElmIFJPTSBpcyBub3QgZXhlY3V0YWJsZSwgdGhlIGNvZGUgZm9yIGMgbXVz
dCByZXNpZGUgaW4gYSBkZWRpY2F0ZWQgYXJlYSBvZiBSQU0uICAKCklmIHRoZXNlIGNvbnN0
cmFpbnRzIGFyZSBtZXQsIHlvdSBjYW4gcGVyZm9ybSB0aGUgJ2NvcHkgbGV2ZWwgMSBib290
IGFuZCBleGVjdXRlJyBwcm9jZWR1cmUgc3VjY2Vzc2Z1bGx5IFtpZiB5b3VyIGNvZGUgaXMg
Y29ycmVjdF0uCgptaWtlZHVubgoKPj4KCj4+IFdoZW4geW91IGNvcHkgb3ZlciBsb3cgbWVt
LCB5b3VyIGNvZGUgaXMgYWxyZWFkeSBydW5uaW5nLCBzbyBpdCBjb3VsZCBiZSB0aGF0IHlv
dSdyZSBvdmVyd3JpdGluZyBzb21lIG1lbS1tYXBwZWQKPj4gcmVnaXN0ZXJzIHRoYXQgYXJl
ICJpbiB1c2UiLiBEaWQgeW91IHRyeSBkaXNhYmxpbmcgaW50ZXJydXB0cyBiZWZvcmUgZG9p
bmcgdGhlIGNvcHk/IE1heWJlIHRoZXJlIGFyZSBzb21lIG90aGVyCj4+IGRpc2FibGVzIHRo
YXQgbmVlZCB0byBiZSBkb25lIGFsc28sIG5vdCBzdXJlLi4uIHN1Z2dlc3QgdG8gZ2V0IHRo
ZSBDNjcxMyBkYXRhIHNoZWV0IGFuZCB0YWtlIGEgY2xvc2UgbG9vayBhdCB3aGF0Cj4+IG1l
bS1tYXBwZWQgcmVnaXN0ZXJzIHlvdSdyZSBvdmVyd3JpdGluZy4KCgo+IEkgcmVmZXJlZCB0
aGUgZGF0YXNoZWV0IGZvciB0aGUgbWVtLW1hcHBlZCByZWdpc3RlciwKPiBidXQgaGF2ZSBu
b3QgZ2V0IG11Y2ggaGVscC4KPiBBY3R1YWxseSBJJ20gbm90IHN1cmUgd2hpY2ggcmVnaXN0
ZXIgSSBzaG91bGQgaGFuZGxlCj4gYW5kIGhvdyB0byBoYW5kbGUuCgoKSSBkb24ndCBnZXQg
eW91LiBXaHkgZG8geW91IG5lZWQgdG8gImhhbmRsZSIgYW55IG1lbS1tYXBwZWQgcmVnaXN0
ZXI/IEknbSB0cnlpbmcgdG8gdGVsbCB5b3UgKm5vdCogdG8gd3JpdGUgb3ZlcgptZW0tbWFw
cGVkIHJlZ2lzdGVycyB3aGVuIHlvdSBjb3B5IGxvdyBtZW0gc3RhcnRpbmcgYXQgemVyby4g
Rm9yIGV4YW1wbGUsIHdoeSB3b3VsZCB5b3UgY29weSBvdmVyIHRoZSBSZXNldCB2ZWN0b3IK
KGxvY2F0aW9uIDB4MCkgb3IgdGltZXIgaW50ZXJydXB0IHZlY3RvciByZWdpc3RlcnMgKGlu
dCAxNCwgaW50IDE1IHZlY3RvciBsb2NhdGlvbnMpIHdoZW4geW91ciBjb2RlIGlzIGFscmVh
ZHkKcnVubmluZz8gSXNuJ3QgdGhhdCBhIGJhZCBpZGVhPyBGb3IgZXhhbXBsZSwgaWYgeW91
IG92ZXJ3cml0ZSB0aW1lciBpbnRlcnJ1cHRzIGFuZCB0aGVuIERTUC9CSU9TIGdldHMgYSB0
aW1lcgppbnRlcnJ1cHQsIHdoYXQgd291bGQgaGFwcGVuPyBJIGRvbid0IGtub3cgYnV0IGlm
IEkgd2VyZSB5b3UsIEkgd291bGRuJ3Qgd2FzdGUgdGltZSBmaWd1cmluZyBpdCBvdXQuIERv
IHlvdSBzZWUgbXkKcG9pbnQ/IAoKCj4gSSBqdXN0IHVzZSBJUlFfZ2xvYmFsUmVzZXQoKSB0
byBkaXNhYmxlIGFsbCBtYXNrYWJsZQo+IGludGVycnVwdCBhbmQgY2xlYXIgdGhlaXIgc3Rh
dHVzLCBidXQgaXQgZG9lcyBub3Qgd29yay4KCgpXaGF0IGRvZXMgdGhpcyBmdW5jdGlvbiBh
Y3R1YWxseSBkbz8gSXMgdGhpcyBwZXJtaXR0ZWQgaWYgeW91IGhhdmUgRFNQL0JJT1MgcnVu
bmluZz8KCk9uZSB0aGluZyB5b3UgY291bGQgdHJ5OiBjaGVjayBlYWNoIG1lbSB2YWx1ZSBi
ZWZvcmUgeW91IGNvcHkgLS0gYXJlIHRoZXkgZGlmZmVyZW50PyBJZiBzbywgdGhlbiBkb24n
dCBjb3B5LiBBbmQgeW91CmNhbiBzdHVkeSB0aG9zZSBsb2NhdGlvbnMgYW5kIHNlZSB3aGF0
IGlzIHRoZSBkaWZmZXJlbmNlLiBUaGF0IG1heSBnaXZlIHlvdSBzb21lIGNsdWUgYXMgdG8g
d2hhdCBnb2VzIHdyb25nLgoKLUplZmYKClBTLiBQbGVhc2UgZG9uJ3QgY3V0IHRleHQgZnJv
bSBwcmV2aW91cyBwb3N0LiBJIGhhZCB0byBnbyBiYWNrIGFuZCBjb3B5IHRleHQgZnJvbSBt
eSBwcmV2aW91cyBlLW1haWwgd2hpY2ggaXMgYSB3YXN0ZQpvZiB0aW1lIGFuZCBub3QgZnVu
LiBJdCdzIHN1cHBvc2VkIHRvIGJlIGZ1biB0byBoZWxwIHBlb3BsZSwgcGxlYXNlIGRvbid0
IG1ha2UgaXQgdW4tZnVuLgoKCgoKCgotLSAKd3d3LmRzcHJlbGF0ZWQuY29tL2Jsb2dzLTEv
bmYvTWlrZV9EdW5uLnBocAoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQoKWW91IGNhbiBub3cgcG9zdCBhIG1lc3NhZ2Ugb3IgYWNjZXNzIGFuZCBzZWFyY2ggdGhl
IGFyY2hpdmVzIG9mIHRoaXMgZ3JvdXAgb24gRFNQUmVsYXRlZC5jb206Cmh0dHA6Ly93d3cu
ZHNwcmVsYXRlZC5jb20vZ3JvdXBzL2M2eC8xLnBocAoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOb3RlOiBJZiB5b3UgZG8gYSBzaW1wbGUgInJlcGx5IiB3aXRo
IHlvdXIgZW1haWwgY2xpZW50LCBvbmx5IHRoZSBhdXRob3Igb2YgdGhpcyBtZXNzYWdlIHdp
bGwgcmVjZWl2ZSB5b3VyIGFuc3dlci4gIFlvdSBuZWVkIHRvIGRvIGEgInJlcGx5IGFsbCIg
aWYgeW91IHdhbnQgeW91ciBhbnN3ZXIgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gdGhlIGVudGly
ZSBncm91cC4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWJvdXQg
dGhpcyBkaXNjdXNzaW9uIGdyb3VwOgoKQXJjaGl2ZXM6ICBodHRwOi8vd3d3LmRzcHJlbGF0
ZWQuY29tL2dyb3Vwcy9jNngvMS5waHAKClRvIFBvc3Q6ICBTZW5kIGFuIGVtYWlsIHRvIGM2
eEB5YWhvb2dyb3Vwcy5jb20KCk90aGVyIERTUCBSZWxhdGVkIEdyb3VwczogaHR0cDovL3d3
dy5kc3ByZWxhdGVkLmNvbS9ncm91cHMucGhwWWFob28hIEdyb3VwcyBMaW5rcwoKPCo+IFRv
IHZpc2l0IHlvdXIgZ3JvdXAgb24gdGhlIHdlYiwgZ28gdG86CiAgICBodHRwOi8vZ3JvdXBz
LnlhaG9vLmNvbS9ncm91cC9jNngvCgo8Kj4gWW91ciBlbWFpbCBzZXR0aW5nczoKICAgIElu
ZGl2aWR1YWwgRW1haWwgfCBUcmFkaXRpb25hbAoKPCo+IFRvIGNoYW5nZSBzZXR0aW5ncyBv
bmxpbmUgZ28gdG86CiAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9jNngvam9p
bgogICAgKFlhaG9vISBJRCByZXF1aXJlZCkKCjwqPiBUbyBjaGFuZ2Ugc2V0dGluZ3Mgdmlh
IGVtYWlsOgogICAgYzZ4LWRpZ2VzdEB5YWhvb2dyb3Vwcy5jb20gCiAgICBjNngtZnVsbGZl
YXR1cmVkQHlhaG9vZ3JvdXBzLmNvbQoKPCo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBn
cm91cCwgc2VuZCBhbiBlbWFpbCB0bzoKICAgIGM2eC11bnN1YnNjcmliZUB5YWhvb2dyb3Vw
cy5jb20KCjwqPiBZb3VyIHVzZSBvZiBZYWhvbyEgR3JvdXBzIGlzIHN1YmplY3QgdG86CiAg
ICBodHRwOi8vZG9jcy55YWhvby5jb20vaW5mby90ZXJtcy8KCg=
Zhou,

On Wed, Mar 31, 2010 at 10:43 AM, Jeff Brower wrote:

> Zhou-
> >>> I use C6713 with a UART(16L784).
> >>>
> >>> fisrtly, I make a img with SBL and programmed in flash
> >>> 0x90000000. When power up, the SBL of this img (first
> >>> 1k bytes) is loaded int 0x00~0x400 by DSP and run. the
> >>> SBL loads rest code to ram.
> >>>
> >>> In this Img, I could receive a new( usr app) img from
> >>> UART, and program it to flash 0x90040000. The usr app
> >>> img also has a SBL.
> >>>
> >>> So, I wan't the first img to be a powerful boot loader.
> >>> I hope it could load the usr app img's SBL to 0x00~0x400 and
> >>> run. Then I write a function to do this, copy
> >>> 0x90040000 ~ 0x90040400 to IRAM 0x00 ~ 0x400 and jump 0x00.
> >>>
> >>> Like this:
> >>>
> >>> ;copy
> >>> ;0x90040000 ~ 0x90040400
> >>> ;to
> >>> ;0x00 ~ 0x400
> >>> zero B1
> >>> b B1
> >>> nop 5
> >>>
> >>> But, I find sometimes my usr app can boot up and work well,
> >>> sometimes can't boot up.
>

I think that you might be trying to dynamically update the firmware of a
running system. If this is the case, your design is likely at fault. If this
what you are trying to do, you might try something like the following
simplified description.
1. Divide Flash into 3 sections on sector boundaries. [a] Even revision of
firmware, [b] Odd revision of firmware, and [c] extended boot loader and
update firmware. a & b must contain revision information at a predefined
offset.
2. During boot, the extended loader reads the revision number from a & b.
The larger value is selected to be loaded.
3. During update, interrupts are disabled and only code from c is executed.
If ROM is not executable, the code for c must reside in a dedicated area of
RAM.

If these constraints are met, you can perform the 'copy level 1 boot and
execute' procedure successfully [if your code is correct].

mikedunn

> >>
> >> When you copy over low mem, your code is already running, so it
could be
> that you're overwriting some mem-mapped
> >> registers that are "in use". Did you try disabling
interrupts before
> doing the copy? Maybe there are some other
> >> disables that need to be done also, not sure... suggest to get the
C6713
> data sheet and take a close look at what
> >> mem-mapped registers you're overwriting.
>
> > I refered the datasheet for the mem-mapped register,
> > but have not get much help.
> > Actually I'm not sure which register I should handle
> > and how to handle.
>
> I don't get you. Why do you need to "handle" any mem-mapped
register? I'm
> trying to tell you *not* to write over
> mem-mapped registers when you copy low mem starting at zero. For example,
> why would you copy over the Reset vector
> (location 0x0) or timer interrupt vector registers (int 14, int 15 vector
> locations) when your code is already
> running? Isn't that a bad idea? For example, if you overwrite timer
> interrupts and then DSP/BIOS gets a timer
> interrupt, what would happen? I don't know but if I were you, I wouldn't
> waste time figuring it out. Do you see my
> point?
> > I just use IRQ_globalReset() to disable all maskable
> > interrupt and clear their status, but it does not work.
>
> What does this function actually do? Is this permitted if you have
DSP/BIOS
> running?
>
> One thing you could try: check each mem value before you copy -- are they
> different? If so, then don't copy. And you
> can study those locations and see what is the difference. That may give
you
> some clue as to what goes wrong.
>
> -Jeff
>
> PS. Please don't cut text from previous post. I had to go back and copy
> text from my previous e-mail which is a waste
> of time and not fun. It's supposed to be fun to help people, please don't
> make it un-fun.
>
>
>

--
www.dsprelated.com/blogs-1/nf/Mike_Dunn.php

______________________________
DSPRelated.com's 50,000th member announced! Details Here.

Sorry, I'm a fresh man in dsprelated, I replyed in the forum, so the text was cutted.
I did not use DSP/BIOS.
You'r right that I'm trying to update my system dynamically.
I use C6713 with a UART(16L784). I didn't use DSP/BIOS.
I make a application with a secondary bootloader, just call it MYAPP, it work well.But the system can not update dynamically.
So, I make another application, just call it MYLOADER. MYLOADER also has a secondary bootloader.
I burn MYLOADER to 0x90000000(sections 0~3 of flash), it can boot up successful.
In MYLOADER, I burn MYAPP to 0x90040000(sections 4~7 of flash).
So I hope MYLOADER could load MYAPP's secondary bootloader to RAM addr 0x00, which means copy (0x90040000 ~ 0x90040400) to (0x00 ~ 0x400).
Then branch to 0x00, and run the MYAPP's secondary bootloader.
MYAPP's secondary bootloader then copy the rest code to IRAM, and branch to _c_int00.

The problem is that: MYAPP could not boot up successful. It seems that CPU run fly-away.
When I delete some code of function main, make a simple loop, just light a led and send some infomation to UART, It can work Well.

My stack size is 0xa000, heep size is 0x1000, I think it's not small.
So, I'm not sure maybe some registers was be modified by MYLOADER, and not set to it's default value when PC jumps to 0.
It affects MYAPP runing.
I wonder if there is some way to set the register to is default value, whitout a hardware reset.

_____________________________________