Loader Bug Fixed
jazzed
Posts: 11,803
We found and fixed a loader bug today.
I was working on a program that I'll post separately, and ran out of room for LMM code.
So then I switched to building the program with XMMC, but then the loader said it was twice as big.
Gee, how could that be? Not supposed to happen!
To make a long story short, the loader misunderstood the size of the image, but it's fixed for next release.
Why is this significant? Well, the xbasic demo program for example now runs from a 64KB EEPROM !
That means it will work on many of the boards Parallax sells without adding special external memory.
Other programs that were just a little too big will work too.
Of course running the main program from EEPROM will be slow, but any related COG code will go full speed.
Here's a list of Parallax boards that have 64KB+ of EEPROM and other XMM features:
Parallax Propeller C3
Parallax PropBOE
Parallax QuickStart + Human Interface
Parallax PropProto Board 64K EEPROM
Parallax QuickStart Board 64K EEPROM
Parallax Hydra with 128K EEPROM
Parallax Backpack with 64K EEPROM
Parallax P8X32A-Q44 SchmartBoard Kit
Parallax Spinneret Web Server
Cheers.
--Steve
I was working on a program that I'll post separately, and ran out of room for LMM code.
So then I switched to building the program with XMMC, but then the loader said it was twice as big.
Gee, how could that be? Not supposed to happen!
To make a long story short, the loader misunderstood the size of the image, but it's fixed for next release.
Why is this significant? Well, the xbasic demo program for example now runs from a 64KB EEPROM !
That means it will work on many of the boards Parallax sells without adding special external memory.
Other programs that were just a little too big will work too.
Of course running the main program from EEPROM will be slow, but any related COG code will go full speed.
Here's a list of Parallax boards that have 64KB+ of EEPROM and other XMM features:
Parallax Propeller C3
Parallax PropBOE
Parallax QuickStart + Human Interface
Parallax PropProto Board 64K EEPROM
Parallax QuickStart Board 64K EEPROM
Parallax Hydra with 128K EEPROM
Parallax Backpack with 64K EEPROM
Parallax P8X32A-Q44 SchmartBoard Kit
Parallax Spinneret Web Server
Cheers.
--Steve
Comments
What sorts of problems are you having building the loader? I've built it successfully on a Mac and I believe Steve has built it under Linux and Windows/Cygwin. What platform are you using and what sorts of problems are you having? I'd like to fix any build problems before our next release.
Thanks,
David
P.S. I just ordered one of your ASC+ boards to use with a MIDI shield that I bought from Sparkfun. I'm looking forward to working with the ASC+. It looks like a nice board!
Fedora 15
kernel-2.6.40.6-0.fc15.x86_64
gcc-4.6.1-9.fc15.x86_64
make-3.82-4.fc15.x86_64
glibc-2.14-5.x86_64
btw, thanks for the order! Every little bit helps in this economy! I have not tested that shield so I'm interested in seeing how it works.
This is a bit of a pain. The only thing it uses DEF_PORT for is to set the default port if you don't specify a -p option on the command line and don't have PROPELLER_LOAD_PORT set.
-edit-
Oops, cross post.
-edit-
Now I'm getting "make: bstc.linux: Command not found"
-edit-
fixed that by modifying $PATH but now it's trying to use propeller-elf-gcc, which doesn't exist yet at this part of the build.
If you take the sd-loader build step out of the Makefile, You can build the loader with just native gcc and bstc.
Find "sd-loader" and comment it:
.PHONY: sd-loader
#sd-loader: $(DRVDIR)
# $(MAKE) -C sdloader TARGET=$(realpath $(TARGET))
These are warnings being treated as errors. I have no idea why it would only happen on FC 15.
We will file an Issue on propgcc.
Thanks,
--Steve
Issue submitted: http://code.google.com/p/propgcc/issues/detail?id=7
I was able to fudge it by commenting out those dead-end vars from tc-propeller.c. The build progresses much further until:
I don't know if this second issue is related to the above fudge though. I'm just hacking at this 'cause it's fun, and posting this info in the off-chance it helps. Feel free to ignore!
Hopefully Eric will see this post and comment if necessary.
What I had to do:
Install flex
Add two paths to PATH
!!KLUDGE!! In binutils/gas/config/tc-propeller.c ; comment out "temp" in pseudo_fit() and "integer_reloc" in md_assemble() !!KLUDGE!!
and then ./rebuild
If you can, please use hg revert to remove your changes, and then use hg pull/update. Then rebuild.
Thanks,
--Steve
I put PATH modifications in my .bashrc. I.E.
PATH=${PATH}:/home/steve/bin:/usr/local/propeller/bin
PATH is mentioned here: http://code.google.com/p/propgcc/wiki/PropGccBuild
I'm adding a note about it in the propgcc/README.txt