You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
6.3 KiB
Markdown

4 years ago
# ePenguin Software Framework
4 years ago
Warning: This only works for x86\_64 linux machines atm. Windows development is in progress. I have no idea how to go about testing for mac so... yeah.
As of right now, only the *new* command works. Everything else is not implemented yet. However, *new* does most of the heavy lifting so the other commands will come quickly once it is finished and polished.
### Prerequisites
You need the following things installed for igloo+eSF to work properly:
- openocd
- rust (nightly preferred becuase it's just better)
- toolchains (more below)
In the future, these things will just be bundled with eSF. The problem with some toolchains is dependency matching for various distros.
#### Toolchains
Loose naming convention for toolchains:
<arch>-<vendor>-<target os>-<host os>-<abi>
- arm-none-eabi:
3 years ago
- Toolchain targetting the embedded ABI for arm
- Debian/Ubuntu:
```
sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi gdb-arm-none-eabi
```
- Arch
```
sudo pacman -S arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-gdb arm-none-eabi-newlib
```
**NOTE:** If you run into an issue when running arm-none-eabi-gdb where it needs libncurses.so.5 on Ubuntu/Debian, install this package:
```
sudo apt-get install libncurses5
```
- avr-*
```
Debian:
(To be added)
Arch:
sudo pacman -S avr-binutils avr-gcc avr-gdb avr-libc avrdude
```
#### OpenOCD
It is recommended that you download the zip here:
https://github.com/xpack-dev-tools/openocd-xpack/releases
Otherwise, you can install it from your package manager:
Arch
```
sudo pacman -S openocd
```
Debian/Ubuntu
```
sudo apt install openocd
```
#### Rustlang
Doesn't get any easier than this: https://www.rust-lang.org/tools/install
### Instructions for testing
**WARNING**: DO NOT COPY AND PASTE THESE INSTRUCTIONS. READ THROUGH THEM.
```
cd ~
# NOTE: If you plan on using the toolchain packaged with ESF, which may or may not work right now, clone recursively:
git clone --recursive https://git.epenguin.net/ePenguin/ePenguin-Software-Framework.git
# Otherwise
git clone https://git.epenguin.net/ePenguin/ePenguin-Software-Framework.git
git clone https://git.epenguin.net/ePenguin/ePenguin-Igloo.git
4 years ago
sudo chmod -R u+x ~/ePenguin-Software-Framework/
sudo chmod -R u+x ~/ePenguin-Igloo/
export ESF_DIR=~/ePenguin-Software-Framework
alias igloo_rls=~/ePenguin-Igloo/target/release/igloo
alias igloo_dbg=~/ePenguin-Igloo/target/debug/igloo
alias igloo=igloo_dbg
# Building
cd ~/ePenguin-Igloo
# Debug build is default
cargo build
# For release build
# cargo build --release
igloo
```
4 years ago
You should see a help menu thrown at you for more instruction.
I've aliased igloo_dbg for igloo, but you can use the release version if you want better performance and faster compile times. It is highly recommended to use the debug version right now, though.
4 years ago
### Generating a new project
```
igloo new <project_name> --target=<mcu>
# Example
igloo new testproject --target=samd21j18a
```
### Instructions for building
The framework comes with compilers so no external dependencies are needed. There are unfortunately no libraries yet because I want to nail igloo, the project manager, with certainty first.
```
cd <project_name>/.igloo/target/
make
```
### Instructions for running
I'm not including these steps because openocd releases vary with target configs. I recommend you download a release from https://openocd.org and unzip it there. Downloading via a package manager almost guarantees you're going to be missing target scripts.
At some point in the future, I'm going to fork openocd just so I can make sure default board config scripts are 100% available because right now it's really hit or miss on various distros.
4 years ago
for the e54 xplained
```
openocd -f board/atmel_same54_xplained_pro.cfg
```
for the d21 xplained
```
openocd -f board/atmel_samd21_xplained_pro.cfg
```
If the E54 xplained cfg isn't found for some reason, try this:
```
echo "
#
# Atmel SAME54 Xplained Pro evaluation kit.
4 years ago
#
source [find interface/cmsis-dap.cfg]
transport select swd
# chip name
set CHIPNAME same54p20a
source [find target/atsame5x.cfg]
" > same54.cfg
openocd -f same54.cfg
```
Now in another terminal:
```
cd <project_dir>/target/same54p20a/
make
${ESF_DIR}/toolchains/arm/bin/arm-none-eabi-gdb -iex "target extended-remote localhost:3333" testdir.elf
4 years ago
load
monitor reset
```
If you're using gdb with python extensions then use this instead
```
${ESF_DIR}/toolchains/arm/bin/arm-none-eabi-gdb-py -iex "target extended-remote localhost:3333" testdir.elf
4 years ago
```
### Supported Targets
The framework allows me to add support for mcus pretty rapidly. I can add entire families of mcus with a few lines in the manifests. For now I've added support for mcus I use, but I'll be adding support for every Microchip SAM mcu shortly, as well as SiFive MCUs and STM32 MCUs.
### Status Guide
| Icon | Description |
| --- | --- |
| :exclamation: | In Development |
| :grey_question: | Unstable |
| :question: | Experimental |
| :white_check_mark: | Stable |
#### ARM32
| MCU | Status |
|:------------|--------------:|
| samd21e15a | :question: |
| samd21e16a | :question: |
| samd21e17a | :question: |
| samd21e18a | :question: |
| samd21g15a | :question: |
| samd21g16a | :question: |
| samd21g17a | :question: |
| samd21g17au | :question: |
| samd21g18a | :question: |
| samd21g18au | :question: |
| samd21j15a | :question: |
| samd21j16a | :question: |
| samd21j17a | :question: |
| samd21j18a | :question: |
| samd51g18a | :question: |
| samd51g19a | :question: |
| samd51j18a | :question: |
| samd51j19a | :question: |
| samd51j20a | :question: |
| samd51n19a | :question: |
| samd51n20a | :question: |
| samd51p19a | :question: |
| samd51p20a | :question: |
| same54n19a | :question: |
| same54n20a | :question: |
| same54p19a | :question: |
| same54p20a | :question: |
| same70j19a | :exclamation: |
| same70j20a | :exclamation: |
| same70j21a | :exclamation: |
| same70n19a | :exclamation: |
| same70n20a | :exclamation: |
| same70n21a | :exclamation: |
| same70q19a | :exclamation: |
| same70q20a | :exclamation: |
| same70q21a | :exclamation: |
#### RISC-V
| MCU | Status |
|:----|-------:|
| | |