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.

AM5728: stuck at spl boot in custom board which has no emmc but only SD card

Part Number: AM5728
Other Parts Discussed in Thread: DRA752, PMP, BEAGLEBOARD-X15, TMDSEVM572X, DRA742

Hi,

    my custom board is not booting it is stuck at SPL as shown below

U-Boot SPL 2019.01 (Mar 27 2024 - 12:04:44 +0530)
DRA752-GP ES2.0
no pinctrl state for default mode

after the above nothing happens,

     iam trying to boot my custom board ,which has Am5728 ,2GB ddr, Iam using SDK linux version ti-processor-sdk-linux-am57xx-evm-06.03.00.106.iam using SD card for booting

My custom board has

PMIC

eeprom with AM5728 EVM data

1nos of ethernet interface

sata interface

sdcard interface

rtc

USB 3.0 HUB,

can some one help me about what iam missing,

should i do any changes in pinmux config or should i do something to disable it to check mmc1 which is Emmc,

  • yes I used a pinmux tool for configuring GPMC on AM5728,

    ihave provided the pinmux in link ,https://drive.google.com/file/d/1Jx1wTVIS_kg4DPhhCSYo4J29vt62DZ0y/view?usp=drive_link,

    I have also ran various test Processor SDK Rtos for checking the board RAM,SD card,PMIC,EEprom,ETHERNET all seems to show working

    I ran the above test using JTAG and also using SDcard, all the test of the pheripherals are ok

    uboot spl 2015 seems to work but the board name it shows is different  , so the kernel is not working ,iam still checking,

    uboot spl 2019 checks the emmc  and hangs there.while uboot spl 2015 skips the emmc if not present

    this is from uboot spl 2015

    U-Boot SPL 2015.07 (Jan 28 2016 - 14:19:33)
    DRA752 ES2.0
    reading args
    spl_load_image_fat_os: error reading image args, err - -1
    reading u-boot.img
    reading u-boot.img


    U-Boot 2015.07 (Jan 28 2016 - 14:19:33 -0500)

    CPU : DRA752 ES2.0
    BoaI2C: ready
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1

    this from uboot spl 2019

    U-Boot SPL 2019.01 (Mar 27 2024 - 12:04:44 +0530)
    DRA752-GP ES2.0

    Iam still checking ,

    I want to know why uboot spl 2015 skips emmc test and uboot spl 2019 hangs there 

  • I also checked all interfaces except gpmc in uboot 2015

    SATA,Ethrenet,eeprom are working perfectly

    sata got detected,ethernet ping works

    iam trying to change the bootcmd so it will get the dtb and boot the kernel

    still dont know why uboot 2019 hangs

  • ive checked with uboot 2015 ,the uboot part works but the kernel part does

    not work

    the booting of uboot 2015 is shown below

    U-Boot SPL 2015.07 (Jan 28 2016 - 14:19:33)
    DRA752 ES2.0
    reading args
    spl_load_image_fat_os: error reading image args, err - -1
    reading u-boot.img
    reading u-boot.img


    U-Boot 2015.07 (Jan 28 2016 - 14:19:33 -0500)

    CPU : DRA752 ES2.0
    BoaI2C: ready
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    SCSI: SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    scanning bus for devices...
    Found 0 device(s).
    Net: cpsw
    Hit any key to stop autoboot: 0
    U-Boot#
    U-Boot#
    U-Boot#
    U-Boot#
    U-Boot#
    U-Boot#
    U-Boot#
    U-Boot# printenv
    arch=arm
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am57xx
    board_name=am57xx_evm_es2plus
    board_rev=A.3A
    board_serial=19184P552063
    bootcmd=if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot;fi;run findfdt; run envboot; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; setenv mmcroot /dev/mmcblk0p2 rw; run mmcboot;
    bootdelay=1
    bootdir=/boot
    bootenvfile=uEnv.txt
    bootfile=zImage
    bootm_size=0x10000000
    bootpart=0:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyO2,115200n8
    cpu=armv7
    dfu_alt_info_emmc=rawemmc raw 0 3751936;boot part 1 1;rootfs part 1 2;MLO fat 1 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x400;spl-os-args.raw raw 0x80 0x80;spl-os-image.raw raw 0x900 0x2000;spl-os-args fat 1 1;spl-os-image fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x400;spl-os-args.raw raw 0x80 0x80;spl-os-image.raw raw 0x900 0x2000;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
    dfu_alt_info_qspi=MLO raw 0x0 0x010000;MLO.backup1 raw 0x010000 0x010000;MLO.backup2 raw 0x020000 0x010000;MLO.backup3 raw 0x030000 0x010000;u-boot.img raw 0x040000 0x0100000;u-boot-spl-os raw 0x140000 0x080000;u-boot-env raw 0x1C0000 0x010000;u-boot-env.backup raw 0x1D0000 0x010000;kernel raw 0x1E0000 0x800000
    dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
    dfu_bufsiz=0x10000
    dofastboot=0
    envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
    eth1addr=3c:e0:64:49:56:a9
    ethact=cpsw
    ethaddr=3c:e0:64:49:56:a8
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtfile=undefined
    findfdt=if test $board_name = omap5_uevm; then setenv fdtfile omap5-uevm.dtb; fi; if test $board_name = dra7xx; then setenv fdtfile dra7-evm.dtb; fi;if test $board_name = dra72x; then setenv fdtfile dra72-evm.dtb; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi;if test $board_name = beagle_x15_es2plus; then setenv fdtfile am57xx-beagle-x15-es2plus.dtb; fi;if test $board_name = am57xx_evm; then setenv fdtfile am57xx-evm.dtb; fi;if test $board_name = am57xx_evm_es2plus; then setenv fdtfile am57xx-evm-es2plus.dtb; fi;if test $board_name = am572x_idk; then setenv fdtfile am572x-idk.dtb; fi;if test $board_name = am571x_idk; then setenv fdtfile am571x-idk.dtb; fi;if test $board_name = am572x_idk_osd; then setenv fdtfile am572x-idk-lcd-osd.dtb; fi;if test $board_name = am571x_idk_osd; then setenv fdtfile am571x-idk-lcd-osd.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
    finduuid=part uuid mmc 0:2 uuid
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
    ipaddr=192.168.12.241
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
    loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr
    loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
    loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run loadfdt; echo Booting from mmc${mmcdev} ...; run args_mmc; bootz ${loadaddr} - ${fdtaddr}; fi;fi;
    mmcdev=0
    mmcrootfstype=ext4 rootwait
    netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
    netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    netloadfdt=tftp ${fdtaddr} ${fdtfile}
    netloadimage=tftp ${loadaddr} ${bootfile}
    nfsopts=nolock
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
    ramdisk_addr_r=0x88080000
    rdaddr=0x88080000
    rootpath=/export/rootfs
    scsidevs=0
    soc=omap5
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    stderr=serial
    stdin=serial
    stdout=serial
    usbtty=cdc_acm
    vendor=ti
    ver=U-Boot 2015.07 (Jan 28 2016 - 14:19:33 -0500)
    vram=16M

    Environment size: 4655/65532 bytes
    U-Boot# run findfdt
    U-Boot# run mmcboot
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    3395008 bytes read in 189 ms (17.1 MiB/s)
    96185 bytes read in 22 ms (4.2 MiB/s)
    Booting from mmc0 ...
    Kernel image @ 0x82000000 [ 0x000000 - 0x33cdc0 ]
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8ffe5000, end 8ffff7b8 ... OK

    Starting kernel ...

    from he above we can see that kernel is hanged

  • Hello Ramachandran,

    Are you mixing and matching u-boot and Linux releases? What SDK version are you using?

    If you are booting U-boot, it stands as proof that the HW is probably ok since u-boot is loaded into RAM and your DDR is initialized.

    Therefore you are past the initial issue,

    my custom board is not booting it is stuck at SPL as shown below

    U-Boot SPL 2019.01 (Mar 27 2024 - 12:04:44 +0530)
    DRA752-GP ES2.0
    no pinctrl state for default mode

    after the above nothing happens,

    How did you get past this part?

    -Jouse

  • right now  I am using the latest version of linux sdk which has ti-processor-sdk-linux-am57xx-evm-08_02_01_00

     the respond is this

    U-Boot 2021.01-00003-g16d964ac27 (Apr 03 2024 - 12:00:13 +0530)

    CPU : DRA752-GP ES2.0
    Model: TI AM5728 BeagleBoard-X15
    Board: AM572x EVM REV A.3A
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment

    Loading Environment from MMC... Card did not respond to voltage select! : -110
    *** Warning - No block device, using default environment

    Card did not respond to voltage select! : -110
    invalid mmc device
    Net: eth2: ethernet@48484000
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    Failed to load 'boot.scr'
    Failed to load 'uEnv.txt'
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    5202432 bytes read in 237 ms (20.9 MiB/s)
    207058 bytes read in 22 ms (9 MiB/s)
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8ffca000, end 8ffff8d1 ... OK

    Starting kernel ...

    my device hangs in kernel ,I thought the device tree must be a problem so i gave default device tree (am57xx-evm-reva3.dtb) and also made sure the uboot selects the given device tree by directly entering command in uboot

    Hit any key to stop autoboot: 0
    =>

    => setenv fdtfile am57xx-evm-reva3.dtb
    => run mmcboot

    even if I do this the kernel does not load it shows the same in the above

    U-Boot 2021.01-00003-g16d964ac27 (Apr 03 2024 - 12:00:13 +0530)

    CPU : DRA752-GP ES2.0
    Model: TI AM5728 BeagleBoard-X15
    Board: AM572x EVM REV A.3A
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... *** Warning - bad CRC, using default environment

    Loading Environment from MMC... Card did not respond to voltage select! : -110
    *** Warning - No block device, using default environment

    Card did not respond to voltage select! : -110
    invalid mmc device
    Net: eth2: ethernet@48484000
    Hit any key to stop autoboot: 0
    =>
    =>
    => setenv fdt
    fdt_addr_r fdtaddr fdtcontroladdr fdtfile
    => setenv fdtfile am57xx-evm-reva3.dtb
    => run mmcboot
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    5202432 bytes read in 237 ms (20.9 MiB/s)
    207058 bytes read in 23 ms (8.6 MiB/s)
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8ffca000, end 8ffff8d1 ... OK

    Starting kernel ...

    the kernel hangs, Is there any way to find what is wrong 

  • The uboot and kernel works is evm am5728(TMDSEVM572X) board,but it is not working in custom board

  • Hello Ramachandran,

    Could you make sure you have early printk is enabled? make sure log level is 7

    Do you also have a debugger?

    This is another Idea: stackoverflow.com/.../enabling-low-level-debuging-in-kernel-on-serial-port

    -Josue

  • Thanks Josue,

    i tried the debugging of kernel with jtag,it ended up with device tree issue,iam using a device tree in which i added a GPMC pins in the am57xx_evm_reva3.dts , 

    i compiled and go the result , i belive the kernel during start tries to  initalize the device ,but my board only has  one ethernet,sata,sd card,2gb RAM,RTC,with USB,

    since my bard is missing HDMI and other reamaining pheripherals,The kernel hangs,

    i believe i have to rewrite my device tree

    have any one has wriitten DTS file which has only  minimum processor initialization like RAM and cpu ,sdcard only to run my kernel and arago tiny image file system

  • how to load device tree while using ccs for debugging the kernel

    Because when I use VMlinux to debug the kernel through ccs via jtag   

    I get an error which is no device tree 

    how to use device tree while running vmlinux in ccs

    iam also trying to enable early printk in kernel,I have also tried enabling in menuconfig

    defualt console log level  = 7

    quiet console log level    = 4

    default message log level = 4

    I also have enabled  kernel debugger KGDB and also KGDB_KDB

    KGDB_KDB: keyboard as input device  

    i have done upto the above but still dont know how to debug the kernel

  • Hello Ramachandran, 

    I am out of the office until Apr 11th. 

    I appreciate your patience.

    -Josue

  • Hello Ramachandran,

    Do you have boot logs with early print k enabled?

    iam also trying to enable early printk in kernel,I have also tried enabling in menuconfig

    Yes, this is indeed done with menuconfig.

    In our development process here we do not use CCS. Unfortunately I cant be of much help there..

    -Josue

  • ive tested my board with 2015 Uboot and some times it fails with prefetch and sometimes with Dabort,

    So I tested my board with baremetal DDR test ,The test sometimes fails and most of the time passes,

    is this the reason My kernel is not starting and it hangs on Starting kernel ...

    sometimes Uboot also hangs up,

    is there any way to improve my ddr efficeincy,

    Ive also tested Signal integrity test on it and the results are OK

    But my device fails the baremetal DDR test sometimes

  • Hello,

    I am out of office until 5/2, please expect delays in response.

    -Josue

  • Hello Ramachandran,

    So I tested my board with baremetal DDR test ,The test sometimes fails and most of the time passes,

    is this the reason My kernel is not starting and it hangs on Starting kernel ...

    sometimes Uboot also hangs up,

    Yes, this would explain the inconsistency that you are seeing.

    Please see the following Application report and try to fix your memory issues.

    https://www.ti.com/lit/an/sprac36e/sprac36e.pdf

    -Josue

  • iam currently looking at the pdf,

    ive tested my board 20 times with baremetal Ram testing ,testing the ram in  both non interleaved and in interleaved and the result is no fail

    iam doubting myself is the problem is with Ram or is it because of the device tree

    iam still checking

  • where to download EMIF tool

  • Ramachandran,

    The EMIF tool is linked on the first page of the document: http://www.ti.com/lit/zip/sprac36

    Josue

  • can early printk be enabled in KERNEL menuconfig in the latest TI sdk linux

  • Hi Josue

                  Most of the users in the forum used old sdk which is 2.00.01.07.

    So I tested my custom board and I was checking my device tree with fdt list command of Uboot but suddenly it throwed an data abort error .

    This is not happening in any of the evaluation boards.

    What  is  the cause

    U-Boot SPL 2015.07 (Jan 28 2016 - 14:19:33)
    DRA752 ES2.0
    reading args
    spl_load_image_fat_os: error reading image args, err - -1
    reading u-boot.img
    reading u-boot.img


    U-Boot 2015.07 (Jan 28 2016 - 14:19:33 -0500)

    CPU : DRA752 ES2.0
    BoaI2C: ready
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    SCSI: SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    scanning bus for devices...
    Found 0 device(s).
    Net: cpsw
    Hit any key to stop autoboot: 0
    U-Boot#
    U-Boot#
    U-Boot# mmc dev 0
    switch to partitions #0, OK
    mmc0 is current device
    U-Boot# setenv devnum 0
    U-Boot# setenv devtype mmc
    U-Boot# run findfdt
    U-Boot# run loadfdt
    96185 bytes read in 22 ms (4.2 MiB/s)
    U-Boot# run loadimage
    3395008 bytes read in 188 ms (17.2 MiB/s)
    U-Boot# run args_mmc
    U-Boot# fdt addr 0x88000000
    U-Boot# fdt list
    / {
    #address-cells = <0x00000002>;
    #size-cells = <0x00000002>;
    compatible = "ti,am572x-evm", "ti,am572x-beagle-x15", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
    interrupt-parent = <0x00000001>;
    model = "TI AM572x EVM ES2+";
    chosen {
    };
    aliases {
    };
    memory {
    };
    timer {
    };
    interrupt-controller@48211000 {
    };
    interrupt-controller@48281000 {
    };
    soc {
    };
    ocp {
    data abort
    pc : [<fff87e48>] lr : [<fff6a787>]
    reloc pc : [<80823e48>] lr : [<80806787>]
    sp : fef53d20 ip : 00000000 fp : fff9fde2
    r10: 00000002 r9 : fef53ef0 r8 : fff9fde4
    r7 : 00009174 r6 : 88016ad5 r5 : 00000006 r4 : fffa2730
    r3 : fffffff8 r2 : fef53d50 r1 : 00009174 r0 : 88000000
    Flags: nzcv IRQs off FIQs off Mode SVC_32
    Resetting CPU ...

    resetting ...

    U-Boot SPL 2015.07 (Jan 28 2016 - 14:19:33)
    DRA752 ES2.0
    reading args
    spl_load_image_fat_os: error reading image args, err - -1
    reading u-boot.img
    reading u-boot.img

    U-Boot 2015.07 (Jan 28 2016 - 14:19:33 -0500)

    CPU : DRA752 ES2.0
    BoaI2C: ready
    DRAM: 2 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    SCSI: SATA link 0 timeout.
    AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
    flags: 64bit ncq stag pm led clo only pmp pio slum part ccc apst
    scanning bus for devices...
    Found 0 device(s).
    Net: cpsw
    Hit any key to stop autoboot: 0
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    reading boot.scr
    ** Unable to read file boot.scr **
    reading uEnv.txt
    599 bytes read in 3 ms (194.3 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc0 ...
    switch to partitions #0, OK
    mmc0 is current device
    SD/MMC found on device 0
    3395008 bytes read in 188 ms (17.2 MiB/s)
    96185 bytes read in 21 ms (4.4 MiB/s)
    Booting from mmc0 ...
    Kernel image @ 0x82000000 [ 0x000000 - 0x33cdc0 ]
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Device Tree to 8ffe5000, end 8ffff7b8 ... OK

    Starting kernel ...

  • Hello Ramachandran,

      Most of the users in the forum used old sdk which is 2.00.01.07.

    Is this pertinent to a forum other than E2E?

    Your data abort still points to possible issues with DDR. Could you please elaborate on the following: 

    So I tested my board with baremetal DDR test ,The test sometimes fails and most of the time passes,

    What is the frequency of failure? Does this only happen on one board? Have you tested others?

    What are the settings for DDR, can you share them saved on the EMIF tool?

    -Josue

  • ive checked with the Emif tool and got the register values

    but even though my processor is not booting

    and i checked my voltages of my processor all are ok except VDD_SHV5 it is getting from 3.7v or 3.6v but in datasheet it is said the max value for VDD_SHV5 is 3.465 

    this happens after the MLO get started 

    is this the cause for my problem

    but my VDD_SHV5 is in 3.3v if there is no SD card and the processor is not booted and only the PMIC is turned on

    i want know will 3.75v on VDD_SHV5 will produce any problem in kernel boot 

  • I recommend checking all power supplies to make sure they are as you designed (and within spec of the device).  If VDDSHV5 is designed to operate at 3.3V but is reading 3.7V, then there is an issue.  An incorrect voltage could be causing other side affects related to booting/other.

  • yes ive checked all the power source and i found that the core voltage vdd_core was below 1.11 and vdd_mpu was lower than the values prescribed in the data sheet ,then our team  corrected it ,

    then the kernel got booted

    also sometimes the kernel shows kernel panic due to the stack pointer geting corrupted,

    I believe this problem is due to voltage dip caused whenever the procesor is booting kernel,Since all the pheripherals get initialized at the kerenel boot

    Any how thanks for helping me Josue and  Robert,

    I was able to slove the booting problem