I guess I need to go back and read your messages on this topic. I can't remember why the hack of doing #foo>>2 won't work or even using the .cog_ram directive. Does your assembly have to be inline or can you put it all in a separate .S file? Will that even help?
Edit: Note, this is not intended as a complaint, but to show that I intend to put effort into this. I'm still committed to writing a version of my project in C with inline assembly.
===Jac
Thanks Jac - first time I had a detailed look into Propeddle. I'll get with Eric and Steve off-line and see what we can do to hunt down and eradicate this bug. - Ken
I compiled the propgcc demos with "make MODEL=xmmc" and tried to load dry.elf onto the board with:
--$ propeller-load -r -t dry.elf -p /dev/cu.usbserial-A50066QC -S1 -b dnaPropeller Version 1 on /dev/cu.usbserial-A50066QC
Loading the serial helper to hub memory
9568 bytes sent
Verifying RAM ... OK
Loading cache driver 'spi_flash_cache.dat'
1472 bytes sent
Loading program image to flash
Timeout waiting for ACK/NAK
error: SendPacket DATA failed
error: Loading program image failed
error: load failed
Tried with "NWAY":
$ propeller-load -r -t dry.elf -p /dev/cu.usbserial-A50066QC -S1 -b dna-NWAY
Propeller Version 1 on /dev/cu.usbserial-A50066QC
Loading the serial helper to hub memory
9568 bytes sent
Verifying RAM ... OK
Loading cache driver 'spi_nway_flash_cache.dat'
1520 bytes sent
Loading program image to flash
Timeout waiting for ACK/NAK
error: Loading program image failed
error: load failed
propgcc was built on my Mac (OS X 10.8.3) with "./rebuild.sh" after using the following to update a clone of propgcc from code.google.com/p/propgcc/:
hg pull
hg update
hg co p2test
Do I need to specify the board type to propeller-load? Do i point "-b" to a copy of the DNA.cfg file that I use with SimpleIDE? Not sure what the actual board name is needed...
Thanks to all the propgcc developers for their hard work!
[altergator@dgate ~/source/propgcc/demos/fibo/xmmc]$ ls
Makefile fibo.c fibo.elf fibo.o
[altergator@dgate ~/source/propgcc/demos/fibo/xmmc]$ make clean
rm -f *.o *.elf *.a *.cog *.ecog *.binary
[altergator@dgate ~/source/propgcc/demos/fibo/xmmc]$ make
propeller-elf-gcc -Os -mfcache -mxmmc -o fibo.o -c fibo.c
propeller-elf-gcc -Os -mfcache -mxmmc -fno-exceptions -fno-rtti -o fibo.elf fibo.o
[altergator@dgate ~/source/propgcc/demos/fibo/xmmc]$ ls
Makefile fibo.c fibo.elf fibo.o
[altergator@dgate ~/source/propgcc/demos/fibo/xmmc]$ propeller-load -b dna fibo.elf -r -t
Propeller Version 1 on /dev/cu.usbserial-A50066QC
Loading the serial helper to hub memory
9568 bytes sent
Verifying RAM ... OK
error: failed to connect to helper [COLOR=#ff0000][FONT=arial black]<== ALWAYS FAILS IN THIS AREA OR WHEN LOADING THE IMAGE TO FLASH[/FONT][/COLOR]
error: load failed
Would it be possible to make your mac-built propgcc available as a .zip? I'm not quite sure that my build of propgcc is correct...
Would it be possible to make your mac-built propgcc available as a .zip? I'm not quite sure that my build of propgcc is correct...
Thanks,
dgately
Sorry you're having trouble with this. I can certainly upload a zip file with the Mac build. Do you mind if it's from the current sources rather than the tagged ones that the Windows build used?
Sorry you're having trouble with this. I can certainly upload a zip file with the Mac build. Do you mind if it's from the current sources rather than the tagged ones that the Windows build used?
I too am having trouble building propgcc on Mac (OS 10.8.2) - I was following dgately's instructions here. Perhaps I am getting in over my head. I should start a new thread to focus on building the propgcc source for Mac OS.
I too am having trouble building propgcc on Mac (OS 10.8.2) - I was following dgately's instructions here. Perhaps I am getting in over my head. I should start a new thread to focus on building the propgcc source for Mac OS.
Paul
Sorry about the Macintosh build problems. Can you tell me what sort of trouble you're running into?
Anyway, I just uploaded a zip of a Macintosh build to Google Code.
Thanks David! I probably should have posted this here instead of Ken's thread in Prop1 Fourm.
My first attempt at compiling failed:
2:propgcc admin$ ./jbuild.sh 8
Prefix is /opt/parallax
Propgcc version is propellergcc_v0_3_5_1920
BUGURL is http://code.google.com/p/propgcc/issues
Building with: -j 8
OS 'Darwin' detected.
checking build system type... i386-apple-darwin12.2.0
checking host system type... i386-apple-darwin12.2.0
checking target system type... propeller-parallax-elf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking for gcc... no
checking for cc... no
checking for cl.exe... no
[COLOR="#FF0000"]configure: error: in `/Users/admin/build/binutils':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
binutils configure failed.[/COLOR]
2:propgcc admin$
But I did make some progress - apparently a few versions back Xcode didn't install command line support by default. Solution was to edit preferences in Xcode.
I got it to build but but I don't think it works properly. I'll follow with an example of what I mean.
I will assume at this point that I can't just build propgcc source (without Mac OS specific changes) and expect it to work. Compiling an example program fails:
This particular example had a Makefile already and works otherwise. But if I call propeller-elf-gcc ..., I get this:
2:lmm_c_toggle admin$ propeller-elf-gcc -o Makefile toggle.c
2:lmm_c_toggle admin$ make
Makefile:1: warning: NUL character seen; rest of line ignored
Makefile:1: *** missing separator. Stop.
2:lmm_c_toggle admin$
I will assume at this point that I can't just build propgcc source (without Mac OS specific changes) and expect it to work. Compiling an example program fails:
This particular example had a Makefile already and works otherwise. But if I call propeller-elf-gcc ..., I get this:
2:lmm_c_toggle admin$ propeller-elf-gcc -o Makefile toggle.c
2:lmm_c_toggle admin$ make
Makefile:1: warning: NUL character seen; rest of line ignored
Makefile:1: *** missing separator. Stop.
2:lmm_c_toggle admin$
Are you just trying to compile toggle.c to create a linkable object file? In that case you want:
propeller-elf-gcc -mlmm -c toggle.c
If you want to compile it into an executable you want:
propeller-elf-gcc -mlmm -o toggle.elf toggle.c
However, in the second example you probably also want -Os to get smaller and faster code. The Makefile does not get used when you invoke the compiler directly.
Thanks David! Apparently I was confused about the Makefile. I was trying to follow the the instructions here. Now I understand my error.
I was able to load the toggle example to a QuickStart Board just fine using propeller-load ..... Thanks!
Paul
The problem you had before is that the "-o Makefile" part of your propeller-elf-gcc command line overwrote the Makefile with the executable generated by compiling toggle.c. After that any attempt to run make generated an error because the Makefile contained binary compiler output rather than the text commands it originally contained.
Thanks David - I am educating myself on Makefiles now. I have successfully completed a hello world program using vi and command line tools to compile and load to my prop. With correcting typos, it quickly becomes evident the power of the Makefile for development.
Thanks David - I am educating myself on Makefiles now. I have successfully completed a hello world program using vi and command line tools to compile and load to my prop. With correcting typos, it quickly becomes evident the power of the Makefile for development.
Paul
Hi Paul,
I'm glad you got past that problem and are starting to see the value of Makefiles. I have to admit though that, even though I use them extensively, I still find them difficult to write without frequently referring to the documentation. They are far from perfect but they get the job done.
I too am having trouble building propgcc on Mac (OS 10.8.2) - I was following dgately's instructions here. Perhaps I am getting in over my head. I should start a new thread to focus on building the propgcc source for Mac OS.
Paul
Paul,
Those instructions may have gotten a little "long in the tooth" since written :-) I've been since able to build lately using just "./rebuild.sh" within the propgcc directory. I have found that I've needed to remove the older built and installed bits with "sudo rm -R /opt/parallax" first to avoid a permissions error when the build tries to overwrite some of /opt/parallax content...
Sounds like you've gotten the source to build, though?
Those instructions may have gotten a little "long in the tooth" since written :-) I've been since able to build lately using just "./rebuild.sh" within the propgcc directory. I have found that I've needed to remove the older built and installed bits with "sudo rm -R /opt/parallax" first to avoid a permissions error when the build tries to overwrite some of /opt/parallax content...
Sounds like you've gotten the source to build, though?
Thanks,
dgately
If you build with this command it will automatically remove /opt/parallax. You have to protect /opt/parallax with 777 to allow jbuild.sh to overwrite it though.
I have now have a successfully built of the "p2test-2013-02-26" tag of the "p2test" branch. My hello.c code compiles and runs as expected.
This build was on Mac OS 10.6.8 (Intel hardware). I am much more proficient with the command line builds now. So thanks again for all the help.
One more question @Steve - Is there a more current build of SimpleIDE for the Mac than v0.7.2? I don't even see that one in the downloads at http://code.google.com/p/propgcc/.
Ok, just dove in this morning, but didn't get too far...
I downloaded the Windows version of PropGCC from top post and used it to replace the propgcc folder already on my C drive.
Downloaded the SimpleIDE mentioned earlier, but didn't intall because it's the same version that I've already had for at least a month, I think.
Opened up hello.side project and ran on Propeller1 Demo Board and it works fine.
Added "-mp2" to "Other Compiler Options" and tried to run on my DE0 setup and this is what I got:
P
Project Directory: C:/Users/allen/Documents/SimpleIDE/hello/propeller-elf-gcc.exe -o a.out -Os -mlmm -I . -fno-exceptions -Dprintf=__simple_printf -mp2 hello.c
hello.c: In function 'main':
hello.c:13:9: error: 'CNT' undeclared (first use in this function)
hello.c:13:9: note: each undeclared identifier is reported only once for each function it appears in
Done. Build Failed!
I assume I'm doing something wrong that is very obvious...
BTW: If I comment out the waitcnt line, it will build, but I get a "error: packet handshake failed" from the loader...
Update: Ok, If I pick "DE2-115" for my board type, instead of "HUB", then it runs with waitcnt commented out.
Ok, just dove in this morning, but didn't get too far...
I downloaded the Windows version of PropGCC from top post and used it to replace the propgcc folder already on my C drive.
Downloaded the SimpleIDE mentioned earlier, but didn't intall because it's the same version that I've already had for at least a month, I think.
Opened up hello.side project and ran on Propeller1 Demo Board and it works fine.
Added "-mp2" to "Other Compiler Options" and tried to run on my DE0 setup and this is what I got:
P
Project Directory: C:/Users/allen/Documents/SimpleIDE/hello/propeller-elf-gcc.exe -o a.out -Os -mlmm -I . -fno-exceptions -Dprintf=__simple_printf -mp2 hello.c
hello.c: In function 'main':
hello.c:13:9: error: 'CNT' undeclared (first use in this function)
hello.c:13:9: note: each undeclared identifier is reported only once for each function it appears in
Done. Build Failed!
I assume I'm doing something wrong that is very obvious...
BTW: If I comment out the waitcnt line, it will build, but I get a "error: packet handshake failed" from the loader...
Update: Ok, If I pick "DE2-115" for my board type, instead of "HUB", then it runs with waitcnt commented out.
There is no CNT register on P2. You have to use built-in function getcnt() instead. I've started making some cross-chip macros/functions to handle this distinction but not all of the demos use them yet. Take a look at propeller.h/propeller1.h/propeller2.h in the standard PropGCC includes for the definitions or prototypes of these functions.
Comments
Let's continue the discussion in the PropGCC forum: http://forums.parallax.com/showthread.php/146333
===Jac
Thanks Jac - first time I had a detailed look into Propeddle. I'll get with Eric and Steve off-line and see what we can do to hunt down and eradicate this bug. - Ken
What is the correct command-line options for loading an xmmc-built .elf file to a
Propeller Platform DNA with a WinBond (1
I compiled the propgcc demos with "make MODEL=xmmc" and tried to load dry.elf onto the board with:
propgcc was built on my Mac (OS X 10.8.3) with "./rebuild.sh" after using the following to update a clone of propgcc from code.google.com/p/propgcc/:
Do I need to specify the board type to propeller-load? Do i point "-b" to a copy of the DNA.cfg file that I use with SimpleIDE? Not sure what the actual board name is needed...
Thanks to all the propgcc developers for their hard work!
Dennis
This works with my DNA board loading the xmmc version of the fibo demo:
Still no luck...
Would it be possible to make your mac-built propgcc available as a .zip? I'm not quite sure that my build of propgcc is correct...
Thanks,
dgately
No problem! Latest bits are fine for me...
Thanks,
dgately
Paul
Sorry about the Macintosh build problems. Can you tell me what sort of trouble you're running into?
Anyway, I just uploaded a zip of a Macintosh build to Google Code.
http://code.google.com/p/propgcc/downloads/detail?name=propgcc-2013-03-16-mac.zip&can=2&q=#makechanges
My first attempt at compiling failed:
But I did make some progress - apparently a few versions back Xcode didn't install command line support by default.
Solution was to edit preferences in Xcode.
I got it to build but but I don't think it works properly. I'll follow with an example of what I mean.
This particular example had a Makefile already and works otherwise. But if I call propeller-elf-gcc ..., I get this:
I was able to load the toggle example to a QuickStart Board just fine using propeller-load ..... Thanks!
Paul
Paul
Hi Paul,
I'm glad you got past that problem and are starting to see the value of Makefiles. I have to admit though that, even though I use them extensively, I still find them difficult to write without frequently referring to the documentation. They are far from perfect but they get the job done.
Knowledge of Makefiles and building Propeller-GCC are not required for testing.
Well let's keep rest out of trouble.
Paul,
Those instructions may have gotten a little "long in the tooth" since written :-) I've been since able to build lately using just "./rebuild.sh" within the propgcc directory. I have found that I've needed to remove the older built and installed bits with "sudo rm -R /opt/parallax" first to avoid a permissions error when the build tries to overwrite some of /opt/parallax content...
Sounds like you've gotten the source to build, though?
Thanks,
dgately
If you build with this command it will automatically remove /opt/parallax. You have to protect /opt/parallax with 777 to allow jbuild.sh to overwrite it though.
@Steve - sorry for the deviation from topic.
I have now have a successfully built of the "p2test-2013-02-26" tag of the "p2test" branch. My hello.c code compiles and runs as expected.
This build was on Mac OS 10.6.8 (Intel hardware). I am much more proficient with the command line builds now. So thanks again for all the help.
One more question @Steve - Is there a more current build of SimpleIDE for the Mac than v0.7.2? I don't even see that one in the downloads at http://code.google.com/p/propgcc/.
Thanks -
Paul
Check here http://code.google.com/p/propside/downloads/list
The 0-8-5 is the latest and it does SPIN too!
I downloaded the Windows version of PropGCC from top post and used it to replace the propgcc folder already on my C drive.
Downloaded the SimpleIDE mentioned earlier, but didn't intall because it's the same version that I've already had for at least a month, I think.
Opened up hello.side project and ran on Propeller1 Demo Board and it works fine.
Added "-mp2" to "Other Compiler Options" and tried to run on my DE0 setup and this is what I got:
I assume I'm doing something wrong that is very obvious...
BTW: If I comment out the waitcnt line, it will build, but I get a "error: packet handshake failed" from the loader...
Update: Ok, If I pick "DE2-115" for my board type, instead of "HUB", then it runs with waitcnt commented out.