This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LP-EM-CC2745R10-Q1: CC2745R10-Q1

Part Number: LP-EM-CC2745R10-Q1
Other Parts Discussed in Thread: CC2745R10-Q1, SYSCONFIG

Tool/software:

I created the bootloader code for the CC2745R10-Q1 on the TI development board, and it is working fine. However, when I flashed the same code on the custom development board, it entered into HAL_ASSERT_SPINLOCK.

  • Hello,

    What SDK are you on? 
    Have you attached the debugger? If so, can you provide a call stack?

    I’ll need more information to support this issue, so please provide any additional information that may help.

    Best,

    Nima Behmanesh

  • We are working for the first time on the TI CC2745R10-Q1 controller and need some guidance regarding flash memory and FreeRTOS integration. Specifically, we want to understand the correct way to write data into code flash at a specific address from within firmware. Should we use TI drivers such as NVS, or are there recommended low-level APIs/examples available for controlled erase, read, and write operations to code flash? This is important for implementing our custom bootloader and storing application-related data.

    In addition, while integrating FreeRTOS with our bootloader and application, we need clarification on task stack management. What are the best practices to configure the stack size of each FreeRTOS task, and how can we detect and handle stack overflow at runtime? Are there any specific settings in CCS or SysConfig that must be enabled to allow proper stack monitoring? We want to ensure reliable task execution and catch stack overflow issues early in development.

    Finally, we would like to know if the controller supports using two flash banks simultaneously — for example, running code from Bank 0 while performing an update on Bank 1. If yes, what are the recommended best practices to configure this? Additionally, we are exploring how to configure and use data flash in CCS and SysConfig for storing boot flags, diagnostic information, and rollback states. Any references, examples, or guidelines would be very helpful for us to move forward.

  • Hello Enagandula,

    Operating in Code Flash

    Yes, it is recommended that you use NVS for modifying any data or operations stored in code flash memory. This page provides more detailed information about the flash memory structure and drivers used to access and modify code and data stored: Flash — SimpleLinkTm Low Power F3 SDK BLE5-Stack User's Guide 3.03.04.00 documentation.

    For larger data, it is recommended that applications use NVS area because it is larger and the NVOCMP automatically handles memory management and clearing inactive data and pages. OSAL SNV APIs are useful for the flash memory interactions, and must be ICall enabled. If you opent he Sysconfig file, OSAL_SNV will already be predefined. From there the user can custom define their desired specific address in Flash memory to store their data. 

    Task Stack Management

    There are two functions that can help configure/monitor stack size of each FreeRTOS task. Tasks created using xTaskCreate() will automatically allocate required amount of RAM from the FreeRTOS heap. Additionally, uses can use the xTaskCreatStatic() function to specify RAM allocation, but this gets statically allocated at run time. 

    Additional links for support: Tasks — SimpleLinkTm Low Power F3 SDK BLE5-Stack User's Guide 3.03.04.00 documentation and Static Vs Dynamic Memory Allocation - FreeRTOSTm

    Simultaneous Flash Banks

    Yes, the controller supports using two flash banks simultaneously. We currently do not have any examples on how to implement this specifically.

    Thanks,

    Eshaan