Chinaunix首页 | 论坛 | 博客
  • 博客访问: 273007
  • 博文数量: 74
  • 博客积分: 1336
  • 博客等级: 中尉
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-02 09:33
文章分类

全部博文(74)

文章存档

2016年(6)

2015年(4)

2014年(20)

2013年(8)

2012年(16)

2010年(9)

2009年(11)

我的朋友

分类: 嵌入式

2014-01-30 14:45:37

#define LINUX_PAGE_SHIFT 12
#define LINUX_PAGE_SIZE (1<#define LINUX_MACHINE_ID  1099//根据平台修改

 

void do_bootzImage(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    int i;
    u32 addr;
    char *cmdline = getenv("bootargs");
    void(*run)(int zero, int arch);
    struct param_struct *params = (struct param_struct *)0x20000100;//这里要注意根据平台的不同修改,

    if(argc < 2){
     addr = load_addr; //一般 约定俗成是内存首地址+100dex?
    }
    else{
         addr = simple_strtoul(argv[1], NULL, 16);
      }
 
      for(i=0; i<(sizeof(struct param_struct)>>2); i++){
          ((u32 *)params)[i] = 0;
      }
 
      params->u1.s.page_size = LINUX_PAGE_SIZE;
      params->u1.s.nr_pages = (0x04000000 >> LINUX_PAGE_SHIFT);
 
      memcpy(params->commandline, cmdline, strlen(cmdline));
      run = (void(*)(int, int))addr;
      printf("start kernel.../n");
      run(0, LINUX_MACHINE_ID);
}

U_BOOT_CMD(
bootzImage, 2, 1, do_bootzImage,
"bootzImage --boot zImage from ram./n",
"[addr] boot zImage directoly."
);

阅读(1204) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~