Cross platform firmware framework written by students, alumni, and faculty of San Jose State University. Designed for the original purpose of helping students develop firmware for the SJTwo board.
Built for Ubuntu, Mac OSX, and Windows 10 WSL.
For full guide follow this link: documentation
See APIs
One of the easiest ways to get started with SJSU-Dev2 is to use a VM with all of the software installed.
Steps to install virtual box and the virtual machine are listed below:
- Download and install Virtualbox and then the "VirtualBox Oracle VM VirtualBox Extension Pack" on your computer from this link: https://www.virtualbox.org/wiki/Downloads
- Download the prebuilt virtual machine: Ubuntu SJSU-Dev.ova
- Open "Ubuntu SJSU-Dev.ova" and import into VirtualBox.
- Open the "Ubuntu SJSU-Dev" Virtual Machine on the left hand side.
- Login by entering the password "osboxes.org"
- To program your board, you will need to connect it to your host machine and
bring it into the virtual machine by using the top menu:
Devices > USB > CP2102n...
- At this point you can run commands like
make application
andmake flash
from within the SJSU-Dev2 folder which is located/home/osboxes/SJSU-Dev2
If you are using Windows, follow these steps to install WSL and make sure to install the Ubuntu as the linux distro. Once you have installed WSL, all instructions below for Linux should work for Windows.
To download and setup the environment, simply copy and paste this into a terminal:
git clone https://github.com/kammce/SJSU-Dev2.git
cd SJSU-Dev2
./setup
If you find that git is not installed on your machine follow these steps to install GIT.
The starter hello_world
project can be found in the projects/
folder along
with the the demos/
folder which is full of examples you can run
on your board. To build hello_world
:
cd project/hello_world
make application
From within a project, run make flash
.
If make flash
is not available for your platform, then you can try
make jtag-flash DEBUG_DEVICE=<jlink|stlink|etc> PLATFORM=<insert platform here>
if you have a JTAG or SWD debugger.
The preferred method for communicating with a serial device is via Google
Chrome, using the online serial terminal tool,
Telemetry.
You can also open this up on your browser using the make telemetry
command in
a project directory.
Processor/OS | InterruptController | SystemTimer | CycleCounter |
---|---|---|---|
RISCV 32I | ☒ | ☒ | ☒ |
Arm Cortex M4F | ☑ | ☑ | ☑ |
Arm Cortex M3 | ☑ | ☑ | ☑ |
Embedded Linux | - | - | - |
- ☑ = Supported
- ◯ = Partially supported
- ☒ = Not supported but available
-
- = Not available on microcontroller
Processor/OS | MCU/SOC | SystemController | Gpio | Pin | Uart | Adc | Pwm | I2c | Spi | Dac | Timer | Can | Eeprom | Flash | PulseCapture | Watchdog |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Arm Cortex M4F | lpc40xx | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ◯ | ☑ | ☒ | ☑ | ☑ |
Arm Cortex M3 | lpc17xx | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ☑ | ◯ | - | ☒ | ☑ | ☑ |
Arm Cortex M3 | stm32f10x | ◯ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | - | ☒ | ☒ | ☒ |
Arm Cortex M4F | stm32f4xx | ◯ | ☑ | ☑ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | - | ☒ | ☒ | ☒ |
RISCV 32IMAC | gd32v10x | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | - | ☒ | ☒ | ☒ |
RISCV 32IMAC | gd32v10x | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | - | ☒ | ☒ | ☒ |
Linux | any | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | ☒ | - | ☒ | ☒ | ☒ |
- Integrate user-defined literals for SI units
- Platform Additions
- Support for Raspberry Pi and other SBCs such as the BeagleBone Black
- Support for host side application development
- Support of STM32 series of MCUs
- Support of TI series of MCUs
- Support of RISC-V
- Multi Threading Portability
- Add FreeRTOS wrapper of POSIX calls
- Allows Linux platforms to work with code that makes calls to FreeRTOS.
- Add FreeRTOS wrapper of POSIX calls
- Move from Return-Error-Codes to C++ Exceptions
- Make a version of C++ exceptions that is more optimal for embedded
- Khalil Estell: Creator and maintainer of the SJSU-Dev2.
- David Huang
- Matthew Boyd
- Since this repository borrows heavily form
SJSU-Dev repo, the people in that contrib
list are also contributors to this repository.
- SJSU-Dev was based on SJDev by Preet Kang.
- Mikko Bayabo: Windows surface destructive testing
- WSL testing: Sameer Azer, Aaron Moffit, Ryan Lucus, Onyema Ude