Forums

Did IAR compiler emit the wrong object code?

Started by old_cow_yellow April 10, 2010
TI recently released a new version of the Chronos sofware. Part of the
release is a RF-BSL. It is compiled and linked with IAR IDE. I think
either IAR made a mistake or TI did something that caused IAR to emit
wrong object code.

Inside the folder:
"\eZ430-Chronos\Recovery\Chronos Watch\Wireless Updater"
there are 3 object files:
"eZ430-Chronos_rfbsl_433KHz_1_0.txt"
"eZ430-Chronos_rfbsl_866KHz_1_0.txt"
"eZ430-Chronos_rfbsl_915KHz_1_0.txt"

The source code and IAR workspace + project are in the folder:
"\eZ430-Chronos\Software Projects\Chronos Watch\IAR\Wireless
Update"

The source-code: "wbsl.c" contains a module:
"RadioIsr_wbsl()" with a statement:
"memset(RxBuffer, 0x00, sizeof(RxBuffer));"
where "RxBuffer" is allocated statically at 0x1C26 with size
0x0102.

The above mentioned three variants of object files all have:
...
00132C 403E 0102 mov.w #0x102,R14
001330 430D clr.w R13
001332 403C 1C16 mov.w #0x1C16,R12
001336 430D mov.b R12,R14
001338 13B0 174A calla #memset
...

I think the instruction mov.b R12,14 at 0x1336 is just wrong.

I use IAR KickStart. I cannot reproduce the above mistake.
When I try the TI supplied IAR project, it complained that:
"The project `Wireless-Update' contains the unknown tool
`Coder'"
Ignoring that, it emits the correct object file. (Without the mov.b
R12,14)



Beginning Microcontrollers with the MSP430

In my previous msg., I had a typo. The starting address of RxBuffer is 0x1C16 (not 0x1C26).

Also, I forgot to include an URL for the TI Chronos software release.
http://www.ti.com/lit/zip/slac341
The file name is slaac341a.zip

--- In m..., "old_cow_yellow" wrote:
>
> TI recently released a new version of the Chronos sofware. Part of the
> release is a RF-BSL. It is compiled and linked with IAR IDE. I think
> either IAR made a mistake or TI did something that caused IAR to emit
> wrong object code.
>
> Inside the folder:
> "\eZ430-Chronos\Recovery\Chronos Watch\Wireless Updater"
> there are 3 object files:
> "eZ430-Chronos_rfbsl_433KHz_1_0.txt"
> "eZ430-Chronos_rfbsl_866KHz_1_0.txt"
> "eZ430-Chronos_rfbsl_915KHz_1_0.txt"
>
> The source code and IAR workspace + project are in the folder:
> "\eZ430-Chronos\Software Projects\Chronos Watch\IAR\Wireless
> Update"
>
> The source-code: "wbsl.c" contains a module:
> "RadioIsr_wbsl()" with a statement:
> "memset(RxBuffer, 0x00, sizeof(RxBuffer));"
> where "RxBuffer" is allocated statically at 0x1C26 with size
> 0x0102.
>
> The above mentioned three variants of object files all have:
> ...
> 00132C 403E 0102 mov.w #0x102,R14
> 001330 430D clr.w R13
> 001332 403C 1C16 mov.w #0x1C16,R12
> 001336 430D mov.b R12,R14
> 001338 13B0 174A calla #memset
> ...
>
> I think the instruction mov.b R12,14 at 0x1336 is just wrong.
>
> I use IAR KickStart. I cannot reproduce the above mistake.
> When I try the TI supplied IAR project, it complained that:
> "The project `Wireless-Update' contains the unknown tool
> `Coder'"
> Ignoring that, it emits the correct object file. (Without the mov.b
> R12,14)
>
>
>
>
>
>