Shop OBEX P1 Docs P2 Docs Learn Events
Propeller External Memory Hardware Survey — Parallax Forums

Propeller External Memory Hardware Survey

jazzedjazzed Posts: 11,803
edited 2011-11-02 09:11 in Propeller 1
Please help determine which external memory hardware solutions should be added to the initial Propeller GCC release. Hardware developers can easily add their own solution, but we need a minimum set for testing.

The number of entries allowed by the survey tool is limiting, and I don't want to seem biased. Please just mention the hardware you have in a reply. We already have drivers for C3, SpinSocket-Flash, DracBlade, and SDRAM.
«134

Comments

  • jazzedjazzed Posts: 11,803
    edited 2011-09-30 09:16
    Reserved for survey results summary.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2011-09-30 09:47
    I use Winbond chips (W25X16A 16M-bit) for data I don't want to lose if/when the Propeller loses power. I haven't used them much but I have a bunch of them and plan to use them in the future.

    I don't know how they compare to the other flash chips you're using. I do know these require a full sector (4KB) to be erased at a time.

    Duane
  • jazzedjazzed Posts: 11,803
    edited 2011-09-30 10:38
    Hi Duane.

    SpinSocket-Flash (SSF) currently uses those chips.
    I could easily add the ST chips Rayman uses.

    Here's SSF the pin-out:

    P0..7 Data
    P26 SPI Clock
    P27 SPI Chip-select
    Duane Degn wrote: »
    I use Winbond chips (W25X16A 16M-bit) for data I don't want to lose if/when the Propeller loses power. I haven't used them much but I have a bunch of them and plan to use them in the future.

    I don't know how they compare to the other flash chips you're using. I do know these require a full sector (4KB) to be erased at a time.

    Duane
  • RaymanRayman Posts: 15,001
    edited 2011-09-30 15:01
    It would be very nice to use my Flashpoint boards with your GCC system.
    I believe Ross just about has them work with Catalina now.

    I'm hoping that the 4-bit bus on RamPage will make for an easy addition to any Prop system without using very many pins and giving 2MB of program space.
  • jazzedjazzed Posts: 11,803
    edited 2011-09-30 16:12
    I'm hoping to hear from more "users" on the hardware survey. What external memory do you use?
    Rayman wrote: »
    It would be very nice to use my Flashpoint boards ....
    Supporting developers by making it very easy to add new hardware is important to Parallax Propeller GCC.

    For flash boards, all we need to do is add flash erase, program, and read functions to a PASM driver skeleton.

    You don't need to know anything about GCC beyond the driver API (in most cases) and how to add a board to the loader config.

    In GCC we identify the external memory device driver to load by a name. Do you have a short name preference?

    Any device can be selected at load time without recompiling for a given memory model.
  • RaymanRayman Posts: 15,001
    edited 2011-09-30 16:37
    Short name preference: Good question. I wonder what Ross is doing... Personally, I use FPS for just the flash chip and FPRP for the flash chip and 4 sram chips sharing the same bus.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-09-30 19:34
    Rayman wrote: »
    Short name preference: Good question. I wonder what Ross is doing... Personally, I use FPS for just the flash chip and FPRP for the flash chip and 4 sram chips sharing the same bus.

    I have a few of the FPS modules. Maybe I'll take a stab at making a GCC XMM driver for one. Is there any reference code I can start from? I don't have the FPRP module but it looks nice.
  • Cluso99Cluso99 Posts: 18,069
    edited 2011-09-30 21:51
    I would think that either TriBlade (Prop #2) or the RamBlade should be included as it is arguably the fastest SRAM interface, but it does consume the whole prop chip to do it.

    What do you require for testing (please note I no longer have TriBlades available and only 1 myself). I could provide a RamBlade2 for testing.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-01 04:44
    Cluso99 wrote: »
    I would think that either TriBlade (Prop #2) or the RamBlade should be included as it is arguably the fastest SRAM interface, but it does consume the whole prop chip to do it.

    What do you require for testing (please note I no longer have TriBlades available and only 1 myself). I could provide a RamBlade2 for testing.

    I already have a RamBlade1 that I can use for testing. Do you have reference read/write code for the SRAM?
  • RaymanRayman Posts: 15,001
    edited 2011-10-01 05:15
    David, there is some example code for FPS and FPRP here:
    http://www.rayslogic.com/Propeller/Products/FlashPoint/FlashPoint.htm
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-01 05:18
    Rayman wrote: »
    David, there is some example code for FPS and FPRP here:
    http://www.rayslogic.com/Propeller/Products/FlashPoint/FlashPoint.htm
    Thanks Ray! I saw that code but it's in Spin I think. Do you have a PASM driver for your boards?
  • RaymanRayman Posts: 15,001
    edited 2011-10-01 08:04
    There are currently one and two cog assembly drivers. I think the Bitmap viewer on that page uses a one cog assembly driver.

    There is a scrolling map example here in the forum that may have used a 2-cog driver....
    I really need to spend more time with this and make it better. What I'm going for is a unified driver for 0, 1, 2 or 3 cogs.

    Started working on a file system for flash and got bogged down...
    But, I think for this application you don't need a file system, or maybe you guys have your own ideas on that.
    So, perhaps I should shelve the file system idea...

    Let me know if the bitmap viewer examples have what you need...
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-01 08:06
    We just need a function to erase a block, write a block, and read a block.
  • RaymanRayman Posts: 15,001
    edited 2011-10-01 08:12
    Ok, I don't think I've posted what you want then. But, I think I do have it already in my "work in progress" unified driver. I'll dig that up for you.
  • jazzedjazzed Posts: 11,803
    edited 2011-10-01 09:43
    Cluso99 wrote: »
    What do you require for testing (please note I no longer have TriBlades available and only 1 myself). I could provide a RamBlade2 for testing.
    I want you and others to be able to produce compliant drivers for new hardware. Driver interface specification details, usage info, and a test program will be available later for this purpose. The Propeller GCC design does not require anything other than a functional hardware/software interface encapsulated in a single Spin/PASM module and a short entry in the loader's config file.

    All external memory drivers have the same interface and will run in a COG separately from the main XMM VM. Embedding hardware access directly in the XMM (external LMM VM) will not be officially supported; however, nothing will stop the adventurous from doing that on their own.

    In a normal setting, a knowledgeable solution developer should have full control of their own schedule and products without requiring a third party to do it for them. This is a goal of Propeller GCC XMM. There should be no reason at all to ask a compiler developer (or Parallax for that matter) to do any of this work for a knowledgeable developer, but the team is available short term to verify these concepts. I will PM you details about team availability.
  • jazzedjazzed Posts: 11,803
    edited 2011-10-01 09:49
    Rayman wrote: »
    Started working on a file system for flash and got bogged down...
    But, I think for this application you don't need a file system, or maybe you guys have your own ideas on that.
    So, perhaps I should shelve the file system idea...
    I'm interested in seeing further developments in the flash file-system. Our libraries provide hooks for such hardware.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-01 11:19
    jazzed wrote: »
    The Propeller GCC design does not require anything other than a functional hardware/software interface encapsulated in a single Spin/PASM module and a short entry in the loader's config file.

    Well, this is mostly correct. The driver really has to be written in PASM with a specific mailbox interface. It can't be written in Spin.
  • Cluso99Cluso99 Posts: 18,069
    edited 2011-10-01 19:26
    Gee Steve (jazzed)... Am I too sensitive??? After all, you asked the question.

    IIRC my TriBlade and RamBlade were really the first boards to introduce useful SRAM (together with microSD) to the propeller. I provide pasm drivers for both boards which also includes block functions, and ZiCog accesses SRAM directly together with the microSD. All are published MIT licence.

    RossH has TriBlade drivers for Catalina. Unsure about RamBlade although they are similar and simpler.

    I do not know what is required for GCC and AFAIK you have not published anything that might help me.

    David: Here are the latest drivers for both RamBlade and TriBlade. If you have any questions please do not hesitate to ask.

    TriBlade_RamBlade_zicog_rr145.spinRamBlade_203_005.spinTriBladeProp_Blade2_203.spin
  • jazzedjazzed Posts: 11,803
    edited 2011-10-01 19:31
    Cluso99 wrote: »
    Gee Steve (jazzed)... Am I too sensitive??? After all, you asked the question.
    I don't understand this response at all.

    I was explaining what will nominally happen for new hardware. Your software skills are up to the task when documentation is available. You of all people should have no problems with this.
  • jazzedjazzed Posts: 11,803
    edited 2011-10-01 19:51
    Cluso99 wrote: »
    I do not know what is required for GCC and AFAIK you have not published anything that might help me.
    This was addressed in the second sentence of my reply to you.
  • RossHRossH Posts: 5,550
    edited 2011-10-01 21:09
    Hi all,

    I'd suggest we all stick to using the same short names.

    Catalina currently uses the following short names, each of which represents a different XMM implementation:
    • TRIBLADEPROP CPU_1
    • TRIBLADEPROP CPU_2
    • RAMBLADE
    • MORPHEUS CPU_1
    • MORPHEUS CPU_2
    • RAMPAGE
    • SUPERQUAD
    • DRACBLADE
    • HYDRA or HYBRID (HX512 *)
    • C3
    • CACHED **
    NOTES:
    * The HYDRA and HYBRID have their own short names, but both use the same XMM hardware. If we are considering only the XMM aspects of the platforms, then they both use the same short name internally (HX512).
    ** CACHED is not really a separate type - Catalina supports two distinct types of XMM access - cached or direct. Cached access is supported on all boards, and uses a separate caching cog with a VMCOG mailbox interface. Direct access is generally both faster and less resource hungry - but it is not supported on those XMM implementations that use serial FLASH (such as the C3).
    Each XMM implementation consists of a set of PASM functions in a single source file, selected by specifying the appropriate short name(s). I can't think of a better/simpler way to do this - internally, the implementations vary wildly since everyone seems to have their own idea of how best to implement XMM!

    I suppose one day we may all agree on a single "best" XMM implementation .... but given the size of some of the egos in this forum, I won't be holding my breath :lol:

    Ross.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-02 04:36
    Cluso99 wrote: »
    David: Here are the latest drivers for both RamBlade and TriBlade. If you have any questions please do not hesitate to ask.

    TriBlade_RamBlade_zicog_rr145.spinRamBlade_203_005.spinTriBladeProp_Blade2_203.spin

    Thanks! It's been far too long since I bought my RamBlade and would love to have a reason to power it up! Unfortunately, I won't be able to do anything for the TriBlade since it isn't available anymore. In fact, I had wanted to buy a TriBlade back when I bought my RamBlade and they weren't available then either. Are you thinking of reintroducing them at some point?
  • Heater.Heater. Posts: 21,230
    edited 2011-10-02 05:22
    I have a TriBlade and a Gandet Gangster 32MB RAM card here. Also a Drac Blade board if I ever get time to build it up.
    These parallel RAM solutions are nice but they all seem a bit heavy weight, consuming too many pins. Begins to not make much sense for an MCU that is supposed to be controlling stuff in the real world. This situation will look much better for the Prop II with all it's extra pins.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-02 05:40
    Heater. wrote: »
    I have a TriBlade and a Gandet Gangster 32MB RAM card here. Also a Drac Blade board if I ever get time to build it up.
    These parallel RAM solutions are nice but they all seem a bit heavy weight, consuming too many pins. Begins to not make much sense for an MCU that is supposed to be controlling stuff in the real world. This situation will look much better for the Prop II with all it's extra pins.

    Yes, I know what you mean. Sometimes it seems like we spend too much time trying to make the Propeller look like a desktop PC and too little using it to control interesting stuff!
  • Heater.Heater. Posts: 21,230
    edited 2011-10-02 06:04
    Indeed, I only wanted to make the Propeller look like a CP/M computer:)
    A task which it fulfilled very well in the end but it's not what the Prop was invented for.
    Now I have to find time to look into the various serial memory solutions that are emerging. I still think there is a case for fetching byte codes from such devices, ZPU or Java or whatever. Resulting in big slow code but still free pins and COGs for the fast stuff.
  • jazzedjazzed Posts: 11,803
    edited 2011-10-02 08:08
    Heater. wrote: »
    These parallel RAM solutions are nice but they all seem a bit heavy weight, consuming too many pins.
    Fortunately Quad SPI Flash like used on SpinSocket-Flash takes only 10 pins for an 8 bit bus and chips cost less than $4 for 4MB.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-02 10:28
    I started looking at what is needed for the RamBlade and I'm wondering how people normally use this board. It seems like I'll need to use two PropPlugs, one connected to 31/30 and the other connected to 23/22 to act as the serial terminal after the download has completed. Is this how it's normally done?
  • RossHRossH Posts: 5,550
    edited 2011-10-02 15:46
    Hi David,

    I have a RamBlade - it works a treat, and is the fastest XMM board I have.

    I only have one PropPlug - I connected it (once!) to the programming pins to program Catalyst into EEPROM, then moved it permanently to the comms pins and now use a serial terminal. I load any programs I want to run from the SD Card using Catalyst.

    Ross.
  • Dr_AculaDr_Acula Posts: 5,484
    edited 2011-10-02 16:33
    Hi Jazzed,

    I have a new design you might want to add - 24 propeller pins to a 512k sram with one HC374 latch. Blocks of 4096 bytes. I have a schematic and the working code. I'm posting this from work so when I get home I'll post both the schematic and the code. I have it on a breadboard at the moment and some Gadget Gangster PCBs are in the pipeline. I don't have a name for this design though - maybe for the moment it could be called SlingleLatchRam or something? It is similar to Cluso's designs and ought to run very close to the speed of the ramblade.

    Re heater's musings above regarding pins, at the moment I've pushed video to the limits with the 256x224 full color driver and that consumes everything the prop has so I'm thinking now of using two of these boards - one does the C and one does the video, and a fast (?4mbs or more) link between the two. Move a lot of the low level graphics things into the video prop like loading fonts, scrolling text boxes, re-drawing the mouse. Then C can run a high level GUI at a decent speed.
  • David BetzDavid Betz Posts: 14,519
    edited 2011-10-02 16:53
    RossH wrote: »
    Hi David,

    I have a RamBlade - it works a treat, and is the fastest XMM board I have.

    I only have one PropPlug - I connected it (once!) to the programming pins to program Catalyst into EEPROM, then moved it permanently to the comms pins and now use a serial terminal. I load any programs I want to run from the SD Card using Catalyst.

    Ross.

    Yes I know there are other solutions that involve an SD card but I'd rather have a mechanism that doesn't require moving the SD card from the PC to the RamBlade and back for every code recompile.
Sign In or Register to comment.