6200 uboot测试版分析(四)

6200 uboot测试版分析(四)

include/autoconf.mk中COFIG_LOAD_ADDR=0x40008000

common/do_boom.c 中潜入了U_BOOT_CMD(bootm,CONFIG_SYS_MAXARGS,1,do_bootm)因此在default_environment中将会找到的bootm最终将执行do_bootm函数,do_bootm调用同文件下的bootm_start函数,在bootm_start函数中将会通过boot_get_kernel获得uImage的头部并且录入images(bootm_headers_t结构体类型)中(此处会将头部搬移,以使得头部信息原地址空间在解压时可以被覆盖),在函数bootm_start中对image.ep进行复制,回去kernel的入口地址,在do_bootm函数中继续执行bootm_load_os,在该函数中会执行重定位.在do_bootm中的boot_fn=boot_os[image.os.so]获取相应系统的启动函数,例如是linux则被赋值为do_bootm_linux,而后执行boot_fn(0, argc, argv, &images);arch/unicore/lib/bootm.c下的函数do_bootm_linux中将images->ep强制转换成函数地址kernel_entry = (void (*)(int, int, uint))images->ep;而后开始启动kernel_entry(0, machid, bd->bi_boot_params);   6200 的板子时(0,0x9fc,0x40000100    0x9fc是板子硬件设计代号,40000100是传递参数的地址)

 

uboot最终的配置会录入include/configs/SEP0611.h中

在该文件中又含有了include/asm/arch/hardware.h(地址分布)

board/seuic/SEP0611/include/board.h中含有板级配置

include/config_cmd_default.h配置命令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110422.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号