企业管理Uboot启动流程

上传人:hs****ma 文档编号:493519868 上传时间:2022-12-07 格式:DOCX 页数:42 大小:346.65KB
返回 下载 相关 举报
企业管理Uboot启动流程_第1页
第1页 / 共42页
企业管理Uboot启动流程_第2页
第2页 / 共42页
企业管理Uboot启动流程_第3页
第3页 / 共42页
企业管理Uboot启动流程_第4页
第4页 / 共42页
企业管理Uboot启动流程_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《企业管理Uboot启动流程》由会员分享,可在线阅读,更多相关《企业管理Uboot启动流程(42页珍藏版)》请在金锄头文库上搜索。

1、U-Boot启动过程(国嵌)开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数。看一下board/smdk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm920t/start.o,那么U-Boot的入口指令一定位于这个程序中。下面分两阶段介绍启动流程:第一阶段段1cppu/aarm9920tt/sttartt.S这个汇编编程序是是U-BBoott的入口口程序,开头就就是复位位向量的的代码。_staart: b resset /复位向向量 ldrr pc, _uundeefinned_insstruuctiio

2、n ldrr pc, _ssofttwarre_iinteerruupt ldrr pc, _ppreffetcch_aaborrt ldrr pc, _ddataa_abbortt ldrr pc, _nnot_useed ldrr pc, _iirq /中断断向量 ldrr pc, _ffiq /中断断向量 /* thee acctuaal rreseet ccodee */reseet: /复复位启动动子程序序 /* 设置CCPU为为SVCC32模模式 */ mrss r0,cpssr bicc r0,r0,#0xx1f orrr r0,r0,#0xxd3 msrr cpssr,rr0/

3、* 关关闭看门门狗 */ reloocatte: /* 把把U-BBoott重新定定位到RRAM */adr rr0, _sttartt /* r00是代码码的当前前位置 */ldr rr1, _TEEXT_BASSE /*_TEEXT_BASSE是RRAM中中的地址址 */cmp r00, rr1 /* 比比较r00和r11,判断断当前是是从Fllashh启动,还是RRAM */beq sttackk_seetupp /* 如果果r0等等于r11,跳过过重定位位代码 */* 准准备重新新定位代代码 */ldr rr2, _arrmbooot_staartldr rr3, _bsss_ssta

4、rrtsub rr2, r3, r22 /* r22 得到到armmbooot的大大小 */add rr2, r0, r22 /* r2 得到要要复制代代码的末末尾地址址 */copyy_looop: /* 重新新定位代代码 */ldmiia rr0!, rr3-rr10 /*从从源地址址r00复制制 */stmiia rr1!, rr3-rr10 /* 复制到到目的地地址rr1 */cmp rr0, r2 /* 复制数数据块直直到源数数据末尾尾地址r2 */ble ccopyy_looop/* 初初始化堆堆栈等 */stacck_ssetuup:ldr rr0, _TEEXT_BASSE /

5、* 上面是是1288 KiiB重定定位的uu-booot */sub rr0, r0, #CCFG_MALLLOCC_LEEN /* 向下是是内存分分配空间间 */sub rr0, r0, #CCFG_GBLL_DAATA_SIZZE /* 然然后是bbdinnfo结结构体地地址空间间 */#ifddef CONNFIGG_USSE_IIRQsub r0, r00, #(COONFIIG_SSTACCKSIIZE_IRQQ+COONFIIG_SSTACCKSIIZE_FIQQ)#enddifsub ssp, r0, #112 /* 为abbortt-sttackk预留33个字 */cleaar

6、_bbss:ldr rr0, _bsss_sstarrt /* 找到到bsss段起始始地址 */ldr rr1, _bsss_eend /* bbss段段末尾地地址 */mov rr2, #0xx0000000000 /* 清零零 */clbsss_ll:sttr rr2, r00 /* bbss段段地址空空间清零零循环. */ addd r0, r00, #4 cmpp r0, r11bne cclbsss_ll/* 跳跳转到sstarrt_aarmbboott函数入入口,_staart_armmbooot字保保存函数数入口指指针 */ldr ppc, _sttartt_arrmbooot_

7、staart_armmbooot: .woord staart_armmbooot /sstarrt_aarmbboott函数在在libb_arrm/bboarrd.cc中实现现第二阶段段2liib_aarm/boaard.cstarrt_aarmbboott是U-Booot执行行的第一一个C语语言函数数,完成成系统初初始化工工作,进进入主循循环,处处理用户户输入的的命令。3innit_seqquennceinitt_seequeencee数数组保存存着基本本的初始始化函数数指针。initt_fnnc_tt *iinitt_seequeencee = cpu_iniit, /* 基基本的处处理

8、器相相关配置置 - cppu/aarm9920tt/cppu.cc */boarrd_iinitt, /* 基基本的板板级相关关配置 - boaard/smddk24410/smddk24410.c */inteerruupt_iniit, /* 初始始化中断断处理 - cpuu/arrm9220t/s3cc24xx0/iinteerruupt.c */env_iniit, /* 初初始化环环境变量量 - coommoon/ccmd_flaash.c */initt_baaudrratee, /* 初始化化波特率率设置 - libb_arrm/bboarrd.cc */seriial_inii

9、t, /* 串口口通讯设设置 - ccpu/armm9200t/ss3c224x00/seeriaal.cc */conssolee_innit_f, /* 控制台台初始化化阶段11 - coommoon/cconssolee.c */dispplayy_baanneer, /* 打印uu-booot信信息 - llib_armm/booardd.c */dramm_innit, /* 配配置可用用的RAAM - bboarrd/ssmdkk24110/ssmdkk24110.cc */dispplayy_drram_connfigg, /* 显示RRAM的的配置大大小 - llib_armm

10、/booardd.c */NULLL,;voidd sttartt_arrmbooot (vooid)/* 顺顺序执行行iniit_ssequuencce数组组中的初初始化函函数 */ forr (iinitt_fnnc_pptr = iinitt_seequeencee; *iniit_ffnc_ptrr; +innit_fncc_pttr) iff (*innit_fncc_pttr)() != 00) hanng (); /*配置置可用的的Flaash */ sizze = fllashh_innit (); dissplaay_fflassh_cconffig (siize);/* _

11、armmbooot_sstarrt 在在u-bboott.ldds链接接脚本中中定义 */ memm_maallooc_iinitt (_armmbooot_sstarrt - CFFG_MMALLLOC_LENN);/* 配配置环境境变量*/env_rellocaate ();/* 从从环境变变量中获获取IPP地址 */gd-bd-bii_ipp_adddr = ggeteenv_IPaaddrr (ipaaddrr);/* 以以太网接接口MAAC 地地址 */ devvicees_iinitt (); /* 获取取列表中中的设备备 */ jummptaablee_innit (); con

12、nsolle_iinitt_r (); /* 完整整地初始始化控制制台设备备 */ enaablee_innterrruppts (); /* 使能能中断处处理 */* 通通过环境境变量初初始化 */ if (ss = gettenvv (loaadadddr) != NULLL) lloadd_adddr = ssimpple_strrtouul (s, NULLL, 16); /* mmainn_looop()循环环不断执执行 */for (;) mmainn_looop (); /* 主循环环函数处处理执行行用户命命令 - ccommmon/maiin.cc */命令实现现U-Booot作作为Boootlloadder,具备多多种引导导内核启启动的方方式。常常用的ggo和bboottm命令令可以直直接引导内核映映像启动动。U-Booot与内内核的关关系主要要是内核核启动过过程中参参数的传传递。1goo命令的的实现/* ccommmon/cmdd_booot.c */int do_go

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号