Artemis Apollo3 Module in production

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/

    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.