I've had a request to add a writeup of my bootloader adventure to the project wiki. Hopefully I'll get to it this weekend. I don't see a How-To section on the front wiki page, anyone mind if I add it?
In case anyone is curious, or I'm too lazy to actually do the wiki bits, here's the gist I made with the relevant crtstart.asm and Makefile: http://gist.github.com/304594 On Feb 15, 2010, at 10:47 , Brandon Fosdick wrote: > I think I figured it out. > In addition to everything from my last message, I added a GSFINAL section to > crtstart.asm with an "ljmp _bootloader" instruction. That seems to have put > everything in the right place. > > Thanks for the help > > > -----Original Message----- > From: Brandon Fosdick [mailto:bfosd...@movea.com] > Sent: Friday, February 12, 2010 4:53 PM > To: sourceforge.br...@dse.nl; sdcc-user@lists.sourceforge.net > Subject: Re: [Sdcc-user] Default linker script for mcs51? > > Ok, that got me a little further. I renamed main() to bootloader() and made a > linker script that moves both HOME and CSEG. Then I made my own crtstart.asm > that puts " ljmp __sdcc_gsinit_startup" at the reset vector, and changes > __sdcc_gsinit_startup to jump to _bootloader instead of > __sdcc_program_startup. > > Compiling and linking all of that gives me output that seems to do what I > want. However, I noticed that main.asm has what appears to be code for > initializing global variables. And it seems that normally this code is run > after a jump to __sdcc_init_data and then there's a jump to > __sdcc_program_startup after the initialization is finished. When I changed > main() to bootloader() that last jump to __sdcc_program_startup went away. > > I'm trying to figure out how to get that initialization code to run. I can't > jump to __sdcc_init_data because there's no jump after the initialization > that will get me back to _bootloader. Any suggestions? > > (No worries, happens all the time) > > -----Original Message----- > From: Maarten Brock [mailto:sourceforge.br...@dse.nl] > Sent: Thursday, February 11, 2010 10:39 PM > To: sdcc-user@lists.sourceforge.net > Subject: Re: [Sdcc-user] Default linker script for mcs51? > > Brandon, > > You could also rename your main() to mymain() and generate the necessary > startup code yourself in assembly. > > (Sorry for misspelling your name earlier.) > > Maarten > >> >> On Feb 11, 2010, at 20:04 , Peter Van Epp wrote: >> >>> On Thu, Feb 11, 2010 at 12:27:04PM +0100, Brandon Fosdick wrote: >>>> Well, it looks like I spoke too soon. >>>> >>>> SDCC is still dumping some non-vector stuff in the GSINIT and HOME >>>> segments. I see how I could use the linker to relocate GSINIT* segments to >>>> someplace else (or modify the mcs51 library). But I don't see how to >>>> relocate __sdcc_program_startup from HOME to CSEG. It doesn't seem to be >>>> defined anywhere in the lib directory that was installed with SDCC. >>> >>> It is defined in main (and thus will be in the code generator >>> somewhere I expect), and called from >>> sdcc/device/lib/mcs51/crtstart.asm. I expect you would meed to >>> modify the code generator to do what you want (or modify main.asm by hand). >> >> >> I was afraid of that. I may take a stab at modifying the generator, just for >> fun. Does anyone have a git mirror of the repository? >> ---------------------------------------------------------------------- >> -------- SOLARIS 10 is the OS for Data Centers - provides features >> such as DTrace, Predictive Self Healing and Award Winning ZFS. Get >> Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev >> _______________________________________________ >> Sdcc-user mailing list >> Sdcc-user@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/sdcc-user >> > > > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user ------------------------------------------------------------------------------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user