本书主要介绍针对嵌入式系统基于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
《非线性系统的分析与控制》是2005年9月1日科学出版社出版的图书,作者是洪奕光、程代展。
本书主要介绍非线性控制系统的基本理论和一些最新进展,本书可作为从事控制理论及其应用的科研工作者、工程技术人员、高等学校教师和研究生的教科书或参考书。
此为高清版本,分享给大家,共同学习。
2024/8/8 15:05:06 8.73MB 非线性系统 洪奕光程代展
1
面向初中和高年级研究生的教科书。
它使用相干框架介绍了人工智能(AI),以研究智能计算代理的设计。
2024/8/6 21:17:20 91B 计算机科学
1
《嵌入式Qt实战教程》是配合QtGUI程序设计的指导教材,独立于任何Qt编程教科书。
主要内容有常用GUI介绍、Qt开发工具的安装及其优点、Qt入门、窗口的布局、信号和槽机制、常见对话框的使用、主窗口(QMainWindow类)的使用、菜单和工具条的实现、鼠标和键盘事件、Qt进程与线程、网络编程、互斥锁等。
最后还详细讲解了Qt的一些应用小项目,并列出了全部源代码,如图片浏览器、MP3播放器、网络视频播放器、门禁机项目。
2024/5/12 9:24:41 43.44MB 嵌入式 Q t实战 教程
1
这本教科书是针对大学数学课程的第一门课程设计的,向学生介绍了构建和编写证明的过程。
2024/5/1 4:15:26 93B 计算机科学
1
很多密码方案与协议,特别是基于公钥密码体制的,有一些基础性或所谓的“教科书式密码”版本,这些版本往往是很多密码学教材所包含的内容。
本书采用了一种不同的方式来介绍密码学——更加注重适于应用的密码学方面。
它解释了那些“教科书式密码”版本仅适合于理想世界的原因,即数据是随机的、坏人的表现不会超越预先的假定。
本书通过展示“教科书式密码”版本的方案、协议、和系统在各种现实应用场合存在着很多攻击,来揭示“教科书式密码”版本在现实生活中的不适用性。
本书有选择性的介绍了一些实用的密码方案、协议和系统,其中多数已成为了标准或事实上的标准,对其进行了详细的研究,解释了其工作原理,讨论了其实际应用,并且常会以建立安全性形式证明的方式来考察它们的强(实用)安全性。
另外,本书还完整地给出了学习现代密码学所必备的理论基础知识。
本书可作为高学院校计算机专业研究生或高年级本科生的教材,也可供密码安全架构师、工程人员、开发人员以及管理人员参考
1
Lindo和Lingo是美国Lindo系统公司开发的一套专门用于求解最优化问题的软件包。
Lindo用于求解线性规划和二次规划问题,Lingo除了具有Lindo的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。
Lindo和Lingo软件的最大特色在于可以允许优化模型中的决策变量是整数(即整数规划),而且执行速度很快。
Lingo实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题。
由于这些特点,Lindo系统公司的线性、非线性和整数规划求解程序已经被全世界数千万的公司用来做最大化利润和最小化成本的分析。
应用的范围包含生产线规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置等等...Lindo/Lingo软件作为著名的专业优化软件,其功能比较强、计算效果比较好,与那些包含部分优化功能的非专业软件相比,通常具有明显的优势。
此外,Lindo/Lingo软件使用起来非常简便,很容易学会,在优化软件(尤其是运行于个人电脑上的优化软件)市场占有很大份额,在国外运筹学类的教科书中也被广泛用做教学软件。
2024/4/22 2:50:33 24.06MB lingo 数学规划 9.0 破解
1
本书是一部经典的线性代数教科书.其内容根据作者在奠斯科大学和基辅大学的授课材料整理修订而成,曾被用作苏联高等院校的教材。
全书内容包括:行列式、线性空间、线性方程组、以向量为自变量的线性函数、坐标变换、双线性型与二次型、欧几里得空间、正交化与体积的测度、不变子空间与特征向量、欧氏空间里的二次型、二次曲面和无穷维欧氏空间的几何学
2024/4/12 0:03:20 64.86MB 线性代数
1
這本是“虎書”的ML語言描述版本(英文)。
《现代编译原理》全面讲述了现代编译器的结构、编译算法和实现方法,是Andreww.Apple的“虎书”——ModernCompilerImplementation——“红、蓝、绿”三序列之一。
这三本书的内容基本相同。
但是使用不同的语言来实现书中给出的一个编译器。
本书使用的是函數式的ML语言。
本书的另一个特点是增加了一些其他编译原理教科书没有涉及的内容。
前端增加了面向对象的程序设计语言、函数式程序设计语言等现代语言的编译实现方法,后端增加了针对现代计算机体系结构特征的一些比较成熟的优化方法。
这部分内容展现了现代商业编译器需解决的一些关键问题,开拓了学生的视野,为学生未来进行更深入的研究奠定了基础。
2024/3/31 7:31:55 35.45MB 編譯器 虎書 編譯原理 SML
1
表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。
设计一个程序,演示用算符优先法对算术表达式求值的过程。
基本要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。
利用教科书表3.1给出的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
测试数据:3*(7-2);8;1+2+3+4;(((6+6)*6+3)*2+6)*2;(20+2)*(6/2);
2024/3/25 20:06:28 3KB 算术表达式求值
1
共 79 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡