The existing code, while it looks ugly and has some pit falls, it may have been 
done for good reasons. When you add that extra variable, pushing the init of 
bss/data over the WDT time-out period and start triggering resets is quite 
confusing for a while.

If you expect the WDT to be enabled, then you should test it works at some time 
during the development. This gets over the problem of being surprised that the 
startup code has disabled it.

> __attribute__((naked, section(".init3"))) void  __low_level_init()

> {
> }
> This is "easily prevent" solution. Is it simple  enough?

I like this solution also, can these be made weak so that the user can also 
over 
ride them?
 
> But I vote for not enabling WDT because it leads to different crt  libs for 
> different mcu families because WDT registers are located at  diferent 
>addresses.
> I propose opposite solution: empty .init3 section in crt  but user can add
> __attribute__((naked, section(".init3"))) void  __low_level_init()
> {
>      WDTCTL = WDTPW + WDTHOLD;
> }
> to  his source code to disable WDT and get precisely the same code as in 
>current 
>
> version after linking. Moreover, user can add some peripheral init code  
> here. 
>It 
>
> solves problem with different WDT locations, simplifying the  library.
> 
> By the way you can use those two solutions with current mspgcc  version too, 
> so 
>I 
>
> think there is no need for additional gcc option such as  -menable-watchdog. 
> Everything what is needed is to _properly_document_ this  tricks.
> 
> I think that keeping device-depended WDT disabling code in crt  library "just 
> because of historical reasons" _can_ lead to more problems  with future MSP 
>devices.

There is the option of keeping the WDT disable code in crt, keep the symbol 
undefined until the linker script, which is unique to each device. I have seen 
one gcc port doing it this way. 


> > besides being less than not obvious, it  also digs the gap between mspgcc
> > and the 'official' MSP compilers even  deeper.
> IAR has call to __low_level_init function (library version contain  just 
> single 
>
> RET) in their cstartup code and they propose it for peripheral  
> initialization 

> _and_ disabling WDT if necessary. No gap. Same function name,  same goal. 
> Difference is that in gcc we don't need to CALL this function  because we can 
> inline it.


Regards,

Peter Jansen



      

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to