Unfortunately, the HCI UART is not available for application use.
Essentially, with regards to I2C on boot, if VDDIO is present on SDA during boot up, then the firmware bypasses the step where it looks to the EEPROM for a valid image and goes directly into programming mode (Re: How can BCM20732S boot from ROM?)
However, the previous entries in this post seem to imply that you can also GND the SDA pin and see the same behavior: Re: Re: How can BCM20732S boot from ROM?
Connecting SDA to Vdd/Vio to recover is probably not optimal for the following reason provided to me by one of the senior firmware engineers.
SCL and SDA are both open-drain configuration and the pull-ups pull the signal high while the HW drives it low (never drives high, but floats the output pad leaving the pull-up to pull the line high). If you put a scope to either of these lines on the board when the firmware accesses these, you will see that high to low transitions will be very sharp while low to high transitions will be pretty slow due to the intrinsic RC.
If you connect SCL/SDA to Vdd, then when the HW block drives SDA low, there will be a direct short (though momentary) between Vdd and GND, which is not ideal (even if the recovery works fine). This will happen pretty early during boot because the ROM always uses 0xA0 as the slave address of the EEPROM and you can see that there are repeated 0s in this sequence (and the shorts) which could do bad things to the supply or the chip.
Shorting to GND on the other hand, is safer because that is what happens when there is a 0 bit on the bus and there is a 10K pull-up which will limit the current to something within the max ratings of all components on this line.
What is the purpose of forcing a ROM boot by preventing the module from reading the EEPROM ?
It seems to do exactly the same thing than forcing programming mode by forcing the HCI UART RX pin high during the reset.
Is the module "more" in recovery mode if both methods are applied at the same time ?
2 of 2 people found this helpful
When you force a ROM boot, patches and app are not loaded and initialized. But when you put the device in download mode by driving HCI RXd high, it ill still load and initialize all patches, and invoke the APPLICATION_INIT() function (but will not init the stack or the app by calling appliction_create). So there is a difference in the boot sequence.
That is a very clear answer.