SparkFun Forums 

Where electronics enthusiasts find answers.

Everything with the AmbiqSuite SDK tools and software are welcome here.
I am getting familiar with Ambiq apollo3 blue using the artemis_dk development board. I liked the approach taken with the artemis_dev_platform so I set that up to be my build environment. This will be really helpful down the road when I am ready to set up CI/CD.

Currently I'm trying to figure out how to debug with cortex-debug in visual studio. I've been using "professional" IDE's including SES, Keil and IAR for years, but it seems like VS Code+cortex-debug is a great alternative.

Since the artemis_dk includes a DAPLink interface, I installed pyocd. I had a bit of doubt at first as far as the launch configuration, but I think I have it figured out now.

I'll include it here just FYI:
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit:
"version": "0.2.0",
"configurations": [
"type": "cortex-debug",
"request": "launch",
"name": "Cortex Debug",
"cwd": "${workspaceRoot}/boards_sfe/common/examples/ble_freertos_tag", // workspaceRoot refers to the VSCode root workspace
"executable": "${workspaceRoot}/boards_sfe/common/examples/ble_freertos_tag/gcc/artemis_dk/bin/ble_freertos_tag_asb.axf",
"serverpath": "C:/Python37/Scripts/pyocd-gdbserver.exe",
"servertype": "pyocd",
"device": "AMA3B1KK-KBR",
"interface": "swd", // or "jtag" - but usually "swd"
"serialNumber": "", //if you have more than one J-Link probe add the serial number here
"runToMain": true,
"svdFile": "AmbiqSuiteSDK/pack/SVD/apollo3.svd",

One of my main points of confusion at first was where to find the elf file, but eventually I realized the axf file is elf format.


I'm getting so close to being able to debug but I hit a snag. The axf built in artemis_dev_platform has all the files starting at /app which is the root of the virtual file system for the docker container. When I start debugging it produces errors like this:

Launching server: "C:/Python37/Scripts/pyocd-gdbserver.exe" "--persist" "--port" "50000" "--telnet-port" "50001"
Launching GDB: "arm-none-eabi-gdb.exe" "-q" "--interpreter=mi2"
Reading symbols from D:\Flipperz\artemis_dev_docker\artemis_dev_platform\AmbiqSuiteSDK/boards_sfe/common/examples/ble_freertos_tag/gcc/artemis_dk/bin/ble_freertos_tag_asb.axf...
0x00023950 in vTaskStepTick (xTicksToJump=23160) at /app/AmbiqSuiteSDK/third_party/FreeRTOSv10.1.1/Source/tasks.c:2552

Is there a good trick for getting cortex-debug to get cortex-debug to find the files through a different path?


Also I'm having a problem that I supect is an issue with cortex-debug and pyOCD but wondering if anyone has seen this before:

0000729:WARNING:gdb_server:pyocd-gdbserver is deprecated; please use the new combined pyocd tool.
0000902:WARNING:mbed_board:Board ID A127 is not recognized, using generic cortex_m target.
0000902:WARNING:board:Generic 'cortex_m' target type is selected by default; is this intentional? You will be able to debug most devices, but not program flash. To set the target type use the '--target' argument or 'target_override' option. Use 'pyocd list --targets' to see available targets types.
0000902:INFO:board:Target type is cortex_m
0000933:INFO:dap:DP IDR = 0x2ba01477 (v1 rev2)
0000943:INFO:ap:AHB-AP#0 IDR = 0x24770011 (AHB-AP var1 rev2)
0000964:INFO:rom_table:AHB-AP#0 Class 0x1 ROM table #0 @ 0xe00ff000 (designer=43b part=4c4)
0000971:INFO:rom_table:[0]<e000e000:SCS-M4 class=14 designer=43b part=00c>
0000976:INFO:rom_table:[1]<e0001000:DWT class=14 designer=43b part=002>
0000981:INFO:rom_table:[2]<e0002000:FPB class=14 designer=43b part=003>
0000986:INFO:rom_table:[3]<e0000000:ITM class=14 designer=43b part=001>
0000991:INFO:rom_table:[4]<e0040000:TPIU-M4 class=9 designer=43b part=9a1 devtype=11 archid=0000 devid=ca0:0:0>
0000994:INFO:cortex_m:CPU core #0 is Cortex-M4 r0p1
0001002:INFO:cortex_m:FPU present: FPv4-SP-D16-M
0001007:INFO:dwt:4 hardware watchpoints
0001010:INFO:fpb:6 hardware breakpoints, 4 literal comparators
0001039:INFO:server:Semihost server started on port 50001 (core 0)
0001065:INFO:gdbserver:GDB server started on port 50000 (core 0)
0001149:INFO:gdbserver:One client connected!
0001202:INFO:gdbserver:Attempting to load argon
0001202:INFO:gdbserver:Attempting to load freertos
0001204:INFO:gdbserver:freertos loaded successfully
0001215:ERROR:gdbserver:Transfer failure while executing remote command 'reset halt': No ACK received
Traceback (most recent call last):
File "c:\python37\lib\site-packages\pyocd\probe\", line 286, in read_ap_result_callback
return result()
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 833, in read_reg_cb
res = transfer.get_result()
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 143, in get_result
File "c:\python37\lib\site-packages\pyocd\utility\", line 28, in _locking
return func(self, *args, **kwargs)
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 667, in flush
File "c:\python37\lib\site-packages\pyocd\utility\", line 28, in _locking
return func(self, *args, **kwargs)
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 918, in _read_packet
decoded_data = cmd.decode_data(raw_data)
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 451, in decode_data
data = self._decode_transfer_data(data)
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 358, in _decode_transfer_data
File "c:\python37\lib\site-packages\pyocd\probe\pydapaccess\", line 341, in _check_response
raise DAPAccessIntf.TransferError("No ACK received")
pyocd.probe.pydapaccess.dap_access_api.DAPAccessIntf.TransferError: No ACK received

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "c:\python37\lib\site-packages\pyocd\gdbserver\", line 1008, in handle_remote_command
File "c:\python37\lib\site-packages\pyocd\commands\", line 281, in process_command_line
File "c:\python37\lib\site-packages\pyocd\commands\", line 352, in execute_command
File "c:\python37\lib\site-packages\pyocd\commands\", line 344, in execute
File "c:\python37\lib\site-packages\pyocd\core\", line 219, in reset_and_halt
return self.selected_core.reset_and_halt(reset_type)
File "c:\python37\lib\site-packages\pyocd\coresight\", line 810, in reset_and_halt
if self.get_state() not in (Target.State.RESET, Target.State.RUNNING):
File "c:\python37\lib\site-packages\pyocd\coresight\", line 828, in get_state
dhcsr = self.read_memory(CortexM.DHCSR)
File "c:\python37\lib\site-packages\pyocd\coresight\", line 436, in read_memory
result = self.ap.read_memory(addr, transfer_size, now)
File "c:\python37\lib\site-packages\pyocd\utility\", line 28, in _locking
return func(self, *args, **kwargs)
File "c:\python37\lib\site-packages\pyocd\coresight\", line 883, in _read_memory
result = read_mem_cb()
File "c:\python37\lib\site-packages\pyocd\coresight\", line 864, in read_mem_cb
res = result_cb()
File "c:\python37\lib\site-packages\pyocd\coresight\", line 603, in read_ap_cb
result = result_cb()
File "c:\python37\lib\site-packages\pyocd\probe\", line 288, in read_ap_result_callback
six.raise_from(self._convert_exception(error), error)
File "<string>", line 3, in raise_from
pyocd.core.exceptions.TransferError: No ACK received

For some reason pyOCD is having trouble communicating via DAPLink to the AMA3B1KK-KBR, do I need to provide additional parameters to pyOCD?
 Topic permissions

You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum