# Artemis Apollo3 Module in production

**URL:** <https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814>\
**Category:** Artemis\
**Created:** [January 19, 2024, 12:28pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814 "2024-01-19T12:28:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mej7000](https://avatars.discourse-cdn.com/v4/letter/m/839c29/32.png) [@mej7000](https://community.sparkfun.com/u/mej7000)\
**Post date:** [January 19, 2024, 12:28pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/1 "2024-01-19T12:28:11Z")

</div>

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,

- would I be able to program an “out of the box” Ambiq Apollo3 without any issue?
   
- Are there any considerations I should be aware of?
   
- I am assuming the Artemis Apollo3 Module uses the “Apollo3 Blue” processor?

[https://ambiq.com/apollo3-blue/](https://ambiq.com/apollo3-blue/)

---

<div class="post-metadata">

**Author:** ![mej7000](https://avatars.discourse-cdn.com/v4/letter/m/839c29/32.png) [@mej7000](https://community.sparkfun.com/u/mej7000)\
**Post date:** [January 19, 2024, 4:37pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/2 "2024-01-19T16:37:43Z")

</div>

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…

---

<div class="post-metadata">

**Author:** ![PaulZC](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/paulzc/32/67_2.png) [@PaulZC](https://community.sparkfun.com/u/PaulZC)\
**Post date:** [January 22, 2024, 10:08am UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/3 "2024-01-22T10:08:27Z")

</div>

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://github.com/sparkfun/SparkFun_Artemis/tree/master/Bootloader)

[https://learn.sparkfun.com/tutorials/de … rogramming](https://learn.sparkfun.com/tutorials/designing-with-the-sparkfun-artemis/all#programming)

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

---

<div class="post-metadata">

**Author:** ![mej7000](https://avatars.discourse-cdn.com/v4/letter/m/839c29/32.png) [@mej7000](https://community.sparkfun.com/u/mej7000)\
**Post date:** [January 22, 2024, 12:25pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/4 "2024-01-22T12:25:38Z")

</div>

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](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](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!

---

<div class="post-metadata">

**Author:** ![PaulZC](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/paulzc/32/67_2.png) [@PaulZC](https://community.sparkfun.com/u/PaulZC)\
**Post date:** [January 22, 2024, 12:43pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/5 "2024-01-22T12:43:10Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mej7000](https://avatars.discourse-cdn.com/v4/letter/m/839c29/32.png) [@mej7000](https://community.sparkfun.com/u/mej7000)\
**Post date:** [January 22, 2024, 4:32pm UTC](https://community.sparkfun.com/t/artemis-apollo3-module-in-production/46814/6 "2024-01-22T16:32:46Z")

</div>

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.
