- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
03U-Boot讲解
三 U-BOOT移植 三 U-BOOT移植 U-Boot启动流程之stage2 start_armboot函数是c语言的入口函数,定义在lib_arm/board.c中。 首先,初始化全局变量global_data: gd_base = CFG_UBOOT_BASE + CFG_UBOOT_SIZE - CFG_MALLOC_LEN - CFG_STACK_SIZE - sizeof(gd_t); gd = (gd_t*)gd_base; memset ((void*)gd, 0, sizeof (gd_t)); gd-bd = (bd_t*)((char*)gd - sizeof(bd_t)); memset (gd-bd, 0, sizeof (bd_t)); gd是全局变量的一个指针,始终保存在r8中。 global_data的成员大多是开发板的基本设置,如串口波特率、设备序列号、mac地址、启动参数存储地址等。 调用初始化序列: init_fnc_t *init_sequence[] = { board_init, // board/samsung/smdkc110/smdkc110.c中实现,主要BANK1 初始化、内核启动参数存放地址设置、ARCH_NUMBER设置 interrupt_init, //在cpu/s5pc11x/interrupts.c实现,初始化时钟中断 env_init, //在common/env_flash.c中实现,设置缺省环境变量 init_baudrate, //在lib_arm/board.c中实现,设置环境变量中的串口波特率 serial_init, //在common/serial.c中实现,初始化串口(硬件层面) display_banner, //在lib_arm/board.c中实现,打印U-Boot的banner dram_init, //在board/samsung/smdkc110/smdkc110.c中实现,初始化SDRAM NULL, }; U-Boot启动流程之stage2 start_armboot函数,定义在lib_arm/board.c中。 size = flash_init (); display_flash_config (size); puts (SD/MMC: ); mmc_exist = mmc_initialize(gd-bd); puts(NAND: ); nand_init(); puts(Net: ); eth_initialize(gd-bd); for (;;) { main_loop(); } /* 进入无限循环 */ U-Boot启动流程之stage2 main_loop函数是c语言的入口函数,定义在common/main.c中。 void main_loop (void) { s = getenv (bootdelay); bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY; s = getenv (bootcmd); if (bootdelay = 0 s !abortboot (bootdelay)) { run_command (s, 0); } } U-Boot启动流程之stage2 U-Boot启动Linux内核(1/3) ARM Linux Kernel Boot Requirements : 设置machine type number 定义 在include/configs/smdkv210single.h中 #define MACH_TYPE 2456 赋值(board_init函数中) gd-bd-bi_arch_number = MACH_TYPE; 把该值设置到环境变量中。 得到该值(do_bootm_linux函数中) bd_t *bd = gd-bd; int machid = bd-bi_arch_number; U-Boot启动Linux内核(2/3) do_boot_linux函数,在lib_arm/bootm.c中实现。 设置内核启动参数: setup_start_tag (bd); setup_serial_t
您可能关注的文档
- 99倒计时课程设计解读.doc
- 96分答案解读.doc
- 960GHz解读.ppt
- 90后员工管理艺术解读.ppt
- 9Jonckheere-Terpstra检验解读.ppt
- 03-21答辩PPT讲解.ppt
- 9E燃机MKVie逻辑学习解读.ppt
- 9Linux内核映像的生成与启动解读.ppt
- 9s12单片机-第六章中断系统解读.ppt
- 9_山海关解读.ppt
- 2025年信息技术教师招聘考试题库及答案.pdf
- 2024年初中数学教师工作总结.pdf
- 人教版高考历史一轮复习学案:汉代儒学成为正统思想(含答案).pdf
- 中考地理复习重难点专练:撒哈拉以南非洲(原卷版+解析).pdf
- 中考语文课内文言文要点梳理与练习:九年级下册《送东阳马生序》过关训练(原卷版+解析).pdf
- 山东考试联盟2024-2025学年高三年级上册期中检测语文试题(含答案).pdf
- 江西上饶市2024-2025八年级上册历史期中试卷(含答案).pdf
- 中考语文课内文言文要点梳理与练习:八年级下册《马说》过关训练(原卷版+解析).pdf
- 2024-2025学年高二语文上学期期中模拟卷2(全解全析)(新高考通用).pdf
- 2024北京重点校初二(下)期中物理汇编:运动和力章节综合2(实验题).pdf
文档评论(0)