7年经验总结,C语言嵌入式系统_编程规范_编程思想
嵌入式开发学习心得

嵌入式开发学习心得嵌入式开发学习心得在平日里,心中难免会有一些新的想法,不妨将其写成一篇心得体会,让自己铭记于心,这样有利于培养我们思考的习惯。
应该怎么写才合适呢?下面是小编为大家收集的嵌入式开发学习心得,仅供参考,欢迎大家阅读。
嵌入式开发学习心得1就我个人而言,从最开始对嵌入式一窍不通到现在越学越感兴趣,当然相应在嵌入式方面的提高也是很明显的。
学习嵌入式越来越成为我学习中的一部分,现在把我的学习过程的心得体会与大家一起分享,希望那些和我一样对嵌入式想学而又迷茫,不知从哪入手的同学朋友有所帮助。
1 .基础知识嵌入式开发很大一部分靠C语言,尤其在底层驱动等用的很多,当然在应用开发还用到诸如C++等其他语言,但我想对于一个初学者有C基础就足够了,等到学到一定程度再去扩展。
所以C基础是学嵌入式的前提。
关于C语言需要知道基本的语法,什么是结构体,什么是共用体,有什么区别,不用强记一些实际中用的很少的东西。
C++要知道什么是类,怎么定义,继承,接口,要深刻理解,当然基本语法也是必不可少的。
操作系统原理也需要基本理解和掌握的,我记得我上课的时候不以为然没有认真学习,后来发现很多的东西都是在这个课上讲到的。
什么时间片啊,任务调度啊,都是在那里知道的。
Linux基本命令的使用(vi编辑器必须会用,因为在终端修改文件的时候只能用这个),我们现在很多的人都习惯用鼠标了,很少用到命令,我学习嵌入Linux就强迫自己去改掉这个习惯了,Linux用命令操作一是效率高,二是功能非常强大,远非图形界面能比的了的,其实我们用图形界面的操作都要转化为命令传给硬件的。
Linux文件系统的管理要清楚,哪个目录存放是什么东西,有什么用,文件权限管理等。
2.单片机知识的学习我觉得单片机、嵌入式等这一类都有很大的相似性,知识功能不一样,但工作的原理、控制原理都和大的相似。
就我个人而言,能比较快的进入嵌入式的学习与提高,很大一部分依赖于对单片机的原理有较深入的学习和理解,单片机比较简单,学习起来相对比较容易,所以我建议想学嵌入式的同学,可以和我一样从单片机入手,那样不仅可以理解这些微处理器、微控制器的操作与控制原理,当然还可以顺便学学汇编语言,这对后面的嵌入式学习都有很大的帮助。
c语言程序设计心得体会(精选5篇)

c语言程序设计心得体会(精选5篇)哎呀,这可是个大工程啊!不过,既然咱们都来了,那就一起聊聊C语言程序设计心得体会吧!我可是花了好长时间才琢磨出来的,希望我的经验能对大家有所帮助。
咱们得明白,C语言可是编程界的“老大哥”,它的语法简单易懂,适合初学者入门。
要想真正掌握它,还需付出不少努力。
我给大家分享一下我的心得体会,希望能给大家带来一些启示。
1.1 熟悉基本语法学习C语言,首先要熟悉基本的语法,比如变量、数据类型、运算符、控制结构等。
这些都是编程的基础,只有把基础打牢,才能更好地进行后续的学习。
就像我们小时候学写字一样,先学会握笔、写横竖撇捺,再慢慢练习字形和笔画。
1.2 多动手实践学习编程,最重要的就是多动手实践。
不要光看书不练,那样容易忘记。
要把自己学到的知识运用到实际项目中去,这样才能更好地理解和掌握。
就像我们做饭一样,看着菜谱学做菜,最后还要亲自下厨试试味道。
2.1 学会调试编程过程中难免会遇到各种问题,这时候就需要学会调试。
调试是编程的重要环节,也是提高编程能力的关键。
我们可以通过打印日志、使用调试工具等方式来定位问题。
就像我们看病一样,医生通过检查、询问、化验等方式来诊断病情,然后开药方治疗。
2.2 培养良好的编程习惯养成良好的编程习惯,可以让我们更高效地编写代码。
比如,命名规范、注释清晰、代码简洁等。
这些都有助于我们后期的维护和修改。
就像我们平时穿衣服一样,要选择合适的尺码、搭配合适的颜色和款式,才能穿出自己的风格。
3.1 学会分析问题在编程过程中,我们需要学会分析问题。
遇到问题时,要冷静思考,找出问题的根本原因。
这样才能更好地解决问题。
就像我们学习数学一样,要善于发现问题的本质,找到解决问题的方法。
3.2 学会总结经验我们在编程过程中,要学会总结经验。
每次遇到问题或者完成一个项目后,都要反思自己的过程,看看哪里做得好,哪里还需要改进。
这样才能不断提高自己的编程水平。
就像我们学习英语一样,要不断地积累词汇、句型,才能提高自己的英语水平。
嵌入式设计个人总结3篇

嵌入式设计个人总结嵌入式设计个人总结精选3篇(一)嵌入式设计是一个充满挑战和机会的领域,我在这个领域中有着一些个人总结。
首先,嵌入式设计需要具备扎实的电子、计算机和软件知识。
对于硬件方面,我需要了解电路设计、PCB布局、传感器和执行器等元器件的选型和使用。
对于软件方面,我需要熟悉各种编程语言,掌握嵌入式系统的开发和调试技术。
其次,嵌入式设计需要有良好的系统思维能力。
在设计一个嵌入式系统时,我需要考虑系统的整体架构、功能划分和数据流程。
有时候,我还需要进行性能优化、资源管理和功耗控制等工作。
另外,嵌入式设计需要具备解决问题的能力。
在开发过程中,我可能会遇到各种各样的问题,例如硬件和软件的兼容性问题、驱动程序的编写问题等等。
解决这些问题需要我有一定的调试和研究能力,并且能够快速找到问题的根本原因并提出解决方案。
最后,嵌入式设计需要具备良好的团队协作能力。
在实际项目中,我通常需要与其他开发人员、测试人员和客户进行沟通和合作。
良好的团队合作能力可以提高工作效率,并且在解决问题和决策方面能够获得更好的结果。
总的来说,嵌入式设计是一个综合能力要求比较高的领域,除了专业知识,还需要具备系统思维能力、问题解决能力和团队协作能力等。
不断学习和积累经验是提升自己的关键,同时也要保持对新技术和市场趋势的关注,以跟上行业的发展。
嵌入式设计个人总结精选3篇(二)在这段时间的嵌入式实习中,我通过参与各种项目和任务,获得了许多宝贵的经验和知识。
以下是我对这段实习的个人总结:首先,我学习了各种嵌入式系统的基础知识,包括微处理器体系结构、寄存器编程、中断处理和通信协议等。
通过理论学习和实际操作,在实习期间我能够独立完成一些简单的嵌入式系统设计和编程任务。
其次,我有机会参与实际的嵌入式项目开发。
我学会了如何从需求分析开始,逐步进行系统设计、硬件选型、软件编写和测试等步骤。
通过与团队成员的合作,我学到了如何有效地分工协作,高效地解决问题。
嵌入式学习总结(共5篇)

嵌入式学习总结(共5篇)第一篇:嵌入式学习总结一.为什么学习嵌入式?1.就业前景近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。
嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。
随着消费家电的智能化,嵌入式更显重要。
像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。
据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。
在中国,嵌入式软件发展过程中,政府已充分认识到它的重要作用,并在政策、资金等方面给予了大力支持。
2004 年国家发改委、科技部、商务部联合颁布的《当前优先发展的高技术产业化重点领域指南》,把嵌入式软件产业作为国家发展的一个重要领域。
最近几年来,中国的嵌入式软件发展速度一直高于中国软件产业的发展速度和全球嵌入式软件的发展速度,在中国软件产业和全球嵌入式软件产业中所占的比重越来越大。
目前,中国嵌入式软件产业在整个软件产业中的比重已经超过了三分之一强。
从2006年至2010年,中国嵌入式软件产业规模仍将保持快速增长态势,年均复合增长率为25.8%,到2010年将达到3339.6亿元的规模。
中国嵌入式软件产业的发展面临着良好的发展环境与机遇,这包括政府的重视与扶植、信息产业与传统产业的融合机遇、垄断局面尚未形成、中国制造的良好基础、自由软件运动的兴起等等。
同时,不可否认的是长期以来,由于人才、宣传、资金等诸多问题以及嵌入式本身所特有的软硬结合特性,使嵌入式软件人才一直处于供不应求的状态。
2.自身发展嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
嵌入式学习心得体会

嵌入式学习心得体会嵌入式学习心得体会14月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学习上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率!当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的“充电”,由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。
在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学习钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学习、传承并永远发展下去。
查看ip地址和重启网络服务是我学的第一个命令: ifconfig eth0、ifconfig eth0 IP地址、service network restart。
了解到远程登录软件可用xmanager。
secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux主机的ip 地址。
徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $$SHELL可查看SHELL的环境变量是csh还是bash。
指令pwd 可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。
简单的学习后进入Unit 2,命令行的句法让我懂得了用法规则,一系列的命令功能强大:date 显示当前年月时间星期之类的;more指令与less重要但不常用;cat用于查看短小的文件内容,常用!mkdir命令用于在当前目录下创建新的目录;ls 显示当前目录下所有文件;cd 更改文件路径,如cd 、cd . 当前目录;rmdir 删除空文件夹;rm指令很强大,用于删除空目录及非空目录下的指定或全部文件;man 真男人,帮助手册;history指令用于显示编写过的命令集,以history 序号可显示序号所指命令;echo回写命令,很重要,我需要继续学习;exit 指从多重SHELL退出来。
嵌入式学习心得体会(精选8篇)

嵌入式学习心得体会(精选8篇)嵌入式学习心得体会篇1(4622字)从实习到现在搞嵌入式开发快一年了,蓦然回首好像一年过得挺快,挺顺利的。
细细品味,发现这一年还是有很多值得回忆和总结的东西。
至少这一年看书挺多,大概二十几本,当然和那些一年看一百多本书的人没法比,但是我已经超越了自己。
这是我大学毕业的第一年,初次走上社会,很想一展身手,可是.....其实也不用可是了,和很多朋友一样碰了很多钉子,现在我和老板的关系就挺一般的,只是我性格还不错。
呵呵~~,做优秀员工看来还得慢慢学。
今年最大的收获就是做了一个半项目,是在uClinux下面跑的。
半个是SNMP-Agent的实现,因为我去的时候snmpd已经跑起来了,我只是实现部分管理功能;一个是基于Web的管理系统,使公司的主打产品微波通信设备上网。
这个项目是我一手策划,一手实现(界面设计是一位女同事,很优秀的程序员),从中学到的东西也最多,感情不可谓不深。
SNMP即简单网络管理协议,其实一点都不简单。
在我所知的网络协议里面,它仅仅比OSI的CMIP简单一点,而CMIP直到现在还没得到广泛应用。
我们能够实现SNMP-Agent不能不感谢CarnegieMellon大学免费发布的ucd-snmp软件包。
它使得开发人员专注于实现对特定设备的管理功能。
我在项目中的工作主要是扩展MIB,实现相应的管理功能以及网络功能的扩展。
我们公司的MIB库比较庞大,但是程序运行还是挺快的。
因为ucd-snmp软件包中大量使用回调函数,而且它将MIB树以二叉树形式表示,但是每个结点不是单个的MIB结点,而是一个表,包括了多个结点。
回调函数和两层表示法的使用是操作快速的主要因素。
基于Web的管理系统我原本是打算在设备外实现SNMP-Manager 的功能,因为设备中已经嵌入了Agent。
这样管理人员可以在世界各地通过WWW登录公司的管理平台,实现对所有设备的管理。
但是老板想在设备中嵌入一个管理系统,可以通过www管理单个设备就行。
c语言心得总结(五篇)

c语言心得总结(五篇)1、学C语言,让我能够更加深入199地认识程序设计思维,研究计算机科学知识的规律,了解计算机识别和运行的思路,有利于我以后更好的开发能力提高。
学习C语言,让我更加深刻地了解计算机编程的奥秘,即如何在计算机上对数据进行存储、修改、处理和分析的过程,使得程序具有更强的运行效率,编写更高质量的代码。
学习C语言同时,让我认识到在编写程序时,要设计和搭建复杂的数据结构,首先要用简单、清晰的程序语句,明确程序的层次和逻辑结构,使程序不会出现不必要的复杂性;同时,还要学会利用函数、结构体和链表等特点,正确地使用数据类型和变量,完成复杂的程序结构和流程,才能避免出现意外的结果。
C语言的学习也让我更加熟悉计算机底层操作系统,让我了解各种不同的跨平台库函数,以及计算机编程与数据结构、汇编程序等概念之间的关系,有助于我熟练掌握计算机语言,为后期自己的开发打下良好的基础。
2、学习C语言可以说是程序员的基础必备知识,其核心理念和结构可以帮助我们理解和掌握其它更高级的编程语言。
它的语法和抽象表示形式都很简单,使得我们可以更好的掌握编程思想,并且与其他编程语言的关联程度很高,有助于我们把学到的一些基础知识与工作中遇到的重要技术建立联系。
C语言可以说是计算机科学领域最流行的编程语言之一,它可以帮助我们实现高性能、安全、稳定的软件开发,是程序员最常使用的编程语言之一。
学习它能有助于我们更加熟练地使用计算机语言编程,从而更好的掌握计算机科学,在后期的学习和工作中有更强的能力。
3、学习一门语言一定要从简单的开始,学习C语言,让我深入的了解了计算机的基本工作原理,从而了解程序设计的基本思想和方法,这是我在学习C语言的过程中最大的收获。
C语言是一种结构化的编程语言,其特点是可移植性强、能够通过简单的修改就可以实现针对不同平台的编译,有助于节省成本并降低软件开发过程中出现的问题。
在使用C语言编写程序时首先要搞清楚语法,然后要理解基本的控制结构:条件判断,循环等等,这些都是程序设计的基本知识,让我能够将这些知识都应用到C编程语言中,有助于提高程序设计的能力。
嵌入式系统开发学习心得体会_经验总结

嵌入式系统开发学习心得体会_经验总结本文主要介绍的是嵌入式系统开发学习心得体会及经验总结,首先介绍了嵌入式系统开发的三大关键点,其次推荐了嵌入式系统开发必读的书籍,最后介绍了学习嵌入式系统开发的体会及经验总结。
嵌入式系统开发简介嵌入式系统开发是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等,一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。
有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统开发的三大关键点1、嵌入式系统是相对于PC平台而言的,使用的平台一般是针对ARM,PPC,DSP等非PC平台的,所以使用的编译和调试工具不是VC6.0,而是不同的平台需要专门的编译开发工具,交叉编译是嵌入式特有的概念;2、嵌入式系统往往指带有操作系统的系统,以前简单的系统可以直接在裸机(如51单片机)上开发,而现在OS成为嵌入式的一个基本特征,已经有各种实时内核或者全功能的OS,因此对程序员要求较高;3、嵌入式系统往往包括软件和硬件两个部分,软件开发人员往往也需要知道硬件的知识,只有知道硬件的特性才能开发出高性能的程序。
另外不想在PC上开发,驱动程序都已经有了,在嵌入式系统中由于所接的外设复杂,很多时候需要自己编写驱动程序,结果是在。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统编程规范李红志程序的可读性、可扩展性、可复用性、易维护性、语法是代码的入门,算法是代码的灵魂。
第1章编程常见错误1.1、语法错误1、错用函数数据类型,比如abs(x),x可能为16bit的值,如果为16bit的值,给出32bit的值就会出错。
2、内存越界访问内存越界访问有两种:一种是读越界,即读了不属于自己的数据,如果所读的内存地址是无效的,程度立刻就崩溃了。
如果所读内存地址是有效的,在读的时候不会出问题,但由于读到的数据是随机的,它会产生不可预料的后果。
另外一种是写越界,又叫缓冲区溢出,所写入的数据对别人来说是随机的,它也会产生不可预料的后果。
3、结构的成员顺序变化引发的错误在初始化一个结构时,老手可能很少像新手那样老老实实的,一个成员一个成员的为结构初始化,而是采用快捷方式,如:Struct s{int l;char*p;};int main(int argc,char*argv[]){struct s s1={4,"abcd"};return0;}以上这种方式是非常危险的,原因在于你对结构的内存布局作了假设。
如果这个结构是第三方提供的,他很可能调整结构中成员的相对位置。
而这样的调整往往不会在文档中说明,你自然很少去关注。
如果调整的两个成员具有相同数据类型,编译时不会有任何警告,而程序的逻辑可能相距十万八千里了。
4、栈溢出。
我们在前面关于堆栈的一节讲过,在PC上,普通线程的栈空间也有十几M,通常够用了,定义大一点的临时变量不会有什么问题。
而在一些嵌入式中,线程的栈空间可能只5K大小,甚至小到只有256个字节。
在这样的平台中,栈溢出是最常用的错误之一。
1.2、编译错误1.3、链接错误第2章编程知识关键字valotile的作用是告诉编译器,不要把变量优化到寄存器里。
第3章编程规范1.1整体结构1、必须包含的两个文件:“#include"std_inc.h"”“#include"std_defs.h"”2、一个完整的project需要有程序说明文档3、需要有变量宏定义函数说明文档,包含变量规则命名。
4、需要有程序流程图5、需要有硬件测试报告6、需要有程序修改记录7、要有软件时间控制分析1.2编程规范1、定义宏定义按照功能模块来区分;2、枚举型定义当宏定义来处理;3、程序和数据要分开;4、格式上要对齐;5、空行要规范;6、中断中调用的变量,一定要分析在计算过程中别的地方赋值是不是有非本身意义的赋值;7、变量的意义要清晰;8、程序要分层设计;9、1.3注释规范1、变量和宏定义都要在定义的时候注释一下,作用是什么,单位,放大倍数。
2、用“#”标记需要问别人、需要改进的地方。
3、用“$”标记如果硬件改变需要进行变化的地方。
4、用“//XX”。
5、每个函数上面都要写注释;6、程序段内不要太多的注释,多的话影响程序的可读性;1.4变量命名1、变量名用小写2、宏定义用大写1.5不建议使用全局变量的原因:(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元;(2)它使函数的通用性降低了,因为函数在执行时依赖于其所在的外部变量。
如果将一个函数移到另一个文件中,还要将有关的外部变量及其值一起移过去。
但若该外部变量与其他文件中的变量同名时,就会出现问题,降低了程序的可靠性和通用性。
在程序设计中,在划分模块时就要求模块的“内聚性”强、与其他模块的“耦合性”弱。
即模块的功能要单一(不要把许多互不相干的功能放到一个模块中),与其他模块的相互影响要尽量少,而使用全局变量是不符合这个原则的。
一般要求把C程序中的函数做成一个封闭体,除了可以通过“实参——形参”的渠道与外界发生联系外,没有其他渠道。
这样的程序移植性好,可读性强。
(3)使用全局变量过多,会降低程序的清晰性,人们往往难以清楚地判断出每个瞬时各个外部变量的值。
在各个函数执行时都可能改变外部变量的值,程序容易出错。
因此要限制使用全局变量。
(4)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用。
说明:使用全局变量的作用是增加了函数间的数据联系的渠道。
由于函数的调用只能带回一个返回值,因此有时可以利用全局变量增加与函数联系的渠道,从而到到一个以上的返回值。
第4章2011-4-22:程序的矩阵化设计思想适用于嵌入式软件设计,无操作系统,软件结构较复杂的情况。
1.6定义最小时延原则:软件设计过程中,在不影响其他性能的情况下,应该让数据的产生过程和使用过程之间的时延最小。
需控变量:软件运行过程中,需要控制计算顺序的全局变量。
非需控变量:软件运行过程中,不需要控制计算顺序的全局变量,比如从总线引发的中断中获取的信号。
优化矩阵:在设计函数执行顺序时,用于记录函数和函数输出变量的矩阵。
1.7软件结构的矩阵化程序上的分层设计。
层与层之间有接口。
矩阵化设计。
全局变量的作用范围要有设定,不能从上到下都是一种变量。
分层设计后,才比较容易处理指令冲突的问题,因为指令被执行之前会有对几种指令进行判断的操作。
模块化是矩阵化设计的基础,模块作为矩阵的cell,同一个层面的作为一个row,程序执行一次,就是从顶层到底层一次,只不过每次可能走的trace不同。
这个trace就是程序真正运行了哪些模块。
程序应该是从模块化、发展到分层、再到矩阵。
环境识别、驾驶意图识别、干预退出预估、1.8函数执行顺序的矩阵化适用情况:系统信号较多,全局变量较多,在一个控制周期内,相互之间有计算先后要求。
同一层次的函数较多。
全局变量只在一个函数中被赋值,在多处被调用。
全局变量分为需控变量和非需控变量。
该方法是对某一层的函数进行执行顺序的设计1.对每一个函数进行编号;2.建立需控变量集:将每一个函数的输入全局变量和输出全局变量中的需控变量放进需控变量集。
3.对需控变量集中的每个元素编号;4.建立每个函数的输入需控变量集和输出需控变量集,变量集用需控变量集中元素编号表示;5.逐个将函数添加至优化矩阵,每添加一个函数,调整优化矩阵,直到所有函数添加完成。
得到每个函数的可存放域。
6.根据最小时延原则,调整每个函数到最优位置。
7.输出可行的函数序列。
第5章编程经验1.9程序设计思想控制时序的设计思想:程序分层的设计思想:程序的矩阵式设计思想;变量的集中处理思想;变量自衰减的处理思想;估算变量的自衰减。
估算变量时,由于只有满足估算条件才能进行估算,而估算条件不是持续成立的,所以只能在某些点进行估算。
没有进行计算的地方,该变量就要随时间衰减,并且要给出一个health指标,表明这个被估算值的可信度。
干预退出预估的处理思想;1.10【2010-12-5】1、能从CAN上获取的信号要从CAN上获取,比如发动机转速、发动机输出转矩、加速踏板位置(不知道还有用没了)、节气门开度(不知道还有用没了)、传动比(或者说档位)。
2、我觉得用115200,10ms传出100个byte没什么问题。
这样的话,B+S的采集主要作用就在于同步一下压力,方向盘、横摆等信号用更高的频率采集,确认一下单片机的处理是否达到精度。
3、变量命名的规范化。
全局变量中的temp,写成s32temp1,局部变量的temp,写成temp1s32.感觉不怎么好,但是总要区别一下的。
4、abs(x);的函数原型是int abs(int x)5、尽量避免一个变量在不同程序段被幅值;6、中断中用到的量,要小心在程序外会不会有非本身含义的短时间赋值;7、一段代码尽量不要超过100行;8、全局附着比局部复杂要复杂;9、任何一段代码,要做到能用1句话描述;10、【2011-7-4】代码变成各种意义明确的节的优点:1、高可靠性:每段很小,就更容易做到确认代码不会出问题,更能确认该段指令是千锤百炼的,绝对可靠的;2、可维护性强:由于每段很小,很容易看懂,调试及修改都更方便;3、可扩展性强:如果某一种计算有问题了,只用替换或修改某一小段,而不用到处找需要改哪些地方;4、可复用性强:对某些小段,可能多个地方都可以用到,不用在不同的地方写很多次;5、结构清晰:每一小段意义明确,程序结构、层次、调用关系、数据流等都更清晰;6、可读性强:由于结构清晰,增加了可读性,另外结构清晰了,就容易写清楚注释,也增加了可读性;7、函数无条件执行的优点:1、结构更清晰:不用考虑是否执行了;2、数据流更清晰:一个新的计算量由哪些变量得到,传递关系更清晰;3、函数的模块化更好:能让函数无条件执行,表示该函数具有更高的独立性,也就是模块更完整,与其他代码的耦合程度更低,迁移更方便;4、程序清晰之后,程序结构简单,从而增加可靠性;5、集中处理的优点:(集中处理是只,如果一个变量的计算,在不同条件下,算法不同,那么把条件汇总到一起,在一段代码处处理这个变量)1、结构清晰:一个变量的计算只出现在一个位置;2、分散处理会造成同一个值在一次运算周期重复计算,后面的计算结果覆盖前面的计算结果,从而难以控制数据流;3、【2011-7-5】1、ESP方式的减压和泄压:开关控制方式下,两者没什么区别;2、ABS方式的减压:减压速率和ESP减压方式差别很大;远小于ESP泄压速率,近似1/2关系;3、Bosch8.1的HCU,保压时有个大约90Hz的噪声,和王伟玮讨论了一下,基本上可以理解为那就是当时电机转动频率;【2011-7-6】1、在举升机上,两前轮确实会有转速差,并且转速差可能越来越大;2、阀的端口,烧程序时的状态确认;没有高电平的;3、粗略来讲,泄压速率正比于轮缸压力?4、轮缸制动液净进入量和轮缸压力什么关系?在常用的范围内,大概是正比关系;5、制动轮缸制动液液量增大了,谁变形了?制动盘、摩擦块、制动钳,还有谁?那个变形大?是不是制动钳>摩擦块>制动盘(最大也就0.1mm),6、主动增压时,进油速率基本恒定。
HCU中的柱塞泵效率大概50%,好点儿能到60%;轮缸压力大,效率可能稍微高一点儿;轮缸压力大,电机转速稍微低一点儿。
7、【2011-7-8】1、大型的复杂的程序,用面向对象编程效率要高得多;单就变量的private和public设定而言,就会减少很多变量赋值的误操作,相当于自动添加了一种自检验机制;其他还有很多优点。
2、应该把每个函数都做一个更新记录。
这种更新记录怎么能做到比较容易看到上次的状态呢?难道只能把不同状态都记录下来看的时候再对比?3、【2011-7-9】1、轴距和FMVSS126的A值之间的关系,基本上只轴距减小10%,A值减小3%(尊驰在CarSim中的仿真结果)。
2DOF 理论上应该成比例改变的,实际上可能悬架、轮胎的柔性有影响。