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.

AMIC110: Firmware update

Part Number: AMIC110
Other Parts Discussed in Thread: UNIFLASH

Hi,

I am planning to boot amic using nand/not flash.

I will set the Amic sysboot pin accordingly.

What other things I have to take care?

But how I am update the firmware in nand/nor flash?

What peripherals I required to to upload firmware in flash at production time?

Regards,

Vrund

  • Please post which Processor SDK you are using - Linux or RTOS?

  • Hi,

    RTOS

    Regards,

    Vrund

  • Hi,

    Waiting for the response.

    I am using AMIC 110 RTOS SDK.

    How should I program (application part of the firmware) flash attached to amicc110?

    Regards,

    Vrund

  • Hi,

    Is it possible to program the nand flash with application+ boot binary using JTAG at the time of production using Uniflash tool?

    Where can I find binary boot file for nand flash?

    Regards,

    Vrund

  • Hi Vrund,

    Please see: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM335X/rtos/index_board.html#supported-platforms.

    According to this table, Uniflash doesn't support NAND flash programming. Sorry for providing you with misleading information.

    >> Is it possible to program the nand flash with application+ boot binary using JTAG at the time of production using Uniflash tool?

    Uniflash supports loading the flash programmer via JTAG. The Secondary Boot Loader (SBL) & application images, however, must be downloaded via UART.

    Using CCS & Debug Server Scripting (DSS), it should be possible to automate the NAND flash progarmming procedure here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM335X/rtos/index_Foundational_Components.html#booting-via-nand

    Information on DSS can be obtained here: https://software-dl.ti.com/ccs/esd/dcuments/users_guide/sdto_dss_handbook.html

    >> Where can I find binary boot file for nand flash?

    I assume you're referring to the SBL image. There are debug and release mode pre-builds available in folder <PDK>\packages\ti\starterware\binary\bootloader\bin\am335x-evm\gcc:

    • bootloader_boot_nand_a8host_debug_ti.bin: debug mode, _ti.bin format (formatted for used w/ ROM bootloader)
    • bootloader_boot_nand_a8host_release_ti.bin: release mode, _ti.bin format (formatted for used w/ ROM bootloader)

    Regards,
    Frank

  • Hi

    Kindly correct my understanding below.

    1)  after power on primary bootloader ( which is inside AMIC110) based on syspin settings decides from where to boot.(let's say nand flash)

    2) after deciding, secondary bootloader (which is there in nand flash) takes control and boot the application image( which is inside nand flash) and give control to DDR.

    Secondary bootloader file I will get from the link that you have mentioned above reply.right?

    And I don't have to do any changes in pre built debug or release file. Is it correct?

    Now comes the my understanding part of programming the nand flash with SBL and Application.

    From the table I understand that on AMIC110 ICE eval board ,it is not possible to program(SBL+application) nand flash using Uniflash tool.right?

    But is it correct for the  all the AMIC110 or specific to amic 110 ice  evm only?

    What is the meaning of OSPI and EMMC in the table?

    In the section below.

    4.6.3.1.8.5. Booting Via NAND

    Booting from NAND involves two steps.

    Preparing Flash Device

    Booting the target.

    Preparing Flash Device

    Configure BOOT pins for NAND Boot mode settings

    Connect target with CCS. Connecting the board to pc via xds100v or with xds200. Is it right?

    If as per the process of SBL and Application can be programmed to nand flash using above method then why UARR needs?

    Can you explain the below statement more.

    "Uniflash supports loading the flash programmer via JTAG. The Secondary Boot Loader (SBL) & application images, however, must be downloaded via UART."

    Regards,

    Vrund

  • Hi Vrund,

    >> 1) after power on primary bootloader ( which is inside AMIC110) based on syspin settings decides from where to boot.(let's say nand flash)
    >> 2) after deciding, secondary bootloader (which is there in nand flash) takes control and boot the application image( which is inside nand flash) and give control to DDR.

    Yes, this is described here: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM335X/rtos/index_Foundational_Components.html#boot-sequence

    >> Secondary bootloader file I will get from the link that you have mentioned above reply.right?
    >> And I don't have to do any changes in pre built debug or release file. Is it correct?

    This is a pre-built SBL which works on TI reference platforms. The Board library (which is used by the SBL) typically needs to be modified for a custom hardware platform. This is described in the attached document below.

    >> What is the meaning of OSPI and EMMC in the table?

    OSPI: OSPI is "Octal SPI", which is available on some of the devices in the table, but not the AMIC110.

    eMMC:

    • See https://www.datalight.com/solutions/technologies/emmc/what-is-emmc
    • Some of the HW platforms mentioned in the table have an eMMC device connected to an MMC/SD peripheral on the SoC. For example, the AM65xx IDK mentioned in table has the MTFC16GAKAEJP eMMC connected to SoC MMCSD0. The AMIC110 EVM doesn't have an eMMC device.

    >> From the table I understand that on AMIC110 ICE eval board ,it is not possible to program(SBL+application) nand flash using Uniflash tool.right?

    Correct.

    >> But is it correct for the all the AMIC110 or specific to amic110 ice evm only?

    I've seen NAND flash interfaced to AM335x/AMIC110 through GPMC, which isn't mentioned in the table. I've seen eMMC flash interfaced to AM335x through MMDSD, but this isn't mentioned in the table for any TI reference platform. I've looped in a collegue to comment more on Uniflash capabilities for AMIC110.

    >> Connecting the board to pc via xds100v or with xds200. Is it right?

    Correct.

    >> If as per the process of SBL and Application can be programmed to nand flash using above method then why UARR needs?

    Uniflash provides a method for flash programming which doesn't requires JTAG / CCS.

    >> "Uniflash supports loading the flash programmer via JTAG. The Secondary Boot Loader (SBL) & application images, however, must be downloaded via UART."

    This is fully explained here:

    Regards,
    Frank

    3225.AM335x_AMIC110_Board_Porting_using_PRSDK.pdf

  • Hi,

    Thanks for the reply.

    I have understood the process quite well.

    Below are points.

    1) flash programmer can be downloaded using Uniflash tool via JTAG.

    2) for SBL and application programming UART interface is must. As Uniflash tool and Flash programmer communicate using UART only.

    3) SBL binary needs to modified for custom hardware platform.

    4) flash programmer will not erase itself while executing erase commands (From FAQ). but can erase SBL .

    Kindly correct above points if I am wrong.

    Kindly address the below queries.

    1)With above information I am able to program the hardware at production time .

    But how I would program only application firmware when hardware is in the field or customer site? For this do I need Uniflash tool ?

    Can I use my choice of UART to program the nand flash with application image?

    2)  I am going to use Ethernet ports for EIP application as well for http application.

    I also want to program the nand flash with application image using ethrnet port. Is it possible ? How?

    3) I want to use nand flash as a storage of data while application is running. So that during run time application can read and or write from nand flash. Is it possible? How?

    Regards,

    Vrund

  • Frank Livingston said:
    I've seen NAND flash interfaced to AM335x/AMIC110 through GPMC, which isn't mentioned in the table. I've seen eMMC flash interfaced to AM335x through MMDSD, but this isn't mentioned in the table for any TI reference platform. I've looped in a collegue to comment more on Uniflash capabilities for AMIC110.

    As for adding NAND support to Uniflash, please see this post here: https://e2e.ti.com/support/microcontrollers/other/f/908/p/897221/3317110#3317110

    As for flashing the eMMC via Uniflash, there is example code to access the MMC module part of the AM335x RTOS SDK located in pdk_am335x_x_y_z/packages/ti/starterware/examples/mmcsd. But similar as in the linked post regarding adding NAND support, that will take some time to port and get to work. Also when you are talking eMMC that usually means larger images - not really something you want to transfer over a UART link IMHO.

    Do you have DDR on your board? If so I'd recommend porting U-Boot to the board, even if it is for the sole purposes of using it as a NAND or eMMC programming solution. It'll also give you network support for free for getting images transferred quickly.

    Regards, Andreas

  • Hi,

    I am not going to use EMMC flash.

    I am not planning to add support of  SBL+application programming to nand flash using uniflash tool.

    I will use below method.

    1) program the nand flash with flash programmer binary using JTAG interface between Uniflash tool and hardware with usage of CCS tool.

    2) I will program SBL+application image using UART interface between Flash programmer and Uniflash tool.(Command line input/output)

    Query regarding step 1.

    Flash programmer binary which is provided to program the nand flash using JTAG interface is specific to evm only or is it general for all the other custom hardware board?

    Do I have to modified given flash programmer binary for my custome board.

    Query regarding step 2.

    While programming SBL+application image,UART boot mode is being used.right??

    And after successfully programming I need to set nand boot mode. Right?

    Below are points.kindly correct if I am wrong.

    1) flash programmer can be downloaded using Uniflash tool via JTAG.

    2) for SBL and application programming UART interface is must. As Uniflash tool and Flash programmer communicate using UART only.

    3) SBL binary needs to modified for custom hardware platform.

    4) flash programmer will not erase itself while executing erase commands (From FAQ). but can erase SBL .

    Kindly also address the below queries.

    1)With above information I am able to program the hardware at production time .

    But how I would program only application firmware when hardware is in the field or customer site? For this do I need Uniflash tool ?

    Can I use my choice of UART to program the nand flash with application image?

    2)  I am going to use Ethernet ports for EIP application as well for http application.

    I also want to program the nand flash with application image using ethrnet port. Is it possible ? How?

    3) I want to use nand flash as a storage of data while application is running. So that during run time application can read and or write from nand flash. Is it possible? How?

    Regards,

    Vrund

  • Hi,

    I am not going to use EMMC.

    I am not planning to add support for programming SBL+application using Uniflash tool.

    I have understood the process quite well.

    Below are points.

    1) flash programmer can be downloaded using Uniflash tool via JTAG. This time boot mode will be none. Right?

    2) for SBL and application programming UART interface is must. As Uniflash tool and Flash programmer communicate using UART only.

    What will be the boot mode in this step. Is it UART?

    3) SBL binary needs to modified for custom hardware platform.

    4) flash programmer will not erase itself while executing erase commands (From FAQ). but can erase SBL .

    Kindly correct above points if I am wrong.

    Kindly address the below queries.

    1)With above information I am able to program the hardware at production time .

    But how I would program only application firmware when hardware is in the field or customer site? For this do I need Uniflash tool ?

    Can I use my choice of UART to program the nand flash with application image?

    2)  I am going to use Ethernet ports for EIP application as well for http application.

    I also want to program the nand flash with application image using ethrnet port. Is it possible ? How?

    3) I want to use nand flash as a storage of data while application is running. So that during run time application can read and or write from nand flash. Is it possible? How?

    Regards,

    Vrund

  • Hi,

    Vrund Rana said:
    1) flash programmer can be downloaded using Uniflash tool via JTAG. This time boot mode will be none. Right?

    Yes, boot mode will be none. Please see: please see https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM335X/rtos/index_board.html#uniflash-execution-steps

    Vrund Rana said:
    What will be the boot mode in this step. Is it UART?

    There is no need for boot since the flash programmer has been downloaded via JTAG. The flash programmer receives the SBL & app images over UART, and programs the images into flash.

    Vrund Rana said:
    But how I would program only application firmware when hardware is in the field or customer site? For this do I need Uniflash tool ?

    Uniflash requires UART, and only supports SPI flash for AMIC110 devices. The DSS method I suggested requires a JTAG connection, but would support NAND flash. One of these two method must be used, or custom software must be developed.

    Vrund Rana said:
    Can I use my choice of UART to program the nand flash with application image?

    The UART application loader used by Uniflash uses a specific UART, and needs to be modified to support a different UART.

    Vrund Rana said:
    I also want to program the nand flash with application image using ethrnet port. Is it possible ? How?

    This isn't supported in Processor-SDK-RTOS. Software would have to be developed for this purpose.

    Vrund Rana said:
    3) I want to use nand flash as a storage of data while application is running. So that during run time application can read and or write from nand flash. Is it possible? How?

    This should be possible using the GPMC driver. Please see: https://software-dl.ti.com/processor-sdk-rtos/esd/docs/06_03_00_106/AM335X/rtos/index_device_drv.html#gpmc

    Regards,
    Frank