Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72949
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-28 20:17
个人简介

湖水连天天连水,秋来分外澄清

文章分类
文章存档

2017年(1)

2016年(35)

我的朋友

分类: 嵌入式

2016-11-14 16:21:00

#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."
);

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