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 from NAND on a C6748 custom board

Other Parts Discussed in Thread: TMS320C6748, AM1808, OMAP-L138

Hello,

I am trying to boot from flash in a TMS320C6748 custom board using the NANDWriter_DSP. The NAND model is MT29F4G16ABADAH4, exactly the same used in the C6748 LCDK board, with the same connections between DSP and NAND as in the LCDK board. The BOOT pins are configured to boot from a 16-bit NAND. The NANDWriter_DSP application successfully erases and writes the NAND flash. However, the board in unable to boot from flash.

In an attempt to figure out what can be wrong, I ran the example "nand" that comes with the PSP drivers (biospsp_03_00_01_00). I have noticed that the mapping logical to physical block constantly changes the value of the physical block. I suspect that every time I am running the "nand" example, I am filling up the NAND (writing 4 blocks per run), as they appear to be marked as used and skipped.

My questions are: has anyone encounter a problem using the NANDWriter_DSP to flash the code? How can I erase the NAND without deleting the factory information (bad blocks)?

Thanks,

Mayela

  • Hi Mayela,
    I would like you to flash and boot the starterware code into your device firstly.
    processors.wiki.ti.com/.../C6748_StarterWare_Booting_And_Flashing

    We use starterware bootloader to initialize the peripheral and copy the app code from flash into RAM.
    Also you have to format the bootloader (*.out) to AIS format (*.ais)

    You can also boot without bootloader but application needs to be AIS formatted with appropriate settings through AISGen tool.

    Starterware package download:
    processors.wiki.ti.com/.../StarterWare
  • Hi Titus,

    Thank you very much for your reply. I tried to do as you suggested but I am afraid it hasn’t been possible to run the StarterWare bootloader. To start with, my custom board has the BOOT pins configuration hardwired, it is not easy to change it to boot from UART. Secondly, since I have an LCDK board too, I tried to compile the bootloader with pre-processor definitions c6748 and NAND but got all sorts of errors. I had to comment out an #include “bl_am1808.h” in bl_config.h as I could not find it in my installation of StaterWare. Finally, it appears to have a conflict of constants and functions names. In bl_platform.c, it assigns constants to the NAND ECC info object:

       hNandEccInfo->ECCInit                   = EMIFANANDECCInit;

       hNandEccInfo->ECCEnable                 = EMIFANANDECCEnable;

       hNandEccInfo->ECCDisable               = EMIFANANDECCDisable;

       hNandEccInfo->ECCWriteSet               = EMIFANANDECCWriteSet;

       hNandEccInfo->ECCReadSet               = EMIFANANDECCReadSet;

       hNandEccInfo->ECCCalculate            = EMIFANANDECCCalculate;

       hNandEccInfo->ECCCheckAndCorrect       = EMIFANANDECCCheckAndCorrect;

    But these constants are not defined anywhere. Instead, nand_emifa2.h declares them as functions:

    extern NandStatus_t     EMIFANANDECCInit(NandInfo_t *nandInfo);

    extern void             EMIFANANDECCEnable(NandInfo_t *nandInfo);

    extern void             EMIFANANDECCDisable(NandInfo_t *nandInfo);

    extern void             EMIFANANDECCReadSet(NandInfo_t *nandInfo);

    extern void             EMIFANANDECCWriteSet(NandInfo_t *nandInfo);

    extern void             EMIFANANDECCCalculate(NandInfo_t *nandInfo, unsigned char *ptrEccData);

    extern NandStatus_t     EMIFANANDECCCheckAndCorrect(NandInfo_t *nandInfo,

                                                   unsigned char *eccRead,

                                                   unsigned char *data);

    I have StarterWare version 1.20.03.03.

    Mayela

  • Hi,
    Install the C6748 starterware package and just use the following bootloader project directly. And it doesn't require any change, by default its using NAND 16bit mode.
    C:\ti\C6748_StarterWare_1_20_04_01\build\c674x\cgt_ccs\c6748\lcdkC6748\bootloader

    Also, UART flashing is not mandatory and you can use CCS flash utilities (NAND,SPI writer etc.,) as you are doing currently.

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

    processors.wiki.ti.com/.../C6748_StarterWare_Booting_And_Flashing
  • Hi Titus,

    Thanks once more for your reply.

    I am testing your suggestion on the LCDK board before I move to the custom board. The LCDK have configurable BOOT pins, so I tried first using the serial utility sfh_OMAP-L138.exe. Using the SFH utility with the StarterWare bootloader and the application’s binary file generated with out2rprc.exe works well. It boots from flash after changing the BOOT pins to NAND and executes the application code as expected.

    However, in order to use the StarterWare bootloader with the CCS flash utility NANDWriter_DSP, I need to generate a single AIS file containing the bootloader and the application’s binary file. For the later, I need to provide an address where this binary file will be located. I tried the default address @0x80000000. AISGen automatically adds this address when adding a binary file to the “DSP application file” input field. Also, I tried with the entry point address, or _c_int00 for my application, but none of them worked.

    Could you please try to replicate my situation using the LCDK board? I am attaching the application .out file. It should just toggle two LEDs.

    Regards,

    MayelagpioSample.zip

  • Hi,
    I've tried your code via JTAG and it working, let me try with flashing.
    Sure, I will also try and let you know.


    However, in order to use the StarterWare bootloader with the CCS flash utility NANDWriter_DSP, I need to generate a single AIS file containing the bootloader and the application’s binary file. For the later, I need to provide an address where this binary file will be located. I tried the default address @0x80000000. AISGen automatically adds this address when adding a binary file to the “DSP application file” input field. Also, I tried with the entry point address, or _c_int00 for my application, but none of them worked.


    Did you get any output (UART print) from bootloader or you got nothing on the console ?
  • Hi Titus,

    Sorry, I wasn't aware that the bootloader sends messages to the UART port. I have just connected the USB-UART port to the PC and I get this on the serial terminal:

    StarterWare C6748 Boot Loader

     Reading Image From NAND ...NAND Read Failed.

    Regards,

    Mayela

  • Hi Mayela,

    I am also getting the same problem. I did one more method to solve the problem.

    We don't want to use any bootloader since its DSP and only one core , any way directly we could run DSP app.

    Now, I'm able to flash and boot with SFH and DSP writer too.

    Method: 1

    1) Build your LED project with the following lines (linker command) (internal memory has been used)

    2) Rebuild the project

    3) Convert .out to .ais

    4) Flash the *.ais with DSP writer project.

    Use the below lines in the linker command *.cmd file of your project  and rebuild it then convert into AIS.

    // ============================================================================

    // Linker Command File for Linking c674 DSP Programs

    //

    // These linker options are for command line linking only. For IDE linking,

    // you should set your linker options in Project Properties.

    //         -c                    Link Using C Conventions

    //        -stack     0x1000        Software Stack Size

    //        -heap    0x1000        Heap Area Size

    // ===========================================================================

    -stack 0x1000

    -heap 0x1000

    // ============================================================================

    //                         Specify the System Memory Map

    // ============================================================================

    MEMORY

    {

       L1P:    o = 0x11E00000        l = 0x00008000

       L1D:    o = 0x11F00000        l = 0x00008000

       L2:     o = 0x11800000        l = 0x00040000

       DDR:   o = 0xC0000000        l = 0x08000000

    }

    // ============================================================================

    //                 Specify the Sections Allocation into Memory

    // ============================================================================

    SECTIONS

    {

       .cinit        >        L2               // Initialization Tables

       .pinit        >        L2               // Constructor Tables

       .init_array   >        L2               //

       .binit        >        L2               // Boot Tables

       .const        >        L2               // Constant Data

       .switch       >        L2               // Jump Tables

       .text         >        L2               // Executable Code

       .text:_c_int00: align=1024 > L2         // Entrypoint

       GROUP (NEARDP_DATA)                       // group near data

       {

          .neardata

          .rodata

          .bss                                   // note: removed fill = 0

       }             >        L2

       .far: fill = 0x0, load > L2             // Far Global & Static Variables

       .fardata      >        L2               // Far RW Data

       .stack        >        L2               // Software System Stack

       .sysmem       >        L2               // Dynamic Memory Allocation Area

       .cio          >        L2               // C I/O Buffer

       .vecs         >        L2               // Interrupt Vectors

    }

    Method 2:

    1) Build your LED project with old linker command lines (DDR memory had been used)

    2) Rebuild the project

    3) Convert .out to .ais (Here : In AISgen settings, you have to enable the PLL0 and PLL1 initialization for DDR memory)

    4) Flash the *.ais with DSP writer project.

    I have attached the converted AIS code (LED blink) that needs to be flashed into NAND flash through DSP NAND writer.

    gpio_c6748lcdk.zip

    Please let me know if any.

  • Hi Titus,

    Thanks for your help. It was a bit complicated to add a custom linker command file without getting linking errors, so I initialised the section map in the .cfg file.

    Program.sectMap[".cinit"] = "IRAM";
    Program.sectMap[".pinit"] = "IRAM";
    Program.sectMap[".init_array"] = "IRAM";
    Program.sectMap[".binit"] = "IRAM";
    Program.sectMap[".const"] = "IRAM";
    Program.sectMap[".switch"] = "IRAM";
    Program.sectMap[".text"] = "IRAM";
    Program.sectMap[".text:_c_int00"] = { loadSegment: "IRAM", loadAlign: 0x400 };
    Program.sectMap[".neardata"] = "IRAM";
    Program.sectMap[".rodata"] = "IRAM";
    Program.sectMap[".bss"] = "IRAM";
    Program.sectMap[".far"] = "IRAM";
    Program.sectMap[".fardata"] = { loadSegment: "IRAM", fill: 0x0 };
    Program.sectMap[".stack"] = "IRAM";
    Program.sectMap[".sysmem"] = "IRAM";
    Program.sectMap[".cio"] = "IRAM";
    Program.sectMap[".vecs"] = "IRAM";

    I found other sections in the automatically generated linker.cmd file, so I am also loading them on IRAM.

    Program.sectMap[".ti.decompress"] = "IRAM";
    Program.sectMap[".ti.handler_table"] = "IRAM";
    Program.sectMap[".c6xabi.exidx"] = "IRAM";
    Program.sectMap[".c6xabi.extab"] = "IRAM";
    Program.sectMap[".data"] = "IRAM";
    Program.sectMap[".args"] = { loadSegment: "IRAM", loadAlign: 0x4}

    I converted the .out file to .ais using the LCDK AISGen configuration, flashed it to the custom board and it works! It boots from NAND Flash.

    So, my guess is that there is something wrong in the settings of the DDR in the custom AISGen configuration file. I would be surprised if this is the case, because I derived the values of the registers in the PLL0, PLL1 and DDR tabs from the custom GEL file. What else could I be doing wrong? Do I need to specify an entry point for the DDR-based application?

    Best wishes,

    Mayela

  • Hi Titus,

    I'm working with Mayela on this problem, and it occurs to me what I need to do next is get the debugger connected to the bootloader.

    I would like to trace the progress of the AIS being read from the flash and the setup of the various registers to see at what point things differ from the working system on the LCDK board.

    Is this possible?  Is there an appnote or similar you could point to?  What I am envisaging is being able to connect the debugger and then perform a reset on the DSP, and then single-step it from there.

    Any guidance you could offer will be greatly appreciated!

    Thanks,
    Martin

  • Hi Mayela,


    I converted the .out file to .ais using the LCDK AISGen configuration, flashed it to the custom board and it works! It boots from NAND Flash.


    Sounds good, its working for you as well. Good job.


    So, my guess is that there is something wrong in the settings of the DDR in the custom AISGen configuration file. I would be surprised if this is the case, because I derived the values of the registers in the PLL0, PLL1 and DDR tabs from the custom GEL file. What else could I be doing wrong? Do I need to specify an entry point for the DDR-based application?

    I have given this solution since we missed out the DDR and PLL changes in AISgen settings, that's why I suggested to use internal RAM instead of DDR since internal RAM will be enabled by default.

    No need of entry point for the single application conversion.

    If you want to run code in DDR, you have to use your DDR timings settings and PLL configurations in AISGen setting option as I given in 2nd method.
    This DDR type code is executing in emulation mode ?
  • Hi Titus,
    Yes, the code runs from the mDDR in emulation mode with the PLL and DDR parameters set in the custom GEL file. That is why I thought that simply coping the values of these parameters from the GEL file to the AISGen configuration would be enough to get the DDR settings right.
    Best wishes,
    Mayela
  • Hi Martin,
    Actually RBL code only realize the AIS converted/formatted binary and set the appropriate settings (PLL,DDR,PSC etc.,) and app bootloader would read the binary (application) from NAND and put it on DDR (here AIS format not required and simply binary format).

    We don't want to use any bootloader simply we will use application directly since you are using DSP processor (C6748).
    We can also save boot time.
  • Hi Mayela,
    Actually starterware bootloader using internal RAM to execute and initialize the DDR and PLL settings and we don't require much AIS settings since bootloader taking car everything.
    We can use bootloader + app combination if you have UART boot mode and its very easy to flash two types of binaries(bootloader + app => "-flash" option) through SFH writer but you have only DSP writer which needs single binary.

    Firstly, we can try to boot single binary which needs to be run on DDR on C6748 LCDK board with simple LED blinking application, if its succeeds then its also possible with your custom board.
    What do you say ?
    I am also trying, let you know if I got something.
  • Hi Mayela,

    Good news!

    Now, I'm able to boot the LED application with correct AISgen settings(PLL0,PLL1,PSC,DDR).

    1) I have configured LED application need to run on DDR2

    2) Created new AISgen settings with PLL0,PLL1,PSC,DDR

    3) Converted *.out to AIS formatted binary.

    4) Flashed into NAND with CCS DSP writer on C6748 LCDK board.

    5) Set boot mode to NAND and then LED blinking is working.

    I have also tried to test your GPIO LED blinking app too and that also working on C6748 LCDK board.

    Here is my c6748_lcdk_gpio_latest.cfg that needs to be imported in AISGen tool for C6748 LCDK.

    I have attached your "gpioSample.out" , converted AIS formatted binary "gpio_mayela.ais" and AIS configuration file "c6748_lcdk_gpio_latest.cfg"

    gpioSample_latest.zip

    You have to modify this "c6748_lcdk_gpio_latest.cfg" file for your DDR register, PLL0,PLL1 settings for your custom board.

    Please try this on both C6748 LCDK & custom board and update me.

  • Thanks Titus - yes I understand that, but given we have

    * a working app (as proven on the LCDK, and via the debugger on our custom board)

    * what we think are all the right settings for the AIS config - as they work in the GEL file we use with the debugger.

    I am assuming something is going wrong in the process of the AIS being read from flash (or I guess in the process of writing it to the flash - does the flashwriter do some kind of checksum after programming?)

    Can you advise what would be the recommended approach to debugging at this stage?

    Thanks,

    Martin

  • Hi Titus,

    I have done some more digging - looking at the AIS file hex, it appears that the PLL1 is not being configured... I assume that might cause some problems with the DDR boot?

    At the end is a dump of the contents using this tool:
    processors.wiki.ti.com/.../Manually_Patch_AIS_File_using_Perl_Script

    Should the AISGEN have configured the PLL1 peripheral for us? (The tick boxes are definitely ticked - here's the appropriate bit of the CFG fie:)
    Configure PLL1=True
    PLL1 Multiplier=17
    PLL1 Post Divider=2
    PLL1 Div1=1
    PLL1 Div2=2
    PLL1 Div3=3

    I also note that
    Entrypoint=0
    - I assume that means the tool will calculate the entrypoint correclt from the ELF file?

    Anyway, here is the AIS dump - thanks in advance for any comments you can offer!


    aisPatch.pl v1.00, Copyright Texas Instruments, All Rights Reserved
    Dumping the contents of icl_led_flash.ais ...
    --------------------------------------------------------------------------
    0x41504954 Magic Number
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x00800020 Section Address
    0x000002C0 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x008002E0 Section Address
    0x00000120 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x00800400 Section Address
    0x00000040 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x00800440 Section Address
    0x00000010 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535905 Jump
    0x00800220 Jump Address
    --------------------------------------------------------------------------
    0x5853590D Function Execute
    0x00020000 PLL0 Configuration, 2 arguments
    0x01180001 function argument 0
    0x00000B05 function argument 1
    --------------------------------------------------------------------------
    0x5853590D Function Execute
    0x00080003 mDDR/DDR2 Controller Configuration, 8 arguments
    0x10010001 function argument 0
    0x00000002 function argument 1
    0x000000C4 function argument 2
    0x02074621 function argument 3
    0x16923209 function argument 4
    0x18141400 function argument 5
    0x00000924 function argument 6
    0x00000000 function argument 7
    --------------------------------------------------------------------------
    0x5853590D Function Execute
    0x00080003 mDDR/DDR2 Controller Configuration, 8 arguments
    0x10010001 function argument 0
    0x00000002 function argument 1
    0x000000C4 function argument 2
    0x02074621 function argument 3
    0x16923209 function argument 4
    0x18141400 function argument 5
    0x00000924 function argument 6
    0x00000000 function argument 7
    --------------------------------------------------------------------------
    0x58535907 Boot Table
    0x00050404 Boot Table Command Type
    0x01E2C004 Boot Table Command Address
    0x00000003 Boot Table Command Data
    0x00000000 Boot Table Command Sleep
    --------------------------------------------------------------------------
    0x5853590D Function Execute
    0x00050005 EMIFA ASYNC Configuration, 5 arguments
    0x00000000 function argument 0
    0x3FFFFFFD function argument 1
    0x00000000 function argument 2
    0x00000000 function argument 3
    0x00000002 function argument 4
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x11800000 Section Address
    0x00000AE0 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0x11800C00 Section Address
    0x00000200 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0xC00A8B70 Section Address
    0x00000010 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0xC00A8B80 Section Address
    0x000279E0 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0xC00E0560 Section Address
    0x0000514C Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0xC00E71E4 Section Address
    0x00000078 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535901 Section Load
    0xC00E725C Section Address
    0x00000F80 Section Size in Bytes
    --------------------------------------------------------------------------
    0x58535906 Jump and Close
    0xC00CA9E0 Jump Address
    --------------------------------------------------------------------------
  • Hi Titus,

    Thank you very much for your message. Your AIS configuration file indeed works well for the LCDK, however it doesn’t work for the custom board.

    This has been always the case. The LCDK successfully boots from NAND when the application AIS file is flashed to the board using either the SFH serial flasher or the NANDWriter from CCS.

    The problem is the custom board. Its boot pins are hardwired to boot from 16-bit NAND, block 1. Therefore, I cannot use the SFH serial flasher. Initially, when I started this thread, I thought that the problem was the NAND memory.

    Your first suggestion, to use the StarterWare bootloader, neither works on the custom board nor on the LCDK board, when using the NANDWriter from CCS to flash to the board. This could be because neither of us knows which address to provide as an entry point for the application’s RPRC binary file when converting the bootloader .out file and the application’s RPRC file to AIS with AISGen utility.

    Your next recommendation was to configure the application to run from internal RAM and flash it to the board using NANDWriter. This worked well for both, the LCDK and the custom boards, singling out the DDR settings for the custom board in the AISGen configuration as the most likely cause of the problem.

    Having proved that the code can be flashed to the custom board with NANDWriter and that the custom board can boot from NAND when running the application from internal RAM, we directed our attention on the AIS settings for DDR.

    The custom board mDDR is an IS43/46LR16800F with 128Mb organised as 2M x 16bits x 4 banks. Its timing parameters are different to those of the DDR on the LCDK board.

    The mDDR settings in the custom GEL file work well for the custom board when running the code in emulator mode, but the same settings in the AISGen file fail to correctly configure the external memory when booting from NAND.

    So, my next question is why the same DDR settings work well when running the code in emulator mode but not when booting from NAND?

    Best wishes,

    Mayela

  • Actually, scratch my queries about the PLL1 config - Mayela pointed out to me that the PLL1 config can also be done in the DDR setup command!  

    So, the problem remains (as Mayela's most recent message also said), "why do the settings that work when configured via GEL not work when configured via AIS?"

  • Hi Martin,

    I have done some more digging - looking at the AIS file hex, it appears that the PLL1 is not being configured... I assume that might cause some problems with the DDR boot?

    Yes, surly it could lead to DDR boot issues.
  • Hi Mayela and Martin,

    Please make sure that you have configured the PLL0,PLL1(DDR) and DDR timing parameters in AISGen settings.


    So, the problem remains (as Mayela's most recent message also said), "why do the settings that work when configured via GEL not work when configured via AIS?"


    Are you using the same DDR2 part like LCDK board has ?
    If different one, it might work with emulation mode in LCDK's DDR2 configurations due to some marginality and it won't work if you used mDDR device.

    If you are using different DDR2 part than LCDK then use the following DDR timing spread sheet to calculate the timing

    processors.wiki.ti.com/.../C674x
  • Hi Titus,

    The custom board has a completely different DDR part - it is mDDR and we have a custom GEL file.  I have used CCS to load the application code, and the GEL file.  The application runs fine.  I have extracted the PLL and DDR config registers from the DSP and put them into the appropriate places in the AIS file, and they appear to be correctly set in the AIS output file which is then burned into the flash.

    I have verified that the PLL registers are correctly configured by the bootloader (by connecting the debugger without a GEL file) - I have changed one of the values slightly to verify that I am not inadvertently rewriting the setup with a GEL file, and they are being configured correctly.

    So I'm afraid the question still remains:

    Why are the register values which work when programmed via a GEL file not allowing the DSP to boot when the same values are used in the AIS config?

    What else can we try?  What else can go wrong? Are we the first to have trouble of this sort?

    Thanks,

    Martin

  • Hi Titus,

    Thanks again for your answer. Martin has already clarified the issue about the memory part. Are you suggesting that if the DDR settings are borderline they might work in emulator mode but not standalone? Is there a reason for this?

    I found a similar post which might be worth exploring: http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/115/p/119596/431543

    Best wishes,

    Mayela

  • Hi Mayela,

    Thanks again for your answer. Martin has already clarified the issue about the memory part. Are you suggesting that if the DDR settings are borderline they might work in emulator mode but not standalone? Is there a reason for this?

    Yes.
    Did you calculate the DDR timing parameters for your DDR part ?
  • Hi Martin,

    The custom board has a completely different DDR part - it is mDDR and we have a custom GEL file.


    You meant that you have configured gel file for your mDDR correctly with spread sheet ?
    Or else you have used the EVM mDDR timing parameters ?
  • Hi Titus,

    The engineer who designed the board derived the DDR parameters for the mDDR part in the custom board. He left the company a few months ago and we have lost contact with him.

    The custom board GEL file has these DDR parameters. They are different to the LCDK parameters. This GEL file seems to be doing the DDR configuration correctly because the code runs from DDR in emulator mode. The same parameters do not work in the AIS file.

    Best wishes,

    Mayela

  • Hi Mayela,
    Thanks for confirming that you used the modified DDR timing values in AISgen tool.
    I also believe that you have used the same PLL multiplier and divider value which you used in gel file for AIS conversion.

    Did you provide your modified gel file to me ?
    If not, please share it.

    You can generate AISGen tool *.cfg file after you modified everything.
    File -> Save Configuration.

    Can you provide the mDDR (LPDDR) part no and latest AISgne tool .cfg file ?
  • Sure, these are the two files requested.

    Cheers,

    Mayela

    C6748_MZ.gel

    myAisGenConfig.cfg

  • Forgot to add this: the mDDR part number is IS43LR16800F-6BLI.

    Mayela

    IS43LR16800F-6BLI DRAM 128M (8Mx16) 166MHz Mobile DDR 1.8v.pdf

  • Hi Titus,
    I am reading the document SPRUGJ4B DDR2/mDDR Memory Controller and I getting a bit confused. Does BOOTUNLOCK need to be set to 1 to be able to change the settings from DDR2 to mDDR?
    Do you have a typical GEL file or AIS config for mDDR?
    Best wishes,
    Mayela

  • Latest update. Connecting to the target using the emulator, I can see the value of 0xA55AA55A at location 0xC0000000. My guess is that this value is written by the ROM's bootloader code as part of the DDR's initialisation. It seems to be able to access the DDR, to write on it, but it doesn't load the application's code on it.

    Mayela

  • Hi Titus,

    Good news, my custom board is booting from NAND running the code from mDDR. I downloaded the latest version of AISGen and followed the instructions to apply the ECC patch using HexAIS_OMAP-L138.exe and the StarterWare bootloader. Job done!

    Thank you very much for your help.

    Mayela

  • Hi Mayela,
    Wow ! sounds good.
    Thanks for your update.
  • Actually, after adjusting the mDDR registers to the part’s timing parameters, there is no need for the ECC patch. The problem was just poor configuration of the mDDR registers. The fact the mDDR was working reasonably well with the bad register values when using the emulator kept us thinking that the registers values were OK.

    If someone is interested, I could send them my version of the “mDDR/DDR memory controller register setting calculator” spreadsheet.

    Cheers,

    Mayela

  • Hi Mayela,
    Sounds good.
    Finally its poor configuration of the mDDR registers.
    Thanks for your update.
  • Hello All,

    Thanks for this

    Regards,
    Bryan