一个单片机的程序,底层,中间层,上层。
各是指什么?详细点啦,...
一般当程序比较大、功能比较繁多,需要进行结构化程序设计的时候,才会进行分层。
分层的好处是可以将应用与硬件剥离,当硬件发生变更(移植,设计更改)时只需改动底层以及少量中间层;当需求发生变更时只需改动上层以及少量中间层。
底层一般是直接访问硬件的接口,以串口而言如寄存器操作函数;中间层一般是在底层与上层之间进行数据及信息的转换,以串口而言如封包/拆包/消息产生/消息响应;上层一般面向应用,在很少考虑硬件实现的前提下以通用的方式实现所需的功能,以串口而言如printf。
请问编程中的 上层 和 底层 是什么意思? 比如有人说 "游戏用JAVA...
上层(或者是表层)、中间层和底层没有严格意义上的定义,在不同的项目中需要结合具体需求来具体分析。
一般来说,表层就是指展现给用户看的部分;而底层就是系统的最核心的部分。
一般我们认为,越接接硬件的编程就越底层。
比如,一个在线通讯软件(QQ这种),表层就是窗口啊、菜单啊、按钮啊这些玩意儿;中间层是业务逻辑部分,就是你点击这些按钮会产生相应的什么事件,进行了什么操作;底层就是Socket网络通信了。
当然,我这里这三层是大致划分的,实际开发中比这个要更具体详细。
再比如,拿题主说的游戏举例子,表层就是各种游戏的界面了;底层就是游戏引擎了。
底层干嘛?接收你的鼠标键盘响应信号、操作显卡在显示器指定位置生成各种二维的三维的图像、控制声卡输出音频等等等等。
至于编程语言问题,这就牵扯到低级语言和高级语言的问题了。
一般来讲低级语言和高级语言区别在于: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好。
低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差。
越低级的语言,形式上越接近机器指令(汇编语言就是与机器指令一一对应的)。
而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。
也就是说你用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器(即编译器),从而人力得到了解放。
因为机器就是用来为人类提供便利的,所以说高级语言的出现是计算机发展的必然结果。
(参考:http://blog.csdn.net/guoxiaoqian8028/article/details/9103151)这就产生了执行效率的问题。
所以说用 C/C++ 这类语言更适合写游戏引擎。
游戏嘛,必定是要求响应速度极高的,总不能按完键盘了等100毫秒才响应,生成个三维地图电脑卡半天。
但一般不会游戏的所有部分都用 C/C++ 来完成,为什么?上面说了,可维护性差、可移植性差。
这时候就需要用面向对象这种“高级语言”出马了。
至于题主提到的“不同语言之间的互通”,建议题主理解一下“接口”(不是面向对象里的“接口类型”)的概念。
泛泛而谈,希望对题主有所帮助。
...
从嵌入式系统底层到上层应用软件,嵌入式计算系统的组成主要分为...
我们会看到如图,所示。
硬件操作系统系统调用接口应用程序其中操作系统中,我们会看到很多东西在里面。
这方面的研究是必须的。
但是并不是每个人都要研究。
想研究这部分的研究这部分。
不想研究的。
就可以搞应用层的开发或者是搞硬件部分。
就是规划硬件接口,电路走线,电磁兼容。
等等。
目前研究操作系统的一个接近是研究,linux设备驱动程序。
各部分的作用如下:硬件部分:提供计算机物质体系。
提供基础部分。
操作系统部分:管理计算机的所有活动以及驱动系统中的所有硬件。
仔细理解这句话。
系统调用接口:为了保护内核,并且让程序员比较容易开发软件,因此操作系统出了内核程序之外,通常还会提供一整组开发接口,那就是系统调用层。
软件开发工程师只要遵循公认的系统调用参数来开发软件,该软件就能够在改内核上面运行。
所以你可以发现,软件与内核有比较大的关系,与硬件关系并不大。
硬件也与内核有比较大得关系。
应用程序:具体实现用户需求的软件。
应用程序师参考操作系统提供的开发接口所开法出来的软件,以达到计算机的功能利用。
从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?
一、嵌入式系统的概念 着重理解“嵌入”的概念 主要从三个方面上来理解。
1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。
比较高端的ARM类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址,可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。
IXP系列最高主频可以达到1.8G,支持2G内存,1G*10或10G*1的以太网口或Febre channel的光通道。
IXP系列应该是目标基于ARM体系统结构下由intel进行整合后成Xscale内核的最高的处理器了。
2、从软件上前,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。
而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。
3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。
以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科二、嵌入式系统的分层与专业的分类。
嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。
但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。
2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。
想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。
3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。
操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。
据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。
因此这部分工作相对来讲没有太大意义。
4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。
如果涉及Jave方面的编程也是如此的。
嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。
但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂,并且有难度了。
三、目标与定位。
先有目标,再去定位。
学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。
如果从软件上讲,就是要学习基于ARM处理器的操作系统层面的驱动、移植了。
这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,...
计算机软件底层是什么?
具象一点说,好比是你家的电磁炉,像暴风。
所谓底层开发,就是指为硬件而开发的程序,美图,QQ等应用软件在没有安装底层系统的电脑上无法运行形象一点说,windows就是底层软件,因为windows是运行在系统硬件上的软件,是用来控制电脑上各个硬件工作的软件。
而我们用的普通软件叫应用层软件,是运行在windows系统上的软件。
打个比方,豆浆机...
多媒体软件平台的最底层是什么?
物理层。
OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。
OSI模型有7层结构,每层都可以有几个子层。
下面我简单的介绍一下这7层及其功能。
OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 其中高层,既7、6、5、4层定义了应用程序的功能,下面3层,既3、2、1层主要面向通过网络的端到端的数据流。
下面我给大家介绍一下这7层的功能: (1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。
例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。
但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。
示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。
(2)表示层:这一层的主要功能是定义数据格式及加密。
例如,FTP允许你选择以二进制或ASII格式传输。
如果选择二进制,那么发送方和接收方不改变文件的内容。
如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。
在接收方将标准的ASII转换成接收方计算机的字符集。
示例:加密,ASII等。
(3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。
示例:RPC,SQL等。
(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。
示例:TCP,UDP,SPX。
(5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。
为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。
示例:IP,IPX等。
(6)数据链路层:他定义了在单个链路上如何传输数据。
这些协议与被讨论的歌种介质有关。
示例:ATM,FDDI等。
(7)物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。
连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。
物理层常用多个规范完成对所有细节的定义。
示例:Rj45,802.3等。
OSI分层的优点: (1)人们可以很容易的讨论和学习协议的规范细节。
(2)层间的标准接口方便了工程模块化。
(3)创建了一个更好的互连环境。
(4)降低了复杂度,使程序更容易修改,产品开发的速度更快。
(5)每层利用紧邻的下层服务,更容易记住个层的功能。
大多数的计算机网络都采用层次式结构,即将一个计算机网络分为若干层次,处在高层次的系统仅是利用较低层次的系统提供的接口和功能,不需了解低层实现该功能所采用的算法和协议;较低层次也仅是使用从高层系统传送来的参数,这就是层次间的无关性。
因为有了这种无关性,层次间的每个模块可以用一个新的模块取代,只要新的模块与旧的模块具有相同的功能和接口,即使它们使用的算法和协议都不一样。
网络中的计算机与终端间要想正确的传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称做协议。
网络协议主要有三个组成部分: 1、语义: 是对协议元素的含义进行解释,不同类型的协议元素所规定的语义是不同的。
例如需要发出何种控制信息、完成何种动作及得到的响应等。
2、语法: 将若干个协议元素和数据组合在一起用来表达一个完整的内容所应遵循的格式,也就是对信息的数据结构做一种规定。
例如用户数据与控制信息的结构与格式等。
3、时序: 对事件实现顺序的详细说明。
例如在双方进行通信时,发送点发出一个数据报文,如果目标点正确收到,则回答源点接收正确;若接收到错误的信息,则要求源点重发一次。
70年代以来,国外一些主要计算机生产厂家先后推出了各自的网络体系结构,但它们都属于专用的。
为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。
国际标准化组织ISO 于1981年正式推荐了一个网络系统结构----七层参考模型,叫做开放系统互连模型(Open System Interconnection,OSI)。
由于这个标准模型的建立,使得各种计算机网络向它靠拢, 大大推动了网络通信的发展。
OSI 参考模型将整个网络通信的功能划分为七个层次,见图1。
它们由低到高分别是物理层(PH)、链路层(DL)、网络层(N)、传输层(T)、会议层(S)、表示层(P)、应用层(A)。
每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持。
第四层到第七层主要负责互操作性,而一层到三层则用于创造两个网络设备间的物理连接. 1.物理层 物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。
物理层为设备之间的数据通信提供传输...
我想学软件的加密与解密这一块 也就是 比较底层的汇编与反汇编 谁给...
建议先把汇编学好,学精最好。
汇编这一关过不了,就不要提什么破解,木马,病毒(自认为)。
如果有编程基础,学起汇编应该不是太吃力。
我想基础最重要了,不要以为拿着别人做的工具就认为自己是电脑高手了,那只是别人的东西。
推荐一个论坛—看雪论坛,很有名的,我想你应该知道吧,多上那个论坛转转,上面的密界高手很多,多向他们取取经。
再推荐一本书加密与解密,是看雪论坛出版的,现在出到第三版了,当然你就要有汇编基础,和windows编程基础,否则你看起来会有点费劲。
我现在正在看,嘿嘿。
学底层的东西前期会很漫长!很难!很枯燥!我想只要你有这个兴趣,最重要的是勤奋+执着,咱们一起努力吧