2013년 7월 17일 수요일

[S5PV210 Mango210 ] bootcmd와 bootargs는 자동으로 설정



http://www.mangoboard.com/
http://cafe.naver.com/embeddedcrazyboys


bootcmd와 bootargs는 자동으로 설정이 됩니다. 

common/env_auto.c 에서 아래와 같이 수정하시기 바랍니다. 


void env_relocate_spec(void)
{
#if defined(CONFIG_SMDKC100) | defined(CONFIG_SMDKC110) | defined(CONFIG_S5P6442) || defined(CONFIG_MANGO210)
    if (INF_REG3_REG == 1)
        env_relocate_spec_onenand();
    else if (INF_REG3_REG == 2)
        env_relocate_spec_nand();
    else if (INF_REG3_REG == 3)
        env_relocate_spec_movinand();
    else if (INF_REG3_REG == 4)
        env_relocate_spec_nor();
    else
        use_default();


common/main.c 파일에서

//CRZ
{
    char boot_cmd[1024];
    char *peth = getenv ("ethaddr");
    char *bootargs_get = getenv ("bootargs");
    sprintf(boot_cmd, "%s ethaddr=%s", bootargs_get, peth);
    setenv("bootargs", boot_cmd);
}
"common/env_auto.c" 파일에서 

#if defined(CONFIG_MANGO210)
int default_boot_mode = 1;
#endif



"board/samsung/mango210/<wbr />mango210.c"
파일에서 

    regs = Inp32(INF_REG_BASE + INF_REG3_OFFSET);
    //Outp32(0xe02002a0, 0x10000000);
    //Outp32(0xe02002c0, 0x1);


    switch(regs) {
    case BOOT_NAND:
        //Outp32(0xe02002a4, 0x0);  // LED0 On
        //Outp32(0xe02002c4, 0x1);  // LED1 Off

            printf("NAND Boot ...default_boot_mode=%d\n",<wbr />default_boot_mode);

//          if((~readl(0xE0200C04)) & 0x6) {
//              run_command("fastboot", 0);
//                } else
        if(default_boot_mode) {     // using default environment//CRZ
//          sprintf(boot_cmd, "nand read %08x 600000 400000;nand read %08x B00000 400000; bootm %08x %08x"
                        sprintf(boot_cmd, "nand read %08x 100000 500000;bootm %08x"
                    , MEMORY_BASE_ADDRESS + 0x8000
//                  , MEMORY_BASE_ADDRESS + 0x1000000
                    , MEMORY_BASE_ADDRESS + 0x8000);
//                  , MEMORY_BASE_ADDRESS + 0x1000000);
            setenv("bootcmd", boot_cmd);

//          sprintf(boot_cmd, "root=ramfs devfs=mount console=ttySAC1,115200");
                        sprintf(boot_cmd, "root=/dev/mtdblock2 rootfstype=yaffs2 init=/sbin/init console=ttySAC1,115200");
            setenv("bootargs", boot_cmd);
        }
        break;
    case BOOT_MMCSD:
    //  Outp32(0xe02002a4, 0x80);   // LED1 On
    //  Outp32(0xe02002c4, 0x0);    // LED0 Off

            printf("SD Boot ...default_boot_mode=%d\n",<wbr />default_boot_mode);
/*      if((~Inp32(0xe0200c04)) & 0x6) { // Linux Recovery Booting Mode
            sprintf(boot_cmd, "nand erase clean;nand scrub;movi read u-boot %08x;nand write %08x 0 70000;movi read kernel %08x;bootm %08x"
                    , MEMORY_BASE_ADDRESS + 0x1000000, MEMORY_BASE_ADDRESS + 0x1000000
                    , MEMORY_BASE_ADDRESS + 0x8000, MEMORY_BASE_ADDRESS + 0x8000);
            setenv("bootcmd", boot_cmd);
            sprintf(boot_cmd, "root=/dev/mmcblk0p3 rootfstype=ext3 console=ttySAC1,115200 rootdelay=1 recovery");
            setenv("bootargs", boot_cmd);
        //  sprintf(boot_cmd, "3");
            setenv("bootdelay", "3");
        } else
*/      if(default_boot_mode) { // using default environment
            sprintf(boot_cmd, "movi read kernel %08x; bootm %08x"
                    , MEMORY_BASE_ADDRESS + 0x8000
                    , MEMORY_BASE_ADDRESS + 0x8000);
            setenv("bootcmd", boot_cmd);
            sprintf(boot_cmd, "noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 init=/sbin/init console=ttySAC1,115200 rootwait");  // Android Booting Mode
            setenv("bootargs", boot_cmd);
        }
        break;
    }

댓글 없음:

댓글 쓰기