博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6200 sdboot 测试版分析(一)
阅读量:7079 次
发布时间:2019-06-28

本文共 973 字,大约阅读时间需要 3 分钟。

分析boot启动代码时先分析存储空间分布(硬件工程师一般会提供),链接脚本,Makefile文件, 务必注意由板级硬件设置的启动方式(例如:sd卡启动,nand启动,nor启动)。处理器在执行程序之前,会从相应存储介质搬移代码到ESRAM中(对 于从nor启动,也有可能从nor直接取指令执行)。对于6200测试平台,板级设置为SD卡启动,系统上电后从SD卡搬移8KB代码到ESRAM中,且 此时0地址映射到ESRAM(注意系统启动时,ESRAM具有三个地址,分别是0x0:映射,0XB2000000:物理。Boot的代码量较大,所以在 这前8KB代码中会设计代码搬移(sdboot设计成两个部分)。对于服务器目录下的sdboot代码,其执行流程如下:

  配置系统各频率,配置串口(调试),搬移后一部分代码到ESRAM中(本系统ESRAM大小为128KB,这一部分被搬移到ESRAM中指定部分,本系统为搬移到0XB2002000(sdio.c文件中ReadMultiSD(16,64,0XB2002000)的 参数意义是从SD卡的第16块开始共搬移64块到ESRAM0XB2002000处),第二部分的sdboot的链接脚本中的起始地址就是该地址,当然对 于基于相对PC跳转、或存取的指令这并无必要,但是一般都会这样写,而且安全,因为可能有不是基于PC跳转或存取的指令)。搬移完boot代码后,PC绝对跳转至0XB2002000,开始执行第二部分boot代码。第二部分代码涉及DDR2的配置,系统的启动流程(通过判定PMU部分的sleepflag寄 存器值来判定系统是以sleep模式启动还是以powerup方式启动)。若是以sleep模式启动则需要正确的配置ddr_trainig的地址,以免 覆盖内存中有效数据,并恢复相关区域的数据(内核寄存器,I/O寄存器,cache管理……),取得PC,开始执行。若是以powerup模式启动,则需 继续加载sd中的相关部(ReadMultiSD(80,800,0X42800000)到内存指定地址0X42800000开始处(这部分还未分析,应 该涉及到操作系统解压加载),PC绝对跳转至0X42800000处开始在DDR2中执行。

 

delete error  /comon/env_embedded.c

转载地址:http://jycml.baihongyu.com/

你可能感兴趣的文章
分布式系统一致性问题解决实战
查看>>
“十年磨一剑”--有赞的HBase平台实践和应用之路
查看>>
镭速raysync介绍文件传输软件的进史
查看>>
企业可以自己开发OA系统吗?会遇到什么问题?
查看>>
pageadmin CMS网站制作教程:附属表数据列表调用语法
查看>>
资政知识产权:爆款产品如何通过外观设计专利进行保护
查看>>
DataWorks 智能监控V2.2版本发布
查看>>
天猫双 11 背后:409 亿次安全保护,全链路保障每个购物场景
查看>>
官宣!vue.ant.design 低调上线
查看>>
HBase行键设计
查看>>
iView 3.4.0 发布,基于 Vue.js 的企业级 UI 组件库
查看>>
zabbix 查询剩余内存一直大于2G的主机
查看>>
技术负责人所需的四个核心能力,你具备几个?
查看>>
解决MySQL 5.6版的Function 'innodb' already exists错误
查看>>
Kotlin 开发者社区
查看>>
【对讲机的那点事】带你玩转宝锋UV6R对讲机(二)
查看>>
Spring使用表单上传文件
查看>>
hcatalog简介和使用
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.12. 检查索引使用
查看>>
给容器服务的APIServer开放IPv6的访问
查看>>