Direct load to RAM on 20706 not working

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

I'm trying to use ClientControl.exe to download and *.hcd file to RAM on a 20706.  I'm interfacing with the 20706 with and 4-wire FTDI cable.  The 20706 is powered by a host, but otherwise isolated from the host.

I'm getting an error regarding updating the baudrate.  With a logic analyzer, I've verified that the 20706 is not responding to the update baudrate command, whereas it is responding to the reset command.

ClientControl.exe doesn't seem to change it's behavior based on the "Upgrade to 3M baudrate" button. 

pastedImage_0.png

The 20706 has never been programmed.

Thoughts?

0 Likes
1 Solution
Anonymous
Not applicable

Fixed in WICED 6.1.  I was using 6.0.1.  Looks like there's been some improvements to the serial programming code in ClientControl:

1.png

2.png

View solution in original post

0 Likes
10 Replies
Anonymous
Not applicable

Update: ClientControl.exe does change it's behaviour based on the "Upgrade to 3M Baudrate" button, but it still issues an baudrate upgrade command.  For example, if the serial port is set to 115200, and the button is unchecked, ClientControl.exe will request to upgrade the baudrate to 115200.  This doesn't make sense, but regardless, the 20706 does not respond to the command.

Thoughts?

0 Likes
Anonymous
Not applicable

After the baudrate upgrade attempt, ClientControl also issues:

19 08 00 02 00 01 01 19 09 00 01 00 01 19 02 FF 00 00

I'm not sure what this command is

0 Likes
Anonymous
Not applicable

It almost looks like three Wiced HCI commands:

19 08 00 02 00 01 01 - Set visibility (Discoverable and Connectable)

19 09 00 01 00 01 - Set pairing mode

19 02 FF 00 00 - Misc command, get version

Again, ClientControl issues these commands after an HCI reset, upgrade baudrate command, before giving up on the download and reporting an error.

0 Likes
Anonymous
Not applicable

I also tried this with mbt.exe instead of ClientControl.exe and found the mbt.exe is also trying to change the baudrate and getting no response from the 20706.

I then recompiled mbt.exe, commenting out the call to execute_change_baudrate, and found that the download was successful.

Any explanation as to why a factory IC does not respond to change baudrate?

0 Likes
Anonymous
Not applicable

Actually download proceeds, but gets stuck sending record at 0x247fa6

Thoughts?

0 Likes
Anonymous
Not applicable

Compilation with DIRECT_LOAD=1 build gives

Patches start at                  0x000D0200 (RAM address)

Patches end at                    0x000DC520 (RAM address)

Application starts at             0x00217A38 (RAM address)

Application ends at               0x00226D44 (RAM address)

but first HCI record being written to 0x240518

mbt.exe is also loading a mindriver. Isn't that for external flash?

pastedImage_0.png

0 Likes
Anonymous
Not applicable

So my colleague tells me that my code is too big.  But I simply compiled the headset demo app with DIRECT_LOAD=1 build

Patches start at                  0x000D0200 (RAM address)

Patches end at                    0x000DC520 (RAM address)

Application starts at             0x00217A38 (RAM address)

Application ends at               0x00226D44 (RAM address)

Patch size                             49952 bytes

Application size                       62220 bytes

                                      ------

Total RAM footprint                   112172 bytes (109.5kiB)

0 Likes
Anonymous
Not applicable

in the platform makefile, there's a direct_load_base addr of 0x2404f0.  Perhaps that is affecting things????

CHIP                       := 20703

CHIP_REV                   := A2

CHIP_FLAVOR                := 20706

BASE_LOC                   ?= rom

SPAR_LOC                   ?= ram

TOOLCHAIN                  ?= Wiced

PLATFORM_NV                ?= SFLASH

PLATFORM_STORAGE_BASE_ADDR := 0xFF000000

PLATFORM_BOOTP             := $(PLATFORM_MAKE)_$(PLATFORM_NV).btp

PLATFORM_MINIDRIVER        := uart.hex

PLATFORM_CONFIGS           := $(PLATFORM_MAKE).cgs

PLATFORM_IDFILE            := CYW20706A2_IDFILE.txt

PLATFORM_BAUDRATE          := AUTO

PLATFORM_DIRECT_LOAD_BASE_ADDR := 0x2404F0

APP_PATCH_DIR              := brcm/wiced_uart

MINIDRIVER_DOWNLOAD        :=

ifdef USE_256K_SECTOR_SIZE

    CONFIG_DS_LOC_OVERRIDE := -O DLConfigVSLocation:0x80000 -O DLConfigVSLength:0x40000 -O ConfigDSLocation:0x100000

    BTP_OVERRIDE_DL        := -O DLSectorEraseMode:"Written sectors only"

endif

MINIDRIVER_DOWNLOAD    := -MINIDRIVER $(SOURCE_ROOT)Platforms/$(PLATFORM_FULL)/$(PLATFORM_MINIDRIVER)

0 Likes
Anonymous
Not applicable

The smaller hello_client app works with direct load.  Final record written to 0x216cd4

0 Likes
Anonymous
Not applicable

Fixed in WICED 6.1.  I was using 6.0.1.  Looks like there's been some improvements to the serial programming code in ClientControl:

1.png

2.png

0 Likes