The SD loader is usually used in on a board with external RAM. The user's program gets loaded from the SD card into external RAM and the run using a hub cache.
The SD cache driver uses the SD card itself as external memory. It is slower than other external memory because cache lines must be a multiple of the SD card sector size which is 512 bytes. Normally, XMM uses 128 byte cache lines.
/opt/parallax/bin/propeller-load -bactivityboard -z Hello_Demo.elf -r -t -e
Propeller Version 1 on /dev/ttyUSB0
Patching __cfg_txpin with 0000001e
Patching __cfg_baudrate with 0001c200
Loading the serial helper to hub memory
10392 bytes sent
Verifying RAM ... OK
Loading 'Hello_Demo.pex' to SD card
7664 bytes sent
error: load failed
Elf and pex attached. And here's /opt/parallax/propeller-load/activityboard.cfg
Ugh. I can't load your example because it was built with a newer version of PropGCC and I have the old release_1_0 installed now because of another poster who was using the version distributed with SimpleIDE. We REALLY need to get Parallax to release a new SimpleIDE with a more recent version of PropGCC!
Ugh. I can't load your example because it was built with a newer version of PropGCC and I have the old release_1_0 installed now because of another poster who was using the version distributed with SimpleIDE. We REALLY need to get Parallax to release a new SimpleIDE with a more recent version of PropGCC!
However, when I switched back to a recent build, I see the same error you reported. I'm looking into it...
Ummm... I had forgotten this but the SD cache is no longer supported in the more recent builds of PropGCC. This is because Parallax decided not to promote the use of the XMM memory models and hence work to port the SD cache driver to the new cache driver architecture was never completed. I guess the loader should say that rather than failing silently though. The newer PropGCC builds should still work with other external memory like SPI flash or SRAM or EEPROM. If there is a demand for SD cache support, that can be reprioritized. However, keep in mind that the SD card is not a good backing store for XMM because it is restricted to 512 byte cache lines which are really too big.
Ugh. I can't load your example because it was built with a newer version of PropGCC and I have the old release_1_0 installed now because of another poster who was using the version distributed with SimpleIDE.
I have the same problem. This was my solution:
david@balrog:~$ ls -lh /opt
total 24K
drwxr-xr-x 4 root root 4.0K Nov 30 15:50 google
drwxr-xr-x 9 root root 4.0K Oct 10 19:59 parallax.2408
drwxr-xr-x 9 10000 1003 4.0K Feb 3 16:37 parallax-gcc4
drwxr-xr-x 9 10000 1003 4.0K Dec 24 19:34 parallax-gcc6
drwxr-xr-x 11 root root 4.0K Sep 23 21:27 parallax.simpleide
drwxr-xr-x 5 david david 4.0K Oct 13 08:14 simpleide
lrwxrwxrwx 1 root root 13 Nov 7 22:39 parallax -> parallax.2408
lrwxrwxrwx 1 root root 13 Feb 11 20:49 parallax.gcc4.ln -> parallax-gcc4
lrwxrwxrwx 1 root root 13 Feb 11 20:47 parallax.gcc6.ln -> parallax-gcc6
lrwxrwxrwx 1 root root 18 Feb 6 13:23 parallax.simpleide.ln -> parallax.simpleide
Then I just re-link whenever i need to switch versions.
Ummm... I had forgotten this but the SD cache is no longer supported in the more recent builds of PropGCC. This is because Parallax decided not to promote the use of the XMM memory models and hence work to port the SD cache driver to the new cache driver architecture was never completed. I guess the loader should say that rather than failing silently though. The newer PropGCC builds should still work with other external memory like SPI flash or SRAM or EEPROM. If there is a demand for SD cache support, that can be reprioritized. However, keep in mind that the SD card is not a good backing store for XMM because it is restricted to 512 byte cache lines which are really too big.
Ah, good to know. This only came up because I was trying to reproduce the same issue that AS was running into, and also provide SD-specific Make targets via PropWare.
I thought the SD card is a good solution to manage files and that could be useful.
I´m looking for this solution because the 32kb of my EEPROM aren't enough.
Thanks for the good information you both give!
Have you tried using the CMM memory model? That makes more efficient use of the 32k of hub memory. The problem with using XMMC with the EEPROM cache driver is that it doesn't give all that much extra space. All XMM code is basically LMM code with some macros to access external memory. LMM code is far less dense than CMM and hence the extra 32k that you get by using the high addresses in a 64k EEPROM doesn't afford that much more code space than CMM. You really need an external SPI flash chip to get a lot more code space or SPI SRAM for more data space. Keep in mind however that all XMM modes are many times slower than LMM or even CMM. They are good for high-level program logic but not for code that needs to respond to realtime events. XMM using the SD cache driver is particularly slow because it is forced to use 512 byte cache lines because of the SD card sector size. What exactly are you trying to do and how big is your code?
Ugh. I can't load your example because it was built with a newer version of PropGCC and I have the old release_1_0 installed now because of another poster who was using the version distributed with SimpleIDE. We REALLY need to get Parallax to release a new SimpleIDE with a more recent version of PropGCC!
I should mention that there *is* an effort in progress to move SimpleIDE to the latest version of PropGCC so this problem will be resolved shortly.
... What exactly are you trying to do and how big is your code?
I´m trying manage Fuzzy Logic libraries, where DavidZemon gives me a great help. (https://github.com/DavidZemon/eFLL)
Even a small program takes a lot of space.
I´m trying to run a simple program only to test it with LabView and I got a error because the 32 kb of the EEPROM.
The SPI solution you talk about I think it is very interesting.
... What exactly are you trying to do and how big is your code?
I´m trying manage Fuzzy Logic libraries, where DavidZemon gives me a great help. (https://github.com/DavidZemon/eFLL)
Even a small program takes a lot of space.
I´m trying to run a simple program only to test it with LabView and I got a error because the 32 kb of the EEPROM.
The SPI solution you talk about I think it is very interesting.
You can add a SPI flash chip to a Propeller pretty easily.
Comments
-z uses the SD cache
The SD loader is usually used in on a board with external RAM. The user's program gets loaded from the SD card into external RAM and the run using a hub cache.
The SD cache driver uses the SD card itself as external memory. It is slower than other external memory because cache lines must be a multiple of the SD card sector size which is 512 bytes. Normally, XMM uses 128 byte cache lines.
Any idea why I might get this?
Elf and pex attached. And here's /opt/parallax/propeller-load/activityboard.cfg
I have the same problem. This was my solution:
Then I just re-link whenever i need to switch versions.
Ah, good to know. This only came up because I was trying to reproduce the same issue that AS was running into, and also provide SD-specific Make targets via PropWare.
Here I have more to listen.
I thought the SD card is a good solution to manage files and that could be useful.
I´m looking for this solution because the 32kb of my EEPROM aren't enough.
Thanks for the good information you both give!
I should mention that there *is* an effort in progress to move SimpleIDE to the latest version of PropGCC so this problem will be resolved shortly.
Even a small program takes a lot of space.
I´m trying to run a simple program only to test it with LabView and I got a error because the 32 kb of the EEPROM.
The SPI solution you talk about I think it is very interesting.
The Parallax C3 module comes with one: https://www.parallax.com/product/32209
as does the DNA module: http://mghdesigns.com/propeller/dnartc.html
It's also easy to hook one up yourself. You only need to use four pins: DataIn, DataOut, Clock, and CS.
Thanks!