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-devThen, install gcc and g++ to support ARM:
sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabiFinally, you can compile like this:
clang -S -target arm-none-eabi -mcpu=cortex-m0 -O0 -mthumb -nostdlib -I./include main.cPlease, 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