仓酷云

标题: IOS制作之BootLoader开辟不乱 迈出乐成第一步仓酷云 [打印本页]

作者: 飘飘悠悠    时间: 2015-1-18 11:50
标题: IOS制作之BootLoader开辟不乱 迈出乐成第一步仓酷云
一个人负责协调他们的工作并且如果有新增加的衣服或者要移除之前的衣服通知他俩(NSManagedObjectContext)NSManagedObject  【IT168专稿】WindowsCE最年夜水平承继了桌面版Windows的丰厚功效,可是WindowsCE并非一个通用的安装版操纵体系。在五花八门的嵌进式设备天下里,一款CE体系一般只会针对某一种硬件平台天生。
  一样平常来讲,WindowsCE的开辟历程能够分为:0AL(OEMAbstractionLayer)、驱动、使用程序开辟三个步骤。个中,0AL开辟最基础的一步是板级撑持包(BSP),而BootLoader计划则在BSP开辟中具有极其关头的位置。
  1.甚么是BootLoader
嵌进式体系的启动代码一样平常由两部分组成:引诱代码和操纵体系实行情况的初始化代码。个中引诱代码一样平常也由两部分组成:第一部分是板级、片级初始化代码,次要功效是经由过程设置存放器初始化硬件的事情体例,如设置时钟、中止把持存放器等,完成内存映照、初始化MMU等。第二部分是装载程序,将操纵体系和使用程序的映像从只读存储器装载大概拷贝到体系的RAM中并实行。  (1)甚么是板级BSP?
  BSP(BoardSupportPackage)是板级撑持包,是介于主板硬件和操纵体系之间的一层,次要是为了撑持操纵体系,使之可以更好的运转于硬件主板。分歧的操纵体系对应于分歧情势的BSP,比方WinCE的BSP和Linux的BSP相对某CPU来讲只管完成的功效一样,但是写法和接口界说是完整分歧的。以是,BSP必定要依照该体系BSP的界说情势来写,如许才干与下层OS坚持准确的接口,优秀的撑持下层OS。
  (2)甚么是BootLoader
  在BSP中有一个主要的构成部分就是BootLoader,它是在操纵体系内核运转之前运转的一段小程序。经由过程这段小程序,能够初始化硬件设备、创建内存空间的映照图,从而将体系的软硬件情况带到一个符合的形态,为挪用操纵体系内批准备好情况。
  一样平常来讲,在嵌进式天下里BootLoader是严峻地依附于硬件的,因而想创建一个通用的BootLoader几近是不成能的。分歧的CPU系统布局有分歧的BootLoader,并且除依附于CPU的系统布局外,BootLoader还依附于详细的嵌进式板级设备的设置。这也就是说,关于两块分歧的嵌进式板而言,即便它们是基于统一种CPU布局而构建的,要想让运转在一块板子上的BootLoader程序也能运转在另外一块板子上,一般也都必要修正BootLoader的源程序。
  2.BootLoader在PC机与嵌进式的区分对照
  (1)引诱程序在PC机和嵌进式上的区分
  一样平常来讲,在PC的硬件平台上,因为硬件启动基本就不是经由过程BootLoader(而是经由过程BIOS),以是BootLoader就不必要对CPU加电后的初始化做任何事情。在桌面体系中,有以下几种设备能够作为启动设备利用:硬盘、USB盘、光盘驱动器、另有网卡的BootROM等。但不管选择了哪种启动设备,操纵体系城市往将该设备肇端地点的内容读进内存,BIOS将把持移交给引诱装载程序。假如启动设备是IDE硬盘,这时候一般将引诱装载程序装进第一个扇区(一般被称做主引诱扇区,MBR),然后将内容读进内存再运转。
  在嵌进式平台上,引诱装载程序是在硬件上实行的第一段代码,一般将引诱程序安排在不容易丧失的存储器的入手下手地点大概是体系冷启动时PC存放器的初始值。在嵌进式体系中,一般并没有像BIOS那样的固件程序,因而全部体系的加载启动义务就完整由BootLoader来完成,引诱程序完成本人的义务后,也将把持权移交给操纵体系。因而,BootLoader是开始被实行的程序,以是就必需包含加电初始化程序。
  (2)BSP在嵌进式和桌面Windows中的区分
  实在运转在PC机上的桌面Windows或Linux体系也是有BSP的,只是PC机均接纳一致的X86系统架构,如许操纵体系的BSP绝对X86架构是单一断定的,不必要做任何修正就能够很简单撑持OS在X86上一般运转,以是在PC机上议论BSP这个观点也就没甚么意义了。
  而对嵌进式体系来讲情形则完整分歧,今朝市场上有多种布局的嵌进式CPU(如X86,ARM,MIPS等),并且为了功能的必要,核心设备也会有分歧的选择和界说。因而,一个嵌进式操纵体系针对分歧的CPU会有分歧的BSP,又即便统一种CPU,因为外设的不同其BSP也会纷歧样。以是依据硬件计划编写和修正BSP,是包管嵌进式体系一般运转的一个主要环节。
  (3)嵌进式BSP与PC机主板BIOS的区分
  PC机主板上的BIOS起首是卖力在电脑开启时检测、初始化体系设备、装进操纵体系并调剂操纵体系向硬件收回的指令。它的Firmware代码是在芯片临盆过程当中固化的,一样平常来讲用户是没法修正。然后,为下载运转操纵体系做筹办,把操纵体系由硬盘加载到内存,并传送一些硬件接口设置给体系。在OS一般运转后,BIOS的感化基础上也就完成了,这就是为何变动BIOS必定要从头关机开机。
  从这个角度来讲,PC机BIOS的感化就象嵌进式体系中的Bootloader,都是最底层的引诱软件,初始化主板的基础设置,为吸收内部程序做硬件上的筹办。但与Bootloader分歧的是,BIOS在装载OS体系的同时还传送一些参数设置,而Bootloader只是复杂的装载体系。只管BSP的入手下手部分和BIOS所做的事情相似,但是年夜部分又和BIOS分歧,感化也完整分歧。由于BSP还包括和体系有关的基础驱动,程序员能够编程修正BSP,在BSP中恣意增加一些和体系有关的驱动或程序,乃至能够把下层开辟的一切放到BSP中。而BIOS程序是用户不克不及变动和编译编程的,只能对参数举行修正设置,固然更不会包括一些基础的硬件驱动。
  3.BootLoader的启动流程
  年夜多半BootLoader都包括两种分歧的操纵形式:启动加载形式和下载形式。启动加载形式也称为自立形式,即BootLoader从方针机上的某个固态存储设备大将操纵体系加载到RAM中运转,全部历程并没有效户的参与。而下载形式则是方针机上的BootLoader将经由过程串口毗连或收集毗连等通讯手腕从主机(Host)下载文件。从主机下载的文件一般起首被BootLoader保留到方针机的RAM中,然后再被BootLoader写到方针机上的FLASH类固态存储设备中。这类形式一般在第一次安装内核与根文件体系时被利用,或体系更新时利用。一样平常嵌进式体系的BootLoader较为经常使用的是启动加载形式,它的加载流程也是我们要重点会商的内容。
  (1)启动部分
  启动部分次要是完成初始化硬件的功效。在参考板的BootLoader目次下,会发明一些.s文件,大概会是init.s大概是reset.s等,如许的文件是CPU加电后开始实行的代码。接着Oal.exe经由过程Startup函数完成硬件的初始化,StartUp函数是BootLoader的出口函数。该函数通常为利用汇编言语编写,与CPU干系十分严密,能完成初始化CPU、内存等中心硬件。
  Startup.s代码与硬件平台的Bootloader启动代码共用。假如是热启动,即在该函数挪用之前已启动了Bootloader程序,相称基础硬件初始化已完成,则间接跳转到OALStartUp函数中;不然必要举行硬件中止屏障、内存、体系时钟频次、电源办理等硬件的基础初始化历程。在体系硬件初始化终了以后,Startup挪用OALStartUp函数,OALStartUp函数次要完成将OEMAddressTable表传送给内核,然后挪用KernelStart函数跳转到内核。因而,这部合作作是BootLoader的一年夜重点。
  (2)主控部分
  StartUp函数初始化CPU等中心硬件并跳转到Main函数后,体系就会转进C言语代码实行情况。这时候函数分为3个模块:BLCOMMON、DownloadFunction、FLASHFunction。个中BLCOMMON模块是由微软供应的,实行一些逻辑上的功效,因而倡议开辟职员不要对其举行修正。而DownloadFunction、FLASHFunction中的函数与硬件平台互相关注,因而关于每种硬件平台都要将函数的完成举行修正。
  个中,BLCOMMON库是与BootLoader程序链接在一同的,BLCOMMON库的出口点为BootloaderMain函数,它是Startup汇编函数完成后跳转至该出口的。Main函数的次要义务时挪用BLCommon中的BootloaderMain()函数,这是BootLoader的主控函数,它把持了BootLoader的完全实行流程。这部分代码由C言语完成,是BLCOMMON代码的一部分,它能够用来实行对照庞大的操纵。好比检测内存和Flash的无效性、检测内部设备接口、检测串口而且向已毗连的主机发送调试信息、经由过程串口守候命令、启动收集接口、创建内存映照等汇编没法完成的事情。
  (3)下载部分
  一样平常在平台调试终了后,能够在不必野生干涉的情形下主动加载CE,这也是BootLoader的功效之一。而在调试阶段时,这必要经由过程Loader所撑持的命令来举行操纵的,借助于这些命令不但能够完成硬件平台的部分测试,还能完成CE的BootLoader程序最为主要的一个功效--下载CE映像。假如说硬件调试功效能够由别的的程序取代而不放进BootLoader中,可是下载映像文件倒是BootLoader必须的功效。
  CE映像文件一般叫做nk.bin,它是WindowsCE二进制数据格局文件,不但包括了无效的程序代码,另有依照必定划定规矩到场的把持信息。固然,也能够选择天生.sre格局的代码文件,可是相于对前一种格局,它的代码要长良多,所必要的下载工夫也更长。
  (4)撑持DOC部分
  关于WinCE操纵体系而言,丰厚的多媒体功效是其一年夜特性。可是随之而来的成绩是,假如选择了图形界面和中文撑持,体系很简单年夜年夜超越嵌进式体系上百KB的数目级。而DOC(DiskOnChip)则供应了一种绝对便宜的年夜存储容量的办理计划。
  DOC实质上是一种加以软件把持的NAND格局的Flash,经由过程TFFS这一软件层供应对WinCE的撑持。因为DOC不克不及像内存一样被间接会见,以是其加载WinCE的历程有些特别,必需要在BootLoader中到场专门的代码,才干利用DOC来寄存WinCE映像文件。
  4.BootLoader的开辟履历总结
  (1)嵌进式体系中,Bootloader的意义与感化与PC上的BIOS有点相似,它对开辟板上的次要部件如CPU、SDRAM、FLASH、串口等举行了初始化,也能够利用Bootloader下载文件到开辟板和启动体系等。因而,一个功效对照壮大的Bootloader已相称于一个微型的操纵体系了。
  (2)从CE的BootLoader开辟流程能够看出,BootLoader在完成下载CE映像和加载映像的次要功效外,还具有一些调试硬件的功效。固然,这些功效不是必须的,随分歧的用户有分歧的界说,但这是在开辟CE体系中不成跳过的一环。
  (3)嵌进式体系使用开辟分歧于PC机,其开辟历程同时触及软硬件和下层使用开辟综合思索;而PC机使用开辟是创建在已定制好的硬件和操纵体系平台上,开辟者只需挪用体系供应的接口和服务完成响应的功效。思索到本钱束缚,嵌进式体系的硬件平台一般是依据使用量身定制,一般所用的MPU、存储器、核心设备等有多种选择余地,使平台的引诱计划变得非常庞大。因而,从零完成的话会必要相称长的历程,一般的做法是使用微软为每品种型CPU供应的尺度开辟板的BootLoader例程,从这些例程中寻觅与硬件平台最靠近的作为标本程序,然后依据硬件平台作响应的修改。
  总而言之,BootLoader是开辟WinCE体系第一步,也是关头的一步。只要失掉一个不乱事情的Loader程序,才干够进一步开辟WinCE的BSP,才干失掉全部嵌进式体系的乐成。

关于iOS开发的学习打个比方就像把汽车分解最底层的原料有塑料钢铁再用这些底层的工具造出来发动机座椅最后再加上写螺丝胶水等把汽车就拼起来了iOS基本都是英文的资料
作者: 灵魂腐蚀    时间: 2015-1-21 16:13
这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。
作者: 小妖女    时间: 2015-1-30 20:51
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
作者: 变相怪杰    时间: 2015-2-6 02:02
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
作者: 小魔女    时间: 2015-2-10 04:15
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
作者: 兰色精灵    时间: 2015-2-28 19:27
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
作者: 活着的死人    时间: 2015-3-10 06:19
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
作者: 金色的骷髅    时间: 2015-3-10 23:14
因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。
作者: admin    时间: 2015-3-13 08:08
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
作者: 再现理想    时间: 2015-3-17 21:04
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
作者: 老尸    时间: 2015-3-24 08:56
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
作者: 深爱那片海    时间: 2015-3-27 21:09
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
作者: 冷月葬花魂    时间: 2015-3-28 10:20
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
作者: 柔情似水    时间: 2015-4-19 03:40
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
作者: 海妖    时间: 2015-4-26 18:10
看《iPhone 4与iPad开发基础教程》,跟着一步步来
作者: 莫相离    时间: 2015-4-27 08:40
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
作者: 只想知道    时间: 2015-6-4 21:31
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
作者: 谁可相欹    时间: 2015-6-14 12:29
自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉
作者: 第二个灵魂    时间: 2015-6-21 00:32
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
作者: 愤怒的大鸟    时间: 2015-6-22 13:43
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
作者: 精灵巫婆    时间: 2015-7-12 02:16
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2