EOS-S3 Thing Plus Setup Part 1
If you are trying to setup your Quicklogic EOS-S3 Thing Plus (Thing+), then you have come to the right place.
The goal of this series is to describe the journey Joe and I went on to setup the Thing+ so you can spend less time setting it up and more time making cool stuff. I will be using Linux for these tutorials. I have done some of these steps in Windows as well and if you have questions about that, feel free to leave a comment below.
This guide focuses on setting up the Thing+ with an open source SWD programmer, if you have or want to use a J-Link programmer, Sparkfun has a guide for that here: https://learn.sparkfun.com/tutorials/quicklogic-thing-plus-eos-s3-hookup-guide
This is also a very good resource to learn about the hardware and pin layouts.
The Thing+ has an SDK called QORC which was released by Quicklogic. Among other things, the QORC SDK is supposed to allow programming the microcontroller and FPGA over USB. However, as of January 2023, the firmware on the Sparkfun Thing+ didnt not allow programming over USB.
This is where the SWD programmer comes in. This guide will cover how to use the Flirc Jeff Probe as our programmer of choice.
The Jeff Probe is significantly cheaper than a J-Link programmer, but it does have a bit more setup involved to get it up and running. If you haven't already set up your Jeff Probe, you an go here: Jeff
The first thing to do once the Jeff Probe is setup is to clone the QORC SDK from Github here: https://github.com/QuickLogic-Corp/qorc-sdk
Once you clone the repo, go into the main folder and run "source envsetup.sh" . This will install all the necessary components as well as set up a virtual environment that is separate from the main file system. You will need to do this every time you open a new terminal that uses the QORC SDK or you can set it up to source automatically in your bashrc file.
We are now going to flash a new bootloader onto the Thing+. There are two pairs of pins on the side of the board opposite the USB port. We need to put a two pin jumper on each of the pairs or find some other way to connect one pin of the pair to the other.
Once this is done, connect the Jeff Probe and the Thing+ to the computer and connect them together using the SWD cable provided with the Jeff Probe. Once everything is connected, perform the following steps in three terminals.
First terminal:
- cd blackmagic/src
- ./blackmagic
Second terminal, gdb:
- cd to qorc-sdk dir
- source environment.sh
- cd qt_apps/qt-initial-binaries
- arm-none-eabi-objcopy -I binary -O elf32-little --change-section-address .data=0x00000000 qt_loadflash.bin qt_loadflash.elf
- arm-none-eabi-gdb qt_loadflash.elf
- (gdb) target extended-target localhost:2000
- (gdb) set debug remote 1 //if you want extra debug information
Note: I usually press the Thing+ reset before the next step - (gdb) monitor swdp_scan
- (gdb) attach 1
- (gdb) load
- (gdb) run
gdb will ask if you want to start from beginning, select yes. You will know it is working if you see a green light on the Thing+. You are now in Flash mode and the Thing+ will now let you update the bootloader over USB.
Third terminal, qfprog (disconnect jeff probe from usb and thing+):
- cd to qorc-sdk, dir
- source environment.sh
- cd qt_apps/qt-initial-binaries
- qfprog --port=/dev/ttyACM0 --mode --bootloader qt_bootloader.bin --bootfpga qt_bootfpga.bin
- The ACM0 is the port number the Thing+ is assigned it may be different for you, find the port number or just start going up from 0.
Comments
Post a Comment