PSoC™ Creator & Designer Forum Discussions
I'm working on a Bootloader project using PSoC Creator 4.4.
I have a unique workspace for both the bootloader and bootloadable projects.
If I change the workspace configuration from "Debug" to "Release" and viceversa, then the two projects are compiled with that configuration, but...
.... I noted that the "Bootloadable Dependencies" don't automatically adapt to the actual configuration and there is need of manual editing every time.
I tried using a path with variable expansion in the same way as used in "Build Settings" for "Output Directory" of compiler:
${ProjectDir}\${ProcessorType}\${Platform}\${Config}
Unfortunately this doesn't work because the variable expansion is not applied by the building process.
Is there another way?
Is it possible to file an enhancement request in order to support this functionality?
Thanks and Regards,
Giuliano
Show LessHi all.
I have a project with BLE v3.66 component built in and I would like to update it to v4.2.
I used automatic update component and the .cysch file already shows the Bluetooth Smart 4.2 symbol.
Is there a way to automatically go from 3.66 to 4.2?
Thanks,
Best regards.
Show LessHi All,
I'm working with Creator 4.4 on a bootloader project for PSoC4 (component Bootloader_v1_60)
I experimented that enabling LTO (Link Time Optimization) on bootloader breaks its functionality.
I've done that to save flash space, but BootloaderHost gives error: "The flash row is not valid for the selected array".
I have known this problem since PSoC Creator 3.1.
This time I've spent quite some effort in searching for solutions and directly debugging the code.
I've finally found the reason and a solution that I want to share.
The reason is that one of LTO optimizations is a global constant propagation across all the linked objects.
In case of bootloader, the bad effect is the removal of pointers variables "Bootloader_1_SizeBytesAccess" and "Bootloader_1_ChecksumAccess", preventing the usage of the correct values for "SizeBytes" and "Checksum".
GCC LTO forced constants because it doesn't know that the values are overwritten by the toolchain directly into HEX file.
Because of this the host command "REPORT_SIZE" always gets "startRow=0x0200", causing the error in BootloaderHost, as the Flash appears already full.
As effective workaround I modified Bootloader_1.h as follows:
//!extern const uint8 CYCODE Bootloader_1_Checksum;
//!extern const uint8 CYCODE *Bootloader_1_ChecksumAccess;
extern const uint8 CYCODE __attribute__((externally_visible)) Bootloader_1_Checksum;
extern const uint8 CYCODE __attribute__((externally_visible)) *Bootloader_1_ChecksumAccess;
//!extern const uint32 CYCODE Bootloader_1_SizeBytes;
//!extern const uint32 CYCODE *Bootloader_1_SizeBytesAccess;
extern const uint32 CYCODE __attribute__((externally_visible)) Bootloader_1_SizeBytes;
extern const uint32 CYCODE __attribute__((externally_visible)) *Bootloader_1_SizeBytesAccess;
The GCC attribute "externally_visible" correctly prevents the optimization on these symbols.
I tried also the usage of attribute "used", but without success because it is skipped by compiler.
With the above fix I was able to test a working bootloader and save 768 bytes of flash (-16%) thanks to LTO.
I hope this could be of interest to someone.
I suggest to file an enhancement request so that this fix could be included in a future revision of Bootloader component.
Regards,
Giuliano
Show Less
Hi to all,
I wanted to get a feeling for the CYPD5126 and the PSoC Creator 4.4. so I used the sample code as template for a new project. However,
- there is an orphanded definition "const dpm_status_t *dpm_stat = dpm_get_info(port);" in app.c/app_ccgx_supply_change_cb which generates an error.
- once it's just removed the post-build.bat has a plethora of errors: it tries to copy non-existent files (the backup firmware, which isn't compiled) and calls cyelftool.exe without any path to the program -which fails of course.
- once I added the absolute path to cyelftool this tool in turn wanted to access nonexistent files as well.
and so on.
Did anybody suceed in using the template? If so, how?
The final goal of the excercise would be to take a CYPD5126 and modify it's software so that it can control a USB3.0/DP muxer TUSB1046A from Ti to get a working USB3.0/DP alternate mode USB-C port.
Greetings and thanks for any replies.
Show LessInformation on the use of the ADC range/limit interrupt is pretty sparse for PSOC4.2 BLE. Does anyone know how to:
1. Create an interrupt handler that functions e.g reads and clears the appropriate range registers.
2. Initialise the interrupt handler e.g ...startEx(range_handler) or some other mechanism?
Thanks,
Dave
Show LessUsing PSoC Creator 4.2 for the PSoC 5. I am monitoring a thermoelectric cooler (TEC) controller that reports both positive and negative currents and voltages. As long as everything is positive I'm ok. I'm taking an ascii string representation of hex numbers and converting it to a long that is stored in a uint32. If I get a negative number and apply the following, I always get 0x7FFFFFFF.
h2 is a global uint32 (hex 2 byte)
h2 = strtol(cbuf, (char**)NULL, 16); // create the uint32 from the payload
I'm sure there is an easy way to do this without having to write a bunch of low level code to sort the sign bit, exponent and mantissa. Should I cast h2 as float and use atof to convert it? Somebody has surely done this.
Thank you,
Nick
Show Less
Hi Cypress team,
I use the example project below in PSOC4:
https://github.com/cypresssemiconductorco/PSoC-4-BLE/tree/master/100_Projects_in_100_Days/Day015_Bonding
I made following modifications:
TopDesign > BLEcomponent > GapSettings>Security :
Security level: set to Unauthenticated pairing with encryption
I/O capability changed: set to No Input No Output
With those setting I am having following problem:
When connecting from an Android smart device the pairing pop up appears twice on the Android equipment and I have to validate twice that I accept the pairing.
Please let me know if you have any clue on how to solve this issue.
Thank you,
Regards,
Marlene
hi,
i was about to start a new project which will have several ISR and main loop,
what i the correct way to share an array of data? how can i pass the values from one array to the other?
i understand that using global is not wise since one ISR can write while the main reads from it....( i don't want to disable interrupts just to read a value).
how can i solve that?
thanks for your help.
Show Less1. Needed bring up continuous integration to the project for CY8CKIT-042-BLE-A:
- starting building firmware on pipeline
- creating build artifacts
With this one there is no any problems if the system based on gcc compiler with usual includes and libraries.
But PSoC creator generates headers so it can not be run without PSoC creator.
What you can suggest to do?
2. Can you describe in addition your ideas about:
- why you create PSoC Creator with such environment which blocks use it on linux and with famous build system like make?
- when you created your project file what do you think about merging changes between several developers in one project?
PS:
You have done very big work to block usage of them, you have realized custom very very very constrained build system.
I think you know what you want to reach but may be forgot to describe it, so give me a document with that description.
I expect document something like that:
We are very powerful team and we have created revolution of build systems. Imagine that you have not ability to control of
building your big project(divided by libraries and relations between of them). We have reach it with introduction special handwritten IDE with very poor options:
- You will not have an ability to merge changes between several developers(spend your time and your money more and more).
- You will not have an ability to use any another system(linux or macOS) because we want you to pay Microsoft for their Windows operating system.
- Also we know that there is computers in the world with ARM processors, so we decide reject it because we know what we do, trust us.
- We know that there is C++ language and it better it we know that with special options to the compiler it costs nothing BUT we will not provide even text coloring in our editor. Be doubt that cpp extention will not be colored because we reject you to use cpp.
- We know more than developers of gcc that is why we think so and do this strange things.
- We more smarter than create our own compiler but maybe we will just broke normal usage of gcc and it will be our big goal...
Show LessIn PSoC Creator, is there any way to make a pop-up alert or sound alert when build is complete? Then I can do other things while I wait and don't have to keep "Check if the build is complete" in the back of my mind.
Show Less