本书主要介绍针对嵌入式系统基于C语言的软件项目开发流程、较为复杂的C语言编程知识与技巧、编程风格及调试习惯,并通过对一个具体的软件模块(ASIXWindowGUI)的分析,介绍分析代码的方法以及设计软件系统需要考虑的各要素。
本书以实际项目中的代码为例来进行介绍,详细分析在嵌入式系统开发中程序员应该注意的方法、技巧和存在的陷阱。
本书适合用作学习嵌入式系统的高年级本科生或硕士研究生的教学用书,也可作为从事嵌入式系统编程的软、硬件工程师的技术参考用书。
嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各行各业的具体应用相结合的产物,这就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
然而,嵌入式系统是一个非常综合的技术,在学科上涉及电子科学与技术、计算机科学与技术、微电子学等众多领域,在系统的架构上涉及数字电路、模拟电路、嵌入式微处理器、嵌入式操作系统、底层驱动等技术。
因此,虽然为了满足业界对人才培养的要求,越来越多的高校相关专业开始在专科、本科、硕士培养计划中开设嵌入式系统方面的课程,但是作为一个新兴的课程体系,关于嵌入式系统教学过程中相关先修课程与基础知识的准备、教学内容(包括硬件平台与软件平台)的选择、实验教学与实践环节组织等问题依然处于争论和探索阶段。
通过对相关院校的嵌入式系统教学的调研以及在东南大学电子科学与工程学院、集成电路学院嵌入式系统教学实践的基础上,我们发现现有电子类本科专业教学计划中存在与嵌入式系统教学要求相脱节的因素,其中一个比较突出的问题就是电子类学生软件基础比较弱。
虽然电子类专业的学生都先修过“C编程语言”、“计算机原理”等课程,但是缺乏大型软件项目的开发经验,尤其缺乏操作系统方面的相关知识。
这些都为嵌入式系统课程的教学带来了一定的困难,因此在嵌入式系统课程体系中增加一些用于弥补学生软件知识的课程就非常有必要了。
凌明副教授2005年开始在集成电路学院开设的“高级嵌入式系统C编程”硕士选修课无疑是为解决这个问题而进行的有益尝试,而通过5届学生课程的讲解也取得了非常好的教学效果。
虽然关于嵌入式系统方面的专业书籍出版了很多,但是适合教学的教材可谓凤毛麟角,因此在我的建议下凌明老师开始将课程讲义的主要内容进行了系统地整理,编写成为面向本科高年级和硕士阶段教学的这本教材。
全书分为9章。
第1章简要回顾了C语言的发展历史并给出了作者对于学习C语言的一些建议和参考书目。
第2章和第3章将C语言的主要语言要素作了提纲挈领式的总结和复习,虽然不是一本C语言的入门教科书,但是出于对全书的系统性以及教学的考虑,作者用了一定的篇幅将C语言中的主要内容进行了总结,其中第2章重点介绍了C语言的关键字与运算符,第3章则重点介绍了C语言的函数、标准C库以及相关内容。
第4章详细介绍了嵌入式系统软件开发的基本流程和原理,并针对ARM处理器作了比较详细的介绍。
第5章是全书的重点和难点之一,详细介绍了C语言中指针使用的高级技巧以及程序员需要规避的内存“陷阱”,本章的后半部分还以实际的案例讲解了动态内存的分配与释放,然后以ASIXWindow的实际案例进行了构建复杂数据结构的讲解。
第6章则详细介绍了嵌入式系统中底层驱动的编写技巧以及相关中断处理程序的编写技巧,尤其是针对函数重入的问题进行了细致的分析与讨论,本章的后半部分还以一个实际的键盘驱动以及UBOOT为例进行了案例讲解。
在第7章中,作者介绍了嵌入式C语言编程需要遵循的编程规范和编码风格,本章的内容几乎在其他所有教科书中都没有涉及,但实际上对于工程项目的开发而言,本章的内容又是非常重要和实用的。
只要是软件就离不开调试,初学者往往在调试代码的过程中不知所措,因此在第8章中,作者介绍了嵌入式软件调试的基本技巧和常用工具。
本章的主要内容也是本书的特色之一,作者从工程的角度比较系统地介绍了嵌入式软件开发调试过程中常用的方法,这对于初学者是非常有帮助的。
第9章则以东南大学国家专用集成电路系统工程技术研究中心自主研发的ASIXWindow嵌入式图形用户界面(GUI)作为一个综合案例,详细讲解了一个复杂软件系统的总体设计架构。
本书的特色之处是强调实际嵌入式软件项目中常用的技巧和方法,并融合了作者在所从事的科研项目中总结出来的经验和心得。
本书适合电子类专业本科高年级和相关专业硕士的教学,可以作为相关选修课程的教材或主要参考用书,另外由于本书内容的实战性很强,因此也非常适合作为广大嵌入式系统工程师的参考用书。
2024/8/12 3:19:49 18.94MB C语言 C C++ 嵌入式
1
银行IT从业者从事软件开发的业务指导书籍,帮助从业者更好地熟悉业务知识
2024/8/10 2:43:29 15.21MB 银行 软件开发 资金管理
1
本文来自于RationalEdge:如果您的基于RUP的项目比较成功,您怎样知道您的团队所使用的RUP是这个项目成功的原因呢?这里GaryPollice提出了一个可以科学地度量几个迭代开发技术的方法。
 在过去两年内我曾不止一次地说过“软件工程”的说法是不恰当的,我们实际上操作的是软件开发。
1PhilippeKruchtenn和其它人说区分软件和其它工程学科主要有两点:其一是每个软件开发项目都是唯一的,其二是没有应用于所有软件的基本定律。
这难道意味着我们应该放弃所有寻找基本定律的希望,以及开发一个更像工程学的方法来开发软件吗?完全不是。
软件仍然是一个年轻的学科,在我们前面仍然有大量基础和应用研究
1
内容简介Qt是跨平台应用程序和UI框架,可用来编写应用程序,无须重新编写源代码,便可跨不同的桌面和嵌入式操作系统进行部署。
使用Qt开发出来的软件,已经在各行各业中得到了越来越广泛的应用。
本书内容基于最新发布的Qt4.5版,共分为13章,按照Qt知识结构的层次和读者的学习规律,循序渐进、由浅入深的对Qt应用程序开发进行了介绍,涵盖了程序设计中经常涉及的内容。
作者希望通过本书为想学习Qt编程的读者提供入门的指导,也为从事Qt应用开发的读者提供帮助。
本书内容翔实,图例丰富,讲解透彻,通俗易懂,针对性强。
所有实例均在Windows下和Linux操作系统下作了验证。
本书适合于从事或准备从事Qt应用软件开发的技术人员,可作为Qt应用程序开发者的参考书,也可作为大中专院校师生的教材来使用。
2024/8/9 4:18:23 8.46MB 零基础学 QT4编程 linux
1
在软件的生命周期中,维护的花费通常占很大的比例,且几乎所有的软件,在其整个生命周期中,开发人员和维护人员都不尽相同。
编码规范可以改善软件的可读性,使程序员尽快而彻底地理解代码;
同时,编码规范还可以提高程序代码的安全性和可维护性,提高软件开发的生产效率,所以,编码规范对于程序员而言至关重要。
为使开发项目中所有的JAVA程序代码的风格保持一致,增加代码的可读性,便于维护及内部交流,使JAVA程序开发人员养成良好的编码习惯,有必要对JAVA程序的代码编码风格做统一的规范约束。
本文档定义了我公司软件开发过程中使用的开发语言的编码规范,指导软件开发人员在进行项目开发过程中提高代码质量、统一编码要求。
2024/8/8 17:23:35 577KB Java 编码规范 规范 编码
1
区块链作为一项革命性创新技术,正一步步走向主流,而基于区块链技术的数字货币势不可挡地将走入更多人的视野。
随着数字货币的兴起,在全球各地的交易所,无论是一级市场还是二级市场,商品期货还是金融期货,都已投入巨资开始研究区块链技术的应用。
区块链技术不仅适用于货币,还可以用于创建并存储任何有数字签名的物理资产(智能财产)的所有权以及转移那些使用了智能合约的财产,其中所蕴藏的海量红利价值无疑会引来资本的争相竞逐。
作者简介李涛巴比特联合创始人,知名区块链数字资产投资专家,具有多年外企从业经历。
2013年初接触比特币,译介大量区块链项目白皮书与一手资料,在以比特币股票为代表的数字资产方面有丰富的实战经验。
2014年加入巴比特,负责巴比特社区运营与图书出版,参与编写《2014—2015年度数字货币发展报告》。
丹华CFA,最早押注比特币的证券分析师之一,域名smartcontract.org持有者,现就职于某券商资管任资深研究员。
本科毕业于武汉大学物理系,后被保送至中科院攻读硕士。
先后就职于美股交易公司、对冲基金和国内知名公募基金。
2006年以来完整经历股市三轮牛熊周期,对投资者群体心理演化有深刻体会,自创价格情绪周期模型,并于2013年将该模型应用到数字货币投资,略有心得。
邬烈瀚数字货币专家,巴比特专栏作家及意见领袖。
曾任外企软件开发工程师及欧股交易操盘手,兼具技术和经济背景,对数字货币运行原理有着深刻理解。
2013年以来连载行情分析近百万字,并形成了个人品牌“TD比特缠解”。
2024/8/3 5:01:35 38.05MB 区块链 数字货币 投资指南
1
谭浩强-C++程序设计内容目录:第1篇基本知识第1章C++的初步知识*1.1从C到C++*1.2最简单的C++程序1.3C++程序的构成和书写形式1.4C++程序的编写和实现1.5关于C++上机实践第2章数据类型与表达式2.1C++的数据类型2.2常量2.3变量2.4C++的运算符2.5算术运算符与算术表达式2.6赋值运算符与赋值表达式2.7逗号运算符与逗号表达式第2篇面向过程的程序设计第3章程序设计初步3.1面向过程的程序设计和算法3.2C++程序和语句3.3赋值语句3.4C++的输入与输出3.5编写顺序结构的程序3.6关系运算和逻辑运算3.7选择结构和if语句3.8条件运算符和条件表达式3.9多分支选择结构和switch语句3.10编写选择结构的程序3.11循环结构和循环语句3.12循环的嵌套3.13break语句和continue语句3.14编写循环结构的程序第4章函数与预处理4.1概述4.2定义函数的一般形式4.3函数参数和函数的值4.4函数的调用*4.5内置函数*4.6函数的重载*4.7函数模板*4.8有默认参数的函数4.9函数的嵌套调用4.10函数的递归调用4.11局部变量和全局变量4.12变量的存储类别4.13变量属性小结4.14关于变量的声明和定义4.15内部函数和外部函数4.16预处理命令第5章数组5.1数组的概念5.2一维数组的定义和引用5.3二维数组的定义和引用5.4用数组名作函数参数5.5字符数组*5.6C++处理字符串的方法——字符串类与字符串变第6章指针6.1指针的概念6.2变量与指针6.3数组与指针6.4字符串与指针6.5函数与指针6.6返回指针值的函数6.7指针数组和指向指针的指针6.8有关指针的数据类型和指针运算的小结*6.9引用第7章自定义数据类型7.1结构体类型7.2共用体7.3枚举类型7.4用typedef声明类型第3篇基于对象的程序设计第8章类和对象8.1面向对象程序设计方法概述8.2类的声明和对象的定义8.3类的成员函数8.4对象成员的引用8.5类的封装性和信息隐蔽8.6类和对象的简单应用举例第9章关于类和对象的进一步讨论9.1构造函数9.2析构函数9.3调用构造函数和析构函数的顺序9.4对象数组9.5对象指针9.6共用数据的保护9.7对象的动态建立和释放9.8对象的赋值和复制9.9静态成员9.10友元9.11类模板第10章运算符重载10.1什么是运算符重载10.2运算符重载的方法10.3重载运算符的规则10.4运算符重载函数作为类成员函数和友元函数10.5重载双目运算符10.6重载单目运算符10.7重载流插入运算符和流提取运算符10.8不同类型数据间的转换第4篇面向对象的程序设计第11章继承与派生11.1继承与派生的概念11.2派生类的声明方式11.3派生类的构成11.4派生类成员的访问属性11.5派生类的构造函数和析构函数11.6多重继承11.7基类与派生类的转换11.8继承与组合11.9继承在软件开发中的重要意义第12章多态性与虚函数12.1多态性的概念12.2一个典型的例子12.3虚函数12.4纯虚函数与抽象类第13章输入输出流13.1C++的输入和输出13.2标准输出流13.3标准输入流13.4文件操作与文件流13.5字符串流
1
《UML基础、案例与应用》(第3版)适用于从事面向对象软件开发的软件工程人员,也特别适合UML的初中级学习者。
1
实习报告是作为专业人员在实习期间进行书写的对于实习期间个人工作学习经历及其个人思想和能力提高情况进行描述的文本。
属于应用写作的重要文体之一。
针对工作的主客观条件、有利和不利条件以及工作的环境和基础等进行分析,总结自身在实习期间的表现,提升自我。
2024/7/27 15:42:06 44KB 希望有所帮助
1
普通高等及教育“十一五”国家级规划教材,清华大学出版。
本书共分14章,第一章介绍软件工程的基本概念、软件过程(包括CMM/CMMI)、软件过程模型、敏捷软件开发和CASE工具与环境;
第2章至第4章
2024/7/25 5:51:24 59.19MB 软件工程 钱乐秋 赵文耘 牛军钰
1
共 499 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡