PSoC™ 6 Forum Discussions
Is there a way to dump external flash memory on CY8PROTO-062-4343W dev kit with opencd? (may be with another tool)
For example I can dump internal flash, but I see read error in case of access to external flash:
/ModusToolbox/tools_2.2/openocd/bin/openocd -s /ModusToolbox/tools_2.2/openocd/scripts -s libs/TARGET_CY8CPROTO-062-4343W/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource -c "source [find interface/kitprog3.cfg]; source [find target/psoc6_2m.cfg]; psoc6 allow_efuse_program off; psoc6 sflash_restrictions 1;" -c "init; flash banks ; detect_smif; flash read_bank psoc6_smif0_cm0 flash_dump.bin 0x0 0x80000; shutdown;"
Open On-Chip Debugger 0.10.0+dev-4.1.0.1058 (2020-08-11-11:50)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
adapter srst delay: 25
adapter srst pulse_width: 25
** Auto-acquire enabled, use "set ENABLE_ACQUIRE 0" to disable
cortex_m reset_config sysresetreq
cortex_m reset_config sysresetreq
Info : Using CMSIS loader 'CY8C6xxA_SMIF' for bank 'psoc6_smif0_cm0' (footprint 14672 bytes)
Warn : SFlash programming allowed for regions: USER, TOC, KEY
Info : CMSIS-DAP: SWD Supported
Info : CMSIS-DAP: FW Version = 2.0.0
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : KitProg3: FW version: 1.1.158
Info : KitProg3: Pipelined transfers disabled, please update the firmware
Info : VTarget = 3.283 V
Info : kitprog3: acquiring the device...
Info : clock speed 2000 kHz
Info : SWD DPIDR 0x6ba02477
Info : psoc6.cpu.cm0: hardware has 4 breakpoints, 2 watchpoints
***************************************
** Silicon: 0xE453, Family: 0x102, Rev.: 0x12 (A1)
** Detected Device: CY8C624ABZI-S2D44
** Detected Main Flash size, kb: 2048
** Flash Boot version: 3.1.0.378
** SFlash version: 292144
** Chip Protection: NORMAL
***************************************
Info : psoc6.cpu.cm4: hardware has 6 breakpoints, 4 watchpoints
Info : starting gdb server for psoc6.cpu.cm0 on 3333
Info : Listening on port 3333 for gdb connections
Info : starting gdb server for psoc6.cpu.cm4 on 3334
Info : Listening on port 3334 for gdb connections
#0 : psoc6_main_cm0 (psoc6_2m) at 0x10000000, size 0x00000000, buswidth 0, chipwidth 0
#1 : psoc6_work_cm0 (psoc6_2m) at 0x14000000, size 0x00000000, buswidth 0, chipwidth 0
#2 : psoc6_super_cm0 (psoc6_2m) at 0x16000000, size 0x00000000, buswidth 0, chipwidth 0
#3 : psoc6_efuse_cm0 (psoc6_2m_efuse) at 0x90700000, size 0x00000400, buswidth 1, chipwidth 1
#4 : psoc6_main_cm4 (virtual) at 0x10000000, size 0x00000000, buswidth 0, chipwidth 0
#5 : psoc6_work_cm4 (virtual) at 0x14000000, size 0x00000000, buswidth 0, chipwidth 0
#6 : psoc6_super_cm4 (virtual) at 0x16000000, size 0x00000000, buswidth 0, chipwidth 0
#7 : psoc6_efuse_cm4 (virtual) at 0x90700000, size 0x00000400, buswidth 1, chipwidth 1
#8 : psoc6_smif0_cm0 (cmsis_flash) at 0x18000000, size 0x04000000, buswidth 4, chipwidth 4
#9 : psoc6_smif0_cm4 (virtual) at 0x18000000, size 0x04000000, buswidth 0, chipwidth 0
### SMIF region #0 - Erase Size: 0x40000, Program Size: 0x200
set SMIF_BANKS {1 {addr 0x18000000 size 0x04000000 psize 0x200 esize 0x40000}}
Info : SWD DPIDR 0x6ba02477
Error: Failed to read memory at 0x18000000
Error: error reading to flash at address 0x18000000 at offset 0x00000000
Error: Read error
Info : psoc6.dap: powering down debug domain...
I wish to configure an equal number of Tx and Rx pins in the matrix button widget in PSoC creator IDE to read data from row and column sensors but it only lets me configure 5 Tx and 5 Rx pins for a total of 25 sensors. What options do I have if I want to configure Tx and Rx pins for a larger matrix than 5x5?
Show LessFor PSoC6, Is there a way to protect flash from reading via DAP, and i can reprogram or erase the chip at the same time?
Hi,
I am trying to set time (Unix timestamp) to RTC.
I open the project "AnyCloud_MQTT_Client" and can find library for RTC at "mtb_shared\mtb-pdl-cat1\release-v2.2.0\drivers\include\cy_rtc.h".
But there doesn't have function for me to set time by Unix timestamp.
Hi Guys,
I cannot understand why I am not able to input into the board the signal at PIN_Vibration (see attached circuit).
If all was working Pin_Debug_1 would be following (inverted) Pin_Vibration.
Show Less
I have been working with a PSoC6 CY8PROTO-063-BLE board, and have a functioning program.
I have now moved to our target hardware, which uses exactly, precisely the SAME (as in SAME) PSoC 6 MCU.
I have tried repeatedly to program it, using PSoC Creator 4.4 (running on Windoze 7), with a MiniProg4 HW05 Firmware 2.10.878, which I have used to program other target boards.
The programmer software must be talking to the MCU, because it brings up the Target Selection dialog, so I can decide which of the two CPUs I want to debug. Once I select the CPU, it attempts to program the MCU, and the result is always (as in all the time, every time I try this) this error message:
There was an error while programming the device: PSoC Programmer reported error (100 - EraseAll API returned: Error code 0x0073F264: Unknown SROM status code)
There are few options for the Port Configuration in the MiniProg4: 3.3V and SWD, acquire mode can be either Reset or Power Cycle, I have tried both.
The connection from the MiniProg4 to the target PCB is a TagConnect cable, about 6" (15cm) long. It is right next to (as in immediately next to, as close as it could be without drilling holes in the module, to the MCU module.
I do not see anything here that resembles a solution, just messages that imply a hope that the problem will magically go away if you keep asking the same questions. Please see the attached screen captures.
I am already very disillusioned with PSoC6. I am now dead-in-the-water.
Hi,
In my app, I was enable a rtc alarm interrupt with every second, and it was working. But when I want to disable this interrupt, it working in the end, but there was an unexpected interrupt happened.
diable interrupt method:
bk = Cy_RTC_WriteEnable(CY_RTC_WRITE_ENABLED);
BACKUP_ALM1_DATE=0;
Cy_RTC_WriteEnable(CY_RTC_WRITE_DISABLED);
Show Less
Hi,
I notice a current increase from 70 mA to 130 mA on the 5V supply side when the user button is pressed on the CY8CPROTO-062-4343W prototyping board.
Is this normal behavior and what is the reason for this?
The current through R24 / R22 should only be 0.33 mA while the button is pressed.
This was measured while running the Hello_World example from project-creator (with LED off). If user button is pressed while reset button is also pressed the current rises from 63 mA to 123 mA, so still an 60 mA increase while user button is pressed.
Thanks for advice and best regards,
TG19
Hello! I'm currently developing application using Psoc 63 and part of it requires storing last n scan results in array inside CY_BLE_EVT_GAPC_SCAN_PROGRESS_RESULT event for further processing. Part of code so far:
void StackEventHandler(uint32 event, void *eventParam)
{
cy_stc_ble_gapc_adv_report_param_t * advReport;
cy_stc_ble_gapc_adv_report_param_t * advReport_arr[10]; //Can store 10 devices adv data
uint8_t scanState = Cy_BLE_GetScanState();
switch (event)
{
/* This event is received when the BLE stack is initialized and turned ON.*/
case CY_BLE_EVT_STACK_ON:
{
printf("CY_BLE_EVT_STACK_ON \r\n");
Cy_BLE_GAPC_StartScan(CY_BLE_SCANNING_FAST,CY_BLE_OBSERVER_CONFIGURATION_0_INDEX);
break;
}
case CY_BLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
/* scan progress result event occurs
* when it receives any advertisiment packet
* or scan response packet from peer device*/
advReport = (cy_stc_ble_gapc_adv_report_param_t *)eventParam;
advReport_arr[i] = (cy_stc_ble_gapc_adv_report_param_t *)eventParam;
printf("i %i \n",i);
printf("CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:\r\n");
/* PEER Device address type */
printf("peerBdAddr: %2.2x%2.2x%2.2x%2.2x%2.2x%2.2x \r\n",
advReport->peerBdAddr[5u], advReport->peerBdAddr[4u],
advReport->peerBdAddr[3u], advReport->peerBdAddr[2u],
advReport->peerBdAddr[1u], advReport->peerBdAddr[0u]);
if (i == 10){
for (int k = 0; k<10; k++){
printf("i = %ipeerBdAddr: %2.2x%2.2x%2.2x%2.2x%2.2x%2.2x \r\n",k,
advReport_arr[k]->peerBdAddr[5u], advReport_arr[k]->peerBdAddr[4u],
advReport_arr[k]->peerBdAddr[3u], advReport_arr[k]->peerBdAddr[2u],
advReport_arr[k]->peerBdAddr[1u], advReport_arr[k]->peerBdAddr[0u]);
}
i=0;
}
printf("_______________\n");
i++;
break;
I have defined array cy_stc_ble_gapc_adv_report_param_t * advReport_arr[10] and my understanding is that every time scan progress result event occurs I store result in advReport_arr[i] = (cy_stc_ble_gapc_adv_report_param_t *)eventParam;
after event is complete I increment i. Unfortunately this outputs:
_______________
i 1
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 71f23d004fdb
_______________
i 2
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 7d4ce49f4e4e
_______________
i 3
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 0bbf76ef24ac
_______________
i 4
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 04602584dce3
_______________
i 5
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: bc7e8ba0990f
_______________
i 6
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 71f23d004fdb
_______________
i 7
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 04602584dce3
_______________
i 8
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 7d4ce49f4e4e
_______________
i 9
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: 0bbf76ef24ac
_______________
i 10
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT:
peerBdAddr: d0d0030e8f4d
i = 0peerBdAddr: d0d0030e8f4d
i = 1peerBdAddr: d0d0030e8f4d
i = 2peerBdAddr: d0d0030e8f4d
i = 3peerBdAddr: d0d0030e8f4d
i = 4peerBdAddr: d0d0030e8f4d
i = 5peerBdAddr: d0d0030e8f4d
i = 6peerBdAddr: d0d0030e8f4d
i = 7peerBdAddr: d0d0030e8f4d
i = 8peerBdAddr: d0d0030e8f4d
i = 9peerBdAddr: d0d0030e8f4d
I'm getting different advertisement data every CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT, but when i reaches 10 I print entire array but it turns out only last (i=10) peerBdAddr is stored in all elements of array.
What is problem with my code and what should I do to see last 10 devices when I print advReport_arr ?
Thanks!
Show LessHi,
I am wondering:
1. What is the difference between CYS0644A an CYB044A models?
2. Is there any development boards available for these devises?
Best regards,
Michael
Show Less