By using Logisim, we firstly had to make a CPU (a simplified one) which can run binary files (machine code). You can find how to convert Clang files into Assembly files in the next section. Next, we had to make a program which can translate assembly language (ARMv7) into machine code.
You can learn more about Logisim, ARMv7 and the whole Cortex-M0 family of processors in the docs folder.
To check whether our CPU works or not, we need to compile these C programs and compare each other.
Install the libc6-armel-cross
, libc6-dev-armel-cross
, binutils-arm-linux-gnueabi
and libncurses5-dev
packages by using the following command:
sudo apt-get install clang libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev
Then, install gcc
and g++
to support ARM:
sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
Finally, you can compile like this:
clang -S -target arm-none-eabi -mcpu=cortex-m0 -O0 -mthumb -nostdlib -I./include main.c
Please, note that the ./include
folder (which contains the headers) should be in the same directory of the main.c
.
You can see some examples in the c folder.
See the presentation folder for more details.
Program | Description |
---|---|
crypto | Cryptography |
fixed | Fixed Point Decimal Numbers |
math | Mathematical tools |
parm | Main Header |
stdio | Text Input/Output (keyboard, terminal) |
string | Basic implementation of strings |
string2 | Other basic implementation of strings |
trigo | Trigonometric functions (Taylor series) |
utils | Debugging Tools |
video | Matrix screen |
Program | Description |
---|---|
calckeyb | Calculator with keyboard and terminal |
calculator | Calculator with DIP-switches |
simple_add | Adds two variables and displays it in RES |
testfp | Demonstrate fixed-point number macros |
tty | Display "Project PARM" in terminal |
See parm.h
for the pins documentation.
- Marc PINET - marcpinet
- Loïc PANTANO - loicpantano
- Arthur RODRIGUEZ - rodriguezarthur