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.

CCS/PROCESSOR-SDK-AM437X: Board ID table entries

Part Number: PROCESSOR-SDK-AM437X

Tool/software: Code Composer Studio

Hi,

while implementing a modified bootloader (for QSPI) I discovered the following - maybe it's of interest for other forum discussions...

I am referring to PDK version pdk_am437x_1_0_15 to the starterware content of board related stuff.

Acessing a board without I2C connctivity I tried to use the BOARD_CUSTOM entry from board_am43xx.c:

Because I failed, I compared with boardId_t structure content of related board.h:

And I checked the boardIdString_t structure, too:

Obviously, there is a mismatch between sizes and entries of the 3 structures:

BOARD_CUSTOM is defined as 10 hexadecimal, but used as 10 decimal in the string table.

And gpBoardAm43xxData is missing some of the entries.

Is this something that has already been fixed with newer PDK versions (e.g.  pdk_am437x_1_0_16) ?

Best regards,

Thomas

  • Sorry, the screenshots weren't uploaded....

    / Thomas

    [.....]

    Acessing a board without I2C connctivity I tried to use the BOARD_CUSTOM entry from board_am43xx.c:

    Because I failed, I compared with boardId_t structure content of related board.h:

    And I checked the boardIdString_t structure, too:

    Obviously, there is a mismatch between sizes and entries of the 3 structures:

    BOARD_CUSTOM is defined as 10 hexadecimal, but used as 10 decimal in the string table.

    And gpBoardAm43xxData is missing some of the entries.

    [...]

  • Thomas Kuhnt said:

    Because I failed, I compared with boardId_t structure content of related board.h:

    Hi Thomas,

    Would you be able to describe what exactly failed with a little more depth?

    Thanks,

    Max

  • Sorry, I'll try to describe the main problem:.

    Pointer to data of custom board is entry 6, ID of custom board is defined as hexadecimal 0x10 and the string of custom board is decimal 10.

    But the ID is used to access board data and string table.

    Regards, Thomas

  • Hi Thomas,

    Would you be able to post the error log generated by your IDE?

    Thanks,

    Max

  • Hi Max,

    currently I am working with the SBC-EC8800 board from ebest-tech.com because I need to verify FW update

    functionality / mechanism using an USB host msc which is not supported by AM437x IDK platform.

    So it would be some effort to "switch back" to IDK and reproduce the error there.

    Settings always work with IDKEVM board Id (which is always entry number 4 when starting counting from zero,

    pointed out by my screenshots). But the custom board entry number differs in gpBoardAm43xxData[] data pointer array,

    boardId_t enumeration and gBoardIdStrTable[] structure.

    Iterating using BOARD_MAX (value 10 hex) will fail within gBoardIdStrTable[] (size 10 dec).

    Let me know if this explanation is not sufficient, I will try to reproduce then using the IDK.

    Best Regards,

    Thomas

  • Hi Thomas,

    Are you debugging this via booting from an SD card? Or are you using an emulator + CCS?

    If the latter, would you be able to post the error log associated with this index mismatch?

    Thanks,

    Max

  • Hi Max,

    let me summarize what I did to identify this problem:

    First, I created an CCS project out of the starterware example "flash_writer". I added sources and includes as described in corresponding makefile.

    I made local copies of all relevant parts (especially "board"). I deactivated I2C parts within "board" to simulate a custom board and used the static setting BOARD_CUSTOM as BoardId (this should be a valid setting, or am I wrong?). Starting the application now on am437x IDK using the on-board debug interface, one of the first things is to establish the debug UART. Therefore, CONSOLEUtilsUartInit() is called and after some more steps, BoardGetIdAm43xx() will be called to "get" the BoardId. There, access to the NULL pointer entry fails. All this can be seen in the screenshot I added.

    The problem with the incosistence of the entries I described before is something I found while investigating where CUSTOM_BOARD is used as index.

    Rightly you could say everything will be fine if I I2C parts are active. But I work with an SBC-EC8800 board from embest-tech.com in parallel
    which has no I2C connected and our dedicated customized hardware will also have none.

    Next item is that the bootloader also uses the same principle of checking (verify board by IC2).

    I know that starterware support was stopped years ago, but it's useful as template to have a starting point for individual development.

    Best regards,
    Thomas

  • Hi Thomas,

    I've reported this to the development team, thanks for bringing this up.

    Regards,

    Max