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.

External Ramdisk on DM3730 and WinCE 6.0

Other Parts Discussed in Thread: OMAP3530, DM3730

Hello,

We have our custom board based on the TI DM3730 processor, and we are running WinCE 6.0 on it.  Except of the regular RAM, we have also 1 MB of battery backed ram, we'd like to use as a Ram disk.  Now, what is the best way to add it to the OS?  Do we need to change some code in the Ram Disk driver (C:\WINCE600\public\common\oak\drivers\block\ramdisk\driver\system.c) or just the registry settings for its size and address?  We actually tried both approaches, and so far we didn't make it to work.  We tried to use "MmMapIoSpace", but we cannot access the address returned by it - there is an exception.  We've added also our Ram section to the "C:\WINCE600\PLATFORM\EVM_OMAP3530\SRC\INC\addrtab_cfg.inc" file.  And for the "MmMapIoSpace" we've used the physical RAM declared in "addrtab_cfg.inc".

 Anyway, could you please provide me all the steps needed for adding (programmatically only) the external RAM to the WinCE environment?

 Thank you very much!!

Zack

  • We dont have much expertise in RAMDisk, I think Microsoft forum should be the best place to post this. Some pointers that may help you:

    1. Before enabling RAMDisk on this external RAM, make sure you have initialized it correctly in the BSP so that its accessible and add it as RAM (just like the DDR). I dont think we have enough space left in g_oalAddressTable to add more RAM. You will have to use OEMEnumExtensionDRAM() to add this extra memory.

    2. Once you got the above code working, then you should consider adding it as a RAMDisk (and remove it from OEMEnumExtensionDRAM()) . To what I understand, adding the correct addresses and size to RAMDisk registry should be enough, but if this doesnt help, post it to MS forum.

    -Madhvi

  • One additional note. Using OEMEnumExtensionDRAM does not preclude you having to map the RAM in the g_oalAddressTable.

    The virtual space map still has to be present from what I understand. What it does buy you is the ability to map an additional noncontiguous RAM block, which you are doing.

    The granularity of the mapping in the table is 1MB and there are a few slots still available so you should be OK.

  • Hi Zack,

    You may have to include SYSGEN_RAMDISK variable.

    I have no idea on how that 1MB need to be present for RAMDISK component.

    Thank You & Regards,

    GSR

  • Madhvi and David,

    Thank you very much for your responses and suggestions.  This is what I did so far:

    I've added a simple read / write test to the eboot and I can read from and write to the external 1MB RAM.  Also, using the scope I was able to see the Chip Select siglal changing, so it looks like we really use this chip for that.

    To get to that point I had to configure the RAM, and I did id in the XLoader. Here are my configuration-related changes:

    C:\WINCE600\PLATFORM\EVM_OMAP3530\SRC\INC\bsp_def.h:

    #define BSP_STATIC_RAM_REGS_PA 0x30000000
    #define BSP_STATIC_RAM_MASKADDRESS GPMC_MASKADDRESS_16MB

    #define BSP_GPMC_STATIC_RAM_CONFIG1 0x00001000 // no wait, 16 bit, non multiplexed
    #define BSP_GPMC_STATIC_RAM_CONFIG2 0x000A0A00 // CS OffTime 50ns
    #define BSP_GPMC_STATIC_RAM_CONFIG3 0x00020201 // we don't use ADV
    #define BSP_GPMC_STATIC_RAM_CONFIG4 0x0A000A00 // Deassert #WE, #OE at 50ns
    #define BSP_GPMC_STATIC_RAM_CONFIG5 0x01081414 // Cycle time 100ns, access time 40ns
    #define BSP_GPMC_STATIC_RAM_CONFIG6 0x00000F80 // Delay 75ns between successive accesses to meet minimum cycle time
    #define BSP_GPMC_STATIC_RAM_CONFIG7 ((BSP_STATIC_RAM_REGS_PA >> 24) | BSP_STATIC_RAM_MASKADDRESS | GPMC_CSVALID)


    C:\WINCE600\PLATFORM\EVM_OMAP3530\SRC\BOOTLOADER\XLDR\platform.c (function MemorySetup()):

    OUTREG32(&pGpmc->GPMC_CONFIG1_6, BSP_GPMC_STATIC_RAM_CONFIG1);
    OUTREG32(&pGpmc->GPMC_CONFIG2_6, BSP_GPMC_STATIC_RAM_CONFIG2);
    OUTREG32(&pGpmc->GPMC_CONFIG3_6, BSP_GPMC_STATIC_RAM_CONFIG3);
    OUTREG32(&pGpmc->GPMC_CONFIG4_6, BSP_GPMC_STATIC_RAM_CONFIG4);
    OUTREG32(&pGpmc->GPMC_CONFIG5_6, BSP_GPMC_STATIC_RAM_CONFIG5);
    OUTREG32(&pGpmc->GPMC_CONFIG6_6, BSP_GPMC_STATIC_RAM_CONFIG6);
    OUTREG32(&pGpmc->GPMC_CONFIG7_6, BSP_GPMC_STATIC_RAM_CONFIG7);


    Then I've updated the g_oalAddressTable.  I've added "DCD 0x9C400000, 0x30000000, 1" before the ending row. This should assign the physical address 0x30000000 to the virtual address 0x9C400000. Then, to make this virtual address accessible, I've added the following section at the end of the OEMEnumExtensionDRAM function in the C:\WINCE600\PLATFORM\EVM_OMAP3530\SRC\OAL\OALLIB\init.c file:

     if ((cSections < cMemSections) && (dwBank1Enabled != 1))
     {
             pMemSections[cSections].dwFlags = 0;
             pMemSections[cSections].dwStart = BATTERY_BACKED_RAM;
             pMemSections[cSections].dwLen = BATTERY_BACKED_RAM_SIZE;
             cSections++;
      } 
     
    The BATTERY_BACKED_RAM and BATTERY_BACKED_RAM_SIZE are defined in image_cfg.h as:

    #define BATTERY_BACKED_RAM     0x9C400000
    #define BATTERY_BACKED_RAM_SIZE     0x00100000

    And I didn't do any changes in config.bib.
    Also, I had to add the GPMC_nCS6 entry to the GPMC_PADS section in the bsp_padcfg.h file.

    So with these changes I think I should get 1 MB of extra RAM, without RAMDISK yet, but... it's not working.
    The problem I have with is the added section in the init.c (adding the memory section). With this code in, the OS doesn't start. Looks like the address is invalid.
    I tried also a different address. Since we just have 1 block of RAM, the address 0x88000000 is free. I tried this one, but I couldn't even pass the Eboot RAM test.  With 0x9C400000 I can pass the Eboot test (and it it also using the g_oalAddressTable, so I don't understad why it's not working for the OAL code).

    So at this point I think there is several possible scenarios on why it's not working:
    1. I missed something - I didn't set something that should be set up.
    2. Some RAM settings have to be set again on the OS level, not only on the Boot Loader level.
    3. I'm using wrong addresses that are out of range for the OS.
    4. Generally - I'm doing something wrong.  I should do it in a different way.

    Please, let me know if you have any ideas.
    If not, just let me know and I'll post it on the Microsoft forum.
    Thank you very much!!
    Zack

     

  • GSR,

    Thank you for your response.  Yes, I have the SYSGEN_RAMDISK variable already set (I've been using the regular Ramdisk, before I started working on the external one).

    Thank you anyway. You're right - it wouldn't work without it, but at this point I cannot even add RAM to be accessible by the OS.  I have to solve this first.

    Best Regards,

    Zack

  • So the read/write RAM test is passing in the bot loader using the virtual address or the physical address?

    Put a OALMSG below your cSections++; line to see if it gets there.

    Make sure your CS pad is not getting remapped.

    ...your close!

     

  • David,

    This is how it looks like for my RAM test in the boot loader:

    testAddress = OALPAtoVA(0x30000000,TRUE);

    I'm passing a physical address to the OALPAtoVA function, which converts it to the virtual address (using g_oalAddressTable).

    I've put the OAL message after the cSections++; line, and it gets there.  Probably it stops when it tries to use this section, but I didn't check tat yet.

    I've checked also the CS pad, and it looks that it's not remapped.  It's used only in the ALL_ALLOWED_PADS and the GPMC_PADS, also none of the other pins have this function (on a different mux). So it looks OK.

    Please let me know if you have any ideas on this.

    Thank you very much for your help!!

    Zack

     

  • Zack,

    There are two tables( g_oalAddressTable and g_oalAddressTableHynix ) in addrtab_cfg.inc. Which table did you update?

    On your DM3730 board how much DDR memory do you have? Is it Micron or Hynix?

    Thanks,

    Tao

  • Hi Tao!!

    After I've noticed that the OALPAtoVA function uses both values, I've moved my changes also to the g_oalAddressTableHynix one.

    We have 128 MB of RAM, and this is Micron.

    You know, now I'm wondering that maybe I have these problems because of the differences between these two tables. I think I should use the layout from the g_oalAddressTable table, and from the OALPAtoVA function I can see that for the 3730 family it uses the g_oalAddressTableHynix one.

    I'll populate the Hynix table with the values from the regular one, anr I'll let you know the results.

    Thank you very much for your help!

    Best Regards,

    Zack

  • Tao,

    It didn't help.  Actually the difference there is only the NOR Flash line, which is probably ignored in our case.

    Also, I think I should have the following line in config.bib:

     BATTERYBACKRAM    $(BATTERY_BACKED_RAM)  $(BATTERY_BACKED_RAM_SIZE)  RESERVED

    In case of the Bank1 enabled it's section is also there, not only in the OEMEnumExtensionDRAM function, so I think I should follow it.

    Anyway, adding this line didn't change anything for me. There has to be something else missing or wrong...

    Best Regards,

    Zack

     

  • Zack,

    DM3730 uses g_oalAddressTableHynix only. it is determined at run time.

    Do you have similar changes as hightlighed below, and it does not work, correct?

    g_oalAddressTableHynix

        DCD     0x80000000, 0x80000000, 128     ; SDRAM          

        DCD     0x88000000, 0x30000000, 1      ;  battery backed RAM

        DCD     0x94000000, 0x11000000,  16     ; CS2, NOR flash
        DCD     0x95000000, 0x15000000,  16     ; CS5, LAN9115
        DCD     0x96000000, 0x48000000,  16     ; L4 Core/Wakeup registers
        DCD     0x97000000, 0x49000000,   1     ; L4 Peripheral
        DCD     0x97100000, 0x68000000,  16     ; L3 registers
        DCD     0x98100000, 0x6C000000,  16     ; SMS registers
        DCD     0x99100000, 0x6D000000,  16     ; SDRC registers
        DCD     0x9a100000, 0x6E000000,  16     ; GPMC registers
        DCD     0x9b100000, 0x40200000,   1     ; 64KB SRAM
        DCD     0x9b200000, 0x5C000000,  16     ; IPSS interconnect
        DCD     0x9C200000, 0x00000000,   1     ; ROM
        DCD     0x9C300000, 0x08000000,   1     ; NAND Registers (FIFO)
        DCD     0x00000000, 0x00000000,   0     ; end of table

    Thanks,

    Tao

  • Tao,

    I've just tested the 0x88000000 address again (the previous time I've tested it I've changed the address table for Hynix, and that's why my boot loader test hanged), and it's the same as for the 0x9C400000 address - it doesn't work. Probably it stops in Kernel (function KernelFindMemory), because this is where the OEMEnumExtensionDRAM function is being called. But I have to confirm that to be 100% sure.

    So - yes - my actual  g_oalAddressTableHynix table looks exactly like yours.

    I've tested also a version of the g_oalAddressTableHynix table without the NOR line (the 3rd one), and it's the same.

    Thank you!

    Best Regards,

    Zack

     

  • It looks like the order of the sections in the OEMEnumExtensionDRAM function is important.  I've just moved my BATTERY_BACKED_RAM section just after the IMAGE_WINCE_RAM_BANK1_CA section, and it looks like it helped - I can see more OAL messages after the one I've added earlier. The last one I see is from the DSPLINK Module.

    But still the OS didn;t start.

    Best Regards,

    Zack

  • Zack,

     

    If batterbacked RAM is reserved in config.bib then the same memory can not be added as extended DRAM in OEMEnumExtensionDRAM()

    BATTERYBACKRAM    $(BATTERY_BACKED_RAM)  $(BATTERY_BACKED_RAM_SIZE)  RESERVED

    Thanks,

    Tao

  • Tao,

    OK, so I'll remove that.

    Now, what about other regions - like the BANK1 RAM region?  It looks like it is in both places, but maybe it's a different case...

    OEMEnumExtensionDRAM:

        // If BANK1 is enabled, give it the OS
        if ((cSections < cMemSections) && (dwBank1Enabled == 1))
        {
            pMemSections[cSections].dwFlags = 0;
            pMemSections[cSections].dwStart = IMAGE_WINCE_RAM_BANK1_CA;
            pMemSections[cSections].dwLen = IMAGE_WINCE_RAM_BANK1_SIZE;
            cSections++;
        }

    config.bib:

        RAM_BANK_1                  $(IMAGE_WINCE_RAM_BANK1_CA) $(IMAGE_WINCE_RAM_BANK1_SIZE)  RESERVED

    I've actually added my region to config.bib, because I've followed the above example.

    Please, let me know.

    Thank you very much!!

    Zack

     

  • Zack,

    Sorry, the virtual memory should be Reserved in config.bib. And the virtual address should match addrtab_cfg.h.

    If this memory is not add back to OS through OEMEnumExtensionDRAM(), does the system boot up fine? is the memory accessible through in32/out32 commands?

    Thanks,

    Tao

  • Tao,

    OK, so I'll move it back :). Yes, this address from config.bib matches the one from addrtab_cfg.h.

    Yes, if I comment out the section in OEMEnumExtensionDRAM, the OS boots up fine.  I didn't try to access the new memory by the in32/out32 commands, I've just checked the OS memory size, and I haven't seen the 1 MB increase. I'll try to access this memory by the in32 and out32 commands, and I'll let you know.

    Thank you!!

    Best Regards,

    Zack

  • Tao,

    I cannot access the virtual memory starting from 0x88000000 without that section in the OEMEnumExtensionDRAM function.

    However, when I add this section, the OS doesn't boot up.

    I've built the debug version - please see the attached logs.

    The "Ramdisk Startup2.txt" file 3146.Ramdisk Startup2.txt

    Includes log with the section in the OEMEnumExtensionDRAM function.

    The file "No Ramdisk Startup2.txt" 2100.No Ramdisk Startup2.txt

    includes log without that section.

    Basically, with the external ram section, the OS stops at some point, and it's not being started.

    Please, let me know if you have any ideas after looking at the logs.

    Thank you very much!!!

    Best Regards,

    Zack

     

     

  •  

    I've made one more test.  I've commented out the following section in the OEMEnumExtensionDRAM function:

      //if ((cSections < cMemSections) && (dwBank1Enabled != 1))
     //   {
     //       pMemSections[cSections].dwFlags = 0;
     //       pMemSections[cSections].dwStart = BATTERY_BACKED_RAM;
     //       pMemSections[cSections].dwLen = BATTERY_BACKED_RAM_SIZE;
     //       cSections++;
     // OALMSG(1, (L"OAL: BATTERY_BACKED_RAM Section Added"));
     //   } 

    And I've added these two lines to the Ramdisk driver (DSK_Init):

     PhysicalAddress.QuadPart = 0x30000000;
     pDisk->pbRAM = MmMapIoSpace(PhysicalAddress, 1000000, FALSE);

    Also, I've commented out all the "VirtualAlloc" - related lines - between lines:

    pDisk->pbRAM =  (BYTE *)VirtualAlloc(0, dwSize, MEM_RESERVE, PAGE_NOACCESS);

    and:

    if (!RegGetValue (pDisk, TEXT("SectorSize"), &dwSectorSize))

    (excluding this last one)

    Also, I've copied the definition of the MmMapIoSpace function to this file (I had problems with linking).

    And I have the SYSGEN_RAMDISK variable st to 1.

    After that I am able to start the OS and even though there is no Ramdisk mounted, I can see it in the Storage Properties in the Control Panel.  When I enter thr Partition Properties for that drive, I have the following:

    - I cannot mount it ("Unable.to mount partition").

    - Quick format doesn't show any errors - it seems to be working.

    - Regular format freezes the OS.

    - When I try to scan it - there is an error displayed ("Error in the boot sector of the volume").

    - When I try to Defrag it - there is also an error displayed ("Error in scanning the disk.  Please run defrag again").

    After any Ramdisk-related activities in that dialog, I can see activities on the CS6 line - so we know that the OS at least tries to access the chip.

     

    Please let me know if you have any ideas.

    Best Regards,

    Zack

     

     

  • Tao,

    I've noticed that my RAM configuration settings are incorrect - the "BSP_GPMC_xxx" values.  Could you please point me to the description of these config registers?  There are 7 32-bit registers.  I've cheched the TRM, but I couldn't find them...  but I think they should be there...

    Please, let me know.

    Thank you very much!

    Best Regards,

    Zack

  • Tao,

    I think they are registers "GPMC_CONFIG1_i" to "IGPMC_CONFIG7_i".

    Please, let me know if I'm wrong.

    They are a little different than I expected - that's why I couldn't find them.

    Thank you!

    Best Regards,

    Zack

  • Yes, they are GPMC_CONFIG1_i to GPMC_CONFIG7_i registers.

    In TRM, GPMC is under "Memory Subsystem" chapter.

    Thanks,

    Tao

  • Tao and all who helped me here,

    I have it finally working.

    The last part were the GPMC settings, which were incorrect. It started working for the following settings:

    #define BSP_GPMC_STATIC_RAM_CONFIG1       0x00001200
    #define BSP_GPMC_STATIC_RAM_CONFIG2       0x00101001
    #define BSP_GPMC_STATIC_RAM_CONFIG3       0x00020201
    #define BSP_GPMC_STATIC_RAM_CONFIG4       0x10031003
    #define BSP_GPMC_STATIC_RAM_CONFIG5       0x010F1111
    #define BSP_GPMC_STATIC_RAM_CONFIG6       0x0F030000
    #define BSP_GPMC_STATIC_RAM_CONFIG7  ((BSP_STATIC_RAM_REGS_PA >> 24) | BSP_STATIC_RAM_MASKADDRESS | GPMC_CSVALID)

    The previous settings I had there were copied from the LAN settings, and they are incorrect for this case.

    Actually, I've converted these settings to a little more meaningful form:

    #define GPMC_CONFIG_1_DEVICESIZE_8BIT                (0 << 12)
    #define GPMC_CONFIG_1_DEVICESIZE_16BIT              (1 << 12)

    #define GPMC_CONFIG_1_MUXDATA_ENABLED  (1 << 9)

    #define GPMC_CONFIG_2_CSWROFFTIME(x)       (x << 16)
    #define GPMC_CONFIG_2_CSRDOFFTIME(x)       (x << 8)
    #define GPMC_CONFIG_2_CSONTIME(x)        (x << 0)

    #define GPMC_CONFIG_3_ADVWROFFTIME(x)       (x << 16)
    #define GPMC_CONFIG_3_ADVRDOFFTIME(x)       (x << 8)
    #define GPMC_CONFIG_3_ADVONTIME(x)        (x << 0)

    #define GPMC_CONFIG_4_WEOFFTIME(x)        (x << 24)
    #define GPMC_CONFIG_4_WEONTIME(x)        (x << 16)
    #define GPMC_CONFIG_4_OEOFFTIME(x)        (x << 8)
    #define GPMC_CONFIG_4_OEONTIME(x)        (x << 0)

    #define GPMC_CONFIG_5_PAGEBURSTACCESSTIME(x)     (x << 24)
    #define GPMC_CONFIG_5_RDACCESSTIME(x)       (x << 16)
    #define GPMC_CONFIG_5_WRCYCLETIME(x)       (x << 8)
    #define GPMC_CONFIG_5_RDCYCLETIME(x)       (x << 0)

    #define GPMC_CONFIG_6_WRACCESSTIME(x)       (x << 24)
    #define GPMC_CONFIG_6_WRDATAONADMUXBUS(x)      (x << 16)
    #define GPMC_CONFIG_6_CYCLE2CYCLEDELAY(x)      (x << 8)
    #define GPMC_CONFIG_6_BUSTURNAROUND(x)       (x << 0)

     

    #define BSP_GPMC_STATIC_RAM_CONFIG1       GPMC_CONFIG_1_DEVICESIZE_16BIT | GPMC_CONFIG_1_MUXDATA_ENABLED
    #define BSP_GPMC_STATIC_RAM_CONFIG2       GPMC_CONFIG_2_CSWROFFTIME(0x10) | GPMC_CONFIG_2_CSRDOFFTIME(0x10) | GPMC_CONFIG_2_CSONTIME(0x01)
    #define BSP_GPMC_STATIC_RAM_CONFIG3       GPMC_CONFIG_3_ADVWROFFTIME(0x02) | GPMC_CONFIG_3_ADVRDOFFTIME(0x02) | GPMC_CONFIG_3_ADVONTIME(0x01)
    #define BSP_GPMC_STATIC_RAM_CONFIG4       GPMC_CONFIG_4_WEOFFTIME(0x10) | GPMC_CONFIG_4_WEONTIME(0x03) | GPMC_CONFIG_4_OEOFFTIME(0x10) | GPMC_CONFIG_4_OEONTIME(0x03)
    #define BSP_GPMC_STATIC_RAM_CONFIG5       GPMC_CONFIG_5_PAGEBURSTACCESSTIME(0x01) | GPMC_CONFIG_5_RDACCESSTIME(0x0F) | GPMC_CONFIG_5_WRCYCLETIME(0x11) | GPMC_CONFIG_5_RDCYCLETIME(0x11)
    #define BSP_GPMC_STATIC_RAM_CONFIG6       GPMC_CONFIG_6_WRACCESSTIME(0x0F) | GPMC_CONFIG_6_WRDATAONADMUXBUS(0x03) | PMC_CONFIG_6_CYCLE2CYCLEDELAY(0x0) | GPMC_CONFIG_6_BUSTURNAROUND(0x0)
    #define BSP_GPMC_STATIC_RAM_CONFIG7  ((BSP_STATIC_RAM_REGS_PA >> 24) | BSP_STATIC_RAM_MASKADDRESS | GPMC_CSVALID)

    Now it's much easier to change these values in the future.  These defines (plus additional which can be added) can be used also for other config data - for other devices.

     

    But anyway, the Ramdisk currently is visible under OS, and since it's battery backed - it's persistent.

    Finally, I've used the virtual address 0xD0260000 (instead of 0x88000000), and I didn't have this section:

        // If BANK1 is enabled, give it the OS
        if ((cSections < cMemSections) && (dwBank1Enabled == 1))
        {
            pMemSections[cSections].dwFlags = 0;
            pMemSections[cSections].dwStart = IMAGE_WINCE_RAM_BANK1_CA;
            pMemSections[cSections].dwLen = IMAGE_WINCE_RAM_BANK1_SIZE;
            cSections++;
        }

    With this section it didn't work. We shouldn't add anything to the OEMEnumExtensionDRAM function for the External Ramdisk.

    So generally to add an external driver, the most important is to allocate the memory in the Ramdisk driver using MmMapIoSpace - or using the PAGE_PHYSICAL flag in the VirtualCopy call (inside of the DSK_Init function) and dividing the dwAddress by 256.  The PAGE_PHYSICAL is actually the only difference between the MmMapIoSpace and the current implementation for the DSK_Init in the Ramdisk driver.

    Tao and All,

    Tthank you very much for pointing me to the right dirrection, for all your help and time!

    Best Regards,

    Zack

     

  • Zack,

    Glad to hear it is working for you!  And thanks for sharing your final solutions.

    Best Regards,

    Tao

  • Hallo Zack,

    can you tell me your Registry settings for RAMdisk?

    I also use a batterybacked SRAM for Ramdisk. Your last information you posted help to impement.

    But i didn't see it as a device in my explorer.

    Thanks a lot.

    Walter

  • Hallo Walter,

    This is how my Ramdisk-related registry settings look like:

      [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\RAMDisk]
        "AutoPart"=dword:1
        "AutoFormat"=dword:1

    [HKEY_LOCAL_MACHINE\System\StorageManager\AutoLoad\RAMDisk]
        "DriverPath"="Drivers\\BlockDevice\\RAMDisk"
        "LoadFlags"=dword:1
        "BootPhase"=dword:0

    [HKEY_LOCAL_MACHINE\Drivers\BlockDevice\RAMDisk]
        "Dll"="ramdisk.dll"
        "Prefix"="DSK"
        "FriendlyName"="RAM Disk Driver"
        "Order"=dword:0
        "Ioctl"=dword:4
        "IClass"=multi_sz:"{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
        "Profile"="RAMDisk"
       

    The settings like disk size and sector size I have hardcoded.

    I hope it helps.

    Best Regards,

    Zack

     

  • Hallo Zack,

    thank you for your post.

    It helps. I use it better I need it for validate my own settings.

    Best regards

    Walter