-
2019-07-01 16:11:36
软件开发,不仅仅是开发语言的多种多样,其中各种接口和方法函数亦是让人摸不着头脑。一个软件开发初学者很容易就此陷入迷途,难以自拔。单就开发语言来说,就有JAVA,C++,C#,Perl,JavaScript,Visual Basic,VS.NET,R语言等等。各种语言的内部复杂性和每种语言的数据类型,数据结构亦不尽相同,各有各的法则和编程规矩。在这里,我只讲一下,软件程序中的接口问题,以求抛砖引玉。
软件程序的接口,相比计算机硬件设备的接口,要复杂得多,我觉得这主要归因于,软件是人类大脑的延伸和模拟,而硬件,只不过是人类身体的模拟和简单的仿照。硬件对于人类知识和人类智慧的相似度上,远远比不上软件要来得复杂。而计算机硬件的接口在发展的成熟度方面,已经是做得很好的了,最常见的例子就是USB接口,统一的USB接口让任何一种配备此种接口的外围设备都可以很轻易的连接上电脑并操作。虽然USB2.0和USB3.0的接口颜色不同,但也是大同小异。手机可以说是一种更加智能,更加小巧的计算机,其充电的接口在早期虽然说千差万别,但是随着时间的推移,也逐渐向统一的电源充电接口迈进。难度小的接口要统一起来是很容易的,但是对于软件来说呢?问题就没这么简单了。
我以JAVA语言的接口来说一下软件开发的接口的统一问题。说起接口,软件接口,就不能不说类库了。JAVA有庞大的类库,同样,作为和JAVA同等重要的编程语言,C++也有庞大的类库,但是,对这两种语言,没有任何一个程序员(哪怕是最顶尖的专业程序员)能说他熟悉JAVA或者C++中的所有的类,即类库中的所有的类。任意两个JAVA类要进行通信和调用的时候,怎么办呢?那就要用到类的接口了。一个JAVA类,哪怕是最简单的JAVA类,也是有多个接口即调用方法的。所有的JAVA的类加起来有几百上千之多,那么,接口的数量也就呈指数形式递增。这样的接口的数量级,任凭哪个程序员用起来都是吃不消的。要消除接口的数量,按照一种已经广为人知的方法,就是代码重用和(学术一些的说法)设计模式了。把一个个JAVA组件象机器生产中的零件一样,保存起来,以备开发时使用,接口也尽量统一,那么,大型系统的开发会省事许多。
说了这么多,估计在软件开发中这样做的程序员也不多,要是JAVA组件没有设计好,不好用,那么又需要重新开发和设计这个组件,这又是后话了。我这篇文章说的是软件开发接口的统一,只是初探,希望能抛砖引玉。。。更多相关内容 -
计算机组成与设计:硬件、软件接口(第三版中文).pdf
2019-07-20 15:28:11黑皮书之一,《计算机组成与设计硬件:软件接口》(原书第3版)是计算机组成的经典教材。全书着眼于当前计算机设计中最基本的概念,展示了软硬件间的关系,并全面介绍当代计算机系统发展的主流技术和最新成就。 -
杂谈:硬件和软件接口选择
2020-10-12 22:54:05划分了软件以及硬件的合作分工,那它们之间怎么通信呢?我们常想到的是寄存器,是分组排列的,硬件内部可直接访问的一些存储单元。不过寄存器存储起来比较费空间,一般而言4Kbyte的空间已经是非常多了。因为超过1...划分了软件以及硬件的合作分工,那它们之间怎么通信呢?我们常想到的是寄存器,是分组排列的,硬件内部可直接访问的一些存储单元。不过寄存器存储起来比较费空间,一般而言4K byte的空间已经是非常多了。因为超过1Kbit时就应该用RAM替换寄存器以节省空间。
不过寄存器的访问比起SRAM的访问还是更简单的。寄存器对HW来讲是不用寻址的,只是对于SW来说需要寻址。
但如果使用SRAM替换,那么SW以及HW都需要进行寻址才能访问。
HW寻址SRAM需要预先知道存储的位置(寻址),然后取数,其不适合并行的数据读取,一般用作批量数据的存储和读取之用。并且SRAM还涉及到对端口的共享控制问题,因此不适合需要有多种访问实体的数据存储。
但对大批量的数据,访问实体单一的情况,SRAM是比较适合的。
如以下这张表,800 BITS的空间占用,但是却不是使用Registers,而是使用SRAM。
可以看到,表中的内容并非批量的数据,其读取方式是先取部分的内容,即ADDR,ID,INDEX等。
然后按照需要去读取CIPHER(PROTECTED FRAME),BA(ACK POLICY), DATAPENDING BUF(MORE DATA),以上构成了FRAME CONTROL的内容。
另外还有TXVECTOR(PHY SETTING)的部分。
以及一些QOS CONTROL的内容,如RTS THRESHOLD。
除此之外,此表以STA INDEX作为一个KEY的作用,链接到另外的表,如TX AMSDU LUT以及TX AMPDU LUT。
显然,无论从节省存储空间,以及便利数据读取的角度,这都不适合以LUT(SRAM)的形式存储,而是更适合Register的方式来存储。
-
计算机组成原理软硬件接口(第四版)答案
2017-07-05 14:36:25计算机组成原理软硬件接口(第四版)答案 -
计算机软件,硬件及软硬件接口的理解---以不同层次程序员的视角
2017-11-30 00:46:45最近在自学计算机相关的基础课程,感觉自己终于理解了计算机的硬件,软件,以及软硬件接口三大层面的内在关系。 记录一下自己的理解。 我想通过不同层次程序员的视角来看计算机的 计算机的硬件包含了CPU, 内存以及...最近在自学计算机相关的基础课程,感觉自己稍微理解了计算机的硬件,软件,以及软硬件接口三大层面的内在关系。
记录一下自己的理解。
我想通过不同层次程序员的视角来看计算机的软件,硬件及软硬件接口。
首先是计算机的硬件。计算机的硬件主要包括CPU,内存以及I/O设备。机器语言程序员,可以通过直接编写CPU可执行的机器指令,从而实现具体的功能,比如读取内存数据。
也就是说,机器语言程序员在编程时,是能够看到计算机的硬件设备,并且需要了解CPU的指令集,以及各个I/O硬件设备的数据手册,才能完成编程。
因此从机器语言程序员的视角,能看到的计算机的部分,都是纯硬件。
但是面向纯硬件编程的话,程序难以实现移植,而且每当I/O设备型号改变的时候,都需要重新阅读其数据手册,任务量庞大而无趣。于是需要一个可以操控所有硬件的程序,这个程序便是操作系统内核(kernel)。通过内核,可以直接使用硬件资源,而不在需要追条编写机器指令,控制计算机的每一步动作。
但是编写操作系统内核的程序员,面向的仍然是计算机中实实在在的硬件,他们需要将多条机器指令组合起来,实现对各个硬件设备的控制。
因此从编写操作系统内核的程序员的视角,能看到的计算机的部分,仍然是纯硬件。
在操作系统内核的基础上,程序员若想使用某个硬件资源,比如读取硬盘的数据,便可直接调用内核留下的函数接口。程序员不在关心CPU是如何一步一步完成硬盘数据读取的,可以很容易的使用硬件资源。这一层可以称作系统调用层。
因此从编写系统调用层程序的程序员视角,已经看不到计算机内部的硬件动作,所看到的就是软件。
操作系统内核和系统调用层合起来就是操作系统,正是操作系统连接了软件和硬件,成为了软件和硬件的接口。
在操作系统基础上编写各种应用程序的程序员的视角来看,看到的就是纯软件了。
以上是一个初学者的见解,若有问题,还请指出!
-
硬件的各类接口
2021-09-23 10:57:45SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单...参考:SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别及使用方法。 - coolyouguo - 博客园
SPI
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。
I2C
I2C(Inter-Integrated Circuit)
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
I2C总线特点可以概括如下:
- 在硬件上,I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺.因此I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为I2C芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。
- I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据破坏,每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其他器件正常工作。
- I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试,故障可以立即被寻址,软件也利于标准化和模块化,缩短开发时间。
- 连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
- 总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。
I2S
I2S(Inter-IC Sound Bus)总线,又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。
UART
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
UART接口为RX、TX、GND、3.3/5V,分别为输入、输出、接地、电源。
JTAG
JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称。此标准用于验证设计与测试生产出的印刷电路板功能。
标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
测试复位信号(TRST,一般以低电平有效)一般作为可选的第五个端口信号。一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。
通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题;一类用于Debug;一般支持JTAG的CPU内都包含了这两个模块。
GPIO
(General Purpose Input Output 通用输入/输出)
通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。
GPIO产品能够提供额外的控制和监视功能。
每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。
GPIO的优点(端口扩展器):
- 低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。
- 集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
- 小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!
- 低成本:您不用为没有使用的功能买单!
- 快速上市:不需要编写额外的代码、文档,不需要任何维护工作!
- 灵活的灯光控制:内置多路高分辨率的PWM输出。
- 可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
- 更好的灯光效果:匹配的电流输出确保均匀的显示亮度。
- 布线简单:仅需使用2条IIC总线或3条SPI总线
SDIO
SDIO(Secure Digital Input and Output)中文名称:安全数字输入输出卡,定义了一种外设接口。
SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。支持 SDIO接口的PDA,笔记本电脑等都可以连接象GPS接收器,Wi-Fi或蓝牙适配器,调制解调器,局域网适配器,条型码读取器,FM无线电,电视接收器,射频身份认证读取器,或者数码相机等等采用SD标准接口的设备。
CAN
(Controller Area Network),即控制器局域网
CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之 间交换信息,形成汽车电子控制网络。
优点:
- 低成本
- 极高的总线利用率
- 很远的数据传输距离(长达10Km)
- 高速的数据传输速率(高达1Mbit/s)
- 可根据报文的ID决定接收或屏蔽该报文
- 可靠的错误处理和检错机制
- 发送的信息遭到破坏后,可自动重发
- 节点在错误严重的情况下具有自动退出总线的功能
- 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息
-
【SDN】软件定义硬件
2022-01-23 22:55:28软件定义网络SDN小知识 -
计算机操作系统知识盘点
2021-06-27 13:00:49计算机操作系统知识盘点操作系统是由指挥与管理计算机系统运行的程序模板和数据结构组成的一种大型软件系统,其功能是管理计算机的硬件资源和软件资源,为用户提供高效、周到的服务。下面是小编分享的计算机操作系统... -
软件间对接时,常用的接口类型和协议类型有哪些
2021-02-18 14:34:56软件系统之间的接口是实现一个系统跟另外系统进行信息交互的桥梁,接口一般分为两种:程序内部的接口和系统对外的接口,软件接口的通常分为两类:webservice接口和http api接口 webservice接口 webService接口是走... -
计算机中操作系统是什么的接口
2021-07-15 02:26:26操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,用户和计算机的接口,同时也是计算机硬件和其他软件的接口。其能管理计算机系统的硬件、软件及数据资源,控... -
【软件测试】与【硬件测试】到底有何不同?
2021-06-09 12:25:27硬件测试和软件测试的区别如下: 相同点: 一、测试的流程 拿到一个产品,需要做测试前的准备工作(如环境,数据,工具,人员,任务等) 测试大致流程如下: 设计规格-测试方案-测试用例-执行测试用例-结果记录... -
【计算机组成与设计:硬件/软件接口】第一章:计算机概要与技术
2018-07-31 09:42:13【计算机组成与设计:硬件/软件接口】第一章:计算机概要与技术 标签(空格分隔):【计算机组成与设计:硬件/软件接口】 第一章:计算机系统概述 第一章:计算机系统概述 1.1 引言 1.1.1 计算机应用的分类... -
软硬件或其他外部系统接口需求
2018-12-27 13:11:00这里,主要考虑软件与操作系统、数据库管理系统的接口,以及局域网和互联网软件之间的数据交换。考虑到文档处理时有可能需要较常用的办公软件。例如office系列,所以应尽量实现他们之间的数据格式的自动转换。 ... -
软件中什么是接口?软件接口的具体定义
2018-11-18 17:38:37软件的接口我看了好多文章的定义都不严谨和形象,所以在这说一下。 软件接口就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。(而不是指传输的数据!!) 比如腾讯发布一个qq登录的接口... -
UFS的硬件原理和软件初始化流程
2019-04-15 15:01:36转载:UFS的硬件原理和软件初始化流程 硬件架构: 接口示意图: UFS 速度和emmc的对比 UFS硬件分区 最多支持八个LU,其中两个LU可以作为boot分区用,一个RPMB分区,其他LU分区用作user分区 Device ... -
软件是如何控制硬件的?
2020-02-07 11:15:31文章目录通过操作系统控制硬件中断机制文字及图片的显示机制 通过操作系统控制硬件 现象: 在用 C 语言等高级编程语言开发的 Windows 应用中,大家很少能接触到直接控制硬件的指令。 结论: 硬件的控制是由 Windows ... -
嵌入式面试之《常用硬件接口/协议系列》(4) 计算机与外设之间进行数据传送的基本控制方式
2020-08-18 14:13:07计算机与外设之间进行数据传送有三种基本控制方式:查询方式、中断方式和DMA方式。 1.查询方式 查询方式是通过执行输入/输出查询程序来完成数据传送的。 工作原理是:当CPU启动外设工作后,不断地读取外设的状态... -
史上最详细!嵌入式系统知识和接口技术总结
2020-02-12 10:40:55IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or ... -
软件接口设计
2016-11-26 17:27:47《构建可扩展的Web站点》主要介绍了Web应用程序的概念、体系结构、硬件需求、开发环境的原则及国际化、本地化和Unicode等基本内容,本文是软件接口设计。 AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动... -
慕课软件工程(第六章.接口设计)
2020-03-09 11:15:16慕课北京大学.软件工程.第六章.结构化分析方法2.接口设计0 目录6 结构化分析方法26.1 接口设计6.1.1课堂重点6.1.2测试与作业7 下一章 ...软件与其他软硬件系统之间的接口设计 C.软件与用户之间的交... -
嵌入式软件开发好,还是硬件开发好?
2019-11-05 16:32:09近些天许多学嵌入式的小伙伴前来咨询,问:嵌入式软件开发好,还是硬件开发好?...想写好嵌入式软件代码,就必须了解清楚所使用MCU的硬件特性、各个外围电路和接口电路的原理。不仅要深挖细究MCU内核... -
2020 软件测试 postman接口测试工具使用与配置 【微信公众号接口测试实例】
2020-01-10 13:46:391、引言 接口泛指实体把自己提供给外界的一种抽象化物... 广义的接口包括人机界面、硬件接口、软件接口 人机界面:人类与电脑等信息机器人或人类与程序之间的接口称为用户界面 硬件接口:电脑等信息机器硬件组... -
操作系统--硬件与软件的桥梁
2017-12-05 21:07:50磁盘,打印机,键盘,鼠标,显示器,网卡,还有各种各样的输入输出设备组成(数位板,扫描仪等等)而操作系统就是在应用软件和底层硬件的一层抽象,让我们在编写应用程序时不用了解硬件的细节,而直接调用抽象的接口。... -
接口和协议区别
2019-02-15 10:46:10通信知识学习整理 RS475和MODBUS等协议的区别 RS485是一个物理接口,简单的说是硬件接口 MODBUS是一种国际标准的通讯协议,用于不同厂商之间的设备交换数据(一般是工业用途),即数据的格式以及含义的规范 ... -
STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
2018-08-28 21:26:25SPI(Serial Perripheral Interface)串行外设通信接口,主要实现设备(主从)之间的通信。硬件上由CS、SCK、MISO、MOSI四根通信线连接而成。关于SPI更多介绍不再详细描述,本文主要以STM32F103为主机、W25Q16为从机... -
计算机网络的硬件组成部分
2021-06-16 02:27:30计算机网络从物理结构角度看可由网络硬件和网络软件两大部分组成。其中网络硬件主要由计算机系统、网络传输媒体和网络连接设备组成;网络软件主要由网络系统软件、网络协议和网络应用软件组成。1.计算机系统网络中... -
路由器的硬件组成和软件系统
2019-05-11 14:05:14路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络。目前路由器已经广泛应用于各行各业,各种不同档次的...虽然市面上有各种品牌、型号的路由器,但是各种路由器的硬件组成和软件系统都大同... -
抽象类和接口的区别以及抽象类和接口的使用场景
2019-05-30 18:15:44① 硬件接口:是指同一计算机不同功能层之间的通信规则称为接口。 ② 软件接口:是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。 2.Java中的接口 :在JAVA编程语言中是接口一个... -
硬件工程师如何零基础入门?
2022-03-13 23:08:03文章目录1、书籍阅读2、网站推荐3、免费的教学课程推荐4、知识体系的搭建4.1 电子元器件知识学习4.2 硬件开发工具的使用4.3 PCB设计和电路设计4.3 总线接口协议学习4.4 进阶内容学习 这个问题关注有一段时间了,想找...