I just finished populating a new board design based on a CC2541. This is a new board rev, and previously we had been using a CC2540. At first glance everything looks correct, and when I plug it into my CC debugger I get a green light and the device is correctly identified. When I try to program it I get errors from the SmartRF tool claiming that my firmware exceeds 16KB flash (I am using the 256K parts). It looks as through all reads from the device are returning full pure zeros, as the device is reporting a MAC address of 00:00:00:00:00:00, and if I dump the config page or anything else that is all I see. These results are consistent whether or not I am powering the device off the CC debugger or a battery.
I modified a version of ccflasher to work with it so I could get a look at the output:
[26.07 16:18:20:04097] main, cc-tool 0.15
[26.07 16:18:20:04097] main, command line: ./src/cc-tool --log cc2541-2.log --reset
[26.07 16:18:20:04512] usb, open device, VID: 0451h, PID: 16A2h
[26.07 16:18:20:04512] usb, set configuration 1
[26.07 16:18:20:04525] usb, claim interface 0
[26.07 16:18:20:04527] usb, get string descriptor 2, data: CC Debugger
[26.07 16:18:20:04527] programmer, request device state
[26.07 16:18:20:04527] usb, control read, request_type: C0h, request: C0h, value: 0000h, index: 0000h, count: 8
[26.07 16:18:20:04527] usb, control read, data: 41 25 CC 05 32 00 01 00
[26.07 16:18:20:04527] device, name: CC Debugger, ID: 2906, version: 05CCh, revision: 0032h
[26.07 16:18:20:04527] programmer, set debug interface speed 0
[26.07 16:18:20:04527] usb, control write, request_type: 40h, request: CFh, value: 0000h, index: 0001h, count: 0
[26.07 16:18:20:04527] programmer, connect target
[26.07 16:18:20:04527] programmer, enter debug mode
[26.07 16:18:20:04527] usb, control write, request_type: 40h, request: C5h, value: 0000h, index: 0000h, count: 0
[26.07 16:18:20:04527] usb, control write, request_type: 40h, request: C8h, value: 0001h, index: 0001h, count: 48
[26.07 16:18:20:04527] usb, control write, data: 43 43 32 35 34 31 20 20 20 20 20 20 20 20 20 20 44 49 44 3A 20 32 39 30 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
[26.07 16:18:20:04528] programmer, reset target, debug mode: 1
[26.07 16:18:20:04528] usb, control write, request_type: 40h, request: C9h, value: 0001h, index: 0000h, count: 0
[26.07 16:18:20:04539] programmer, read debug status
[26.07 16:18:20:04539] usb, bulk write, count: 2, data: 1F 34
[26.07 16:18:20:04539] usb, bulk read, count 1: data: 00
[26.07 16:18:20:04539] programmer, debug status, 00h
[26.07 16:18:20:04539] programmer, halt failed
I can see that initially I am getting data over the CC interface (usb, control read, data: 41 25 CC 05 32 00 01 00), but then CPU seems to halt after it switches into debug mode. Any thoughts?