caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Berke Durak <berke.durak@gmail.com>
To: "Markus Weißmann" <markus.weissmann@in.tum.de>
Cc: caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] OCaml embedded
Date: Thu, 25 Jun 2015 23:04:08 -0400	[thread overview]
Message-ID: <CAALTfKCXSw3+KXmSca+8eTt1_TBrqAE-cd_U4Yor-nvoGdr1EQ@mail.gmail.com> (raw)
In-Reply-To: <1e86d3d4e5a1e3ba3051d8c928b0dbd2@in.tum.de>

On Tue, Jun 23, 2015 at 6:32 AM, Markus Weißmann
<markus.weissmann@in.tum.de> wrote:
>
> I can offer experience in the following cases:
> 1) If your system is powerful enough (e.g. rasperry pi), you can just install the ocaml toolchain on your system and develop there on your target system.

Seconded.  We did almost that for one of our projects and it works
pretty well.  The difference is that we didn't use QEmu, but two of
our custom Q7 board (based on a Zynq ARM Cortex A9 with 512 MB RAM,
see http://xiphos.com/products/q7-processor/ ).

We use Yocto to generate two versions of a Linux system: the target
system, and a much larger version that contains developer tools (C
compiler, m4, etc.)  The development system runs from microSD cards,
and takes the better part of a gigabyte, while the target system has
to run from < 64 megs of flash.  The required run-time dependencies of
the target system have to be manually configured in the Yocto recipes.

We then manually install opam on the developer board, and use it to
compile our OCaml code. The generated native ARM executables are then
packaged into .ipks and transferred to the target Q7 board (connected
to actual hardware:
http://www.ghgsat.com/wp-content/uploads/2015/03/Payload-Selfie.jpg )
The packaging is done using a simple shell script that invokes ar and
tar.

We did try using QEmu but it's significantly slower, however it may
come into play as automating the build process (using a virtual
machine or dedicated hardware) is on our to do list, and build time
isn't as important when it's a nightly automated build.

Initially we looked into using a cross-compiler but we decided that
being able to use Opam largely outweighs any possible benefit we could
get from cross-compiling.  And cross-compiling is often a source of
headaches, even when compiling plain old C.  We would have to write a
lot of Yocto recipes to get it running.  Note that Yocto is written in
a progarmming language called Python and requires recipes to be
expressed mostly the same language.

To conclude, as powerful ARM systems are very cheap and plentiful
these days, and since the convenience of Opam is immense, I'm not sure
there is much incentive in using a cross-compiler.  BTW, is there a
maintained ARM cross-compiler?
-- 
Berke Durak

  reply	other threads:[~2015-06-26  3:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23 10:07 xavier deschuyteneer
2015-06-23 10:32 ` Markus Weißmann
2015-06-26  3:04   ` Berke Durak [this message]
2015-06-26  5:40     ` Kenneth Adam Miller
2015-06-26  5:40       ` Kenneth Adam Miller
2015-06-26  8:18     ` Francois Berenger
2015-06-26  9:57     ` xavier deschuyteneer
2015-06-26 13:39       ` Pierre-Alexandre Voye
2015-07-16 10:06       ` Goswin von Brederlow
2015-07-16 18:45         ` xavier deschuyteneer
2015-06-26 21:25     ` Gerd Stolpmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAALTfKCXSw3+KXmSca+8eTt1_TBrqAE-cd_U4Yor-nvoGdr1EQ@mail.gmail.com \
    --to=berke.durak@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=markus.weissmann@in.tum.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).