ehwe (Embedded HW Emulator) is a soft work-bench for embedded software development on a normal Linux desktop.
Get documentation below. Build-system is CMake-based. Please read more about it in the wiki.
Simplified build-instructions are available under src/README.md.
To clone the project including it's submodules:
git clone --recursive https://github.com/helsinova/ehwe.gitOr for a specific (master) branch only:
git clone -b master --single-branch --recursive \
https://github.com/helsinova/ehwe.gitYour embedded code resides in a git submodule under src/embedded.
Path for the workbench is hard-coded and the project attached per default
is a simple test/template which you can use for guidance. To replace with
your own project just follow these steps (please read carefully):
git submodule deinit src/embedded
git submodule add $REMOTE_REPO src/embedded
git submodule init
git submodule updateWhere $REMOTE_REPO is your URI (i.e. URL, local path e.t.c.)
Your code's main-function has to be renamed to embedded_main. One
elegant way to do this is to put the following #define in a header-file
of your own choice in your own project:
#define main embedded_mainSee also template/example src/embedded/spiram.h
This project assumes you use CMake as your build-system. I.e. you need
a file embedded/CMakeLists.txt defining the sources in a module called
libembedded.
See also template/example src/embedded/CMakeLists.txt
EHWE has it's own arguments which is documented in man-pages and
else-where. But the workbench can have it's own arguments. As EHWE is
workbench agnostic it can't know which these are and can't parse them.
However, everything after the special option '-' is sent to the workbench
as is.
Note that not all, probably most, embedded targets will provide anything meaningful in argc & argv (because it requires an environment, which implies a process).
Example:
./ehwe -v debug \
-d "spi:1:bp:master:/dev/ttyUSB0" \
-d "i2c:1:bp:slave:/dev/ttyUSB8" \
-d "spi:2:bp:master:/dev/ttyUSB9" \
-- \
-x 100 "XoXoXo"The last line contains the argv handed to workbench's main(), which
for the template project SPI-RAM means: "Write string "XoXoXo" 100 times
in memory, then dump the contents of what was written"