问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将系统软硬件环境带到合适状态解析方案

发布网友 发布时间:2022-04-25 16:54

我来回答

1个回答

热心网友 时间:2023-10-20 13:23

BootLoader通常称为“系统的引导加载程序”,是系统加电或复位后执行的第一段程序代码[1]。这段程序的主要任务是,实现硬件设备初始化并建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。通常, BootLoader包含两种不同的加载和启动引导方式,即启动加载方式和下载方式。
① 启动加载(boot loading)方式。这种引导方式也称为“自主(autonomous)引导方式”,也即BootLoader从目标机的某个固态存储设备上将操作系统加载到RAM中并引导运行,整个过程并没有用户的介入。这种引导方式是BootLoader的正常工作模式下普遍采用的一种引导方式。因此在嵌入式产品发布的时候,BootLoader一般以这种引导方式对内核代码进行启动引导。
② 下载(down loading)方式。在这种引导方式下目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,如下载应用程序、数据文件、内核映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的固态存储设备中,其后完成内核的引导运行。BootLoader的这种引导方式通常在系统研发和更新时使用。
在嵌入式系统研发阶段,现有的BootLoader下载引导方式又可根据加载途径的不同细分为以下几种:
① 通过Ethernet网口从宿主机下载内核到目标板,从而实现软件系统启动
② 通过串口从宿主机下载内核到目标板从而实现软件系统启动
③ 直接从Flash中提取已存储的内核,从而实现软件系统的启动。
总结以上几种引导方式会发现,它们有些共同的弊端;在系统调试时需要进行宿主机与目标板间的硬件线路的实际连接,使用起来不够方便,且烧片的速度比较缓慢,调试的效率不高;硬件方面需要大容量的Flash的支持,增加了研发成本;进行内核更新时显得不够灵活。为此,采用可移动的存储介质对系统内核进行存储(如SD卡、CF卡等),从而实现对系统内核的灵活调试和引导。这种引导方式的好处是,在调试时无需把宿主机和目标板进行硬件连接,提高了调试的效率,使用起来更便捷、更灵活;进行内核更新时显得更为灵活,只需把更新内核转存到指定目录,此外它的实现也比较简单。进行这方面的改进时只需做以下工作:在硬件方面,增加针对特定移动存储介质的硬件电路,而在中大型系统中,有关移动存储介质的硬件电路(如SD卡、CF卡等相关的电路)是现成的,所以硬件部分也可忽略;在BootLoader程序内部,只需添加对移动存储介质(如CF卡、SD卡等)基于文件系统进行存储访问的指令。按此思路,在已有硬件平台的基础上针对移动设备SD卡对原有BootLoader进行了改进。下面介绍实现过程。
1 硬件平台
本次改进测试的硬件平台是由英蓓特公司开发的基于LPC2294 ARM控制器的LPC22EB06I实验平台。其上的主要功能模块有:
① 2 MB的Flash、1 MB的SRAM(可扩展到4 MB)、256B具有I2C接口的E2PROM等存储器
② 2个RS232(其中一路可接Modem)、RS485、CAN等通信总线接口
③ 2个调试接口:LPT和JTAG调试接口
④ 支持CF卡、SD/MMC等移动存储介质
⑤ 支持128×128真彩显示。2 BootLoader的改进设计
2.1 原有BootLoader功能
原来的BootLoader具有如下功能:
① 串口下载功能,通过串口下载内核到指定RAM区
② Flash烧写功能,从RAM区烧写数据到Flash中
③ 数据区内块搬移功能
④ 其他功能。其指令封装结构如下:
truct _CMD_TBL {
char *cmd;//命令字
ool(*run)(struct _CMD_TBL*cptr,int argc,char**argv);//指向具体的功能处理函数char*usage;//命令使用方法信息
char*help;//帮助信息
char*helpMore
例如,Flash烧写命令封装如下:
CMD_TBL_FLASH
{"flash",DoWriteToFlashBlocks,
"flash {loader/kernel/root} {block1/.../block16} "
" Copy to Flash from SDRAM of Area. "
"flash [dest] [src] [len] "
" Copy to Flash from src to dest. ",
"flash {loader/kernel/root} {block1/.../block16} "
" Copy to Flash from SDRAM. ",
"flash {loader/kernel/root} {block1/.../block16} "
" Copy to Flash from SDRAM of Area. "
"flash [dest] [src] [len] "
" Copy to Flash from src to dest. "
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7窗口淡入淡出慢 iPhone 小技巧:如何将 Safari 浏览器中的网页添加到桌面? 锰粉是什么颜色的金属 铁精粉的常见颜色是什么 烟花爆竹中的金属粉末如何使其呈现绚丽色彩? 金粉有哪些种类 灰土每层回填最大厚度 灰土基础简史 如何让一个喜欢你的女孩讨厌你! 西环里新区基本资料 Linux操作系统的硬件环境是什么 软件著作权硬件环境软件硬件环境怎么写 怎么煎豆腐不烂? 什么是计算机的软件,硬件环境 IT项目的软件环境、硬件环和开发工具分别是什么? 怎样煎豆腐不破皮? 怎样查看电脑的硬件环境 项目名称,软件环境,硬件环境,开发工具,项目描述如何写? 无花果能和百香果混种吗? 青皮,里面像无花果的水果是什么水果 软件环境和硬件环境都具体指什么? 怎么煎豆腐不粘锅不碎 煎出完美豆腐的几个小技巧 程序运行对硬件和软件环境有什么要求? 什么是软硬件环境 百花果是什么?百花果是不是就是无花果呢?两者一样吗? 怎么煎豆腐好吃不会碎美味不粘锅的香煎豆腐做法大全 win7系统的硬件环境的要求都有哪些 这是什么水果的植物? 硬件环境和软件环境具体指什么? 硬件环境怎么写呀? 软件著作权 硬件环境 软件硬件环境怎么写 怎样煎豆腐,才不会碎? 求一篇最新的英语商业新闻 求一款谷歌浏览器能用的中英文翻译插件 英语翻译(勿用谷歌翻译器) 求好的中英文新闻网站 想学商务英语,有哪些商务英语类的杂志或报刊 语境在商务报刊新闻理解中的运用,这句话用英语翻译 财经新闻与商业新闻的区别 商务英语专业的学生应该看什么杂志 商业指的是什么? 商务英语去新闻出版编辑部是干什么的,英语还用吗? 商务英语口语学习怎么学好?。 商务英语 和 英语(国际新闻方向)有什么区别?还有有大学排名啊 小学六年级应该如何快速记忆英语单词? 英文 新闻文章 翻译 怎样快速记单词? oppo手机怎么测距离 谐音记忆法的内容是什么? 求“中国制造”的广告登陆美国CNN媒体 的英文新闻一则