TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Allevi 于 2019-12-9 11:00 编辑
. i- Z4 U. a* N6 {2 F7 b
) n7 `: W: i. C7 Z1 Q" \( L9 O! o1 d8 t. N% W2 s) E/ }7 ?
: k% N# A+ C9 @/ V8 {
6 w: \! x- e$ U" |+ l2 G: `序言8 }* E' c# g b c" s
你的家中有多少台计算机?大多数人可能会回答有两台或三台。你家中有多少个微处理器?在你回答前仔细考虑一下(提示:不止两三个!事实上,甚至会有10多个或20多个!)。+ V! r9 X; ?. K; v
今天,徽处理器已嵌入到几乎所有你能想到的以及许多你可能想不到的电器中。它们已变得非常普及一不仅在我们家中, 而且在我们的工作场所、我们的汽车、飞机、停车灯、超市、手机中一一总之,在我们生活的几乎所有方面。
# |' b& p: s% d: M) R3 H嵌入式系统为学生表达他们的创造力提供了一个令人兴奋的机会,他们梦想设计出下一代新的小器具,迎合大众的需要。作为教育工作者,我们的挑战是抓住这个激动人心的机会,并引导年轻人的精神活力,以激励他们掌握这个主题。4 R# z# T' {6 v1 [3 N
目标2 L) o" H" _8 t+ [) F- n+ ^/ I
本书的最终目标是打下一个基础,为学生掌握多线程编程风格和嵌入式软件的高可靠性要求提供支持。在本教材中,我们建立了以下目标:$ ^% j: z- b0 K! R9 u w$ m
1.理解如何在机器级表示数据,认识到这些表示的后果和局限。
' @, H/ g4 _. z" v/ C0 `2.掌握嵌入式系统最常用的语言特有的特性,如位操纵和变量访问。) Y# x+ H! [3 f' }, m; b. y8 C
3.了解程序员如何看待 处理器体系结构以及如何在汇编级编程,有时是必要的或合适的。. U" p, d* D9 i! y$ q
4.了解多种不同风格的I0编程,并且最终了解如何通过事件驱动方法把数据处理隔离到许多独立的计算线程中.' C7 Z' k% O* o/ x/ v4 }7 Q$ x
5.了解非抢先式和抢先式多线程编程、共享资源和临界区,以及如何使用调度来管理系统响应时间。
4 a3 Z; s Q) V5 F E$ T) }: p6.复习作用城、参数传递、递归和内存分配这类主题,以强化基本的编程技能。. l! ^! X; i! O1 q
7.了解与共享内存对象有关的问题、内存分配如何影响共享内存以及可以使用哪些编程实践来最小化共享内存的发生。& Y6 V0 l( G$ H
目标读者
& v* F, p& x8 m' |+ @3 e; I. o3 i本书打算用作计算机科学、计算机工程或电子工程专业课程二年级教材,用来代替计算机组织和汇编语言编程的传统教材。1 ]5 r6 R3 {8 ^3 u( A; E0 r/ E# W
本书介绍了实践中最常用的汇编方法-一以实现小型、 快速或专用例程供主程序调用,这些主程序是用诸如C之类的高级语言编写的。因此,本书仅从“领知”的观点出发来介绍处理器组织和汇编语言,而不是将其作为一个主要目标来讲解。这种方法为用本书讲授嵌入式软件环境中的汇编语言提供了时间保证,因而,学生不仅学习了具有重要作用的汇编技能,而且他们对多线程编程、抢先式和非抢先式系统、共享资源和调度的发现,还可以帮助维持他们的学习兴趣,满足他们的好奇心,同时进一步做好对操作系统、实时系统、网络和徽处理器基础设计等后续课程的准备工作。
- _% ?5 L, ~1 G$ V8 c& ~在大多数学院中,介绍性编程系列课程( CS1.CS2)不再用过程性编程语言(如C或Pascal )来讲授;相反,当前流行的方法是使用一种面向对象的编程语盲(如C++或Java)。尽管有了这种变化,人们还是能经常见到一种或多种后续分支课程仍然使用过程性语言,并且也能经常见到在工业中仍在使用这类语言。在作者所在的学院中,我们通过围绕本书中的材料重新设计我们传统的汇编语言课程,解决了这种矛盾;它不但为已有的课程拓展了空间,以介绍过程性方法和嵌入式系统流行的主题,而且还为加强学生对参数传递、作用城和内存分配模式的综合理解提供了一个机会,在CS1和CS2中首先会讲授这些主题,本书假定学生已经知道了如何用C. C++或 Java编程,这些语言的低级语法之间的相似性! `: C/ D" r0 G! W# Z& r
使学生从C++或Java转到C相对容易。本书没有繁琐地介绍C,而是重点强调了嵌入式应用中频繁用到的C的特性,并通过例子和编程作业介绍了过程性风格,那些例子和作业中包含了大量预先编写好的源代码。因此,原则上绝对的先修课程仅是使用C. C++或Java的Cs1课程。/ d' I8 |. [! L
但是,强烈建立你掌握额外的编程经验,如从CS2课程中学到的关于數据结构的编程经验。+ b+ p5 u7 l: I
编程作业和配书光盘8 N C; u) b1 i
本书中的补充材料包括附录D中描述的一组编程作业。假定本书的目标读者是大学二年级学生,这些作业主要用于阐释本书中的一个主题,而不是作为扩展的编程项目。因而,配书光盘上为每-道作业题都提供了大部分源代码,并且要求学生仅关注那些直接与主题相关的部分。例如,最后三道作业题提供了完整的源代码,用于图形化地演示与共享资源、优先级倒置及死锁相关的问题,并且要求学生使用本书中介绍的策略修改代码的特定部分,来解决这些问题。, W6 \ g* U! o# @, {9 W
: h' x7 ^2 y: K) j完整资料见附件。9 L* o5 p* h2 ?3 w$ ]
8 }( } Y. a& i2 Q
% o8 t! S5 ]7 {; u2 m$ R$ U7 P, [6 P0 [: r$ U+ ?
|
|