本书主要介绍针对嵌入式系统基于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
准确了解用户对视频热度的选择(PP)的差异性对丰富的用户画像,提高个性化服务精确度和优化产品提供方收益等方面大有替代益。
目前只有少量的统计学方面的研究,在数据稀疏或者大规模启动的情况下不确定性的正确性。
基于大规模商业在线视频流媒体系统的用户观影数据,此处对用户的视频热度替换进行了多角度刻画分析,着重提出了两个基于协同过滤(CF)的算法来预测用户对视频热度的替代。
具体贡献如下:1)通过空模型假设对比实验,发现并非所有用户都偏好热度高的视频;
大多数用户有较广泛的优选范围,但用户之间2)设计了基于最近邻居的(NNI)和基于矩阵分解的(MFI)用户热度首选预测模型。
实验证明,当数据稀疏度低于48%的时候,用NNI或MFI算法初始化所得的用户热度替代比传统方法统计所得的结果更准确。
越稀疏的情况下,这种优势越明显。
此工作对视频系统中推荐服务设计和用户体验优化具有参考意义。
2024/8/10 16:42:34 224KB 研究论文
1
基于颜色直方图的图像检索程序,可选择使用RGB或HSV的颜色模型进行检索,二种均给出代码。
代码注释详尽,结构良好,运行正确。
2024/8/10 15:52:51 28.48MB matlab 图像检索 颜色直方图 RGB
1
FoxitReaderSDKActiveX3.0.1(附带接口说明文档)破解版无水印可查看多页PDF打开PDF快速,支持不预览PDF打印,省空间只要一个ocx,此文件为二次开发人员使用,用VS2013工具箱-_-选择项-_-Com组件-_-点浏览找到这个FoxitReader_AX_Pro.ocx就会在工具箱出现此控件了,然后托到窗体上就可以用了。
打开预览PDF:axFoxitReaderSDK1.OpenFile(fileName,"");打印PDF:PDFPrinterpdfPrint=axFoxitReaderSDK1.Printer;pdfPrint.PrintWithDialog();(带设置打印机)pdfPrint.PrintQuiet()(不带设置打印机)
2024/8/10 15:03:55 4.12MB Foxit Reader SDK 破解版
1
一、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;
按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
二、概要设计程序要有的功能:1.输入记录2.用指定格式显示全部记录3.根据姓名查找记录4.根据姓名删除记录5.保存记录到文件6.按序号显示记录7.按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
2024/8/10 13:19:01 166KB C语言 课程设计 实习报告
1
北京大学计算机网络实验Lab11滑动窗口协议实验1.1实验目的计算机网络的数据链路层协议保证通信双方在有差错的通信线路上进行无差错的数据传输,是计算机网络各层协议中通信控制功能最典型的一种协议。
本实验实现一个数据链路层协议的数据传送部分,目的在于使学生更好地理解数据链路层协议中的“滑动窗口”技术的基本工作原理,掌握计算机网络协议的基本实现技术。
1.2实验要求在一个数据链路层的模拟实现环境中,用C语言实现下面三个数据链路层协议。
1)1比特滑动窗口协议2)回退N帧滑动窗口协议3)选择性重传协议1.3实验内容充分理解滑动窗口协议,根据滑动窗口协议,模拟滑动窗口协议中发送端的功能,对系统发送的帧进行缓存并加入窗口等待确认,并在超时或者错误时对部分帧进行重传。
编写停等及退回N滑动窗口协议函数,响应系统的发送请求、接收帧消息以及超时消息,并根据滑动窗口协议进行相应处理。
编写选择性重传协议函数,响应系统的发送请求、接受帧消息以及错误消息,并根据滑动窗口协议进行相应处理。
2024/8/10 3:23:58 8KB 北京大学
1
使用c#控制台完成:创建Word;
插入文字,选择文字,编辑文字的字号、粗细、颜色、下划线等;
设置段落的首行缩进、行距;
设置页面页边距和纸张大小;
设置页眉、页码;
插入图片,设置图片宽高以及给图片添加标题;
插入表格,格式化表格,往表格中插入数据;
保存Word,打印Word;
2024/8/9 14:52:17 119KB c# 控制台 office
1
——————————————————————Hearen'sSimpleSniffer——————————————————————一、功能简介:1.针对同一局域网中的所有主机进行监听并返回处理优化后的数据供研究使用;
2.在数据表中显示了所有当前侦听到的数据包包括源IP、源端口、目的IP、目的端口、数据包协议类型、数据包捕获时间及数据包简略信息(仅应用层数据);
3.可以针对某一特定IP地址(源或目的),某特定端口(源或目的)以及特定类型数据包进行侦听--捕获前过滤;
4.当数据过多时可以随时点击‘清理’对当前的数据表进行清空--不过捕获的数据是不会被清除的,仅清除列表中显示的数据;
5.双击‘清理’时清空所有嗅探到的数据--不仅仅是列表中显示的数据;
6.选择列表中的数据时,数据详细信息会显示在下方的面板中;
此时可以通过选择特定字符串来查看在其左侧的十六进制表示以供研究之用;
7.左下角会显示当前在该局域网中捕获到的数据包个数及总大小(该大小包含IP协议及其建立在该协议以上协议的头部)--数据单位会自动进行切换当数据大小达到2G时将重置清零;
8.在获取数据包后可以针对某一IP,PORT,IP:PORT或IP/PORT及协议进行筛选,同时可以查阅当前所有捕获的数据包(如果没有设置捕获前过滤,否则只能查阅过滤后的数据)。
二、使用说明:本应用的使用环境为Windows7、Windows8及Windows8.1。
在使用过程中需要获得管理员权限-捕获数据包需要访问底层数据,需要获得最高权限才可以正常运行该应用;
三、作者留言该应用的开发环境为VS2013,所用语言为C#,界面设计属于WinForm(比较老式的界面风格,推荐使用WPF)。
因本人水平有限,在该应用中不免存在很多漏洞和不足;
如果你有更多更好的想法或者发现该小应用中的bug还望批评指正。
||联系方式:LHearen@126.com||四、免责声明本系统仅用于学习交流之用,本人不承担该应用的技术及版权问题,且不对该应用负法律责任。
2024/8/9 8:21:21 2.24MB 网络嗅探器 C# 源码
1
本项目是一个基于安卓的小乖记账理财毕设源码,包括答辩ppt、系统设计与实现文档、开题报告、任务书和完整安卓项目源码。
项目主要由6大模块组成,包括支出记录,收入记录,便签功能,图表统计,账户管理,系统设置等功能,另外还可以自定义收入类型和支出类型,这在安卓记账类的项目里不多见,因为一般项目都是写死的。
另外还有类似支付宝记账单的可以选择时间段展示的基于achartengine引擎的图表功能,这个功能也是在类似项目里不多见的。
www.之前也介绍过很多关于记账理财的项目,不过都没有本项目完美,需要的可以在www.搜索“记账”就可以找到。
2024/8/8 20:56:20 11.34MB 大学生
1
STM32F103的SD卡读取,移植的是fatfs文件系统,串口输出,需要把串口配置成自己板子上的,就可以用了,还有设计printf函数里的串口选择,别忘记了,绝对可以用,已经测试过了!
2024/8/8 19:05:29 5.02MB stm32f103 SDIO fatfs
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡