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.

Linux/AM4372: Trying to port Linux to new AM437x processor based design.

Part Number: AM4372

Tool/software: Linux

I have a new AM437x based design that I am trying to troubleshoot. It looks like there are some signal inegrity issues with the SD card interface, so I am trying to boot from UART0. I seem to be able to download the pre-compiled SPL image using XMODEM but that is as far as I get. I do not see anything being printed on UART0 after the XMODEM download completes. Should I be seeing anything on UART0 at this point? 

My design is based partly on the the AM437x EVM but I had to move pins around in order to get the capabilities I needed for my design.  I assume because I do not have the ID EEPROM in my design, that is why i am having issues loading u-boot.

I have the SDK installed and I am able to compile code. I also have  the hardcode EEPROM patch code that I could install. Would doing this get me any further?

Reviewing the training section, I found some information on board porting, but it does not seem to be easily applied to a AM437x design.

http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_UBoot_Board_Port

https://training.ti.com/intro-linux-board-port-sitara-series

  • Hello Tim,

    Can you apply the patch from this post and check whether your board boots? Once the u-boot-spl.bin is loaded, you may not see any messages until the u-boot.img is successfully loaded.

    Best regards,
    Kemal

  • I was able to get u-boot loaded so I can continue troubleshooting my design. Thanks!

    Now I need to understand how to change the pinmux information in the SDK to match my design. Neither of the links in my original post were very specific on how to do this. The first link has a git clone that seems to be no longer valid ( git://gitorious.org/sitara-board-port/sitara-board-port-uboot.git) but I found this link on git.ti.com (git://git.ti.com/sitara-linux/board-port-u-boot.git). I cloned the git and ran gitk on it but did not see any flags that matched the examples. And this example seems to only be for the AM335x.

    The second link seems to be more up to date but does not give any specifics on how to take the pinmux files and create a linux board port. I know enough about linux to do some code work, but it would be nice to have a u-boot template example similar to what the first link describes for the AM437x.
  • AM335x and AM437x are very similar. You just need to use the TI PinMux Tool to see which pinmux values you need and enter them to <Processor SDK>/board-support/u-boot-<version>/board/ti/am43xx/mux.c file and later align these muxes with the pinmuxes in <Processor SDK>/board-support/u-boot-<version>/arch/arm/dts/am437x-gp-evm.dts device tree if needed.

  • So pinmux does not automatically create a drop in file for u-boot? I think I understand what I need to do as far as the pinmux.c and mux.c files are concerned. But what about the device tree files? As I understand it u-boot somehow uses the dtb file as well. Since pinmux creates a dtsi file, do I use that file with u-boot? If so, does u-boot make a dtb file from the dtsi and dts file or is there some additional process I need to do?

    Also, I assume since the EEPROM patch code forced the board to the AM43xx_GP, I should be modifying files with that name in it, right?
  • In U-boot you only need to pinmux the bare minimum needed. This is pretty much just your UART for console and maybe I2C for the PMIC, anything more is typically not needed. The Pin Mux Tool does provide a device tree file that can be used for pin muxing in Linux.
  • Timothy Barr said:
    So pinmux does not automatically create a drop in file for u-boot?


    No, TI PinMux Tool doesn't generate any drag and drop ready to use device tree files nor for U-Boot neither for Linux. You should decide where to put these pinmuxes separately in a proper places.


    Timothy Barr said:
    As I understand it u-boot somehow uses the dtb file as well.

    The device tree files usage in U-Boot is ongoing and not fully implemented for all the components yet. But for future comparability it is better to write down these pinmuxes in your U-Boot's device tree too.


    Timothy Barr said:
    Also, I assume since the EEPROM patch code forced the board to the AM43xx_GP, I should be modifying files with that name in it, right?

    Yes, you must modify the files where the board_is_evm() function is involved and its respective variables/routine calls.


    Ahmad_Rashed said:
    In U-boot you only need to pinmux the bare minimum needed. This is pretty much just your UART for console and maybe I2C for the PMIC, anything more is typically not needed. The Pin Mux Tool does provide a device tree file that can be used for pin muxing in Linux.

    This is correct. Unless if you are not working with AM57xx platform where all the pinmuxing except for MMC must be done in U-Boot.

  • I am able to get major portions of my design working in u-boot now. Thank you for your help. I expect to be asking more questions as I try to implement Linux.