I recently became aware of the Artemis Apollo3 Module and am really impressed! However for our wearable application we cannot afford the addition thickness of the module’s PCB board. If I were to recreate the Artemis Apollo3 Module design on our main board (I realize it will need to be re-FCC certified) and make the appropriate usb connections using the SparkFun Serial Basic Breakout,
Hi Thanks for your response. Not sure I completely understand though. The Sparkfun module schematic and PCB files are open source. I’m confused by “if the firmware is open-source”. Does this mean that additional sparkfun, open-source, firmware required to be flashed to the Apollo3 processor? I didn’t think it worked like that, but that’s why I was asking the question…
Hi,
The SparkFun Artemis module is indeed Apollo3 Blue.
If you want to replicate the design on your own PCB and have it appear as an actual Artemis, you’ll need to program it with the same bootloader too:
https://github.com/sparkfun/SparkFun_Ar … Bootloader
https://learn.sparkfun.com/tutorials/de … rogramming
You need to break out the JTAG single-wire debug pins (SWDIO, SWDCLK, SWO, !RESET) in addition to the UART pins (TXO, RXI).
I hope this helps,
Paul
Hi Paul, Thank you for your reply! This is very helpful, and perhaps a little different than what I thought.
I installed the Artemis Uploader App: https://github.com/sparkfun/Artemis-Firmware-Upload-GUI
I didn’t have a proper Artemis board connected, so of course if failed, but “Update Bootloader” seems to automatically create “artemis_svl.bin” and would have flashed it for me? Do you agree this the correct procedure?
Artemis Bootloader Upload
Baud: 115200
File: C:\Users\mej\AppData\Local\Temp_MEI434882\resource\artemis_svl.bin
Port: \.\COM14
Header Size = 0x80
original app_size 0x328c ( 12940 )
load_address 0xc000 ( 49152 )
app_size 0x328c ( 12940 )
w0 = 0xcb00330c
Security Value 0x10
w2 = 0x10008080
addrWord = 0xc000
versionKeyWord = 0x0
child0/feature = 0xffffffff
child1 = 0xffffffff
crc = 0xc703da31
Writing to file C:\Users\mej\AppData\Local\Temp_OTA_blob.bin
testing: C:\Users\mej\AppData\Local\Temp_OTA_blob.bin
Header Size = 0x60
app_size 0x330c ( 13068 )
Writing to file C:\Users\mej\AppData\Local\Temp_Wired_OTA_blob.bin
Image from 0x0 to 0x330c will be loaded at 0x20000
Connecting over serial port \.\COM14…
Baud rate: 115200
Sending Hello.
No response for command 0x00000000
Failed to respond
Fail
Sending Hello.
No response for command 0x00000000
Failed to respond
Fail
Sending Hello.
No response for command 0x00000000
Failed to respond
Fail
Tries = 3
Upload failed
Complete.
I bought the Artemis RedBoard, but it looks like the “RedBoard Artemis ATP” ( https://www.sparkfun.com/products/15442 ) already has the JTAG broken out. Do you think I could use the ATP version to simulate what I am trying to do (pretend the Artemis on the ATP is my “recreated” Artemis on my mainboard) and reflash the bootloader?
Also, I’m still a little fuzzy about the exact purpose of the bootloader. Everything I read regarding this Sparkfun bootloader seems to refer to the resulting baud rate. I don’t need to flash my app firmware over USB. If possible, I would be satisfied to break out JTAG and flash it that way.
I’d be happy to just have everything work, but in the spirit of understanding better… What does the Sparkfun Bootloader actually allow one to do? Flash via USB? Faster Flashing? Something more??
Thanks again for your reply!
Hi,
Glad that helps.
My knowledge of the bootloader is a little fuzzy, it has been a while, but here’s my understanding:
The ‘bare’ Apollo3 chip is delivered without bootloader.
To install the bootloader for the first time, you need to use a suitable JTAG programmer and the single-wire debug pins.
Thereafter, you can update the bootloader over UART (USB).
In the SparkFun Artemis / Arduino world, firmware upload is always done over UART (USB). But, you could upload it over JTAG / SW too.
I may be wrong about needing to use a JTAG programmer first time around. But I would strongly recommend breaking those pins out anyway. They’re really useful and let you do other things like monitor code execution in real time, set breakpoints etc…
Best wishes,
Paul
Thanks Paul. I really appreciate it. I think I will buy the ATP board and try reflashing the bootloader and everything through JTAG. If that seems to work then I’ll make a custom version of the Artemis board and start with a brand new Ambiq Blue3 processor. If that works then I will work that PCB design into my final product.