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.

[FAQ] TMS320C6678: How to flash the IBL ( Intermediate Boot loader ) into EEPROM and how to flash the application binary into NOR? How to boot the IBL + Application binary?

Part Number: TMS320C6678

Hi

How to flash the IBL ( Intermediate Boot loader ) into EEPROM and how to flash the application binary into NOR?

How to boot the IBL + Application binary? on C6678 EVM using CCS 9.3

  • How to flash the IBL ( Intermediate Boot loader ) into EEPROM and how to flash the application binary into NOR?

    How to boot the IBL + Application binary? on C6657 EVM using CCS 9.3

    Pre-requisite 

    1. Install processor_sdk_rtos_c667x_6_03_00_106 from http://software-dl.ti.com/processor-sdk-rtos/esd/C667x/latest/index_FDS.html
    2. Install CCS 9.3 from 3.0.00012 | TI.com
    3. Choose the installation directory as C:\ti

    Step1: -- Building IBL

    1. Build the IBL by following this link :- https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1048641/faq-processor-sdk-c665x-ibl-build-steps-on-linux-ubuntu-processor-family-c665x ( Set the environment variables appropriately for C6678: “source setupenvLnx.sh” Build the image : “make evm_c6678_i2c ENDIAN=little I2C_BUS_ADDR=0x51” )
    2. After building the IBL, "i2crom_0x51_c6678_le.bin", IBL-binary will be generated at C:\ti\pdk_c667x_2_0_16\packages\ti\boot\ibl\src\make\bin

    Step2: -- Flashing IBL

    1. Set the DIP switch into "NO-BOOT" mode. "SW3,SW4,SW5 and SW6"

        SW3(off, on, on, on),

        SW4(on, on, on, on),

        SW5(on, on, on, on),

        SW6(on, on, on, on)

    1. Modify the eepromwriter_input.txt located at "C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\eeprom\evmc6578l\bin"

    file_name = i2crom.bin
    bus_addr = 0x51
    start_addr = 0
    swap_data = 0

    1. Flashing steps as follows ( Flashing IBL into EEPROM using EEPROM writer)
    2. Set your C6678EVM to NO BOOT. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.
    3. Copy the IBLbinary you want to flash to "C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\eeprom\evmc6678l\bin" directory.
    4. Rename the binary you copied in the previous step to “i2crom.bin”.
    5. In CCS, select Core 0 and open the Memory Browser. In the Memory Browser window, right click and select “Load Memory”
    6. Load your "i2crom.bin" to 0x0C000000. Do so by selecting i2crom.bin file and select the file type as binary. click Next, and input 0x0C000000 as Start Address
    7. Load C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\eeprom\evmc6678l\bin\eepromwriter_evm6678l.out
    8. Run Core 0. This will program the flash memory.

    If it succeeds, the console will print “EEPROM programming completed successfully” like below.

    Step 3 -  Booting IBL:

    1. Change the DIP switch settings into NOR boot

        SW3(off, off, on, off),

        SW4(on, on, on, on),

        SW5(on, on, on, off),

        SW6(on, on, on, on)

    1. Open hyper terminal or Tera term/Putty and Connect the UART
    2. Observe the IBL booting with version either as 1.0.0.15 or 1.0.017

    Step 4 - Flashing app

    1. The sample binary taken for this demonstration is UART_BasicExample_C6678_c66xTestProject.
    2. Located at C:\ti\pdk_c667x_2_0_16\packages\MyExampleProjects\UART_BasicExample_C6678_c66xTestProject
    3. Build and create the app binary using CCS 9.3
    4. App binary, UART_BasicExample_C6678_c66xTestProject.out will be located at  "C:\ti\pdk_c667x_2_0_16\packages\MyExampleProjects\UART_BasicExample_C6678_c66xTestProject\Debug\"
    5. Flashing app binary into NOR-memory using NOR-writer.
    6. Set your EVM to NO BOOT. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.
    7. Copy the UART-app binary you want to flash to "C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\nor\evmc6678l\bin" directory.
    8. Rename the binary you copied in the previous step to “app.bin”.
    9. In CCS, select Core 0 and open the Memory Browser
    10. In the Memory Browser window, right click and select “Load Memory”
    11. Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)
    12. Load C:\ti\pdk_c667x_2_0_16\packages\ti\boot\writer\nor\evmc6657l\bin\norwriter_evm6678l.out
    13. Run Core 0. This will program the flash memory.

    If it succeeds, the console will print “NOR programming completed successfully”

    [C66xx_0] NOR Writer Utility Version 01.00.00.04
    
    Flashing sector 0 (0 bytes of 3014656)
    Flashing sector 1 (65536 bytes of 3014656)
    Flashing sector 2 (131072 bytes of 3014656)
    Flashing sector 3 (196608 bytes of 3014656)
    Flashing sector 4 (262144 bytes of 3014656)
    Flashing sector 5 (327680 bytes of 3014656)
    Flashing sector 6 (393216 bytes of 3014656)
    Flashing sector 7 (458752 bytes of 3014656)
    Flashing sector 8 (524288 bytes of 3014656)
    Flashing sector 9 (589824 bytes of 3014656)
    Flashing sector 10 (655360 bytes of 3014656)
    Flashing sector 11 (720896 bytes of 3014656)
    Flashing sector 12 (786432 bytes of 3014656)
    Flashing sector 13 (851968 bytes of 3014656)
    Flashing sector 14 (917504 bytes of 3014656)
    Flashing sector 15 (983040 bytes of 3014656)
    Flashing sector 16 (1048576 bytes of 3014656)
    Flashing sector 17 (1114112 bytes of 3014656)
    Flashing sector 18 (1179648 bytes of 3014656)
    Flashing sector 19 (1245184 bytes of 3014656)
    Flashing sector 20 (1310720 bytes of 3014656)
    Flashing sector 21 (1376256 bytes of 3014656)
    Flashing sector 22 (1441792 bytes of 3014656)
    Flashing sector 23 (1507328 bytes of 3014656)
    Flashing sector 24 (1572864 bytes of 3014656)
    Flashing sector 25 (1638400 bytes of 3014656)
    Flashing sector 26 (1703936 bytes of 3014656)
    Flashing sector 27 (1769472 bytes of 3014656)
    Flashing sector 28 (1835008 bytes of 3014656)
    Flashing sector 29 (1900544 bytes of 3014656)
    Flashing sector 30 (1966080 bytes of 3014656)
    Flashing sector 31 (2031616 bytes of 3014656)
    Flashing sector 32 (2097152 bytes of 3014656)
    Flashing sector 33 (2162688 bytes of 3014656)
    Flashing sector 34 (2228224 bytes of 3014656)
    Flashing sector 35 (2293760 bytes of 3014656)
    Flashing sector 36 (2359296 bytes of 3014656)
    Flashing sector 37 (2424832 bytes of 3014656)
    Flashing sector 38 (2490368 bytes of 3014656)
    Flashing sector 39 (2555904 bytes of 3014656)
    Flashing sector 40 (2621440 bytes of 3014656)
    Flashing sector 41 (2686976 bytes of 3014656)
    Flashing sector 42 (2752512 bytes of 3014656)
    Flashing sector 43 (2818048 bytes of 3014656)
    Flashing sector 44 (2883584 bytes of 3014656)
    Flashing sector 45 (2949120 bytes of 3014656)
    Reading and verifying sector 0 (0 bytes of 3014656)
    Reading and verifying sector 1 (65536 bytes of 3014656)
    Reading and verifying sector 2 (131072 bytes of 3014656)
    Reading and verifying sector 3 (196608 bytes of 3014656)
    Reading and verifying sector 4 (262144 bytes of 3014656)
    Reading and verifying sector 5 (327680 bytes of 3014656)
    Reading and verifying sector 6 (393216 bytes of 3014656)
    Reading and verifying sector 7 (458752 bytes of 3014656)
    Reading and verifying sector 8 (524288 bytes of 3014656)
    Reading and verifying sector 9 (589824 bytes of 3014656)
    Reading and verifying sector 10 (655360 bytes of 3014656)
    Reading and verifying sector 11 (720896 bytes of 3014656)
    Reading and verifying sector 12 (786432 bytes of 3014656)
    Reading and verifying sector 13 (851968 bytes of 3014656)
    Reading and verifying sector 14 (917504 bytes of 3014656)
    Reading and verifying sector 15 (983040 bytes of 3014656)
    Reading and verifying sector 16 (1048576 bytes of 3014656)
    Reading and verifying sector 17 (1114112 bytes of 3014656)
    Reading and verifying sector 18 (1179648 bytes of 3014656)
    Reading and verifying sector 19 (1245184 bytes of 3014656)
    Reading and verifying sector 20 (1310720 bytes of 3014656)
    Reading and verifying sector 21 (1376256 bytes of 3014656)
    Reading and verifying sector 22 (1441792 bytes of 3014656)
    Reading and verifying sector 23 (1507328 bytes of 3014656)
    Reading and verifying sector 24 (1572864 bytes of 3014656)
    Reading and verifying sector 25 (1638400 bytes of 3014656)
    Reading and verifying sector 26 (1703936 bytes of 3014656)
    Reading and verifying sector 27 (1769472 bytes of 3014656)
    Reading and verifying sector 28 (1835008 bytes of 3014656)
    Reading and verifying sector 29 (1900544 bytes of 3014656)
    Reading and verifying sector 30 (1966080 bytes of 3014656)
    Reading and verifying sector 31 (2031616 bytes of 3014656)
    Reading and verifying sector 32 (2097152 bytes of 3014656)
    Reading and verifying sector 33 (2162688 bytes of 3014656)
    Reading and verifying sector 34 (2228224 bytes of 3014656)
    Reading and verifying sector 35 (2293760 bytes of 3014656)
    Reading and verifying sector 36 (2359296 bytes of 3014656)
    Reading and verifying sector 37 (2424832 bytes of 3014656)
    Reading and verifying sector 38 (2490368 bytes of 3014656)
    Reading and verifying sector 39 (2555904 bytes of 3014656)
    Reading and verifying sector 40 (2621440 bytes of 3014656)
    Reading and verifying sector 41 (2686976 bytes of 3014656)
    Reading and verifying sector 42 (2752512 bytes of 3014656)
    Reading and verifying sector 43 (2818048 bytes of 3014656)
    Reading and verifying sector 44 (2883584 bytes of 3014656)
    Reading and verifying sector 45 (2949120 bytes of 3014656)
    NOR programming completed successfully

    The step4 is given in the video materials below. Follow the videos sequentially

    Step 5 - Booting IBL + app binary

    1. Change the DIP switch settings into NOR boot

       SW3(off, off, on, off),

        SW4(on, on, on, on),

        SW5(on, on, on, off),

        SW6(on, on, on, on)

    1. Open hyper terminal or putty and Connect the UART
    2. Observe the IBL booting with version, 1.0.0.15 or 1.0.017
    3. Observe the IBL jumps to the UART app.

    Regards

    Shankari G