Shop OBEX P1 Docs P2 Docs Learn Events
propeller-load: -z and -L? — Parallax Forums

propeller-load: -z and -L?

What's the difference between these two flags?

Comments

  • -l uses the SD loader
    -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.
  • DavidZemonDavidZemon Posts: 2,973
    edited 2016-02-14 19:09
    That makes sense. So many different options!

    Any idea why I might get this?
    /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
    # Propeller activity board configuration.
    # IDE:SDXMMC
    clkfreq: 80000000
    clkmode: XTAL1+PLL16X
    baudrate: 115200
    #baudrate: 230400
    #baudrate: 460800
    rxpin: 31
    txpin: 30
    
    # cache geometry - 128 * 64 = 8192 byte cache
    index-width: 7      # 2^7 = 128 cache lines
    offset-width: 6     # 2^6 = 64 byte cache lines
    
    cache-geometry: ({index-width} << 8)  | {offset-width}
    xmem-driver: eeprom_xmem.dat
    eeprom-first: TRUE
    
    sd-driver: sd_driver.dat
    sdspi-do: 22
    sdspi-clk: 23
    sdspi-di: 24
    sdspi-cs: 25
    
  • I rebuilt the partition table and reformatted as FAT32 (via GParted) to no avail. Still fails the same way :(
  • 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!
  • David Betz wrote: »
    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.
  • David Betz wrote: »
    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.
    David Betz wrote: »
    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 just checked my notes and it looks like it wouldn't be that hard to resurrect the SD cache driver if it is really needed.
  • ASAS Posts: 149
    I was reading this your conversation.

    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!
  • AS wrote: »
    I was reading this your conversation.

    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!
    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?


  • David Betz wrote: »
    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.

  • ASAS Posts: 149
    edited 2016-02-15 00:00
    David Betz wrote: »

    ... 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.
  • AS wrote: »
    David Betz wrote: »

    ... 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.

    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.
  • ASAS Posts: 149
    Interesting solution.

    Thanks!
Sign In or Register to comment.