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.

AM2434: Initial programming of QSPI NOR Flash options

Part Number: AM2434
Other Parts Discussed in Thread: UNIFLASH

Hi,

We started product development with an AM2434 and are using custom electronics from our development partner. The board has an SD card that we currently use for the NULL SBL. 
In the next step, we will switch to our own development board, which will no longer have an SD card. Apart from direct access via a flash programmer, what options are there for copying a bootable image/SBL to the external QSPI flash? 

  • Is this possible with JTAG, as with a simple MCU with integrated flash?
  • If it is possible with JTAG, which adapter is required? We are currently using XDS200 debug adapters. Are there any advantages (higher speed) with an XDS560?
  • What are the requirements regarding the flash (command set, timing, etc.)?
  • Is there a description of the workflow for how this is done?

Thanks and best regards,
Mathias

  • Hi Mathias,

    You can check these flashing utilities supported by MCU+SDK: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_02_00_24/exports/docs/api_guide_am243x/TOOLS_FLASH.html 

    Best Regards,
    Meet.

  • Hi,

    Meanwhile you check for the tools, could you share the QSPI Flash Part number which the customer is planning to use on their custom DUT?

    Regards,

    Vaibhav

  • Hi Meet,

    Thank you for the link. As far as I understand the process, accessing the external QSPI flash is possible in case the device can be booted in DEV mode, right? And is it possible to just load a NUL SBL into the first flash section without application or XIP image?

    In the SDK example an older CCS is used. Is the process the same with CCS 20.x?

    Best regards,
    Mathias

  • Hi Vaibhav,

    We plan to use one of the following flash devices:

    • IS25WJ064
    • GD25LQ64E
    • W25Q64JW

    They're all 64Mbit / 1.8V types and according to our own HW dev team compatible with the AM2434. Do you have any concerns?

    Best regards,
    Mathias

  • Hi Mathia,

    I have the configurations of Winbond and the ISSI Flash which you mentioned. These can be tried on your custom DUT.

    Let me know which one you would like to go ahead with, I can then share the configurations accordingly.

    For you to test the configurations out, I would like you to create another E2E stating the flash part number and the configurations required.

    Looking forward to your response.

    Thanks,

    Vaibhav

  • Thank you for the link. As far as I understand the process, accessing the external QSPI flash is possible in case the device can be booted in DEV mode, right? And is it possible to just load a NUL SBL into the first flash section without application or XIP image?

    This is correct, and yes you can just load SBL NULL if you don't want to load any application.

    In the SDK example an older CCS is used. Is the process the same with CCS 20.x?

    The process differs a bit for newer CCS versions, for initializing the SoC, LoadJSFiIe command is no longer supported in CCS 20.x versions, instead of this you should directly load sciclient_ccs_init.release.out from CCS in the DEV boot mode, also refer to this for a change in flashing procedure:  [FAQ] AM64/AM243: Facing an issue with CCS when trying to flash an image using SBL JTAG UNIFLASH  

  • Thanks for the tips. I created a launch configuration (see launch.json excerpt below) to load the .out file mentioned. Unfortunately, I haven't been able to try it on the target board yet. But is this basically the right way to go? If it works, do I have to disconnect the debugger after loading and reconnect with Uniflash?

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "AM2434 Inital programming",
                "type": "ccs-debug",
                "request": "launch",
                "targetConfig": "${targetConfigFolder}\\AM2434_ALV.ccxml",
                "connections": [
                    {
                        "name": "Texas Instruments XDS2xx USB Debug Probe",
                        "cores":[
                            {
                                "name": "MAIN_Cortex_R5_0_0",
                                "program": "${SDK_INSTALL_PATH}\\mcu_plus_sdk\\tools\\ccs_load\\am243x\\sciclient_ccs_init.release.out",
                                "autoConnect": true
                            }
                        ]
                    }
                ]
            }
        ]
    }   

  • Hi Vaibhav,

    We want to go with the IS25WJ064 in a first step but at the end the so called solution shall be compatible with all mentioned devices. What do you mean with "I would like you to create another E2E stating the flash part number and the configurations required."? Shall I open another forum entry for this topic?

    Best regards,
    Mathias

  • Hi,

    The assigned expert is out of office today. Please expect a reply within the next 2/3 days.

    Regards,
    Ritapravo

  • Thanks for the tips. I created a launch configuration (see launch.json excerpt below) to load the .out file mentioned. Unfortunately, I haven't been able to try it on the target board yet. But is this basically the right way to go? If it works, do I have to disconnect the debugger after loading and reconnect with Uniflash?

    This is right, but you can use the JTAG UNIFLASH example available in the SDK and load it on the R5 core once the initialization is done: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_02_00_24/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_SBL_JTAG_UNIFLASH.html 

  • I think I still have a fundamental problem understanding the programming process. Unfortunately, the link doesn't help me because, to be honest, I have no idea what to do. I found the example folder in the SDK, but do I have to rebuild the project first?

    It would be helpful if someone could explain the necessary steps to me so that I can understand the general process.

    Unfortunately, I don't have an official board from TI here at the moment. I'll try to get one as soon as possible. Then I'll try it out with this board based on CCS 20.4. We can't and don't want to use the old CCS versions because they don't run in a Dev Container... and Eclipse (not Theia) is the worst IDE the world has ever seen.

  • The eval board of our develoopment partner company has an S25HS512TFABHM010 flash from Infineon. What changes are necessary, if any, to access this device?

  • 1. To load anything from CCS to R5 core or any other core, you first need to initialize the SoC. There are few ways to initialize the SoC, as you want to perform flashing via JTAG, you can use SOC Initialization Using CCS Scripting: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_02_00_24/exports/docs/api_guide_am243x/EVM_SETUP_PAGE.html#autotoc_md39 

    The link shared by me would work for older CCS versions but it doesn't work for newer CCS versions like CCS 20.4 as LoadJSFiIe is removed from these versions , that is why I mentioned that to initialize the SoC you will need to load sciclient_ccs_init.release.out directly from CCS, you will find this SCICLIENT_CCS_INIT in MCU+SDK itself.

    2. After this you can load the SBL JTAG UNIFLASH example for am243-lp to R5 core from CCS and follow the steps mentioned to flash your files via JTAG: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/11_02_00_24/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_SBL_JTAG_UNIFLASH.html 

    When using newer SDK version, you will face an issue with the CCS as loadRaw command is also not supported in newer CCS versions, here the FAQ I shared will be helpful:  [FAQ] AM64/AM243: Facing an issue with CCS when trying to flash an image using SBL JTAG UNIFLASH  

    The eval board of our develoopment partner company has an S25HS512TFABHM010 flash from Infineon

    The TI EVM am243-lp variant has a S25HL512T flash part and the configurations for this will not differ with the custom flash that you are using, so you can use the example as it is.

  • Hi,

    Sorry for my late answer. I'm involved in different projects and was able to take care of it earlicher. What I can do and have understood so far are the following steps.

    1. Boot the AM2434 in DEV Mode. Boot bits are
      Boot Bit 3 4 5 6 8 9
      State 1 1 1 1 0 0
    2. Start initial programming by starting debugger in CCS 20.4 (through launch.json configuation) like I mentioned in an earlier post. After that, I got the following output from CIO:



      Main_Cortex_R5_0_0 is now in HALTED state while all the other cores are DISCONNECTED. At this point the debugger ist still connected.

    3. When I now stopp depugging (to disconnect the target) and open Uniflash to load the mcu_plus_sdk\examples\drivers\boot\sbl_jtag_uniflash\am243x-evm\r5fss0-0_nortos\ti-arm-clang\sbl_jtag_uniflash.release.hs_fs.tiimage I get the following output:

    What am I doing wrong or what have I forgotten?


  • When I now stopp depugging (to disconnect the target) and open Uniflash to load the mcu_plus_sdk\examples\drivers\boot\sbl_jtag_uniflash\am243x-evm\r5fss0-0_nortos\ti-arm-clang\sbl_jtag_uniflash.release.hs_fs.tiimage I get the following output:

    Are you loading the tiimage or the .out file? You need to load .out file from CCS. Also, use the JTAG UNIFLASH example for am243-lp and not am243-evm, as I mentioned previously, am243-lp variant has a S25HL512T flash part and the configurations for this will not differ with the custom flash that you are using, but the configuration for am243-evm will differ and might cause some issue.

  • Thanks for the hint. Due to holidays and changes in the DevOps environment, I haven't been able to try it out yet. I'll do that as soon as possible and get back to you.