第一篇:网上教学平台开发现状
一、目的和意义
2、意义
计算机网络的不断成熟促进了网络教学的发展,网络教学师生互动作为教学互动的重要方面则直接决定网络教学的教学效果,而平台互动中能充分调动教师和学生的积极性,对于课后的问题能够有效解决。无论从时间空间都能提高效率,互动性也越来越明显并能有效的反馈信息,及时沟通交流,具有一定的实践意义。除此之外,它结合了理论和实践,具有很强的操作性和实用性,尊重学生的主体性,创造性,注重师生之间的合作,交往等人文性,保持了信息传递的双向性,保证多媒体播放进程与学生思维进程的一致性。
二、现状分析
为了适应知识经济社会的需要,建构终身教育和终身学习的教育体系,我国普通高校从1996年开始,提出利用普通高校优势资源,开展现代远程教育的设想。现代远程教育的数字化、网络化、交互性的特点正在日益凸显,网上教学正在成为最重要的教学模式之一。在网上教学中,网络学习的平台建设起着关键性作用。目前,在普通高校的网络教育学院中,多数学院都有自己专门的网上教学平台。我国网络教育学院的教学平台建设已经进入了一个新的发展阶段,这表现在以下两个方面。
第一、网上教学环境已经形成规模
1999年,我国首次在4所普通高校开展现代远程教育试点时,网络应用水平是很低的。经过这些年的努力,网络应用水平正在大幅度提高。大多数网络学院都在网上提供了答疑、网上交流等学习支持服务,从而加强了教师与分布在各地的学习者之间的互动,增进学习者的学习效果,使我国利用网络的学习走入了新的发展水平。
第二、适合自主学习的网上教学平台正在丰富和完善
网上自主学习模式正在被越来越多的网络教育学院接受和应用,一些学院在实时授课的同时,积极探索和鼓励学生采用网上自主学习方式学习。一些能够突出网上教学优势的功能得到采用,如学习自测治理、网上作业提交、作业评分治理、网上选课、分学科分课程的答疑等等。这些功能的应用,使网络教育不仅能够发挥信息技术在知识传播方面准确、快捷、交互性强、易于存储等优势,而且能够发挥信息技术在组织和治理方面的优势,为网络教育不断提高质量和扩大开放度创造了条件。
尽管我国普通高校网络教育学院已经取得了突出的进展,但一些存在的问题也不容忽视。
第一、网络教育学院之间在网上教学平台及网站建设方面的不平衡
从网络教育学院的网上教学平台及网站建设可以看出,有的网络教育学院能充分利用网上教学的优势,网上资源优质,并且丰富而多彩,同时通过网络技术,给学习者提供全方位的学习支持服务。而有的网络教育学院的网站难以进入,缺乏良好的远程支持服务,造成的结果只能是仍然依靠面授,网上教学的优势难以发挥。
第二、仍然存在着“为技术而技术”的现象
学习的平台的功能不是从学习者的需求出发,从满足学习者需要而设计的教学过程出发,而是从技术能否实现出发,结果是,技术上实现了,但可能没有学习者使用。这在网上教学平台功能中也能部分地反映出来。例如,在网上教学平台中,缺乏让教师自己开发网上课程的功能,难以让教师的知识和经验与网上教学的优势结合起来;建设了网上工作组,但关于课程的学习却几乎没有教师和学习者使用。
第二篇:广州电大网上教学平台指引
广州电大网上教学平台指引
1.中央“电大在线”学习的平台登录地址:http://www.xiexiebang.com
图 2 广州电大远程教学平台学生及老师频道
广州电大开放教育平台由广州电大教育技术中心进行更新和维护,用以发布教务教学信息,及提供学习资源,供学生进行注册,选课及自学,参加网上讨论、收看直播课堂视频等。教学资源包括中央电大统设课程资源和广州电大非统设课程自建资源。
由于我校目前只是工作站性质,教师登陆账号和密码只能限量申请,就业指导中心已每教学部申请一个账号,账号申请在办理当中。申请成功后将通过飞信发给各位。3.市电大教务处 http://jwgl.ougz.com.cn/index.asp
教务处最新的公告通知、电大的专业规则(即专业的教学大纲
4.腾讯通
第三篇:网上保险发展现状
保险学实习论文
我国网上保险发展现状、存在问题及对策分析
班级: []
姓名: []
学号: []
指导教师: []
2013年4月4日
我国网上保险发展现状、存在问题及对策分析
【摘要】 网络(电子商务)应用于保险业,便赋予了保险新的形式,从而产生了网上保险。网上保险的最终目标是实现电子交易,即通过网络实现投保、核保、理赔、给付。网上保险在我国开展较晚,对保险业具有重要意义,但是我国网上保险还存着很多问题。本文在论述网上保险概述的基础上,试着探讨了我国网上保险存在的问题,并提出了相应的解决对策。
【关键词】网上保险;电子商务;优势;对策
随着世界市场经济的发展,中国与世界的经济发展越来越密切,当今的发展是全面的发展,世界的发展离不开中国,中国的发展更离不开世界。所以关注国外的先进发展经验并借鉴有益的成果就可以在一定程度上推动我国经济更好更快地发展,保险业就是其中一种。我国的保险业发展相对较晚,但随着近年来与世界的联系更加密切,我国的保险业也实现了较大的进步。随着我国《电子签名法》的颁布实施以及网络经济的快速发展使保险的经营方式、服务手段、服务界限、服务功能发生了显著变化,一种全新的理念——网上保险正在逐渐形成和发展。我国保险企业将在现有B2C销售平台的基础上,积极开发电子保单和电子签章,策划推出电子商务专有产品,对保险网站进行全新的改版,以网上销售保险完全电子化流程为目标,继续全面推进电子商务的建设,抓住未来网络保险快速发展的机遇。
网上保险是指保险公司或保险中介机构以互联网和电子商务技术为工具来支持保险经营管理活动的经济行为。网上保险以其高效率、低成本、个性化交易等突出优势,有效地克服了传统营销模式带来的种种弊端,改变了人们的保险习惯,由被动接受保险为主动寻求保险。目前,国内的网上保险已形成以保险为主,融证券、信托、投资和海外业务为一体的紧密、高效、多元的经营架构。
一、概述
(1)网上保险的涵义。网上保险也称保险电子商务,指保险公司或保险中介机构以互联网和电子商务技术为工具来支持保险经营管理活动的经济行为。从狭义上讲,保险电子商务是指保险公司或新型的网上保险中介机构通过互联网为客户提供有关保险产品和服务的信息,并实现网上投保、承保等保险业务,直接完成保险产品的销售和服务,并由银行将保费划入保险公司的经营过程。从广义上讲,保险电子商务还包括保险公司内部基于互联网技术的经营管理活动,对公司员工和代理人的培训,以及保险公司之间、保
险公司与公司股东、保险监管、税务、工商管理等机构之间的信息交流活动。
(2)网上保险的必要性。保险商品在理论上就比较适合网上经营,加之保单销售相对于其他有形产品的销售而言不必要伴随大量物流的转移,从而使电子商务与保险营销的结合更具可行性,同时也是我国保险行业发展的必然趋势。伴随着信息技术革命,Internet通过电子商务正以前所未有的速度改变着保险业。电子商务作为信息技术革命的产物,是一种全新的经营理念,它为保险业融入信息革命大潮提供了良好的切入点。
(3)网上保险的运营模式。根据网上保险的发展状况和行业管理特点,网上保险在未来几年内将以下述两种运营模式发展:中立的第三方网站模式。通过在互联网上建立交易平台、内容平台等,介绍行业内的信息和资讯,进行不同保险公司业务的比较,为客户提出建议和投资组合分析。这类网站既不是网上保险公司,也不是网上保险经纪人,是一个开放性保险商务专业平台。这类保险网站存在的最大问题是由于政策限制而没有保险业务经营权,就像那些证券网站无权从事网上证券交易一样;传统保险公司的网站模式。这种模式主要侧重于改进公司服务内容和形态,以此支持销售队伍,开拓出除代理人和员工之外的新的销售方式。这种保险网站是利用计算机网络技术对传统保险产业进行改造、全面提高企业整体素质的体现,实现了保险行业传统服务模式的重大变革,反映了保险企业专业化、规范化、国际化的发展战略,对保险行业的发展具有划时代的意义。
二、保险电子商务模式
目前,我国保险电子商务应用模式不断丰富,已经形成B2B、B2C、B2M等多种服务模式,网站的信息、产品、服务等方面的成熟度,将决定其对销售拉动的实际效果,成为保险电子商务发展的关键。
(1)B2B是一种保险公司对销售代理机构的网上交易模式。如太平洋保险的诚信通代理平台,可以提供车险、货运险、意外险等条款和费率标准化程度较高险种网上交易平台。
(2)B2C保险公司直接面对终端消费者的销售模式。这是市场上最为普遍的一种销售模式,安邦保险、人保、平安等的保险电子商务平台,各家公司的电话车险都属于这一类别。
(2)B2M保险商品供应商对保险销售经理人的销售模式,类似于B2B,但M是属于个体保险代理人。这个销售模式,市场比较少见,主要以中国保险服务网·电子商务的车险网上投保为代表。
消费者可以利用保险网络平台完成很多保险业务,比如产品选择、填写投保单、支付保费以及理赔查询等。然而,仍有超过八成的保险公司电子商务平台,在投保、批改和理赔功能上存在缺失,网站仍然停留在以信息发布为主要功能的服务阶段,并不能称
之为成熟的电子商务平台,所以保险电子商务的发展还存在巨大的市场,拥有充分的发展潜力。
三、网上保险存在的问题
虽然保险业内部网络化建设在近几年有一定的发展,但由于相关环境及网上保险技术还有所欠缺,使得保险在网络棋盘上面临着许多难关:
(1)安全问题。网上保险交易的安全性是开展电子商务所要解决的核心问题之一,并且对网络和应用系统提出了一些基本要求。在线保险交易过程涉及到保险标的风险状况等商业机密、人身隐私和有关支付方面诸如银行账号、客户密码等敏感信息,一旦泄漏,后果不堪设想。然而目前网上保险对客户身份的认证技术水平很低。这些问题阻碍了网上保险的顺畅运行。根据权威调查,被调查人群中66%最关心在网上投保后支付保费的转账安全性。可见客户对网上保险安全机制的关注。
(2)缺乏人才。保险电子商务网站的建设和管理涉及多方面的知识,诸如网络知识、电子商务知识、保险业务知识、心理学和管理学等等多方面的综合知识。但目前从业人员有的只懂网站建设与管理维护等技术知识,对保险知识缺乏深刻的了解。有的具有丰富的保险业务知识,对网络技术一窍不通。缺乏具备既精通电子商务技术又熟悉保险业务的人才,不能适应保险电子商务发展的需求。
(3)法律法规不健全。目前,我国己经颁布了不少有关互联网的法律法规,但是有关电子商务的立法还比较滞后,没有一个比较完整的电子商务法律框架。网上交易的法律效力及电子商务过程中诸如网上安全、客户隐私保护、电子签名的有效性等法律问题无法解决,限制了保险电子商务的长足发展。
(4)认识不足。认识上的滞后是制约我国保险企业开展电子商务的最大障碍。公司在考虑是否推进电子商务发展上首先考虑的是电子商务能产生多少回报,能带来多少保费,并没有把它上升到战略高度和长远的角度。另外由于电子商务势必会对传统的保险销售渠道带来一定的冲击,因此公司内部有些员工对于电子商务的抵触情绪也比较大。另外,中国保险业沿用多年的代理人制度让客户习惯了买保险就是要与代理人、业务员面对面的交流,面对冷漠的网络,许多客户还无法适应。出于对网上银行支付安全问题的疑惑,相当一部分消费者宁愿选择“网上咨询,网下付钱”,并没有实现真正意义上的电子商务。
四、网上保险存在问题的解决对策
(1)建立网络安全系统。针对网上保险的系统风险和操作风险,保险公司在推出网上保险服务品种时需要在金融电子工程中进行严密的技术设计,制定周全的预控措施,以维
护网上保险运行的有效性和安全性。可以建立灾难备份系统,采用中间件技术;还可采用多重防火墙和安全代理服务器等措施;建立 24小时的动态安全监控系统,对网上保险的每一个交易站点和每一次访问都进行实时监控,以保证网上保险系统日常运行的安全。
(2)培养复合型人才。网上保险的运营,使得保险工作的性质和任务与以往大不相同。网上保险对传统经营模式提出了人才、管理、技术、法律等方面的挑战,要求员工应该具有全新的观念、较高的业务和管理水平。对员工的素质提出了更高的要求。同时,网上保险的电子商务离不开保险企业核心业务的支持,离不开保险企业管理模式的再造。随着我国保险企业走向国际化、标准化、市场化、开放化的发展道路,保险企业员工必须增强运用电子商务处理保险业务和管理企业的能力。保险公司应下大力气培养既懂得电子商务技术,又有保险业务知识的复合型人才。
(3)完善法律法规建设。制定网上保险业务法规要积极体现保险法和合同法的立法精神,同时要充分考虑到目前我国保险业受到严格管制和电子商务起步不久的现状,并为符合世贸组织的相关规定和电子商务取得新的发展预留一定空间。要对立法依据、管辖范围等做出明确的原则性规定,又要考虑到在今后一定时期内的适用性,因而需强调宏观指导性,不宜流于繁琐;要体现出现阶段我国保险业仍然接受严格监管的现状,又要有很强的针对性和操作性,不能因规定过于严厉苛刻而影响网上保险业务的发展。
(4)转变营销观念。根据客户需要进行服务的开发,提供客户愿意购买的保险产品。网络使消费者具有更多的选择,这使得价格将逐渐趋向一致。随着技术进步,市场需求的变化,谁能不断开发和推出适合市场和客户需求的险种,谁就能取得较高的市场份额,赢得更多的客户。在保险创新方面,让客户提出对保险产品的意见和建议,直接参与保险产品的设计,及时推出新的服务品种。
五、对未来保险电子商务的发展方式的一些探讨
中国保险企业在建设电子商务、发展网上保险时,要逐步将公司网站作为销售渠道,以获得保费收入为主要目的,并从降低成本,完善服务的角度来定位网站。不能再将网站单一地作为一种宣传工具。在中国网上保险发展实施的过程中,中国保险企业还可以探讨的几个创新点:
一、借鉴P2P的发展模式,将个人信用与电子商务结合起来,实现网上保险的推广虽然目前P2P业务的发展也还是很不完善,但在一定程度上也代表一种模式的创新,要实现这一盈利,就必须积极探讨存在的一种盈利点,这要发掘这一盈利点保险业电子商务化势必会得到较好的推广。
二、保险电子商务也可以借鉴基金的运作方式进行经营,购买保险也可以发展成一种投
资,要积极发展那一种对损失可能存在的保障。可以针对股市的波动创造出一种风险的保障保险。
三、保险电子商务化可以结合卫星信息系统进行实时跟踪,网上实现理赔,实现理赔方式的无纸化,网上认证支付的模式,这样子可以减少人力资本,同时可以保证保险的真实性。
参考文献
[1]张红霞.保险营销学 北京:北京大学出版社,1999(8)
[2]姜婷婷.浅谈我国网络信息安全保险的开发[J].情报理论与实践,2003,26(4):356-358
[3]袁丽华.试论我国网络信息安全保险的发展策略[J].科技情报开发与经济,2010,20(13):86-88.
[4]刘春,高家望.网络信息安全保险的市场前景与决策运营[J].图书情报论坛,2002,(3):21-23.
[5]赵汴, 邬金涛.论商业银行的顾客获取战略—关系营销视角的思考商业研究2008、08(376)
[6]吕巍著.保险电子商务的应用 中国保险第7期2006
[7]沈祥.E时代的保险营销[J].新疆财经.2002(3): 55~56
[8]刘殿兰.电子商务在我国保险业中的应用与发展前景 .科技创业.2006(4)
[9]李志远.论保险电子商务平台的构建和支撑环境的培育 .社科纵横.2006(6):63
第四篇:信息平台委托开发合同
系统委托开发合同
甲 方:
乙 方:
甲、乙双方经友好协商,一致达成本协议。双方申明,双方都已理解并认可了本合同的所有内容,同意承担各自应承担的权利和义务,忠实地履行本合同。
一、合作内容
乙方为提高XXXX信息管理化水平与服务效率,向公众提供方便快捷的服务平台,特委托甲方开发XXXXXX工作平台(一下简称“系统”),详细要求见附件。
二、合同期限
(麻烦补充一下)
三、甲方权利与义务
1、甲方所开发系统是自行研发的,保证不存在任何侵权问题。
2、甲方将严格按照乙方提出的各项技术指标,要求进行系统的开发设计。
3、甲方开发的系统不得含有病毒,不得含有黄色,反动及违反国家法律规定的内容。
4、甲方所开发系统的所有权,版权归甲方所有,乙方只有使用权。
5、甲方只对乙方提出的书面要求进行开发。
6、甲方交付系统时将对乙方提供相关技术培训及售后服务。
7、如需提供短信功能,乙方必须提供短信平台及短信平台数据接口。
四、乙方权利与义务
1、乙方托付甲方所开发的系统保证不含有反动,黄色及违反国家法律规定的内容,否则甲方将不予开发。
2、乙方必须保证对甲方所开发的系统不作任何侵权行为,如不进行拷贝,篡改,泄露给第三方使用等,否则甲方将追究乙方的法律责任。
3、乙方托付甲方开发系统时必须以书面形式(一式二份且加盖公章)详细地说出需求模块,提供给甲方各项技术指标。
4、乙方托付甲方开发的系统在签订合同之后如需增加其它功能,必须以书面形式呈交给甲方,甲方做改动并酌情收取适当费用。
五、乙方验收标准
1、乙方验收时,不得对甲方所开发的系统提出附加条件。
2、甲方所开发的系统符合乙方呈甲方的附件要求及各项技术指标即为合格。
3、甲方完成系统开发工作,乙方应在三日内组织验收,超过七日不验收,视为验收合格。
六、费用结算方式
1、该系统乙方付给甲方费用总金额元整。
2、甲乙双方签订合同当日,乙方将预付保证金元整(占总造价%)。
3、甲方交付系统当日,乙方验收合格后付甲方人民币 元整(占总造价%)。
4、甲方收取完开发费用后,免费为乙方维护系统个月。
5、免费维护期过后,乙方如需甲方对该系统继续进行维护,甲方将提供有偿服务。
6、付款方式。
七,违约责任
1、由于乙方未及时提供系统开发所需的信息而导致甲方工作不能按时完成,甲方不负任何责任,并有权向乙方提出延期要求,延期时间由双方协商确定。
由于甲方原因未能按时完成系统的开发,乙方有权向甲方提出索赔,具体额度由双方协商确定,但最高不超过合同中乙方支付费用总金额的10%。
八,争议解决
本合同履行过程中如发生争议,双方应本着友好合作的精神共同协商解决。
九,合同终止
1、任何一方终止合同,需提前10个工作日书面通知对方,并说明正当的终止理由,由双方代表签字后方可终止本合同。
2、由于战争、地震、火灾等不可抗拒因素导致的工作中断,双方均不承担责任,待条件恢复后,由双方协商确定合同内容的变更。
十,附则
1、合同签订前未尽事宜,双方协商解决;合同签订后,经双方当事人协商一致,对本合同有关条款进行变更或者补充时应以书面形式确认。
2、本合同一式两份,双方各持一份,具有同等的法律效力,自双方授权代表签字或盖章后生效。
3、本合同的详细要求见附件,附件具有同待法律效率。
甲 方:乙 方:
代表人:代表人:
年 月 日年 月 日
第五篇:Qualcomm平台android开发总结
1、高通平台android开发总结.7 1.1 搭建高通平台环境开发环境.7 1.2 搭建高通平台环境开发环境.7 1.2.1 高通android智能平台概述.7
1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之间的关系.7 1.2.2 选择合适的源代码以及工具.8
1.2.2.1 获取经过高通打补丁的android 源代码.8 1.2.2.2 获取高通针对不同处理器的vendor源代码.9 1.2.2.3 获取 modem 源代码.9
1.2.2.3.1 高通 modem 源代码编译前的修正.13 1.2.3 建立 Android 开发环境.14 1.2.4 建立 modem 开发环境.15 1.2.4.1 补充.16
1.2.4.1.1 获取 licenses 16
1.2.4.1.2 Flex 简单使用指南.16 1.2.4.1.3 启动 license 服务器.18
1.2.4.1.4 license 没有办法从服务器获取的几种情况.18 1.2.4.1.5 破解 rvds 的license 19 1.2.5 在高通开发板上烧录文件系统.19
1.3 高通平台,android和 modem 编译流程分析.21 1.3.1 android代码编译流程分析.21 1.3.1.1 编译工具检测.22 1.3.1.1.1 22
1.3.1.2 appsboot.mbn 生成过程解析.22
1.3.1.3 boot.img 生成过程解析,怎样手动生成 boog.img 28 1.3.1.4 编译过程存在的问题.32
1.3.1.4.1 prelinkmap 的时候 base 0xaff00000 out of range 32 1.3.1.4.2 LOCAL_SDK_VERSION 使应用程序不能访问hide的api 32 1.3.1.4.3 armv5te-vfp 导致一些游戏运行不了.32 1.3.2 分布式编译 android 代码.33 1.3.3 modem 代码编译流程分析.33
1.3.3.1 单独编译某个模块(如:qcsbl oemsbl).34 1.3.3.2 $(TARGETDIR)/exist 规则解析.36 1.3.3.3 setup规则解析.36
1.3.3.3.1 corebsp_create_incpaths 36 1.3.3.3.2 create_incpaths 36 1.3.3.3.3 amsssetup 36
1.3.3.3.4 amsslinkaddress 36 1.3.3.3.5 firmware 38 1.3.3.4 deps规则解析.38
1.3.3.5 corebsp_build规则解析.38 1.3.3.5.1 corebsp_build_action 38 1.3.3.5.1.1 corebsp_scons 规则.39 1.3.3.5.1.1.1 corebsp_scons_start 39 2.3.3.5.1.1.1 corebsp_scons_action 39
1.3.3.5.1.1.2.1 命令 pboot_gen_elf image_header pboot_add_hash 解析.40
1.3.3.5.1.1.2.2 env.BinBuilder 过程解析.41 1.3.3.5.1.1.2.3 env.MbnBuilder 过程解析.41
1.3.3.5.1.1.2.4 env.MbnDummyBuilder 过程解析.42 1.3.3.5.1.1.2.5 fsbl.mbn 生成过程解析.43 1.3.3.5.1.1.2.6 dbl.mbn 生成过程解析.43
1.3.3.5.1.1.2.7 AMSS_AABBQOLYM.mbn 生成过程解析.43 1.3.3.5.1.1.2.8 adsp.mbn 生成过程解析.43 1.3.3.5.1.1.2.9 osbl.mbn 生成过程解析.44
1.3.3.5.1.1.2.10 enandprg_AABBQOLYM.mbn 生成过程解析.44 1.3.3.5.1.1.2.11 nandprg_AABBQOLYM.mbn 生成过程解析.45 1.3.3.5.1.1.2.12 emmcbld.mbn 生成过程解析.45 3.3.3.5.1.1.1 corebsp_scons_done 46 1.3.3.5.1.2 corebsp 46
1.3.3.5.2 corebsp_create_incpaths 46 1.3.3.5.3 corebsp_setup 46 1.3.3.6 libs 46
1.3.3.7 copybar规则解析.47 1.3.3.8 exe规则解析.47
1.3.3.8.1 CORELIBS_AABBQOLYM.mbn生成过程解析.47 1.3.3.8.2 amss.mbn 生成过程解析.47 1.3.3.9 bldprod规则解析.48
1.3.3.10 create_mem_feat_html规则解析.48 1.3.3.10.1 50
1.3.3.11 partition规则解析.50
1.3.3.11.1 eMCC 启动和 NAND 启动的分区格式是不一样的,如果是 eMCC 启动,多了编译选项:.50
1.4 高通平台 7630 启动流程分析.52 1.4.1 启动流程概述.52 1.4.2 pbl 流程.52 1.4.3 dbl 流程.52 1.4.4 osbl 流程.54
1.4.4.1 osbl 装载 appsbl 过程分析.56
1.4.5 appsbl 流程(源代码在 android中).56
1.4.5.1 aboot_init 过程分析(需要侧重关心的部分).58 1.4.5.1.1 fastboot 模式分析.61
1.4.5.1.1.1 什么是 fastboot 模式.61
1.4.5.1.1.2 fastboot 模式与 recovery 模式的区别.61 1.4.5.1.1.3 怎样进入 fastboot 模式.62
1.4.5.1.1.4 android 系统手机刷机过程分析(补充知识)62 1.4.5.1.2 appsbl 引导 android 系统.63
1.4.5.1.2.1 Android 系统启动过程中存在的问题.67 1.4.5.1.1.1.1 linker 问题导致系统无法启动.67 1.4.6 AMSS 流程.69
1.5 android 系统重启关机流程分析.82 1.5.1 c语言中调用 reboot 函数.82 1.5.2 通过 adb 让系统重启.82
1.5.3 fastboot 模式下系统重启.83 1.5.4 系统关机.84
1.5.5 内核中的系统调用 reboot 85 1.6 软件调用流程分析.89 1.6.1 设置sim卡状态.89 1.6.2 设置背光.90 1.6.3 获取电池信息.90
1.7 python scons 语法学习.94 1.8 python 语法学习.94 1.8.1 Python中文全攻略.94
1.8.2 推荐一款Python编辑器.94
1.8.3 使用 pyExcelerator 读 Execl 文件.94 1.8.4 xlrd 解析 xls 文件.95 1.8.5 xlrd 生成 xls 文件.95
1.9 Python 语言之 scons 工具流程分析.95 1.9.1 Program 方法.100 1.9.2 Library 方法.100
2、高通常用工具使用.101 2.1 QPST 101 2.2 QXDM 101 2.3 QCAT 101
3、工程模式.101
4、Android 系统更新升级总结.104 4.1 刷机基本知识.104
4.1.1 各品牌代表手机刷机模式进入方法.104 4.1.1.1 HTC G1 104
4.1.1.2 三星 Galaxy i7500 104 4.1.1.3 Google Nexus One 105 4.1.2 fastboot 模式.105
4.1.2.1 fastboot 模式概述.105
4.1.2.2 PC端fastboot 命令分析.106 4.1.2.2.1 命令选项 –w –s-p –c 106 4.1.2.3 手机端fastboot 命令分析.107 4.1.2.3.1 boot 107 4.1.2.3.2 erase 107 4.1.2.3.3 flash 107 4.1.2.3.4 continue 107 4.1.2.3.5 reboot 107
4.1.2.3.6 reboot-bootloader 107 4.1.2.3.7 getvar 107 4.1.2.3.8 download 108 4.1.2.3.9 update 108
4.1.2.3.9.1 system/core/fastboot/fastboot.c:294: 108 4.1.2.3.9.2 fprintf(stderr, “archive does not contain '%s'n”, name);108 4.1.2.4 fastboot 模式流程分析.108 4.1.3 recovery 模式.108
4.1.3.1 recovery 模式概述.108 4.1.3.2 软件升级包.109
4.1.3.3 recovery v1跟recovery v2的区别.109 4.1.3.4 软件升级脚本语法解析.109 4.1.3.4.1.1 mount 110 4.1.3.4.1.2 getprop 111
4.1.3.4.1.3 file_getprop 111 4.1.3.4.1.4 assert 111 4.1.3.4.1.5 format 111
4.1.3.4.1.6 apply_patch_check 111 4.1.3.4.1.7 apply_patch_space 111 4.1.3.4.1.8 apply_patch 111
4.1.3.4.1.9 package_extract_file 112 4.1.3.4.1.10 ui_print 112
4.1.3.4.1.11 META-INF/com/google/android/update-script 脚本分析.1124.1.3.4.2 Recovery 模式中 install_package 函数解析.117 4.1.3.5 Recovery 流程分析.118 4.1.3.5.1 恢复出厂设置.118 4.1.3.5.2 系统更新流程.119
4.1.3.5.3 通过sd卡实现刷机.121 4.1.3.6 系统升级包案例分析.122 4.1.4 工程模式(HBoot)模式.122 4.1.4.1 HBOOT降级方法.122
4.2 如何制作升级包 update.zip 123 4.2.1 手动制作升级包.123 4.2.2 自动制作升级包.123 4.3 Android 签名机制.125
4.4 android 文件系统权限概述.125 4.4.1 获取手机root权限.127 4.4.2 adb默认权限分析.128
4.4.3 adb root命令切换到 root 权限.129 4.4.4 挂载系统分区为读写(remount)130
4.4.5 通过修改 boot.img 获取 Nexus One 权限.132 4.5 系统应用移植.132
4.5.1 Android 2.2在线升级的移植.132
4.5.2 解决donut Gtalk、Market登录不了的问题.133 4.5.3 apk反编译问题总结.133
4.5.4 系统重启.133
5、高通linux内核驱动开发.133 5.1 添加串口调试.133 5.2 Sensor 传感器.133
5.3 USB 枚举 USB Composition 134 5.4 USB 枚举 USB Composition 136
6、从 android 源代码制作 sdk 136 6.1 linux sdk 137 6.2 windows sdk 137
7、程序安装与调试.138
8、android 框架流程分析.138 8.1 屏幕显示相关.138 8.1.1 屏幕分辨率.138 8.1.2 屏幕模式.139
8.2 Android 开机充电.141 8.3 Android 开机动画.141 8.3.1 内核开机画面.141 8.3.2 文件系统开机画面.141
8.3.2.1 开机显示的 ANDROID 文字.141 8.3.2.2 ANDROID 发光动画.142
8.3.2.3 initlogo.rle 文件分析.143
8.3.2.4 bootanimation.zip 文件分析.143 8.3.3 三星I9000 开机动画.144 8.4 JNI调用流程.145
8.5 Android 开机铃声.145 8.6 GPS 导航.145
8.6.1 GPS导航原理.145 8.6.2 GPS导航软件.145
9、高通modem框架流程分析.146 9.1.1 添加自定义rpc调用.146
9.1.1.1 从AP端获取modem的系统分区信息.146 9.1.2 添加自定义 AT命令.146
10、linux 应用.146
10.1 嵌入式Linux通过帧缓存截图包括Scheduling(调度), File system(文件系统), Networking(网络), Device driver(设备驱动程序), Memory management(存储管理), Paging(存储页面管理)-都在内核中完成.一直到现在广泛应用的操作系统,如UNIX,Linux,和Windows还大都是monolithic kernel操作系统.但随着操作系统变得越来越复杂(现代操作系统的内核有一两百万行C程序是很常见的事情),把所有这些功能都放在内核中使设计难度迅 速增加.微内核是一个与Monolithic Kernel相反的设计理念.它的目的是使内核缩到最小,把所有可能的功能模块移出内核.理想情况下,内核中仅留下Address Space Support(地址空间支持),IPC(Inter-Process Communication,进程间通讯),和Scheduling(调度),其他功能模块做为用户进程运行。
REX 是在 L4 之上封装的服务,是一个抢占式,多任务的RTOS,所有的任务都以task的形式存在,REX提供包括任务创建,同步,互斥,计时器,中断控制等功能的 API,这里的task实际上就是我们的线程,每个 task对应着一个线程。REX维护一个task list(双向链表),始终运行高优先级的task。products里面所有的服务包括3g协议栈等都是以task的形式跑在rex之上的。而Brew的话是运行的环境,跟Java 有点儿类似,相当于是一个虚拟机。AMSS――高级的移动用户软件(Advanced Mobile Subscriber Software)技术,是一种新的软件架构,是对原来软件架构 DMSS 的升级。AMSS源代码实际上是QC BREW(Binary Runtime Environment For Wireless)平台的的底层部分,去掉了为应用程序提供接口的AEE(application execution environment)部分,高通在Dual Proc芯片上的其他平台基本上都是采用的这样的架构。
参考文档:
微内核操作系统及L4概述
http://wenku.baidu.com/view/90929762caaedd3383c4d311.html MSM平台上的AMSS http://blog.csdn.net/yili_xie/archive/2010/01/04/5129469.aspx
1.2.2 选择合适的源代码以及工具 要编译出可供烧写使用的镜像文件需要三部分代码: 1)获取经过高通打补丁的 android 源代码 2)获取高通针对不同处理器的 vendor 源代码 3)获取 modem 源代码
1.2.2.1 获取经过高通打补丁的android 源代码 网址:
https://www.xiexiebang.com1312 Chipset(such as QSC6270):MSM7227-1 RF chipset(such as RGR6240):RTR6285 PMIC chipset(such as PM7540):PM7540 WCMDA Supported Bands(900,1900,2100„.if support WCDMA):2100 CMDA Supported Bands(450,850,1900,2100„ if support CDMA):not suport OS(Brew,BMP,Android,WM,ThinUI(no UI)„):android froyo OS version(Android Donuts„): android froyo
1.2.2.3.1 高通 modem 源代码编译前的修正
从高通获取的源代码直接编译会存在一些问题,以下为可能的问题以及解决方法:
1)为相应的脚本加上编译选项
vim./AMSS/products/7x30/build/ms/xxxxxx.cmd 加上: BUILD_UNIX=yes
2)如果编译过程出现.pl 文件没有执行权限而退出,那么为工程下面所有的 pl 文件加上可执行属性,命令:
find./-name “*.pl” |xargs chmod 755
3)无法找到需要的 pl 脚本解析器
vim./AMSS/products/7x30/tools/build/depgen.pl 修改
#!/pkg/perl/5.6.1/bin/perl-w 为
#!/usr/bin/perl-w
4)如果出现错误:
“AMSS/products/7x30/core/bsp/build/data/incpathsaaabqmlym.py”, line 14 IndentationError: expected an indented block 修改文件:./AMSS/products/7x30/core/bsp/build/scripts/genpaths.pl 内容:
#if($line =~ /^# makefile(from/)为:
if($line =~ /^# makefile /)原因分析:
genpaths.pl 会对编译过程的中间信息 :...line=# makefile(from'incpaths.min',line 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc...等信息进行解析,由于我们使用的是中文系统,所以以上内容变为: line=# makefile(从'incpaths.min',行 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc 所以导致:
#if($line =~ /^# makefile(from/)判断条件为为 false 无法正确生成 incpathsaaabqmlym.py,python 在解析该文件的时候认为存在语法错误。
在 modem 代码 M7630AABBQMAZM2020(HY11-N2280-2.zip)中开始使用 genincpaths.py 产生
./AMSS/products/7x30/core/bsp/build/data/incpathsaaabqoazm.py 文件,所以修改文件 amend-source-code-qualcomm-modem.sh 在脚本中需要加入以下内容: incpathsxxx_py=$PRODUCT_DIR/core/bsp/build/scripts/genincpaths.py if test-f $incpathsxxx_py;then PERL=`which /usr/bin/perl` sed-i “s/(from//g” $incpathsxxx_py fi./AMSS/products/7x30/multimedia/audio/drivers/Adie/AdieCodecDb/src/DALAdieCodecDb.c #DalAdieCodecDbInternal.h 改为: #include “DALAdieCodecDbInternal.h”
5)如果出现 make: execvp:../../../../platform/cs/bin/cifc: Permission denied 错误,执行以下命令:
chmod-R 755 AMSS/platform/cs/bin/*
1.2.3 建立 Android 开发环境(略)
curl http://android.git.kernel.org/repo >~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH 1)安装基本软件
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
2)安装 sun-java5-jdk ubuntu 下通过命令: sudo apt-get install sun-java5-jdk 将会安装下面的包 sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre sun-java5-plugin 如果ubuntu 发布版本中没有 sun-java5-jdk 那么 sudo vim /etc/apt/source.list #for sun-java5-jdk deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse sudo apt-get update sudo apt-get sun-java5-jdk 或者,如果 ubuntu 版中不支持 apt-get,那么用手动安装: sudo mount-t nfs 172.20.127.15:/home/shared /mnt sudo dpkg-i /mnt/tools/debs/java-1.5.0-sun/sun-java5-*
3)配置usb cd /etc/udev/rules.d/ sudo vi 50-android.rules # adb single interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“d00d”, MODE=“0664”, GROUP=“plugdev” # adb composite interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“deed”, MODE=“0664”, GROUP=“plugdev” # Sooner low-level bootloader BUS==“usb”, SYSFS{idVendor}==“0bb4”, SYSFS{idProduct}==“0a51”, MODE=“0664”,GROUP=“plugdev” sudo /etc/init.d/udev restart
1.2.4 建立 modem 开发环境
与android 源代码不同,modem 编译工具使用的是 RVDS ,实际上只用到其中的 RVCT 编译器,高通不提供该工具,我们必须从arm公司获取相应的授权,RVDS 是 ADS 的升级版本,从 ADS 1.2 开始到 RVDS 3.1 我们公司都有其授权,按照高通的要求我们目前必须使用 RVDS 2.2 并且使用他的 349 patch。RVDS 2.2 安装以及使用步骤如下:
1).RVDS 2.2 共享在 172.20.127.15:/home/shared/ 目录 sudo mount-t nfs 172.20.127.15:/home/shared/ /mnt cd /mnt/qualcommon/RVDS-2.2/ linux下rvds2.2的安装程序为:
./rvds2.2_linux-pentium/setuplinux.bin 执行以上命令,按照默认步骤安装,安装路径为:~/ARM 注意事项:
安装过程如果出现错误:
..................java.lang.UnsatisfiedLinkError: /tmp/ismp001/6073753.tmp: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory 从网上下载 libstdc++-libc6.2-2.so.3 拷贝到 /usr/lib 目录 ,或者从下面地址获取:
http://172.20.127.15/repositories/DocsAndTools/Tools/Qualcomm/RVDS-2.2-patch/patch/libstdc++-libc6.2-2.so.3 工具的安装通过脚本进行了简化,具体过程请参考文档: 80-N0216-2_A_M7630AABBQMAZM1170.pdf 80-VR881-7_B_M7630AABBQMLZA1200.pdf 80-VR192-1_C_AMSS_Linux_Software_Users_Guide.pdf 80-VR192-1_D_AMSS_Linux_Software_Users_Guide.pdf
2)安装高通指定的 593 patch cd /mnt/qualcommon/RVDS2.2/下执行命令:./setup-patch-rvct2.2-bin593-lib349.sh
目前版本只支持 32 位的系统 1.2.4.1 补充
vim./AMSS/products/7x30/core/bsp/build/scripts/defaults.py 定义了工作线程
#num_jobs = num_cpu * 2 modified by mhf num_jobs = 2 if num_jobs < 4: num_jobs = 2 if num_jobs > 8: num_jobs = 8 env.SetOption('num_jobs', num_jobs)――――――― 获取 RVDS 官方网站下载评估版本
https://silver.arm.com/browse http://www.xiexiebang.com/wiki/QAEP#Branch_Releases https://www.xiexiebang.com/wiki/QLBEP 下载 M7630AABBQMLZA1150 分支:
February 1, 2010 M7630AABBQMLZA1150 msm7630 eclair M7630AABBQMLZA1150.xml 命令如下:
mkdir-pv ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 cd ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 repo init-u git://codeaurora.org/platform/manifest.git-b eclair-m M7630AABBQMLZA1150.xml nohup repo sync 代码下的 vendor/qcom-proprietary 来自包 HY11-VR881-5.zip 以上两部分代码已经下载并且合并,共享在:
http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150---------------编译 eclair 代码
svn co http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150$../setenv.sh../make-image.sh ======= modem代码从高通网站:https://support.cdmatech.com/login/ 上获取 我们目前使用的是: 共享在:
http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220-------编译 modem 代码
svn co http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220 cd modem-M7630AABBQMAZM1220../setenv-qualcomm.sh../make ======== 编译结果分别如下:------------其中 adsp.mbn,amss.mbn,dbl.mbn,osbl.mbn,partition.mbn 位于以下目录:./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/adsp.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/amss.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/dbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/osbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/partition.mbn------------appsboot.mbn,boot.img,system.img,userdata.img 位于以下目录:./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/appsboot.mbn./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/boot.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img.ext3./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img.ext3------------eMMC 启动使用的是 ext3 文件系统,需要使用镜像 system.img.ext3 userdata.img.ext3 补充说明:
partition.mbn 文件的原始数据来自配置文件:
./AMSS/products/7x30/tools/jsdcc/partition_load_pt/partition.xml
1.3 高通平台,android和 modem 编译流程分析 android 代码编译流程分析 modem 代码编译流程分析 1.3.1 android代码编译流程分析
1.从服务器下载 android 源码到当前目录
http://smartphone/repositories/TD1014/branch/froyo_almond-M76XXTSNCJNLYA6050-drivers/ svn co http://172.20.127.15/repositories/TD1014/trunk/froyo_almond-M76XXTSNCJNLYA6050/ cd froyo_almond-M76XXTSNCJNLYA6050/../setenv.sh 设置环境变量 Setting Environment...通常情况下 generic 用于编译模拟器版本 Options are: 1.generic 2.msm7627_surf 3.msm7627_ffa 4.tiny-system ====从以上列表中选择==== Which would you like? [1]
烧录的镜像文件appsboothd.mbn appsboot.mbn boot.img system.img userdata.img persist.img 来自 android 源码 appsboot.mbn 的主要功能是装载 linux 内核,通过 linux 的引导来完成 android 系统的加载,appsboot.mbn 被烧写在相应的分区,它的加载由 osbl.mbn 来完成,osbl.mbn 程序来自 modem。
7x30 7x27 系列 appsboot 不一样,7x30 的 appsboot.mbn 是 7x27 appsboothd.mbn appsboot.mbn 两个文件的合并
1)appsboot.mbn 生成过程解析
2)boot.img 生成过程解析,怎样手动生成 boog.img
1.3.1.1 编译工具检测
make out/target/product/msm7630_surf/appsboot.mbn 1.3.1.1.1
1.3.1.2 appsboot.mbn 生成过程解析
make out/target/product/msm7630_surf/appsboot.mbn make out/target/product/msm7630_surf/nandwrite make out/target/product/msm7630_surf/emmc_appsboot.mbn 分别执行:
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_EMMC_OBJ msm7630_surf EMMC_BOOT=1 生成 nandwrite =============== #build nandwrite as a part of Android Build TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk NANDWRITE_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/nandwrite
nandwrite_clean: $(hide)rm-f $(TARGET_NANDWRITE)$(hide)rm-rf $(NANDWRITE_OUT)
$(NANDWRITE_OUT): mkdir-p $(NANDWRITE_OUT)
$(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1 ================
vim./bootable/bootloader/lk/makefile:98: TARGET := msm7630_surf #./bootable/bootloader/lk/project/msm7630_surf.mk PLATFORM := msm7x30 #./bootable/bootloader/lk/target/msm7630_surf/rules.mk msm7x30 msm7630_surf.mk msm7630_surf_nandwrite ============================= include project/$(PROJECT).mk include target/$(TARGET)/rules.mk include target/$(TARGET)/tools/makefile include platform/$(PLATFORM)/rules.mk include arch/$(ARCH)/rules.mk include platform/rules.mk include target/rules.mk include kernel/rules.mk include dev/rules.mk include app/rules.mk...include make/module.mk...include make/build.mk ======================== vim bootable/bootloader/lk/make/module.mk INCMODULES := $(MODULES)$(info including $(INCMODULES))include $(addsuffix /rules.mk,$(INCMODULES))展开为:./bootable/bootloader/lk/app/nandwrite/rules.mk./bootable/bootloader/lk/dev/fbcon/rules.mk./bootable/bootloader/lk/dev/keys/rules.mk./bootable/bootloader/lk/lib/debug/rules.mk./bootable/bootloader/lk/lib/heap/rules.mk./bootable/bootloader/lk/lib/libc/rules.mk./bootable/bootloader/lk/lib/ptable/rules.mk ======================== bootable/bootloader/lk/make/build.mk:29: include arch/$(ARCH)/compile.mk
./bootable/bootloader/lk/project/msm7630_surf_nandwrite.mk 中有: MODULES += app/nandwrite./bootable/bootloader/lk/platform/msm7x30/rules.mk中有: MODULES += dev/fbcon./bootable/bootloader/lk/kernel/rules.mk 中有: MODULES += lib/libc lib/debug lib/heap./bootable/bootloader/lk/target/msm7630_surf/rules.mk 中有: MODULES += dev/keys lib/ptable 所以:
MODULES= app/nandwrite dev/fbcon dev/keys lib/debug lib/heap lib/libc lib/ptable 因为
ifeq($(BUILD_NANDWRITE), 1)APPSBOOTHDR_FILES := else out/host/linux-x86/bin/acp-fpt out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk out/target/product/msm7630_surf/nandwrite
25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk arm-eabi-objcopy-O binary../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.lst generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.debug.lst generating symbols:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.size make[2]:正在离开目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk make[1]:正在离开目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk target Prebuilt:(out/target/product/msm7630_surf/nandwrite)
make-C bootable/bootloader/lk BOOTLOADER_OUT=./out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make[2]: 正在进入目录
`/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk` msm7630_surf_nandwrite make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 ==》生成 mkheader 工具
gcc target/msm7630_surf/tools/mkheader.c-o target/msm7630_surf/tools/mkheader
$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld @echo generating $@ @$(MKDIR)$(NOECHO)sed “s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/” < $< > $@
generating../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/system-onesegment.ld compiling arch/arm/crt0.S compiling arch/arm/crt0.S。。compiling lib/ptable/ptable.c compiling lib/ptable/ptable.c
vim bootable/bootloader/lk/platform/msm7x30/rules.mk-----LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld include platform/msm_shared/rules.mk-----
./build/core/product_config.mk:177:TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)./build/core/envsetup.mk:152:OUT_DIR := $(TOPDIR)out./build/core/envsetup.mk:159:TARGET_OUT_ROOT_release := $(OUT_DIR)/target./build/core/envsetup.mk:161:TARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))./build/core/envsetup.mk:178: TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product./build/core/envsetup.mk:184:PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)build/core/envsetup.mk:200:TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj bootable/bootloader/lk/AndroidBoot.mk:4:BOOTLOADER_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_OBJ bootable/bootloader/lk/makefile:32:BUILDDIR := $(BOOTLOADER_OUT)/build-$(PROJECT)bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk 所以:
TARGET_PRODUCT_OUT_ROOT=out/target/product/ PRODUCT_OUT=out/target/product/msm7630_surf/ TARGET_OUT_INTERMEDIATES=out/target/product/msm7630_surf/obj/ BOOTLOADER_OUT=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/ 所以:
BUILDDIR=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf 所以:
OUTELF=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf
bootable/bootloader/lk/makefile OUTELF := $(BUILDDIR)/lk./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
vim./bootable/bootloader/lk/AndroidBoot.mk TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk $(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1
BOOTLOADER_EMMC_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_EMMC_OBJ
vim./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
bootable/bootloader/lk/makefile:33:OUTBIN := $(BUILDDIR)/lk.bin bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk
./lk/platform/msm7x30/rules.mk:23:LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld
==》链接 lk linking../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk linking../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk generating image:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating image:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin text data bss dec hex filename 29592 7388 42720 79700 13754../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk text data bss dec hex filename 25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk
==》以 binary 格式,把文件
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk 输出到:
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin arm-eabi-objcopy-O binary out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin ==》
生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.debug.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size make[1]:正在离开目录 /opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk ==》
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig make[1]: 正在进入目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/kernel generating symbols:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size
mkheader 从 lk.bin 生成 appsboothd.mbn 语法: mkheader
out/target/product/msm7630_surf/appsboot.mbn cat out/target/product/msm7630_surf/appsboothd.mbn out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin > out/target/product/msm7630_surf/appsboot.mbn 删除:out/target/product/msm7630_surf/appsboothd.mbn ==== 1.3.1.3 boot.img 生成过程解析,怎样手动生成 boog.img boot.img 包括两个部分: kernel 和 ramdisk,通过命令: make out/target/product/msm7630_surf/boot.img showcommands 会自动生成 kernel 和 ramdisk,然后把两者合并制作成烧写的镜像文件:boot.img kernel 为
out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage 或者 out/target/product/$TARGET_PRODUCT/kernel , kernel 是 zImage 的拷贝
编译内核之前必须获取一个默认的配置文件.config ,此配置文件可以生成,或者来自默认配置,高通中 msm7630_surf 的
默认配置文件名为: msm7630-perf_defconfig 在文件: vendor/qcom/msm7630_surf/AndroidBoard.mk:45 中通过: KERNEL_DEFCONFIG := msm7630-perf_defconfig 进行了指定。我们可以通过命令:
make-j3 ARCH=arm CROSS_COMPILE=arm-eabi-kernel showcommands 或者通过如下命令一步步完成:
1.获取默认的内核配置并生成.config 的命令如下: make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig-C kernel 告诉 make 进入 kernel 工作目录,到其下面寻找 makefile 文件
O 内核编译的中间文件以及编译结果等都存储在该目录下,此做法的好处是不会在kernel源代码目录下生成垃圾文件
ARCH=arm 告诉系统到./kernel/arch/$ARCH/configs/ 目录下找文件 msm7630-perf_defconfig,生成的.config 保存在:
out/target/product/msm7630_surf/obj/KERNEL_OBJ/.config 2.手动编译内核
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ/ 3.如果需要配置内核,使用下面的命令 make kernelconfig 他首先会进入 menuconfig 界面,用户配置完成以后,会把修改后的配置文件$(KERNEL_OUT)/.config 更新为默认的配置文件
cp out/target/product/msm7627_ffa/obj/KERNEL_OBJ/.config kernel/arch/arm/configs/msm7627-perf_defconfig kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)
4.手动生成 ramdisk 执行命令
make out/target/product/msm7630_surf/ramdisk.img showcommands 会用到命令:
out/host/linux-x86/bin/mkbootfs out/target/product/msm7630_surf/root | out/host/linux-x86/bin/minigzip > out/target/product/msm7630_surf/ramdisk.img 5.手动生成 boot.img 需要使用命令 mkbootimg ,语法如下: mkbootimg--kernel 内核--ramdisk ramdisk镜像--cmdline 命令行--base 基地址--pagesize 大小--output 输出的boot.img ========== KERNEL=out/target/product/$TARGET_PRODUCT/kernel KERNEL=out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage RAMDISK=out/target/product/$TARGET_PRODUCT/ramdisk.img CMDLINE=“console=ttyDCC0 androidboot.hardware=qcom” BASE=0x00200000 PAGESIZE=4096 OUTPUT=out/target/product/$TARGET_PRODUCT/boot.img out/host/linux-x86/bin/mkbootimg--kernel $KERNEL--ramdisk $RAMDISK--cmdline “$CMDLINE”--base $BASE--pagesize $PAGESIZE--output $OUTPUT =========================================
编译 bootloader(appsboot.mbn),nandwrite 生成过程解析./vendor/qcom/msm7630_surf/AndroidBoard.mk:25: include bootable/bootloader/lk/AndroidBoot.mk =================== 因为有:
bootable/bootloader/lk/AndroidBoot.mk:3: TARGET_BOOTLOADER := $(PRODUCT_OUT)/appsboot.mbn INSTALLED_BOOTLOADER_TARGET := $(PRODUCT_OUT)/bootloader file := $(INSTALLED_BOOTLOADER_TARGET)