Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcpinet/parm
๐ง PARM Project (Polytech ARM-based embedded processor)
https://github.com/marcpinet/parm
architecture armv7 assembly c cpu logisim-evolution python system
Last synced: 2 months ago
JSON representation
๐ง PARM Project (Polytech ARM-based embedded processor)
- Host: GitHub
- URL: https://github.com/marcpinet/parm
- Owner: marcpinet
- License: mit
- Created: 2023-01-27T23:34:45.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-31T01:42:42.000Z (almost 2 years ago)
- Last Synced: 2023-03-05T14:14:19.278Z (almost 2 years ago)
- Topics: architecture, armv7, assembly, c, cpu, logisim-evolution, python, system
- Language: Assembly
- Homepage: https://marcpinet.me
- Size: 7.37 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Polytech ARM-based embedded processor
## ๐ Instructions we had to follow
By using [Logisim](proc/logisim/), we firstly had to make a [CPU](proc/) (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](asm/) 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](docs/) folder.
## โ๏ธ Compile C to ARM Assembly using the CPU
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:
```bash
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:
```bash
sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
```Finally, you can compile like this:
```bash
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](c/) folder.## ๐ฝ๏ธ Presentation
See the [presentation](presentation/) folder for more details.
## ๐งพ Additional informations
### C Headers
| 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 |### C programs
| 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 |### MMIO
See `parm.h` for the pins documentation.
## โ๏ธ Authors
* Marc PINET - [marcpinet](https://github.com/marcpinet)
* Loรฏc PANTANO - [loicpantano](https://github.com/loicpantano)
* Arthur RODRIGUEZ - [rodriguezarthur](https://github.com/rodriguezarthur)