Am Freitag, den 20.09.2013, 11:19 -0500 schrieb Dwight Schauer: > No, the Flash/RAM sizes I mentioned are not a typo. > > > OCaPIC is a similar OCaml project for PIC microntrollers. > http://www.algo-prog.info/ocapic/web/index.php?id=OCAPIC:OCAPIC > > > The microcontrollers targetted by OCaPIC have the following > characteristics: > RAM memory: a few kB. > Flash memory: a few tens of kB. > Clock: a few MHz > > > The ARM microcontrollers I'm looking to target are much bigger than > PIC microcontrollers on all 3 of those counts are significantly > larger. Just looked at the slides. They implemented a lot of things to increase the compactness (bytecode compression, 16 bit integers and pointers, a simple stop-and-copy GC, a utility to remove dead code, ...). This is essentially a complete port of ocaml to a new architecture, with heavy modification of the runtime. At the end, it is possible to run programs with a few hundred lines of code (which is really impressive). You cannot run the toploop shell. What you could do, of course, it to port OcaPIC to ARM (well, there is some assembly code, but not that much). But this doesn't give you a toploop, probably not even dynamic loading of bytecode. I really wonder what makes these very small devices so interesting as platform for OCaml (other than, of course, having fun to run some code in the favorite language there). Gerd > > > > > > On Fri, Sep 20, 2013 at 10:54 AM, Gerd Stolpmann > wrote: > Am Freitag, den 20.09.2013, 09:13 -0500 schrieb Dwight > Schauer: > > > The ARM processors I'm looking to target are: > > STM32F407ZGT6 ARM Cortex-M4, 1MB Flash, 196KB RAM (Has > floating point) > > STM32F103RB ARM Cortex-M3, 128 KB Flash, 20K RAM (No > floating point) > > > I hope this isn't a typo. 196 KB RAM is way too low to even > run a hello > world program. The predecessor of ocaml, caml-light, needed > 640K at > minimum for running it on DOS, and that was 16 bit code. Ocaml > is a lot > larger, and generates less dense 32 bit code. > > For a very small app on bare metal, I think you need at least > 4-8 MB of > memory. For making you happy, calculate 64 MB. I cannot say > much about > the split flash mem vs. RAM - but you should take into account > that the > representation of values isn't optimized for compactness, and > you also > need extra RAM to give the garbage collector room. > > Maybe it is possible to lower the memory requirements by > modifying the > ocaml runtime (e.g. make the bytecode more compact at the cost > of extra > decoding steps, remove unneeded parts like the > compactor, ...), but I > doubt you'll be able to hit the mentioned limits. > > Gerd > > > > > > > > On both I'd like to be able to run bytecode both out of > Flash and RAM. > > (Primarily flash, but RAM for debugging). > > > > > > Speed is on overly important as long as I can control when > the garbage > > collection is run (could be done in C in the multitasker?). > > > > > > > > Dwight > > > > > > > -- > ------------------------------------------------------------ > Gerd Stolpmann, Darmstadt, Germany gerd@gerd-stolpmann.de > Creator of GODI and camlcity.org. > Contact details: http://www.camlcity.org/contact.html > Company homepage: http://www.gerd-stolpmann.de > ------------------------------------------------------------ > > -- ------------------------------------------------------------ Gerd Stolpmann, Darmstadt, Germany gerd@gerd-stolpmann.de Creator of GODI and camlcity.org. Contact details: http://www.camlcity.org/contact.html Company homepage: http://www.gerd-stolpmann.de ------------------------------------------------------------