Flash Point RamPage (FPRP) use in propgcc
martinh
Posts: 58
Dear all,
I have at the moment a bit difficulties to figure out how to make use of the Flash Point RamPage module in propgcc
http://www.rayslogic.com/Propeller/Products/FlashPoint/FlashPoint.htm
So far I have attached it to a propeller demo board with the following pin assignments
I have at the moment a bit difficulties to figure out how to make use of the Flash Point RamPage module in propgcc
http://www.rayslogic.com/Propeller/Products/FlashPoint/FlashPoint.htm
So far I have attached it to a propeller demo board with the following pin assignments
CSN-SRAM 7 SCK-SRAM 6 SIO3 5 SIO2 4 SIO1 3 SIO0 2 SCK-FLASH 1 CEN-FLASH 0So far I think to understand (??) that I have to use sst.cfg and adjust that to my pins, but fail to understand what in sst.cfg maps to what exactly given the settings I posted above. If someone can shed some light on that it would be great.
Comments
David Betz got the flash part working though... He posted something about it in this thread:
http://forums.parallax.com/showthread.php/142706-New-cache-driver-for-SST-SPI-flash-chips?highlight=betz+rampage
This makes me already happy, of course if sooner or later the SRAM part would also be usable it would be brilliant It is a bit over my head to do it myself given the lack of deeper knowledge about the propgcc intrinsics and driver architecture I suffer from (hope that I can change that over the time).
Think about a small autonomous robot driving through the rooms while scanning with an ultrasound sensor (not a PING like sensor since that gives only one echo or nothing, but more like the A-scans from past ultrasound diagnostic). The scan lines along the ultrasound "ray" need to be fully stored for full sweeps of the sensor as deconvolution has to take place orthogonal to them to enhance resolution. From that deconvolved image in combination with the knowledge about its position the machine shall update a map of the flat in its long term memory to be able to remember the position of walls and obstacles and navigate in an more or less optimal way from one place to another.
What I do right now is just playing around with the possibilities to see what's possible and what not and make myself familiar with the propeller flavour of gcc.
Edit: Just to add as I said in theprevious post, I am already happy about the xmmc which I can use right now and maybe it is already enough to work with the HUB for the data if I manage to do it in aclever enough way.
Perhaps what you really need then is a driver that can access the SRAM for temporarily accessing information without going through the cache driver. Yes, XMM-SPLIT can be used for this purpose, but XMM-SPLIT is relatively slow, and it would be much better to use XMMC for code and have a driver to access SRAM separately.
There was a wording from my side which probably leads to confusion: The quickly varying data buffers have not to be super fast, it is more that they are repeatedly and often updated making it not too convenient to use for example flash or sd cards which suffer from wear out problems in the worst case. Of course I can work around that by for example writing the buffers every time to a new location on a uSD without care that it wastes space and only when for example 1 GB allocated for that task is exceeded starting again from the begimning of that large space.
The benefit of using xmm-split even if slower than a custom driver access to the external memory by writing my own driver (recycling rayman's spin/pasm driver) is likely to result in much cleaner C code as you just act on the buffers as standard arrays and keep the more time constrained parts in the stack (HUB) and the most time constrained parts for the data acquisition in the cogs.
The other benefit is that it is more standardized if I need other hardware for the RAM and have not to rewrite again a driver for different hardware with the same interface I used before just to reuse the code.
All this is now of course just chit chat as I have not yet the code, not even decided about the US sensor to use (or to build) and still contemplating about how to go for my (hobby) project to make it feasible at all.
I think that would be a nice enhancement.
If you are willing to do that it's great, if not it is of course also completely ok with me since I ask you here for work on your side to reduce work on my side, I do not demand anything here and I am grateful for all what has already been done by a lot of people for this gcc environment.
To elaborate a bit - just in case somebody asks this to him/herself why I do not simply use catalina which supports both parts of that FPRP module:
The missing part in catalina is that I cannot use an equivalent to what propgcc provides as cogc to write fast C code to run in a cog instead of going down to pasm and I plan to use that functionality as much as possible to find out how far I can take it before I have to fall back to hand crafted pasm (due to speed or space constraints in the cogs).