I want to implement an automatic bootloader.
I'm using CY8C6247BZI-D54 MCU and ModusToolbox.
I was able to follow the tutorial, and modify to do it via USB here: https://cypresssemiconductorco.github.io/dfu/dfu_sdk_api_reference_manual/html/index.html#section_dfu_quick_start
but I need to push a button to run my application, or reset to run the bootloader.
In my application, I will have a computer connected via USB, and at startup I need to have a batch on the PC to send a command to check the firmware version, and if it's not the latest, to download the new firmware, all done automatically.
How can I do that? I'm thinking setting a variable in the "EEPROM" and then reset, the bootloader checks for that variable, and if it's not set jumps directly to the application or goes to the bootloading part of the code...
Is there an easier way? is there an example for ModusToolbox that implements an "automatic" bootloader (without pushing buttons or setting jumpers)?
With this approach I see one problem, what happens if the bootloadable app doesn't set that variable... the bootloader will never be called again.
What considerations do I need for initialization of the USB (once in bootloader and once in the application)
I'm using PSoC 63, running BLE dual core (Controller on CM0+, Host and Profiles on CM4). I don't use CM0+ for anything else -- the bulk of my application is running on CM4. I'm looking at the linker script cy8c6xx7_cm0plus.ld and I see:
ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x24000
which is more memory than the CM4 gets. From cy8c6xx7_cm4_dual.ld:
ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x23800
I have to wonder if the BLE Controller really needs all of that RAM. Could I move the line down to devote more RAM to CM4? Just how much RAM does the Controller on CM0+ need?
I'm working on enabling the backup domain on the PSoC 6. I followed the instructions in this post, and found that the new code generated by PSoC Creator removed a call to Cy_SysLib_ResetBackupDomain() during initialization, as well as some code to disable and enable ILO. I then found that this function's description mentions an "ILO glitch" which can occur when the PSoC is reset due to POR/BOD/XRES while the backup voltage is supplied to the system.
When I generate code with "vBackup Source" set to VDDD, this function is called, but when I generate code with "vBackup Source" set to "Dedicated supply" it is not. However, the description of this function would seem to imply that the ILO glitch it is meant to address will only occur if the system has a dedicated backup power supply connected to VBACKUP. Could anyone shed light on why this function call is necessary when there is no backup supply? Is there any harm in removing this call if VBACKUP is shorted to VDDD?
I have some question of Cypress BLE.
How fast role Switching possible?
(Central <--> Peripheral)
How fast Bt classic Audio / Video Maximum transfer support speed?
And I to be curious PSoc 4 / 6 Bluetooth through-put, Could you provide data?
I am currently using a psoc CY8C6347BZI-BLD53 to do some very high speed SPI transfers at 25MHz and have come across some interesting behavior of the SPI FIFO.
Initially I was using the Cy_SCB_SPI_Write() to fill the FIFO to 64 with uint16_t values that is triggered when the FIFO reached a value of 8. Upon further investigation with an oscilloscope there was some delay between transfers (~570ns) and a larger delay (~972ns) between them when writing to the FIFO during an interrupt using that api.
The delay between each message becomes one clock cycle consistently when using Cy_SCB_WriteTxFifo() even while writing to the FIFO which solves my timing critical problem. However, I now begin to receive the interrupt after ~30 values being transferred, which means the FIFO isn't being fully filled to the value of 64 (i'm guessing ~38) . I found that if I add a delay of ~20 cycles after each call of Cy_SCB_WriteTxFifo() the right number of data (54) can be seen transferring on the oscilloscope before the next interrupt occurs.
I am reaching out for some help with trying to eliminate the added delay cycles after each Cy_SCB_WriteTxFifo, or at least to understand the root cause of why it work when they're there. I have looked into the TRM for the architecture, but they do not go into detail about FIFO operation. I don't have a usb right now so I can't post images from my oscilloscope but if you need them to understand I should have one by this Monday.
Your help is greatly appreciated!Show Less
We have a CY8CKIT-064S0S2-4343W kit that we're trying to get up and running with the demonstration code that is generated from AWS. I'm following the getting started guide located here https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_cypress_psoc64.html and have successfully done everything up to the point of getting working code.
I've managed to build and flash the provided demo application, and the board successfully boots but then halts shortly after with "ERROR: stack overflow" — the attached screenshot shows what is happening. This happened with no WiFi credentials set, I then tried to set WiFi credentials and the error still happened.
Any help in resolving this issue would be appreciated!Show Less
I want to know the CPU current of the PSoC61 series, but the datasheet only has information about dual-core device (why?).
Please tell me the CPU current specifications for single-core products.
I would like to be able to interact with bleuio device (central) but still maintain the capability of interacting with the standard service provided for cypress devices. When I scan the parameters for the bleuio/dialog device with my smart phone, this is what I get:
For me to be able to interact with this central device, is it as simple as assigning service uuid as a secondary;
and then correspondingly setting read and write characteristics (of which I do not see any secondary fields)
Or do I add another custom service (say Server_UART2) on top of the original and enter in the respective values?
Alright, tested the latter case and that does not seem to work, and based upon description a secondary service think this will not work as well. What am I missing to be able to communicate with this other device? Thanks