This article will help you get setup if you have a M1 with a solution using Docker Desktop.
\uD83D\uDCD8 Instructions for Docker Setup
This guide will provide instructions for getting a virtual environment setup with Docker which will allow you to simulate your code in a Linux environment
Download Docker Desktop for Apple Silicon (https://www.docker.com/products/docker-desktop/ )
Install the latest version of vagrant (https://www.vagrantup.com/downloads )
For M1s, you can use brew or you can download the ARM64 version
Clone the repo:
git clone https://github.com/uw-midsun/box.git
Go to your box directory and switch to master branch
You can check if you are on the master branch if you run
git branch
~ % cd box box % git checkout master
Before running
vagrant up
, make sure that you have docker openRun
vagrant up --provider=docker
Run
vagrant ssh
Run
cd shared
Run
git clone https://github.com/uw-midsun/fwxv.git && cd fwxv
(if you clone with https, you will need to set up an ssh key later which is covered in our setup page)Run
scons sim --project=leds --platform=x86
to test that your environment is working correctly. If it compiles and runs your environment is set up. Correct output will be constant printing of “blink.”
👾 Guide to flashing on M1s
Only follow these instructions if you have already finished the instructions below and are ready to flash
While this guide provides instructions for flashing, it's important to note that the execution of scons sim still remains necessary within the Docker environment
Ensure you are not in the linux environment (Docker environment)
Go to the box repository and start up your python virtual environment by running
source venv/bin/activate
Try running
arm-none-eabi-gcc --version
and look for output. If it says that it cannot findarm-none-eabi-gcc
then runsource ~/.zshrc
If it still doesn’t work, please contact a lead for help
Make the necessary connections you need with the hardware
cd shared/fwxv
then runscons flash --project=[project name]
(If you need some other scons command please reference the build_system.md file)
✨ Guide to setting up dependencies for flashing on M1s
Ensure that these steps, including any future flashing activities, are performed outside the Linux/Docker environment
Install package dependencies:
Run this shell script in box directory:
This uses virtualenv, a python package manager. (https://docs.python.org/3/library/venv.html )
Install arm-none-eabi-gcc compiler
Download gcc-arm-none-eabi version 9.2.1 which is obtained from https://developer.arm.com/downloads/-/gnu-rm
Move your tar file into your box folder and change current directory to box directory
Run this code in the box repository:
Run
scons
in the box/shared/fwxv folder to test if building works
For people who care about the step-by-step of the m1.sh:// Should be in the box repository with .tar.bz2 file tar xzf gcc-arm-none-eabi-9-2019-q4-major-mac.tar.bz2 // move into gcc-arm-none-eabi folder cd gcc-arm-none-eabi-9-2019-q4-major/bin // run pwd and copy output into next command pwd // enter pwd output in [pwd input here] (do not include [] braces) // ex. echo 'export PATH="/Users/your-user-name/box/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH"' >> ~/.zshrc echo 'export PATH="[pwd input here]:$PATH"' >> ~/.zshrc source ~/.zshrc // you may get a permissions issue so we will "unquarantine" (remove quarantine attribute) our files // path to gcc-arm-none-eabi folder can be grabbed by cd gcc-arm-none-eabi-9-2019-q4-major and pwd // ex. xattr -d -r com.apple.quarantine /Users/your-user-name/box/gcc-arm-none-eabi-9-2019-q4-major/ xattr -d -r com.apple.quarantine [path to gcc-arm-none-eabi folder] // check arm-none-eabi-gcc version // Should get output similar to: /* * arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 9-2019-q4-major) 9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599] * Copyright (C) 2019 Free Software Foundation, Inc. * This is free software; see the source for copying conditions. There is NO * warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. /* arm-none-eabi-gcc --version // To test if it works, run scons to see if everything compiles correctly for you scons