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