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.

AM263P4-Q1: Queries related to microcontroller features

Part Number: AM263P4-Q1
Other Parts Discussed in Thread: UNIFLASH, CSD

Tool/software:

Please provide your answers for the following queries.

  1. ECC

    1. Will the ECC bits are enabled by RBL development boot mode(debug)?
    2. What is the behavior when ECC fails when RBL is running?
    3. During a data abort exception, how can one differentiate between a double-bit error and an inject-only mode trigger?
    4. Which status flag will get set when 2bit ECC error is injected in TCM memory? 
  2. PBIST

    1. As per your reply failures like certificate validation or SBL integrity check failures or PBIST failure on the MSS ROM are available in logger. Apart from these failures RBL may be performing other tests as well. Kindly share the complete list of failures that can be detected by the RBL.
    2. Can our customized SBL be used to test TCMA and TCMB memory without using PBIST module?
    3. Please explain in detail how to take care of the below scenario under section 13.6.6.3.
      R5SS VIM Memories – Since ISR is stored in VIM memories, if VIM memories are to be tested, polling on interrupt line should be done and not ISR execution.
  3. OSPI (8S) and xSPI (8D), eXecute-In-Place (XIP)

    1. What is XIP (Execute In Place), and how exactly does it work?
    2. How does XIP execute instructions step by step? Are any Flash APIs required?
    3. What is the expected execution speed in XIP mode? For example, if the CPU runs at 400 MHz, will execution performance be compromised?
    4. Since code typically contains multiple segments, which segments remain in Flash during XIP, and which segments are copied to RAM before execution (will data segment be moved to RAM while executing the code)?
    5. What exactly is demonstrated in the XIP example code provided in the SDK?
    6. What are FSS region_0 (0x6000_0000) and FSS region_1 (0x8000_0000), and why are they designated as boot space (TRM page 1506)? What does "address remappable" mean in this context?
    7. Is the MCELF XIP final image encrypted? What is x509 certificate? If yes, how is encryption handled, and what is the role of x509 certificates?
    8. Is the OTFA (On-The-Fly Authentication) authenticator required in the XIP flow?
    9. Is it necessary to implement code to read the SFDP (Serial Flash Discoverable Parameters) header structure, or is it handled automatically by hardware/software?
    10. Once XIP is configured, will code execution happen automatically, or do we need to implement additional logic to execute instruction by instruction?
    11. Can the Boot DIP switches be hardwired to xSPI mode? If so, can Uniflash still update/flash the image in xSPI mode without changing DIP switches?
    12. How can we flash multiple images on the same core using Uniflash?
    13. We are working on custom SBL_xSPI. While developing a custom SBL_xSPI, what key considerations should we keep in mind?
  4. CPSW

    1. How the CPDMA, Host port and MAC ports are connected ?
    2. To Host and From Host terms are confusing, Does To Host mean Transmit ?
    3. TI documentation has a lot of typo errors and important driver registers are missing. E.g., MAC Port control registers for Port 1 and Port 2 are missing in AM263x Register Addendum (Rev E). I have raised a query in TI forum and the TI representative agreed that these registers are missing, but I have not received any documentation/information on these registers yet. It has been 14 days since the query is raised, how am I suppose to implement the driver with missing registers in processor document ?
  5. MMCSD

    1. When the host sends CMD 2 to get CID register, the response it receives is 136 bits in the RSP10, RSP32, RSP54, RSP76 response registers. Since they can hold 128 bits of response bits corresponding to the 128 bits of CID register, do we need to shift 1 byte of data left to get the CID register value as per mmcsd_parse.c(Function : MMCSD_parseCIDEmmc)?.
      Same with CMD 9 to get CSD register too. When the response is not shifted left, the value received for TRAN_SPEED on CSD Bits is [103:96] is 0x32, which is 25Mhz. If the response bytes are shifted left, the values of CSD registers are not relevant.
    2. We can see the functions for MMC are implemented in the below path of TI Git 'github.com/.../mmcsd_v0.c'.
      Which version of SDK can we install for the latest files for MMC? Also need a working example project for MMC.
  • Hi DeviPrasad,

    I highly encourage to create separate threads for queries on each topic you have, how ever I will answer first level here.

    • Will the ECC bits are enabled by RBL development boot mode(debug)?
    • What is the behavior when ECC fails when RBL is running?
    • During a data abort exception, how can one differentiate between a double-bit error and an inject-only mode trigger?
    • Which status flag will get set when 2bit ECC error is injected in TCM memory? 

    For this If I understand correctly you would like understand how the ROM handles the memory errors. For this please refer to Initialization Chapter in TRM for more details.

    In summary, while booting the image integrity is checked and if there are any aborts or any exceptions/fails then the  boot fails. There is Watchdog in HSM and that is triggered.  

    • As per your reply failures like certificate validation or SBL integrity check failures or PBIST failure on the MSS ROM are available in logger. Apart from these failures RBL may be performing other tests as well. Kindly share the complete list of failures that can be detected by the RBL.
    • Can our customized SBL be used to test TCMA and TCMB memory without using PBIST module?
    • Please explain in detail how to take care of the below scenario under section 13.6.6.3.
      R5SS VIM Memories – Since ISR is stored in VIM memories, if VIM memories are to be tested, polling on interrupt line should be done and not ISR execution.

    Also as you pointed out ROM mainly supports:

    1. Certificate Verification

    2. Image Integrity

    3. Image Decryption

    of SBL and HSMRT for secure boot along with PBIST. Are you looking from security/Safety perspective ? If you need more details please reach out here: https://www.ti.com/drr/opn/AM263PX-RESTRICTED-SAFETY &  https://www.ti.com/drr/opn/AM263PX-RESTRICTED-SECURITY 

    • What is XIP (Execute In Place), and how exactly does it work?
    • How does XIP execute instructions step by step? Are any Flash APIs required?
    • What is the expected execution speed in XIP mode? For example, if the CPU runs at 400 MHz, will execution performance be compromised?
    • Since code typically contains multiple segments, which segments remain in Flash during XIP, and which segments are copied to RAM before execution (will data segment be moved to RAM while executing the code)?
    • What exactly is demonstrated in the XIP example code provided in the SDK?
    • What are FSS region_0 (0x6000_0000) and FSS region_1 (0x8000_0000), and why are they designated as boot space (TRM page 1506)? What does "address remappable" mean in this context?
    • Is the MCELF XIP final image encrypted? What is x509 certificate? If yes, how is encryption handled, and what is the role of x509 certificates?
    • Is the OTFA (On-The-Fly Authentication) authenticator required in the XIP flow?
    • Is it necessary to implement code to read the SFDP (Serial Flash Discoverable Parameters) header structure, or is it handled automatically by hardware/software?
    • Once XIP is configured, will code execution happen automatically, or do we need to implement additional logic to execute instruction by instruction?
    • Can the Boot DIP switches be hardwired to xSPI mode? If so, can Uniflash still update/flash the image in xSPI mode without changing DIP switches?
    • How can we flash multiple images on the same core using Uniflash?
    • We are working on custom SBL_xSPI. While developing a custom SBL_xSPI, what key considerations should we keep in mind?

    1. Please refer to Enabling XIP or eXecute In Place  section in https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/10_00_00_35/exports/docs/api_guide_am263px/BOOTFLOW_XIP.html

    2. CPU runs at 400MHz & the Flash on this MCU is connected on OSPI interface that runs at 133MHz. 

    3. https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/10_02_00_15/exports/docs/api_guide_am263px/OPTIFLASH.html 

    4. https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/10_02_00_15/exports/docs/api_guide_am263px/SMART_PLACEMENT.html

    5. https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/10_02_00_15/exports/docs/api_guide_am263px/MCELF_LANDING.html

    6. Having some level of changing boot modes is recommended during the development phase. And have provision for other boot mode. 

    7. On OTFA, I will confirm

    8. Yes reading SFDP is mandatory, ROM does it &  SBL should also be reading, I will double confirm.

      1. How the CPDMA, Host port and MAC ports are connected ?
      2. To Host and From Host terms are confusing, Does To Host mean Transmit ?
      3. TI documentation has a lot of typo errors and important driver registers are missing. E.g., MAC Port control registers for Port 1 and Port 2 are missing in AM263x Register Addendum (Rev E). I have raised a query in TI forum and the TI representative agreed that these registers are missing, but I have not received any documentation/information on these registers yet. It has been 14 days since the query is raised, how am I suppose to implement the driver with missing registers in processor document ?

    Please refer to Figure 13-89. CPSW Functional Block Diagram and  section 13.2.1.4.2 CPSW Ports. On #3 apologies if that is not addressed, will check internally and update.

    • When the host sends CMD 2 to get CID register, the response it receives is 136 bits in the RSP10, RSP32, RSP54, RSP76 response registers. Since they can hold 128 bits of response bits corresponding to the 128 bits of CID register, do we need to shift 1 byte of data left to get the CID register value as per mmcsd_parse.c(Function : MMCSD_parseCIDEmmc)?.
      Same with CMD 9 to get CSD register too. When the response is not shifted left, the value received for TRAN_SPEED on CSD Bits is [103:96] is 0x32, which is 25Mhz. If the response bytes are shifted left, the values of CSD registers are not relevant.
    • We can see the functions for MMC are implemented in the below path of TI Git 'github.com/.../mmcsd_v0.c'.
      Which version of SDK can we install for the latest files for MMC? Also need a working example project for MMC.

    Currently the SD/MMC is not supported/validated on SDK. Let me check and come back.

    Also I will reach out to individual SMEs to get complete answers as well.  

    Best Regards, Shiv

  • When the host sends CMD 2 to get CID register, the response it receives is 136 bits in the RSP10, RSP32, RSP54, RSP76 response registers. Since they can hold 128 bits of response bits corresponding to the 128 bits of CID register, do we need to shift 1 byte of data left to get the CID register value as per mmcsd_parse.c(Function : MMCSD_parseCIDEmmc)?.
    Same with CMD 9 to get CSD register too. When the response is not shifted left, the value received for TRAN_SPEED on CSD Bits is [103:96] is 0x32, which is 25Mhz. If the response bytes are shifted left, the values of CSD registers are not relevant.

    I believe this is already answered in (+) AM263P4-Q1: MMCSD module interfacing with eMMC - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums, please let me know if it still doesn't answer your query.

    We can see the functions for MMC are implemented in the below path of TI Git 'github.com/.../mmcsd_v0.c'.
    Which version of SDK can we install for the latest files for MMC? Also need a working example project for MMC.

    AM26x devices uses v1 of MMCSD drivers, and not V0. Support for eMMC driver/ example has been added for AM263x in the latest 11.0 SDK (planned for release today), which you can refer to. Unfortunately, it is not available for AM263Px yet.

    Regards,

    Sahana

  • I have referred v1 to implement the code to read/write the emmc connected on the AM263x-LP board. I am even able to read the CSD, CID etc registers and decode the values correctly, but when tried to read/write data to emmc, I am seeing Write protect error/Command timeout errors when sending CMD 17/18  and CMD24/25.

    Can you please share the validated project zip along with syscfg file for an emmc instance for the example 'mmcsd_raw_io_emmc.c' ?

    Note : I am using emmc chip and  emmc to SD card adapter to connect on the SD card slot of the AM263x Launchpad.

    Product Link : Buy Radxa eMMC to uSD Module, Read/Write with SD Card Reader | Evelta

  • Can you please share the validated project zip along with syscfg file for an emmc instance for the example 'mmcsd_raw_io_emmc.c'

    It's not clear what the ask is here. You can find the example project in AM263 MCU PLUS SDK 11.0. This example is not supported on AM263x-LP, you would need a custom board which supports eMMC, this has not been verified with eMMC to SD adapter.

    Regards,

    Sahana

  • Hi Shirly,

    Could you please create a separate ticket for eMMC. 

    Also DeviPrasad,

    Please help create new thread for each topic  if its still open or to be clarified further so that we can assign to right expert and track better. Please let me know if we can close this thread.

    Best Regards, Shiv

  • Can we get the CCS project for mmcsd_raw_io_emmc.c' along with the respective syscfg file, because the SDK has only the source file mmcsd_raw_io_emmc.c. We can use the AM263px Control card and try to test the EMMC.

  • Hi Shirly,

    The CCS project for MMCSD RAW IO for AM263P Control Card, can be found in the below path

    C:\ti\mcu_plus_sdk_am263px_AA_BB_CC_DD\examples\drivers\mmcsd\mmcsd_raw_io\am263px-cc\r5fss0-0_nortos

    with AA_BB_CC_DD being MCU+ SDK version that you are using. Would be a similar path for AM263x if you are using AM263x

     

    Thanks,

    Tejas Kulakarni