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.

Booting of the processor in the OMAP-L138 DSP+ARM9™Development Kit

Other Parts Discussed in Thread: OMAP-L138, OMAPL138, AM1808, SYSCONFIG

Hello,

We are planning to use the OMAP-L138 capability to interface with a SATA device. 

So I have couple of questions regarding this:

1) What is the minimum hardware needed to have the OMAP boot and communicate with the SATA device? Please advise if the below components are sufficient:

a) necessary circuitry to  drive the signals on necessary device pins (reset, NMI, JTAG pins, EMU0, EMU1, RTCK, PLL pins, RTC pins, DEEPSLEEP, Boot Mode Selection, SATA pins,  VCCs and GND). 

b) crystal oscillators connected to :24MhZ (OSCIn: L19, OSCOUT: K19) and 32.768 Khz (RTC_XI:J19, RTC_XO:H19)

c) Booting device: Can we use raw NAND? If so, Can you please send me the instructions to create a booting image in the RAW NAND?

2) We are planning to use the OMAP-L138 DSP+ARM9™Development Kit as a starting point. In which case can you please send us an example project that have the necessary functions to communicate with a SSD device (to do erase/program/read functions) .

Thanks,

Ayman

  • Hi Ayman,


    2) We are planning to use the OMAP-L138 DSP+ARM9™Development Kit as a starting point. In which case can you please send us an example project that have the necessary functions to communicate with a SSD device (to do erase/program/read functions) .


    For SATA testing, we don't have a example code but you can get from LogicPD BSL code.
    Also it doesn't have erase/read/write feature in it but it does some detection test (spin)

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/370096/1301389#1301389

    You can test this SATA interface by booting linux and can access the SATA device (files & folders) and able to mount the filesystem too.


    c) Booting device: Can we use raw NAND? If so, Can you please send me the instructions to create a booting image in the RAW NAND?

    Yes, you can use raw NAND for booting purpose.

    For booting the OMAPL138, you need to convert the app to AIS file through "AISgen tool" provided by TI.
    We have NAND writer code to flash the app or u-boot (in case linux) into NAND flash and also we can flash/erase the apps into NAND flash through serial flash utility.

    Please refer to the following useful TI wikis.

    http://processors.wiki.ti.com/index.php/GSG:_Building_Software_Components_for_OMAP-L1/AM1x#Rebuilding_the_NAND_Flash_writer

    http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138#Serial_Flasher_Options

    http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L138

    http://processors.wiki.ti.com/index.php/OMAP-L138_LCDK_Linux_Software_Developer%27s_Guide#Creating_your_own_U-Boot_version_that_can_be_flashed_on_LCDK
  • Hello Ayman,

    1) What is the minimum hardware needed to have the OMAP boot and communicate with the SATA device? Please advise if the below components are sufficient:

    a) necessary circuitry to  drive the signals on necessary device pins (reset, NMI, JTAG pins, EMU0, EMU1, RTCK, PLL pins, RTC pins, DEEPSLEEP, Boot Mode Selection, SATA pins,  VCCs and GND). 

    b) crystal oscillators connected to :24MhZ (OSCIn: L19, OSCOUT: K19) and 32.768 Khz (RTC_XI:J19, RTC_XO:H19)

    The listed device pins are good enough to communicate with the SATA device. However you can refer the OMAPL138 LCDK design and exclude the unwanted portion.

    http://processors.wiki.ti.com/index.php/L138/C6748_Development_Kit_(LCDK)

    You can also refer the OMAPL138 hardware design guide for more information.

    http://processors.wiki.ti.com/index.php/OMAP-L138_Hardware_Design_Guide

    Regarding clocks, you need to have an external reference clock for SATA.

    Regards,

    Senthil

  • Hi Titusrathinaraj,

    Thanks for your reply.

    Just want to clarify my question below so that we can be in the same page.

    * We plan to use a SATA device which is just the SATA (uSSD) chip (there is no additional devices or microcontrollers connected to it). Also we the chip will be blank, no files and no operating system.

    * We are going to write raw data into the chip (just like writing one big hex file to the chip).

    * We need to erase/program/read that file from the SATA chip.

     

    1) Given the above conditions will the OMAP device be able to take our raw data then do the 8 to 10 bit encoding, create the necessary differential signals, build the frames and send the data the data to the device. So that we don't have to worry about the details of the SATA specs ..etc?

    2) Can we also boot the OMAP from eMMC device?

    3) Can you help sending us some sample code which can do the below basic operations:

    a) take an array of raw data and program it to the sata device

    b) erase a specific address space in the SATA device?

    c) read a specific address space in the SATA device and put the data into an array?

  • Hi Ayman,
    Sorry, we don't have a example code for read/write/erase for SATA device.
    I've seen one simple BSL test code from logicPD website for OMAPL138 LogicPD EVM board.
    Yes, we can boot OMAP from eMMC.

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/289684
  • Hi Titusrathinaraj,

    Thanks for your reply.

    Can you also please have a look at my previous post and comment on Question 1:

    "1) Given the above conditions will the OMAP device be able to take our raw data then do the 8 to 10 bit encoding, create the necessary differential signals, build the frames and send the data the data to the device. So that we don't have to worry about the details of the SATA specs ..etc?"

     


    Thanks,

    Ayman

  • Hi Titusrathinaraj,

    I am following up on the above questions, can you please have a look and advise.

    Thanks,

    Aman

  • Hi Aman,


    "1) Given the above conditions will the OMAP device be able to take our raw data then do the 8 to 10 bit encoding, create the necessary differential signals, build the frames and send the data the data to the device. So that we don't have to worry about the details of the SATA specs ..etc?"


    Apologize.

    Never worked with SATA in low level like encoding and decoding.
    So, I'm not a correct person to address this particular point, let me ask other TI employees who have worked with SATA.

    Also, I would like to suggest posting your interface related issues like SATA, use our following TI E2E forum.

    http://e2e.ti.com/support/interface/digital_interface/f/130
  • Hi,

    The BSL sample project ( to be download from logic PD website )  for SATA interface with OMAPL138 LCDK board is available and it was a tested code.

     Check whether you can use of it.

     

    Regards,

    Shankari

     

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

  • Thanks a lot Shankari,

    I tried to compile the project and got the below errors.

    Look like the main issue is that we don't have the  file "types.h".

    Please have a look.

    Also the code seems to be written for 1808.  Will it work for the OMAP L138 as well straight away?

    Thanks,

    Ayman


    **** Clean-only build of configuration Debug for project ARM eXp SATA Test ****

    "C:\\ti\\ccsv5\\utils\\bin\\gmake" -k clean
    DEL /F "ARMeXpSATATest.out"
    DEL /F "src\main_sata.pp" "src\sata_utilities.pp" "src\test_sata.pp"
    DEL /F "src\main_sata.obj" "src\sata_utilities.obj" "src\test_sata.obj"
    'Finished clean'
    ' '

    **** Build Finished ****

    **** Build of configuration Debug for project ARM eXp SATA Test ****

    "C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all
    'Building file: ../src/main_sata.c'
    'Invoking: TMS470 Compiler'
    "C:/ti/ccsv5/tools/compiler/arm_5.0.4/bin/armcl" -mv5e -g --include_path="C:/ti/ccsv5/tools/compiler/arm_5.0.4/include" --include_path="C:/Users/aymang/Documents/training/references/ssd/test board/ARM eXp SATA Test/ARM eXp SATA Test/inc" --include_path="C:/ti/BSL_test_code_LogicPd_OMAP-L138/ARM BSL/inc" --diag_warning=225 -me --abi=eabi --code_state=32 --preproc_with_compile --preproc_dependency="src/main_sata.pp" --obj_directory="src" "../src/main_sata.c"
    "../src/main_sata.c", line 7: fatal error: could not open source file "types.h"

    1 fatal error detected in the compilation of "../src/main_sata.c".
    >> Compilation failure
    Compilation terminated.
    'Building file: ../src/sata_utilities.c'
    gmake: *** [src/main_sata.obj] Error 1
    'Invoking: TMS470 Compiler'
    "C:/ti/ccsv5/tools/compiler/arm_5.0.4/bin/armcl" -mv5e -g --include_path="C:/ti/ccsv5/tools/compiler/arm_5.0.4/include" --include_path="C:/Users/aymang/Documents/training/references/ssd/test board/ARM eXp SATA Test/ARM eXp SATA Test/inc" --include_path="C:/ti/BSL_test_code_LogicPd_OMAP-L138/ARM BSL/inc" --diag_warning=225 -me --abi=eabi --code_state=32 --preproc_with_compile --preproc_dependency="src/sata_utilities.pp" --obj_directory="src" "../src/sata_utilities.c"
    "../src/sata_utilities.c", line 19: fatal error: could not open source file "types.h"
    1 fatal error detected in the compilation of "../src/sata_utilities.c".
    Compilation terminated.

    >> Compilation failure
    gmake: *** [src/sata_utilities.obj] Error 1
    'Building file: ../src/test_sata.c'
    'Invoking: TMS470 Compiler'
    "C:/ti/ccsv5/tools/compiler/arm_5.0.4/bin/armcl" -mv5e -g --include_path="C:/ti/ccsv5/tools/compiler/arm_5.0.4/include" --include_path="C:/Users/aymang/Documents/training/references/ssd/test board/ARM eXp SATA Test/ARM eXp SATA Test/inc" --include_path="C:/ti/BSL_test_code_LogicPd_OMAP-L138/ARM BSL/inc" --diag_warning=225 -me --abi=eabi --code_state=32 --preproc_with_compile --preproc_dependency="src/test_sata.pp" --obj_directory="src" "../src/test_sata.c"
    "../src/test_sata.c", line 8: fatal error: could not open source file "types.h"
    1 fatal error detected in the compilation of "../src/test_sata.c".
    Compilation terminated.

    >> Compilation failure
    gmake: *** [src/test_sata.obj] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

  • Please locate the "types.h" file in your BSL code and add inot the "include" option through CCS properties option.
  • Hi Titusrathinaraj,

    1- Do you mean that types.h will include any custom vars types, in case I want to typedef any, as usual?

    2- After I commented out the above file I got a similar failure for "evmam1808.h". I appreciate if you can resend me a full working project which can be used for quick testing.

    3- Regarding my previous question about the difference between the 1808 and the OMAP-L138, Can you please confirm that the project will work with the OMAP as well.

    What we are looking for here is a test project that can be used with the OMAP-L138 which will be used in our design.

    Having a project which can do simple SATA tests (like reading/writing/erasing few blocks) will help us cutting our development time and making sure that we deliver the product to the customer on time.

    From our end we already ordered the OMAP-L138 Development Kit (LCDK) to be ready for debugging.  So we would like to start with a working project (again for sata support) using this board.

    Thanks,

    Ayman

  • Hi Titusrathinaraj,
    Have not hear back from you on the above questions, can you please have a look...

    Thanks,
    Ayman
  • Hi Ayman,

    A1) Yes.

    A2) Simply commenting out the line , will not solve the problem instead locate the "types.h" and "evmam1808.h" and add those paths in "include" option in CCS properties.

    A3) AM1808 is the ARM processor only but OMAPL138 had ARM+DSP cores so, it would work with AM1808 and OMAPL138 board but you should build for ARM core.

    If you download the BSL code for OMAPL138, you would find examples for both ARM and DSP (OMAPL138/AM1808)
    Sorry, we don't have this BSL code and can't share it here since it is LogicPD licensed one.

    Thanks for your understanding.
  • Hi Ayman,

    Actually there is no sample code existing for testing the functionality of reading/writing/erasing with SATA.

    However, sample code exists for just initialising and doing the spin test on SATA. My recommendation is to take up this project as a base and build the necessary functionalities.

    Regards,

    Shankari

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.
    --------------------------------------------------------------------------------------------------------

  • Hello TI team,
    We have tested the sample project that spin up the SATA device and it worked. However we tried the read/write DMA functions from the OMAP technical reference manual and it does not work. Can you help review and advise. We need the implement read/write functions using DMA (and also using PIO) for a very hot urgent project.
  • Hi Ayman
    Please do note that the SATA support on this family , in terms of software is very lean and close to non-existent.
    Beyond the BSL code that the team pointed you to and some debug assistance that they can provide you on the compilation error you are running into, it will likely be difficult to get you jump started on SATA , if you plan to do your own driver development

    You might find the following link helpful on what is available for various module with different software packages
    processors.wiki.ti.com/.../OMAPL138_SW_%26_HW_Comparison

    There is likely an AM18x Linux driver on SATA and some very old DSP drivers based on BIOS5.4x .. but nothing currently as part of McSDK or Starterware support
    e2e.ti.com/.../206449

    Regards
    Mukul
  • Hi Mukul,
    Thanks for your reply.
    Please note that the technical reference manual already have "DMA read" and "DMA write" code snapshot. So I guess somebody already tested these. Also the sata_utility.c file in project I we start with is already written by a TI engineer as indicated in the file header.
    What we ask for is that we need somebody to look at the project I sent (which have few function such as Spin up, DMA read, DMA write, and Identify device) and let us know why the latter three functions are not working properly.

    Thanks,
    Ayman
  • Hi Ayman
    Unfortunately, doing code review/debug of customer code is not the standard support model. The owner of the TRM code snippets is no longer with TI, unfortunately we don't have access to these. I am guessing though that likely you might be missing some chip/boardlevel initialization that might not be covered in those code snippets.
    I have requested Titus to see if he can point you to some legacy code for SATA either from older Linux releases on AM18x (ARM only device in this family) or older BIOS drivers.

    Regards
    Mukul
  • Hi Ayman,

    We have SATA driver (library) support from PSP driver package (pspdrivers_01_30_00_06) and unfortunately we don't have examples.

    C:\ti\pspdrivers_01_30_00_06\packages\ti\pspiom\sata\src

    software-dl.ti.com/.../index_FDS.html

    Could you please check that.

  • Hi TI team,

    Now we could have the "Identify Device command" (in addition to spin up ) working correctly on our custom board.

    Next we need to test the ARM booting from SPI flash.

    Can you please provide an example CCS6 project that we can use for testing flashing LED to any GPIO pin (we have access to GP0_0 to GPO_10).

    Can also please please provide the image that can be loaded directly to the SPI flash for the same above purpose.

    Please note that:

    * The available examples in the WIKI here are only for other custom EVM which use I2C (we don't have access to that)

    * We have direct access to the flash so we can download the image that you will send us directly to the flash SPI without the need to an additional utility.

    Thanks,

    Ayman

  • Hi again,
    Just for clarification, we need a CC6 simple executable ARM blinky LED to test the OMAP-L138 GPIO functionality on our board (we don't have port expander and we want to directly access the GPIO pins).
    We appreciate if you can send us a tested project which has all needed initialization.

    Thanks,
    Ayman
  • Hi,

    The following code is tested on OMAPL138 LCDK board and try to use it for your board.

    /**
    
    * \file    gpio_switches_leds.c
    
    *
    
    * \brief   This is a sample application file demonstrating the use of
    
    *          a GPIO pin for input and output
    
    *
    
    *
    
    * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ 
    
    *
    
    *  Redistribution and use in source and binary forms, with or without 
    
    *  modification, are permitted provided that the following conditions 
    
    *  are met:
    
    *
    
    *    Redistributions of source code must retain the above copyright 
    
    *    notice, this list of conditions and the following disclaimer.
    
    *
    
    *    Redistributions in binary form must reproduce the above copyright
    
    *    notice, this list of conditions and the following disclaimer in the 
    
    *    documentation and/or other materials provided with the   
    
    *    distribution.
    
    *
    
    *    Neither the name of Texas Instruments Incorporated nor the names of
    
    *    its contributors may be used to endorse or promote products derived
    
    *    from this software without specific prior written permission.
    
    *
    
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    */
    
    
    #include<stdio.h>
    
    
    #include "gpio.h"
    
    #include "psc.h"
    
    
    #include "soc_OMAPL138.h"
    
    #include "lcdkOMAPL138.h"
    
    
    /* HW Macros */
    
    #include "hw_types.h"
    
    
    /* System Defines */
    
    #include "lcdkOMAPL138.h"
    
    #include "soc_OMAPL138.h"
    
    #include "hw_syscfg0_OMAPL138.h"
    
    
    
    
    /* Switch Configuration */
    
    
    /* Titus : GP0[1] to GP0[4] is mapped to SW1[3:4] on OMAPL138/C6748 LCDK boards */
    
    
    /* Pin Multiplexing bit mask to select GP0[1] to GP0[4] pin. */
    
    
    #define PINMUX1_GPIO0_1_ENABLE    (SYSCFG_PINMUX1_PINMUX1_27_24_GPIO0_1  << \
    
                                        SYSCFG_PINMUX1_PINMUX1_27_24_SHIFT)
    
    
    #define PINMUX1_GPIO0_2_ENABLE    (SYSCFG_PINMUX1_PINMUX1_23_20_GPIO0_2  << \
    
                                        SYSCFG_PINMUX1_PINMUX1_23_20_SHIFT)
    
    
    #define PINMUX1_GPIO0_3_ENABLE    (SYSCFG_PINMUX1_PINMUX1_19_16_GPIO0_3  << \
    
                                        SYSCFG_PINMUX1_PINMUX1_19_16_SHIFT)
    
    
    #define PINMUX1_GPIO0_4_ENABLE    (SYSCFG_PINMUX1_PINMUX1_15_12_GPIO0_4  << \
    
                                        SYSCFG_PINMUX1_PINMUX1_15_12_SHIFT)
    
    
    
    /* LED Configuration */
    
    
    /* Titus : GP6[12], GP6[13], GP2[12] and GP0[9] is mapped to D4, D5, D6, D7 LEDs on OMAPL138/C6748 LCDK boards */
    
    
    /* Pin Multiplexing bit mask to select GP6[12] pin. */
    
    #define PINMUX13_GPIO6_12_ENABLE    (SYSCFG_PINMUX13_PINMUX13_15_12_GPIO6_12  << \
    
                                        SYSCFG_PINMUX13_PINMUX13_15_12_SHIFT)
    
    
    /* Pin Multiplexing bit mask to select GP6[13] pin. */
    
    #define PINMUX13_GPIO6_13_ENABLE    (SYSCFG_PINMUX13_PINMUX13_11_8_GPIO6_13  << \
    
                                        SYSCFG_PINMUX13_PINMUX13_11_8_SHIFT)
    
    
    /* Pin Multiplexing bit mask to select GP2[12] pin. */
    
    #define PINMUX5_GPIO2_12_ENABLE    (SYSCFG_PINMUX5_PINMUX5_15_12_GPIO2_12  << \
    
                                        SYSCFG_PINMUX5_PINMUX5_15_12_SHIFT)
    
    
    /* Pin Multiplexing bit mask to select GP0[9] pin. */
    
    #define PINMUX0_GPIO0_9_ENABLE    (SYSCFG_PINMUX0_PINMUX0_27_24_GPIO0_9  << \
    
                                        SYSCFG_PINMUX0_PINMUX0_27_24_SHIFT)
    
    
    
    void PinMuxSetup_leds(void)
    
    {
    
         unsigned int savePinmux = 0;
    
    
    
         /*
    
         ** Clearing the bit in context and retaining the other bit values
    
         ** in PINMUX13 register.
    
         */
    
         savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) &
    
                      ~(SYSCFG_PINMUX13_PINMUX13_15_12));
    
    
         /* Setting the pins corresponding to GP6[12] in PINMUX13 register.*/
    
         HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) =
    
              (PINMUX13_GPIO6_12_ENABLE | savePinmux);
    
    
    
         /*
    
         ** Clearing the bit in context and retaining the other bit values
    
         ** in PINMUX13 register.
    
         */
    
         savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) &
    
                      ~(SYSCFG_PINMUX13_PINMUX13_11_8));
    
    
         /* Setting the pins corresponding to GP6[13] in PINMUX13 register.*/
    
         HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) =
    
              (PINMUX13_GPIO6_13_ENABLE | savePinmux);
    
    
    
         /*
    
         ** Clearing the bit in context and retaining the other bit values
    
         ** in PINMUX5 register.
    
         */
    
         savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) &
    
                      ~(SYSCFG_PINMUX5_PINMUX5_15_12));
    
    
         /* Setting the pins corresponding to GP2[12] in PINMUX5 register.*/
    
         HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) =
    
              (PINMUX5_GPIO2_12_ENABLE | savePinmux);
    
    
    
         /*
    
         ** Clearing the bit in context and retaining the other bit values
    
         ** in PINMUX0 register.
    
         */
    
         savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(0)) &
    
                      ~(SYSCFG_PINMUX0_PINMUX0_27_24));
    
    
         /* Setting the pins corresponding to GP0[9] in PINMUX0 register.*/
    
         HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(0)) =
    
              (PINMUX0_GPIO0_9_ENABLE | savePinmux);
    
    
    }
    
    
    
    
    void PinMuxSetup_switches(void)
    
    {
    
         unsigned int savePinmux = 0;
    
    
         /* Setting the pins corresponding to GP0[1] in PINMUX1 register.*/
    
    
         /*
    
         ** Clearing the bit in context and retaining the other bit values
    
         ** in PINMUX1 register.
    
         */
    
         savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
    
                      ~(SYSCFG_PINMUX1_PINMUX1_27_24));
    
    
    
         HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
    
              (PINMUX1_GPIO0_1_ENABLE | savePinmux);
    
    
    
    
         /* Setting the pins corresponding to GP0[2] in PINMUX1 register.*/
    
    
              /*
    
              ** Clearing the bit in context and retaining the other bit values
    
              ** in PINMUX1 register.
    
              */
    
              savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
    
                           ~(SYSCFG_PINMUX1_PINMUX1_23_20));
    
    
    
              HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
    
                   (PINMUX1_GPIO0_2_ENABLE | savePinmux);
    
    
    
    
    
              /* Setting the pins corresponding to GP0[3] in PINMUX1 register.*/
    
    
                   /*
    
                   ** Clearing the bit in context and retaining the other bit values
    
                   ** in PINMUX1 register.
    
                   */
    
                   savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
    
                                ~(SYSCFG_PINMUX1_PINMUX1_19_16));
    
    
    
                   HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
    
                        (PINMUX1_GPIO0_3_ENABLE | savePinmux);
    
    
    
    
                   /* Setting the pins corresponding to GP0[4] in PINMUX1 register.*/
    
    
                        /*
    
                        ** Clearing the bit in context and retaining the other bit values
    
                        ** in PINMUX1 register.
    
                        */
    
                        savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
    
                                     ~(SYSCFG_PINMUX1_PINMUX1_15_12));
    
    
    
                        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
    
                             (PINMUX1_GPIO0_4_ENABLE | savePinmux);
    
    
    
    }
    
    
    
    int main(void)
    
    {
    
    
    
        /* The Local PSC number for GPIO is 3. GPIO belongs to PSC1 module.*/
    
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON,
    
                 PSC_MDCTL_NEXT_ENABLE);
    
    
    
        /* Pin Multiplexing of pins GP0[1] to GP0[4] of GPIO Bank 2 for DIP SWITCHEs in OMAPL138 LCDK board */
    
        PinMuxSetup_switches();
    
    
        /* Pin Multiplexing of pins GP6[12], GP6[13], GP2[12], GP0[9], for LEDs in OMAPL138 LCDK board */
    
        PinMuxSetup_leds();
    
    
    
        /* Titus : 2,3,4,5 is the GPIO no for GP0[1] to GP0[4]; Refer page no 901 in OMAPL138/C6748 TRM */
    
    
    
    /* SWITCHEs SETUP */
    
    
        /* Sets the pin 2 (GP0[1]) as input.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
    
    
        /* Sets the pin 3 (GP0[2]) as input.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
    
    
        /* Sets the pin 4 (GP0[3]) as input.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 4, GPIO_DIR_INPUT);
    
    
        /* Sets the pin 5 (GP0[4]) as input.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 5, GPIO_DIR_INPUT);
    
    
    /* LEDs SETUP */
    
    
        /* Sets the pin 109 (GP6[12]) as output.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);
    
    
        /* Sets the pin 110 (GP6[13]) as output.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT);
    
    
        /* Sets the pin 45 (GP2[12]) as output.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 45, GPIO_DIR_OUTPUT);
    
    
        /* Sets the pin 10 (GP0[9]) as output.*/
    
        GPIODirModeSet(SOC_GPIO_0_REGS, 10, GPIO_DIR_OUTPUT);
    
    
    
        while(1)
    
        {
    
    
        /* Titus : 2,3,4,5 is the GPIO no for GP0[1] to GP0[4]; Refer page no 901 in OMAPL138/C6748 TRM */
    
    
            if (GPIOPinRead(SOC_GPIO_0_REGS, 2))
    
            {
    
    
            GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);
    
            printf("S1 is not pressed\n");
    
    
            }
    
    
            else
    
            {
    
                printf("S1 is pressed\n");
    
                GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
    
    
            }
    
    
            if (GPIOPinRead(SOC_GPIO_0_REGS, 3))
    
            {
    
    
            GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_LOW);
    
            printf("S2 is not pressed\n");
    
    
            }
    
            else
    
                    {
    
                        printf("S2 is pressed\n");
    
                        GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_HIGH);
    
    
                    }
    
    
    
            if (GPIOPinRead(SOC_GPIO_0_REGS, 4))
    
            {
    
    
            GPIOPinWrite(SOC_GPIO_0_REGS, 45, GPIO_PIN_LOW);
    
            printf("S3 is not pressed\n");
    
    
            }
    
            else
    
                    {
    
                        printf("S3 is pressed\n");
    
                        GPIOPinWrite(SOC_GPIO_0_REGS, 45, GPIO_PIN_HIGH);
    
    
                    }
    
    
    
            if (GPIOPinRead(SOC_GPIO_0_REGS, 5))
    
            {
    
    
            GPIOPinWrite(SOC_GPIO_0_REGS, 10, GPIO_PIN_LOW);
    
            printf("S4 is not pressed\n");
    
    
    
            }
    
            else
    
                    {
    
                        printf("S4 is pressed\n");
    
                        GPIOPinWrite(SOC_GPIO_0_REGS, 10, GPIO_PIN_HIGH);
    
    
                    }
    
    
    
    
        }
    
    
    
    }

    Let me know for any help.

  • Thanks Titus,

    Can you please send the whole project to make sure I got all the include files (I guess some of these files are supposed to be included with the CD that normally comes with the LCDK, however I did not receive any CD with the kit).

    Thanks,

    Ayman

  • Hi,
    I wrote this code from starterware package.
    So, you can install the starterware package and build it with correct "include and library" settings.

    processors.wiki.ti.com/.../StarterWare

    software-dl.ti.com/.../index_FDS.html
  • Looks like I am missing some linker settings.

    Can you please have a look at the below screenshot and let me know what is missing?

    GPIO_TEST.zip

    Thanks,

    Ayman

  • Hi,

     undefined        first referenced
      symbol              in file     
     ---------        ----------------
     GPIODirModeSet   ./src/main.obj  
     GPIOPinRead      ./src/main.obj  
     GPIOPinWrite     ./src/main.obj  
     PSCModuleControl ./src/main.obj  

    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "GPIO_TEST.out" not built

    I'm getting this linker error.

    Yes, you are right, its due to library linker issue.

    For that, we have to give library location with NAME.

    Here is,

    Let me know about your results.

  • Hi Titus,

    Sorry for the late reply.

    I have tried your setting the project is working now, thanks a lot.

    I still see issues though.  Although the pins that are configured as input give me the right behavior, those which are configured as output (pins connected to LEDs) are not.

    They all are always on. Bits in the The CLR registers are never set (what ever I tried to write to them), please see the attached sceenshot (although the expression in the RHS gave 0x200 the CLR register still has "0x00".

    Any thought about the reason for that.

    Thanks,

    Ayman 

  • Hi,


    I still see issues though. Although the pins that are configured as input give me the right behavior, those which are configured as output (pins connected to LEDs) are not.

    They all are always on. Bits in the The CLR registers are never set (what ever I tried to write to them), please see the attached sceenshot (although the expression in the RHS gave 0x200 the CLR register still has "0x00".


    What you are trying to do ?
    Is that code I given is not performing what we expected ?
    If yes, clarify me what you want and required , so that I will tweak those codes and give it to you after explained.
    Not able to generate interrupts or any issues ?
    Else, you want to understand something ?
  • Hi Titus,

    I am trying to execute the GPIO test example from the starterware (attached) for the OMAP-1368 LCDK, this is example we were discussing in the above posts.

    This example sets 4 pins as input (these are connected to 4 DIP switches), these pin behave as expected as I could read the correct status.

    The example also sets another 4 pins as output (these are connected to 4 LEDS on the LCDK).  These are not behaving in the expected way and they are always high regardless of the settings of the clear and set registers.

    Please have a look and let me what is wrong here.

    Thanks for your help.

    Ayman

    6114.GPIO_TEST.zip

  • Hi,

    I'm able to reproduce and found the problem.

    Actually this code written by me and tested one too, I wrote this for one customer, so I've given to you directly.

    We have to copy this code to your in any ARM starterware code, so you would get all the libraries and everything.

    If you look into any ARM starterware example code, you could see all the required library and different *.cmd file.

    You have to use the following linker command file into your project to run this code without any problem.

    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\gpio\gpio.cmd

    Your code seems to be created new project and not used the "system_config.lib", this library is responsible to enable the "SYSCONFIG" register access and unlocking the KICK registers etc.,

    So, I would like you to suggest to link the "system_config" library into your project and starterware ARM's example linker command file and rebuild your project  then this code work as you expected.

    Please let me know the status.

    I am sure that this would fix this problem.

  • Hi Titus

    I added the mentioned library and the cmd file and still seeing the same behavior (see attached screeshot).

    4667.GPIO_TEST.zip

     

  • Hi,

    Not able to see the LED blinking while you change DIP switch state?

    Copy your complete code and put into the following file and import this project.

    Source code location:
    C:\ti\OMAPL138_StarterWare_1_10_04_01\examples\lcdkOMAPL138\gpio\gpioCardDetect.c

    Import location:
    C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\gpio

    Able to see the updated value PINMUX registers in CCS's "Register window" ?
  • Hi Titus,
    I tried the project you mentioned with the source file "gpioCardDetect.c" and it worked fine (I could see the LED blinking).
    I went ahead and commented the code in the main function in my project and pasted the code in the main function of the above file, it worked as well.
    So I guess these is something wrong in the main function of the example that read the switches and output the status in the LEDs.
    Can you you please have another look and let me know what is wrong there.

    Meanwhile I will try to test the same project on our HW. Also I will try creating a boot image and see if I can boot the omap from that.

    Thanks,
    Ayman
  • Hi,
    Actually I've used your GPIO_TEST code only with "system_config.lib" issue fix and able to run without any issues.
    Don't know what you have changed on your project, that's why I have suggested to use the ARM starterware example code template with linker command file to isolate the problem.

    FYI: I'm able to run your GPIO_TEST project (LED blinking and switch interrupt) after used the proper "system_config.lib"

    I would like you to suggest to compare the both working and non-working CCS properties of "Linker" option and linker command (*.cmd) of the project.
  • Hi Titus,

    I will looks at the differences after making sure that the current working project (which works fine on the LCDK) is also working fine on our board.

    For that purpose I modified the code to toggle GP4[8] as we have access to this port pin.

    Under this setup, when I tried to use CCS in debug mode (while it is connected to our board via the XDS100v2), I see that corresponding registers changed correctly.However when I scoped the pin I did not see the toggle.

    I guess these is something wrong on my HW as the pin voltage on the scope is 1.8V always (the same level which I set DVDD3318_B).

    Any suggestion what could be the reason?

    Is there anything special about this pin? Any special clock settings, ..etc?

    Please note that this same HW works fine when I tried to test the SATA device.

    Thank you for your feedback and help.

    Ayman

  • Hi,
    GP4[8] pin was muxed with EMIF data pins, so do you have flash (NAND/NOR/SRAM) interface in your project?
    Please make sure that you haven't configured to EMIFA by mistakenly.
    You can checkout the PINMUIX registers.
    I hope, it won't behave like that.
    I can confirm that it won't be a problem.
    Tomorrow, I will try to change that pin to GPIO then check with scope for toggling.

    Are you changing/muxing that pin on the fly ?
    EMIFA to GPIO or GPIO to EMIFA etc., ?
  • Thank you Titus for your fast response and help.

    I have a NAND flash connected to that pin, but this is not currently used.
    Here is my main.

    #include "gpio.h"
    #include "psc.h"

    #include "soc_OMAPL138.h"
    #include "lcdkOMAPL138.h"

    #include "hw_syscfg0_OMAPL138.h" //debug
    #include "hw_types.h" //debug


    #define PINMUX9_GPIO4_8_ENABLE (SYSCFG_PINMUX9_PINMUX9_31_28_GPIO4_8 << \
    SYSCFG_PINMUX9_PINMUX9_31_28_SHIFT)


    void GPIOBank4Pin8PinMuxSetup(void)
    {
    unsigned int savePinmux = 0;

    /*
    ** Clearing the bit in context and retaining the other bit values
    ** in PINMUX9 register.
    */
    savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(9)) &
    ~(SYSCFG_PINMUX9_PINMUX9_31_28));

    /* Setting the pins corresponding to GP6[12] in PINMUX13 register.*/
    HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(9)) =
    (PINMUX9_GPIO4_8_ENABLE | savePinmux);

    }

    /****************************************************************************/
    /* LOCAL FUNCTION PROTOTYPES */
    /****************************************************************************/
    static void Delay(volatile unsigned int delay);

    /****************************************************************************/
    /* GLOBAL VARIABLES */
    /****************************************************************************/

    /****************************************************************************/
    /* LOCAL FUNCTION DEFINITIONS */
    /****************************************************************************/

    int main(void)
    {


    /* The Local PSC number for GPIO is 3. GPIO belongs to PSC1 module.*/
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON,
    PSC_MDCTL_NEXT_ENABLE);

    /* Pin Multiplexing of pin 12 of GPIO Bank 6.*/
    GPIOBank6Pin12PinMuxSetup();

    //GPIOBank0Pin9PinMuxSetup();

    // GPIOBank0Pin0PinMuxSetup();

    GPIOBank4Pin8PinMuxSetup();

    /* Sets the pin 109 (GP6[12]) as input.*/
    GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT);

    //Sets the pin 10 (GP0[9]) as output.*/
    GPIODirModeSet(SOC_GPIO_0_REGS, 10, GPIO_DIR_OUTPUT);

    /* Sets the pin 1 (GP0[0]) as output.*/
    //GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);

    /* Sets the pin 73 (GP4[8]) as output.*/
    GPIODirModeSet(SOC_GPIO_0_REGS, 73, GPIO_DIR_OUTPUT);

    while(1)
    {
    GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_LOW);

    GPIOPinWrite(SOC_GPIO_0_REGS, 10, GPIO_PIN_LOW);

    //GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);

    GPIOPinWrite(SOC_GPIO_0_REGS, 73, GPIO_PIN_LOW);

    Delay(1000000);

    GPIOPinWrite(SOC_GPIO_0_REGS, 109, GPIO_PIN_HIGH);
    GPIOPinWrite(SOC_GPIO_0_REGS, 10, GPIO_PIN_HIGH);

    //GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);

    GPIOPinWrite(SOC_GPIO_0_REGS, 73, GPIO_PIN_HIGH);

    Delay(1000000);
    }


    }

    /*
    ** \brief This function checks the insertion status of the MMC/SD card
    ** in the device and prints related statements on the serial
    ** commuincation console of the external device.
    **
    */

    /*
    ** \brief This function can be called to generate a delay.
    */

    static void Delay(volatile unsigned int delay)
    {
    while(delay--);
    }


    /*****************************END OF FILE************************************/
  • Hi Titus,

    Looks like the PINMUX(9) did not get updated when I tried to write any value to it (Please look at the attached sceenshot).

    Also I think PINMUX retain its value after power cycle, so if please make sure you can reset it to zero before you try my attached project.

    GPIO_TEST2.zip

  • Hi,

    I'm able to see the updated PINMUX9 value (0x80000000).

    In your project, you have disabled the "gpio.cmd" linker command file which is required for SYSCFG registers (PINMUX) access.

    I told you already that we have to use "system_config.lib" to unlock the SYSCFG registers like PINMUX, you have to use "gpio.cmd" file to utilize the "system_config.lib", you may linked this library but "gpio.cmd" file would use, check the below lines.

    gpio.cmd

       .init : {

        system_config.lib<init.obj> (.text)

          } load > 0xC1080000

    I've attached the modified project, use this project and let me know, how it behaves.

    Just I've disabled the "OMAPL138.cmd" and selected "gpio.cmd" file and then I commented out "HWREG" line and added the "GPIOBank4Pin8PinMuxSetup" function, please refer to the following lines.

       GPIOBank4Pin8PinMuxSetup();

    //    HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(9)) =

    //                 (0x80000000);

    FYI: I'm not able to check the EMA_D0 line since it is connected to flash devices directly, BTW, I'm using OMAPL138 LCDK board.

    5282.GPIO_TEST2.zip

  • Hi Titus,

    I have tried the "GPIO.cmd" with my setup and I could not start the debug session as it seems that it failed because of memory loading error.

    I think that file assume that there is a DDR module, but in my current setup I don't have that, there is not external memory on my board.

    I went ahead and tried the file "linker.cmd" which comes with the "OMAPL138-ARM-LED" example and it worked with the setup I have in debug mode (my board connected to CCS though xds100v2).  However when I created a booting image using the AISgen tool (to be used with the SPI0 flash on board), this does not work (I did not see the pin toggle).

    To make sure that at least the OMAP tried to boot, I scoped the waveform on the SPI clock pin and saw lot of activity.

    So I need your help for the two tasks.

    1. Modify the "OMAPL138.cmd" which worked fine with the SATA application and/or the "linker.cmd", which works fine with GPIO to include required settings for both functionalities (SATA and GPIO).

    2. Let me know if the settings of the AISgen I used (attached) has anything wrong, or if I missed anything in that process that make the device fails to boot.

    We really appreciate you help and support.

    Thanks,

    Ayman

  • Hi Titus,

    I am following up on the above issue.....

    Any update?

    Thanks,

    Ayman

  • Hi,

    Sorry for the delayed response on this.

    I think that file assume that there is a DDR module, but in my current setup I don't have that, there is not external memory on my board.

    I went ahead and tried the file "linker.cmd" which comes with the "OMAPL138-ARM-LED" example and it worked with the setup I have in debug mode (my board connected to CCS though xds100v2).  However when I created a booting image using the AISgen tool (to be used with the SPI0 flash on board), this does not work (I did not see the pin toggle).

    Oh, okay. Thanks.

    Could you please try to use the attached the *.cfg for converting .OUT to .AIS

    OMAPL138-DSP-LED-NAND-SPI-UART.cfg

    Able to flash and boot the same LED code on LCDK board ?

    If not tried, could you please try firstly on LCDK board and then your custom, so that you could understand and confident on that.

  • Hi Titus,

    Normally I use the "AISgen_d800k008.exe" to convert .out to .bin which should be downloaded to the SPI flash for booting.

    Can you please advise how can I use the .cfg file here?

    Please also note that my example does not use the DSP, it used the ARM core.

    Also, for your reference, here is the .bin file that I tried (which failed booting). I have changed the file extension from bin to txt here so that I can be accepted for sending.

    GPIO_SPI_TEST.txt
    TIPA
    YSXYSX���M� ����������������������L� ��������L���������\��������������������� ������
    ��������������������� ������Ѝ��/��M���������������������������L� ��������L������������������������������������0��Ѝ��/��M� ����������������������L� ��������L���������\�	�����������������̠��������\������������������̠����Ѝ��/��M���������������������������L� ��������L������������������� �����������������0��Ѝ��/��M� ����������������������L� ��������L������K������������������̠�$��������������������̠�0���B������������������̠�,��������������������̠�(���/������������������̠�$��������������������̠�,���������������������̠�(��������������������̠�0���	����\����
    �\����
    �\���
    �\����
    ����Ѝ��/��M���������������������������L� ��������L�������������������,��������
    �������������������$��������
    �����������Ѝ��/��M���������������������������L� ��������L�������������������4��������
    ��������Ѝ��/��M���������������������L� ��������L�����������������������̠�4���Ѝ��/��M��������������� ������Ѝ��/��M��������������� ������Ѝ��/��M�0�� �������������������
    ���������������Ƞ�������������������Ƞ��������������������Ƞ�,Ƞ�������������������Ƞ�,Ƞ����Ѝ��/�R��/@-��+�/R�:-� B�P��P�� R����*�� ����0�
    
     ���O���0��0������������P��P���� R�0O�0��0�����0��0�������0��0��0��0�����0��0�� R������������
     R�:0��0��#8��0@� R����*r��� ��0� �0�  B" ��0�$0�$��� R�	:0��0��#4��0@�#4��0@�#4��0@� R����* ����0��0�� R��������M�������@���������������,�������� ��������Ѝ��/�@-����� ��0��F��������������������;�����m�� ���������
    �� ���������I�� �����������m�� �����
    �� ����
    ���I�� ����������m�� ��|�����
    �� ��l������I�� ��\������X��������M������L�\���
    ���L�\������Ѝ��/�DA�p�8@��<@���`�@B �M�0�� �������������������������������������ʀ����\������ �������� �����\����(�����������\�
    ���L�\����������(�����������\�
    ���L�\���������\�
    �������������������L�������\�
    ��������Ȝ�?����\�������\��������� Ѝ��/��@-���p�V�P��p��`��U�*��@��A��@����4�/�����xP��xp��U�*@��4�/������������ R�J0��0�� R����Z ��
    0��0�� R���� � b� ��R�����/�����������@-�@���R���	
    �\��0�����0S������\�:0���0���0���L�|�����������T�������\����0�����4�����������p@-�`��pP�����@��������� ����R���	 ��R�
    ��� ���������<�/��y��������H��$H��\�����p�������/�@-���������L���@-����@��<�/�<������\�
    ��<�/�(������\�
    <�/�������<�/�������������M�������T���������������@��������Ѝ��/��M�������$�����������������Ɍ����Ѝ��/�HA�TA�������)�$П�$��Ѝ������Ѐ�>���������������������/�������/��/������|���������������� ��������� ��T���YSX��$<�<�|�h����YSX�
    �

    Thanks,

    Ayman

  • Hi,
    You would get option to import the *.cfg "Load Configuration" in AISgen exe.
  • Hi Titus,

    I have tried the cfg file you sent withe AISgen tool to boot from flash on the LCDK and here is my observations:

    1- The boot mode in the AISgen tool changed to NOR (I don't think that the LCDK has NOR chip)???

    2- The SFH tool never end when I tired to flash the bin file.

    Please see the below screenshots.

  • Hi Titus,
    I changed the target to NAND in the AISgen and the sfh tools and successfully downloaded the code to the LCDK and it worked.
    However I wanted to boot from the SPI in my custom board (in which I prepare to boot from the chip "W25X32FV") .
    Can you please send me the cfg file for that.

    I assume that I should use the SPI boot mode and hence set the bootpins to 0x0A. Please confirm.

    Thanks,
    Ayman
  • Hi,
    I given the *.cfg file for all the boot modes, NOR,SPI,NAND so, just import that file and change to SPI0 or SPI1 flash as per your custom board design then convert.
    Also, please make sure that you have given proper SPI clock in its "Peripheral" tab and ensure that you have given GPIO PSC module no and required PSC listed in "Enable PSC" of "PSC" tab after you ticked "Configure PSC"
  • Hi Titus,

    I still can not have the program work on my custom board which boot from the SPI even after trying differnt settings in the AISgen tool.

    Don't know what to try next.  Could be some settings in the gel file, I am using the below gel file (attached):

    \ti\ccsv6\ccs_base\emulation\boards\lcdkomapl138\gel\OMAP-L138_LCDK.gel.

    Any suggestion of what to try next?

    Thanks,

    Ayman

    4137.OMAP-L138_LCDK.gel

  • Hi Titus,

    I am following up on the above issue......

  • Hi,

    Don't know what to try next. Could be some settings in the gel file, I am using the below gel file (attached):

    \ti\ccsv6\ccs_base\emulation\boards\lcdkomapl138\gel\OMAP-L138_LCDK.gel.


    Gel file is used when you debug the board with JTAG.
    If your code is working while debugging and its not booting then the sounds like some PSC settings were missed.
    Could you enable the PSC settings which is required by the code, like GPIO, UART2, etc.,


    Are you using starterware code ?
    If yes, you have to use bootloader code first and then APP.

    Bootloader should be converted into AIS format and ARM/DSP app must be converted to binary format.

    Please refer to the following TI wiki page.

    processors.wiki.ti.com/.../OMAPL138_StarterWare_Booting_And_Flashing