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
You may have to try and attach a couple times. If it doesn't work, try disconnecting the Thing+ from the Jeff probe or both the Jeff probe and the computer, restart gdb, and try again.

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.
If it worked, you should see something along the lines of "Success" on the terminal. After this time, you can enter "Flash" mode without the jumpers by pressing the RST button and then the USR button quickly after. You should see a flashing green light.





Comments

Popular posts from this blog

EOS-S3 Thing+ Debug Setup 8/27/2023

Escape to the Northern Lights

EOS-S3 Thing+ Debug Setup 8/20/2023