WINCE6.0 + S3C2443的启动过程---nboot篇
WINCE6.0 + S3C2443的启动过程---nboot篇
我们启动WINCE6.0的方式是:nboot+eboot+NK。那么是如何启动WINCE6.0系统映像的呢?首先是nboot把eboot拷贝到SDRAM中执行的地址处运行,接着eboot把NK.bin拷贝到SDRAM指定的地址处运行。
首先,我们需要通过JTAG把我们nboot文件编译生成的stpldr.nb0文件烧录到nandflash的第0个block中。那么系统复位或者上电启动的动作产生之后,是如何从nboot开始执行的呢?我们先看S3C2443的datasheet中nandflash控制器的相关部分:
当系统上电启动或者复位后,nand flash控制器会自动把nandflash第0个block中的前4KB的启动代码(也即nboot的代码)拷贝到S3C2443配备的名为“stepping stone”的SRAM中,然后在stepping stone启动代码就自动运行了,也就是nboot在这时候就开始运行了,那么入口点是哪里呢?从/Src/Bootloader/Stepldr/sources的如下内容
TARGETNAME=stepldr
TARGETTYPE=PROGRAM
RELEASETYPE=PLATFORM
EXEENTRY=StartUp
NOMIPS16CODE=1
可以看出nboot的入口函数是StartUp。
1.StartUp函数
这个函数就在/Src/Bootloader/Stepldr/startup.s中定义,如下所示:
也即nboot从StartUp开始执行,接着就直接跳转到ResetHandler执行了,这个函数主要是做了下面一些工作
⑴设置GPIO,关闭watchdog,关闭所有的中断。
⑵设置系统时钟,关于系统时钟的详细设置,我打算另外再写一篇来介绍。
⑶初始化内存控制器。
⑷通过寄存器RSTSTAT的值来判断当前的动作是正常的启动还是从睡眠中唤醒,如果是从睡眠中唤醒,就直接跳转到NK在SDRAM的开始地址处0x30200000(也即NK.bin在SDRAM中的存放地址处,也即0x80200000),然后会从NK.bin的start address处(假如是0x80205394),这个地址就是NK.exe,也即是Oal.exe的开始地址处,也就是从/Src/Oal/Oallib/startup.s下面的函数StartUp开始执行,而0x80205394 - 0x80200000 =0x5394这个偏移值应该是NK.bin打包各个文件之后NK.exe在NK.bin中的偏移值;如果是正常的启动,将会跳转到nboot的main(),其中关于睡眠和唤醒,可见我的另一篇博客:http://cky0612.blog.163.com/blog/static/27478916201051793355837/
2.main()
Main函数实现了下面的内容:
⑴通过Uart_Init()函数来初始化串口,编译debug。
⑵通过NF_Init()函数来初始化nand flash控制器。
⑶通过ReadFlashID()来读取当前nand flash的ID,
其中0xEC是maker code(厂家识别代码),0xA0是device code(设备代码),这些值是在/Src/Common/Smartmedia/fmd/cfnand.h中的如下数组定义的:
上图我只是截了这个数组的一小部分,后面的nandflash驱动中会用到这个数组用于判断当前系统使用的nandflash是否在这个表中。
⑷从nandflash的第2个block中把eboot的映像文件读取到SDRAM中指定的地址处(0x30038000),这个地址有eboot/boot.bib来指定,实现部分如下:
⑸从nandflash中读取eboot到SDRAM之后,接着就在指定的地址处执行,也即eboot的起始地址处执行eboot,如下所示:
其中LOAD_ADDRESS_PHYSICAL=0x30038000,从此nboot的工作就完成,转而开始eboot的执行了。
WINCE6.0 + S3C2443的启动过程---nboot篇相关推荐
- WINCE6.0+S3C2443的启动过程---eboot1
WINCE6.0+S3C2443的启动过程---eboot 我们知道从nboot把eboot从nandflash中拷贝到内存指定的地址后,就接着在这个地址处开始运行eboot了,之后,nboot的工作 ...
- WINCE6.0+S3C2443的启动过程---内核启动
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
- WINCE6.0+S3C2443的启动过程---eboot6
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
- WINCE6.0+S3C2443的启动过程---eboot2
1.3系统时钟设置 我的另一篇博客介绍了S3C2443的时钟管理http://blog.csdn.net/chinesedragon2010/archive/2010/09/24/5903553.as ...
- WINCE6.0+S3C2443的启动过程---eboot5
2.3.5 SD卡控制器的相关初始化 一个相关的帖子http://topic.csdn.net/u/20100812/16/d0d5108b-dce1-4535-9e15-6f87bad57e43.h ...
- WINCE6.0+S3C2443的启动过程---eboot4
http://blog.csdn.net/chinesedragon2010/archive/2010/10/05/5922489.aspx 2 main函数 void main(void) { // ...
- WINCE6.0+S3C2443的启动过程---eboot3
1.6 OEMAddresstable只是用来初始化一级页表,就是所谓的段(section)描述,每个段是1MB,分为4096个段,总共4G--虚拟内存空间4G就是由此而来. 并且这个OEMAddre ...
- Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)
前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...
- Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)
相关文章 Android深入四大组件系列 Android系统启动系列 Android应用程序进程系列 Android深入解析AMS系列 前言 在几个月前我写了Android深入四大组件(一)应用程序启 ...
最新文章
- 新网 云服务器,新网云服务器的优势包括什么?
- 修改系统density适配
- 成功跳槽百度工资从15K涨到28K,BAT大厂面试总结
- cassandra——可以预料的查询,如果你的查询条件有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现...
- software engineering interview domain
- 如何用SPSS做协方差分析?超详细图文教程
- mysql避免回环复制_【20181204】 MySQL 双主复制是如何避免回环复制的
- 【C++深度剖析教程10】C++中的字符串类
- 【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)
- python 抽奖器_兄弟连学python (02) ----简易抽奖器
- VS当前不会命中断点 还没有为该文档加载任何符号
- 20162302 第七周作业
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- Unity3d C# Socket 下载文件 (同步到)
- python之numpy之方差numpy.var
- 怎么把ppt弄成链接的形式_ppt链接excle表格:如何在ppt中超级链接到指定的excel工作表...
- 谷歌云指南_Google材料设计指南的10个重要要点
- 【案例分析-初探】美国有多少家加油站?
- H5打开QQ聊天窗口
- 【水果识别】基于matlab GUI苹果分级系统(带面板)【含Matlab源码 1827期】
热门文章
- 阿里云物联网平台python开发手册_阿里云物联网平台体验(树莓派+Python篇)
- java中的排序算法——插入排序详解
- VMware 修改虚拟机网络_虚拟机问题解决
- Oracle OFA目录结构
- js时间搓化为今天明天_打乒乓球的搓球技巧!你掌握了吗?
- 粒子群算法matlab多元,进化算法之粒子群算法和Matlab实现(多维)
- 家庭NAS搭建实战之samba共享
- 计算最大回撤_看专业分析研究员如何一步步解读外汇市场结构,实现交易最大化盈利化!...
- sihpostreboot 权限_记一次使用post请求重启TP-LINK TL-WDR7661路由
- linux系统硬盘数据恢复软件下载,Linux硬盘数据恢复软件