如何通过硬件或软件硬件结合有效地解决随时随地的近义词编程的

当前位置: &
> 软件工程师如何应对软硬件协同开发
软件工程师如何应对软硬件协同开发
作者:公司 Mark Saunders
我从事业务已有很多年时间了,但还是不清楚“协同开发”是否是指管理人员梦想实现超高效项目开发进度的一种方式,还是说对于软件开发人员而言是一种折磨。或许它只是意味着软件开发与硬件平台设计齐头并进吧。这除了意味着软件人员的苦难之外,我真不清楚还意味着什么。
在嵌入式领域,经常要为正在设计中的板或芯片同时编写软件。有时是为 Graphics或 Design Systems等厂商环境中复杂的ASIC设计而编写软件。有时则是为或等公司功能强大的设计而编写软件。FPGA器件带有与标准和定制IP模块相连的嵌入式微处理器内核。还有的时候是为了可编程片上系统编写软件,这种可编程片上系统将可编程数字/模拟功能和微控制器完美集成在一起(如赛普拉斯的P器件)。这些功能都非常强大,能实现难以置信的创新,但同时也会带来痛苦,那就是硬件可能随时发生变化,而软件开发人员则难以招架。
我不是建议放慢创新步伐,而是说应该给软件工程师一个喘气的机会。但事实上刚好相反。硬件工具需要更好地与软件IDE集成在一起才能加速产品上市进程。而设计人员需要更多工具和方法让应用不受硬件变化的影响。我不是说向设计中添加或从中移除主要的通信模块。如果您的真需要添加或移除主要通信模块,那么您的软件工程师真该找点别的事干了,因为这意味着硬件设计还根本没就位呢。我这里说的变化都是设计周期较晚阶段对于已定义的功能模块进行的微小改变,比方说寄存器地址变动、比特位被重新定义、缓冲区大小改变等。这些“小变化”也会影响到软件,进而可能造成产品缺陷,甚至在忘记硬件变化原因时还要对软件进行长时间返工。
软件工程师,现在到了我们奋起反击的时候了!以下给出了针对目标不断变化的情况如何灵活进行应用开发的三点建议。在开始新的项目之前,不要忘掉这些建议!
1 不要编写HAL,要生成它!
我们需要的第一个变化就是让硬件开发工具生成软件接口,也就是通常所说的硬件适配层(HAL)。HAL应包括能可靠地初始化可编程硬件的启动代码,并提供API接口以支持系统的软件控制。HAL不仅简化了固件开发,还能将实施从接口中抽象出来。这就意味着硬件的微小变化不会对固件造成影响。
HAL中其实没什么新概念,许多经验丰富的设计人员已经明智指出,常量、函数和变量都应采用一致的、直观的命名规范。不过,对于FPGA、和等可编程器件而言,我们还要将此规范进一步扩展,也就是HAL要由硬件设计工具生成,否则软件工程师怎么才能确保可靠的接口呢?
在固定或变化很少的环境中(比如说固定功能或大规模ASIC项目),我们可将HAL视为一套独立的API,可将其作为硬件设计变化的一部分进行修改。不过,对于现代化的可编程器件而言,硬件一天会变化好几次。手动HAL维护与当前情况根本不相匹配,肯定会在实施阶段出现错误,更别说要对软件工程师带来多大痛苦和折磨了!我认为,HAL自动生成应为任何可编程平台的必备要求。
10:39:13 上传
图1:PSoC Creator工作区域抓屏,其中我们看到采用FanController模块和一对(Comp_Hi)和(Comp_Lo)的系统控制器设计所用的API文件(HAL)。
2 集成自己最喜欢的IDE
可编程器件为创新带来了巨大机遇,但往往设计硬件所需的工具会对正常软件开发实践造成影响。工程师往往不得不使用简单、功能欠佳的工具,而且不能与现有的流程很好地结合。
大多数协同设计环境都是从硬件设计工具演变而来,这些工具多年来一直支持ASIC和FPGA或CPLD流程。随着嵌入式CPU越来越普及,为工具产品组合添加软件开发功能的需求变得非常明显,这样,一种工具就能支持软硬件两个领域,但对两个领域各自而言又都不够理想。在此情况下,工程师就会在两个领域都会减少特性选择,甚至丧失特性选择。
解决方案不是让工具厂商提供业界领先的调试器,将其捆绑到硬件设计工具中,就宣布成功,然后奇怪软件工程师怎么还在不停地抱怨。为以硬件为中心的工具添加源代码编辑器并调试特性,这并不能真正解决问题,因为工具仍没有集成到用户的流程中。源控制接口、软件测试套件、构建等是目前开发人员每天都要接触的工作,将硬件设计工具集成到他们的日常工作中才是真正的挑战。
正确的做法根本不是集成调试器、编辑器或整个IDE,而是要让软件开发人员从项目一开始就能在自己真正喜欢并使用的传统IDE开发环境中开展工作。硬件设计人员或许仍需要工具中的软件特性来创建并运行小型测试程序,但真正的应用开发应当始终在工程师首选的IDE中进行。
如果想要满足这一要求,一个办法就是要能够将项目从一个工具导出到另一个工具。举例来说,赛普拉斯的PSoC Creator能够将PSoC设计直接导入到 μVision工具中。在许多可编程系统中,“硬件”事实上是作为数据块提供,能在启动时被编程到器件中,以创建配置好的器件。对于软件而言,它仅仅是数据,因此导出设计只需硬件工具为目标产品生成项目文件,再用HAL源文件和初始化代码植入即可。应用随后就能在硬件顶层上进行构建,而且不会干扰现代化环境中使用的自动化测试和源控制系统。
10:39:13 上传
图2:PSoC Creator的“IDE 导出”GUI。本对话框用来创建和更新用于应用开发的Keil μVision项目。
当然,对于动态的硬件平台而言,一次性导出不是完整的解决方案,还必须提供无缝更新设计的特性,而且不会破坏应用。对于支持库的IDE来说,更新过程很简单,因为设计可被拆分为应用项目和配置库,这就能将应用完全隔离开来,而且能让包含配置数据和HAL的硬件库在设计变化时自动更新。
10:39:14 上传
图3:以上导出的系统控制器项目在Keil μVision中打开,可用于应用开发。
3 超越软件范畴的调试
设计人员所需的第三个特性就是改进调试。在现代化器件中,“处理器”的定义不仅限于CPU的寄存器和指令集。处理器芯片集成了各种额外的片上功能,比如说常见的通信模块和标准接口,此外还包括无所不在的定时器和计数器,以及为软件提供数字接口的模拟功能,有时也包括定制逻辑和可切换的路由功能等。这种可定制性说到底正是我们最初选择协同设计的原因所在。调试器如果只支持CPU,就会让软件开发人员非常失望。我们需要围绕硬件认真解决以下问题:硬件启动了吗?时钟启动并稳定了吗?外设在正常工作吗?通信模块是否生成中断?能否发送和接收数据?能否在内部上正常工作?
如果这听起来就够吓人的话,我还没说到从调试器改变硬件呢,这其实是让人的角色在迫害者和受害者之间转变。我需要符号化外设硬件的存取方式,这样我就能监控和控制影响应用的状态变化。
当然,符号信息必须从硬件工具中生成,就好像上述HAL一样。通过简单添加这一点,调试过程就变得更加简单,功能也更加强大了。之所以说更简单,是因为我们不再需要一直查询文档去寻找并确认调试器中要注意哪些关键寄存器的地址了。而之所以说更强大,是因为现在它能支持更为复杂的调试。除了快速获得外设模块状态快照之外,有时我们还能从调试器控制功能块,无需编写代码以编程方式重建情境就能了解情境工作的具体情况。
交换此信息的典型方法就是让IDE使用由硬件工具生成的XML文件。 CMSIS-SVD(软件接口标准——系统视图描述)标准就是一个很好的例子。它是基于XML的硬件描述,旨在让调试器支持高度集成的微控制器。CMSIS是一种面向ARM 微控制器的HAL的标准定义,得到了众多厂商的广泛采用。SVD扩展主要针对硬件描述,如寄存器、存储器、外设等,让从事可编程系统开发的人员真正地大获裨益。
10:39:14 上传
图4:这是一小段XML,介绍了赛普拉斯PSoC Creator调试器有关CAN实施中一个寄存器的情况。CAN__ERR_SR寄存器的地址、大小和描述均已定义,在寄存器中有5个字段,定义了名称、大小和存取权限。
共享硬件定义的一个重要因素就是能够定义外设寄存器,进而言之,则能提供面向寄存器中字段的存取权限,从而确保调试器认真对待读/写可修改的位。硬件给我们提供clear-on-read位和zero-to-toggle位以及各种其它晶体管能够感应但是软件很难应付的状态处理接口。只有对硬件进行良好的机器生成定义,我们才能保证用户在外设模块上调试寄存器或个别位时不至于浪费时间,或导致意外结果。
有了可编程硬件的高级视图,我们不仅能检查状态寄存器和错误状态,还能实现更多功能。举例来说,如果硬件支持寄存器控制的开关,能实现外设I/O到器件引脚的灵活路由,那么软件开发人员就能从调试器操控器件的内部布线!有些人听到这里可能感觉有些吓人,不过如果SVD信息正确生成,那么我们就能限制允许的变化,确保“安全的”编辑,比如说数字信号上的多路复用器通道选择或两个物理引脚之间的模拟输入切换。
硬件工具为软件开发人员生成调试信息,有望显著缩短应用开发时间。不仅如此,重要的是,我们还有机会在早期检测出硬件设计错误,因为软件开发人员发现混乱和代码重写的不正常情况下更有可能发现意料之外的行为。
面向可编程器件的完整产品
现在,“完整产品”的概念已得到充分地理解和广泛地接受,也成了成功的重要因素。只有最佳的工具或最出色的芯片已经不够了。我们今天使用的可编程解决方案形式多样:可能是全定制的ASIC,其在高度专业化的解决方案中集成了ARM内核和多个IP模块;也可能是更加通用的平台,其集成了可编程芯片和设计工具,诸如Altera和推出的FPGA解决方案,或赛普拉斯半导体公司推出的PSoC器件等。虽然这些环境千差万别,但都面临着同样的问题——不能将硬件修改有效地迁移到软件领域,从而影响应用开发。
我认为,这个问题的根源在于项目中使用的硬件设计工具和IDE采用了狭隘的方法。像我这样的软件狂人(开玩笑)总喜欢把所有问题都归咎于硬件工具和工程师,但事实上硬件工具和软件工具集都太过偏向于他们特定的领域了。很难见到二者添加了我以上提到的特性,因为这些特性跟其各自的客户好像没什么关系。我相信这种局面正在发生变化,PSoC Creator等产品支持在可编程硬件上进行器件配置同时还集成第三方IDE(如ARM的Keil μVision IDE)的工具会不断发展。在工程师首选的IDE中实现应用开发,同时让工具获得独有的强大信息并控制硬件平台,这显然是更高效进行产品开发、加速产品上市进程的必由之路。与此同时,减少对工程师的折磨也不失为一件大好事!
欢迎分享本文,转载请保留出处: &&&
相关资料下载
相关设计应用如何操作硬件?编程序如何控制硬件?相关的知识有什么?是不是很复杂的一个问题
一般我们所使用的运行在Windows上的软件并不是直接操作硬件的,而是用过Windows API来调用Windows的某些方法来操作硬件
如果你对这方面比较感兴趣,我建议你去了解一下操作系统的相关知识以及Windows API的相关知识
另外,如果是那种非常底层的代码,大部分为c语言代码,大部分是通过位操作来控制硬件的。这种方法非常的麻烦。
其他答案(共1个回答)
如何操作硬件详解
序言
在国内ATM行业很多人对ATMC软件是怎样来操作硬件是不熟悉的。但是,无论你是硬件工程师、软件工程师还是业务销售,如果知道软硬件是怎样交互,对于工作是将有很大帮助。很多硬件工程师和业务销售对这方面不熟悉倒是可以想到的,其实绝大部分的软件工程师也一样懵懵懂懂,因为对于象Diebold、NCR这样的国外公司,操作底层硬件的部分都被国外封装起来,所以也不会真正的知道,导致能够同时理解上层应用和底层硬件的人如凤毛麟角,少之又少,这方面确实需要加强了。
无论如何,要是你知道了ATMC是怎样来操作硬件的,那么对你以后的工作大有帮助,很多人可能也迫切的需要这些知识。本文提到的为普通的Windows平台下的ATMC,其中的流程与你了解的机器可能有所差别,但不会影响你的理解。我们不考虑特殊的硬件,只针对WOSA/XFS里面提到的设备,并且认为ATMC是符合WOSA/XFS标准的。
术语
硬件指令――指ATMC向硬件发送的指令。我们以读卡器IDC来做例子,对于读卡器厂商...
ATM相关信息如何操作硬件详解
序言
在国内ATM行业很多人对ATMC软件是怎样来操作硬件是不熟悉的。但是,无论你是硬件工程师、软件工程师还是业务销售,如果知道软硬件是怎样交互,对于工作是将有很大帮助。很多硬件工程师和业务销售对这方面不熟悉倒是可以想到的,其实绝大部分的软件工程师也一样懵懵懂懂,因为对于象Diebold、NCR这样的国外公司,操作底层硬件的部分都被国外封装起来,所以也不会真正的知道,导致能够同时理解上层应用和底层硬件的人如凤毛麟角,少之又少,这方面确实需要加强了。
无论如何,要是你知道了ATMC是怎样来操作硬件的,那么对你以后的工作大有帮助,很多人可能也迫切的需要这些知识。本文提到的为普通的Windows平台下的ATMC,其中的流程与你了解的机器可能有所差别,但不会影响你的理解。我们不考虑特殊的硬件,只针对WOSA/XFS里面提到的设备,并且认为ATMC是符合WOSA/XFS标准的。
术语
硬件指令――指ATMC向硬件发送的指令。我们以读卡器IDC来做例子,对于读卡器厂商来说,它会提供一个硬件手册,里面有一部分涉及到硬件指令编程。读卡器一般通过串口、USB或其他方式连接到主机箱,如果ATMC向USB口发送一串字节流,即可达到操作读卡器的目的。该串字节流有一定的格式,是由硬件来定义的,比如开头为一个起始符、接着是命令的种类、接着是对应命令的传入信息、最后是校验码。只要ATMC按照读卡器的要求,组织好一串字节流发送到USB口,则一个硬件指令就完成了。读卡器硬件收到该串字节流后,会自己解析,然后进行相应的硬件动作。
SP――下面提到的SP都指符合WOSA/XFS规范的设备驱动程序。
正文
好了,我们开始转入正题了。我们将从ATM上电启动到进入正常的服务来完整的看一下。
打开ATM后,机器上电,然后进入Windows操作系统,这个过程跟普通的PC机差别不是很大。一般厂家会将ATMC放到Windows的“自启动”里面,当Windows启动完成后,ATMC就会自动启动了。
ATMC首先会调用SP的WFPOpen接口,依次打开各个设备,相当于ATMC与各个设备连接起来,同时向各个设备发送初始化的指令字符。你将会在ATM的界面上看到类似画面“系统正在启动,请稍候”,此时你会听到机器的读卡器、机芯等设备在不停的响,这就是硬件在上电启动做初始化动作了。等到所有的机器硬件初始化动作完了后,机器进入下一个流程。
在ATM的各种硬件设备中,有几个设备被称为“必需设备”,一般是读卡器、流水打印机、键盘,但是可能不同的银行要求的“必需设备”有所不同,或多或少都有可能。到底该ATMC的“必需设备”是哪几种,一般ATMC都会对所有的硬件进行编号,在配置信息里面配置哪几个编号是的,从而不会将“必需设备”写死,只需改动配置信息就可以改动“必需设备”了。
为什么对“必需设备”特别强调呢?因为ATMC要想进入正常服务的欢迎画面,一般必须满足下列条件:
1、网络是通的。ATMC会在硬件初始化完后,向主机发送第一个数据包,该数据包可以理解为“网络状态测试包”,如果收到主机的回复,则网络是好的。
2、所有的“必需设备”都是好的。ATMC会在硬件初始化完后,依次调用SPI接口WFSGetInfo,获取“必需设备”的硬件状态,如果所有的“必需设备”都是好的,则
ATM可以使用;只要任何一个“必需设备”的硬件状态返回值为不正常,ATM就不能进入正常服务画面。
如果ATMC程序写的完善些,你可以看到ATMC启动会停在暂停服务状态,画面不停的提示因为网络故障或硬件故障导致不能进入服务。看了上面的,你就知道为什么ATM启动后进入不了正常服务了。当然,不同的ATMC还有其他一些判断条件,不过跟硬件没什么关系。
当所有的条件都好了后,ATMC会进入正常服务状态,显示“欢迎插卡”画面。一进入该画面,ATMC首先向读卡器发送硬件指令,打开读卡器口的闸门,等待进卡,接着向读卡器上面的指示灯发送指令,让其发亮闪烁,提醒客户插卡。如果打开读卡器闸门失败,则读卡器会在返回信息中填上相应的错误提示,SP发送完开闸门命令后,会等待自己发送命令的返回,分析返回数据来确定本次的硬件操作是否成功。如果发现不成功,ATMC就会转到“暂停服务”。这种处理贯穿于整个ATMC,即如果ATMC向某个硬件发送一条指令后,发现其返回错误,则跟进情况会进行处理,如果是“必需设备”错,就要转到“暂停服务”。
此时,ATMC一直在欢迎画面循环,等待一个客户插卡。如果有个客户插卡进来后,读卡器传感器检测到了,就会通知SP,有卡进来了。接着SP向读卡器发送一个关闭闸门命令,将闸门关掉,防止其他的卡再插进来。同时SP会发送一个关闭指示灯的指令,将指示灯关闭。接着SP发送一个读卡的指令,读卡器硬件开始读卡,接着将读出的结果放在一串字节流中,返回给SP,SP会分析该返回字节流,因为其格式都是硬件手册里面定义好的,哪一位表示什么都是固定的。SP根据各个位的意思进行分析,从而知道是否成功,并且该字节流里面还包括1、2、3磁道的数据,SP根据字节流的位置可以将磁道依次取出,放到一个变量中存起来,以便ATMC中使用。读完卡后,读卡器就先停下来,卡保留在里面,该其他硬件工作了。
在没卡插入时,键盘是没有打开的,即你按键是没反应的。当卡插入后,SP向键盘发送命令,通知其打开,等待接收客户的按键。键盘分为两种处理,一种是每按一个键,就向ATMC返回一个按键值;另外一种是一直按几个键后,才一次性返回给AMTC(典型的是输入密码),这些在SP中分别被称为GetData和GetPin。客户按一个键,硬件马上将按键传回SP,也是通过返回字节流的方式,将按键的信息放在字节流中,从而软件才知道客户按了什么键。至于你在功能选择画面,选择是“查询”、“转帐”、“取款”、“存款”还是“改密”,ATMC是怎样知道呢?其实ATM上面的那几个功能键在软件上看,和数字键盘都没有区别,如果客户按了某个功能键,则按键的硬件返回字节流中可能包含一个“F1”,如果客户按了数字键盘1,则按键的硬件返回字节流中可能包含一个“1”,从而软件就可以区分出是按了功能键还是数字键。简单些,就是功能键和数字键都有唯一的编码返回给SP。如果你要是迷惑我按了“F1”,软件是怎么知道我选择了“查询”,而不是“取款”呢?这个问题简单,既然“查询”的按钮是ATMC显示在屏幕上那个位置,ATMC当然会知道哪个功能键对应那个位置的按钮的。
接着,用户进入功能选择画面,“查询”、“转帐”和“改密”没什么好说的,纯粹跟主机通讯,属于纯软件的事,跟硬件没关系。在所有的交易中,我们要记住流水和凭条打印机是要不停的动作的。如果ATMC觉得需要打印流水了,它只是简单的将要打印的内容按照打印机硬件要求的格式组织一下,形成字节流,然后通过串口发送给流水打印机,流水打印机收到这串字节流,会根据开头的几位知道这是个打印命令,打印的内容在紧接着的后面,从而流水就会移动打印头,不停的来回打印,同时打印机的进纸机械模块会配合向前进纸,以便换行。至于打印头怎样移动这些控制,不是SP的事情,是纯粹打印机硬件的事情,SP只管把打印指令扔给打印机,剩下的工作就是打印机硬件的事情了,要知道打印机里面也有控制板和简单的逻辑处理。SP只关心发送打印命令后,打印机是否返回打印成功给SP。这里面还有个异步和同步打印的概念,不过跟硬件关系不大,可以将异步处理放到打印机硬件中,也可以放在SP中。
凭条跟流水差不多,一般只是多了个切纸、送纸命令而已。对于象FORM等概念跟打印机硬件没有半点关系。
我们来看看“取款”和“存款”吧。当客户选择了“取款”后,客户输入取款金额,ATMC会先向主机发送一个报文,将客户的钱扣掉,ATMC等待主机返回报文,如果返回的信息是一切OK,则ATM开始出钞了(我们不考虑是先发报文还是先挖钞的问题,以及逻辑配钞,对于我们讲的内容来说都一样)。
ATMC先向机芯硬件发送挖钞指令,指令中包括每个钞箱需要挖几张的信息。这些信息是SP算出来的,SP会根据自己保存的钞票信息,象剩余张数、钱箱面额,钱箱币种等,进行相应的配钞算法,即算出哪个钱箱应该出几张钱,接着将这些信息组合成机芯要求的字节流送给机芯。机芯收到指令后,开始在对应的钱箱里面挖钞,至于挖钞过程中发现有不合格钞票,是单张回收还是整叠回收、真空挖钞摩擦挖钞之类的特性,跟SP没关系,纯粹是机芯自己的事情,SP不管这些,它只管机芯最后返回的信息是挖钞成功还是挖钞失败,每个钱箱分别挖了几张,回收了几张。接着SP向机芯发送送钞指令,钞票一般会送到机芯堆叠器先放起来,接着SP发送打开出钞闸门命令,打开出钞闸门,以便客户能够拿到钱,同时SP发送命令将钞票从堆叠器送到门口,等待客户把钱拿走。当钱到门口时,ATMC会有个超时,等待钱被拿走。SP会不断发送硬件指令,该指令用于检测钱是否被拿走,硬件接收到该指令后,会利用传感器检测钱是否还在门口。如果某次SP发送硬件指令后,机芯返回信息表明钱已经被取走了,说明机芯的传感器已经检测到钱不在门口了,这时SP会发送一个事件给上层的ATMC,ATMC会调用关闭出钞闸门的命令,该命令传入到底层的SP中,SP直接通过串口向机芯发送关闭闸门指令,闸门关闭,接着SP发送结束取款指令,机芯就做一些最后扫尾的恢复性动作。这时你会听到机芯各个传动机构要响一阵,恢复到正常的状态。
如果客户超时没有拿走钞票,结果差不多,只是在关闸门前,SP会先发送回收钞票的指令,然后再关闸门。至此,一个完整的取款交易完成了,如果交易过程中有些硬件异常,其硬件动作也相差不多,只是中途会直接结束取款操作,返回一个错误信息给SP的。
下面来看看“存款”。当客户选择“存款”后,SP先向机芯发送打开闸门的指令,机芯闸门打开,等待客户放钞。如果客户有钞票放入,按了“确认”键,SP会发送关闭闸门的命令,接着开始发送指令,让机芯验钞模块工作,验钞模块开始验钞。整个验钞过程,SP也是不关心的,SP只管验钞的结果,机芯验完钞后,将钞票放在
机芯中间的临时缓冲区内。如果验钞通过,ATMC发送一个报文给主机记帐,收到主机的确认信息后,SP发送指令通知机芯将缓冲区的钞票收到钱箱里面。机芯通过传送机构将钱送到钱箱里面。至于哪些钱箱送到哪个钱箱,这个是机芯硬件自己要判断的,SP并没有指示哪几张钱必需放到哪个钱箱中。当钱都放到钱箱后,机芯返回给SP一个完成信息,SP再通过事件通知上层ATMC,整个存款过程就完成了。
当客户做完自己想做的交易后,他可以选择结束交易。此时,SP首先向读卡器发送一个退卡指令,读卡器将卡退出。如果在ATMC指定的超时时间内客户没有将卡取走,SP会发送一个回收卡的指令,将卡收到回收槽中。无论是回收卡还是被客户拿走卡,读卡器都会再次打开闸门,同时SP发送指令,让指示灯变亮,又重新进入下一个交易。
好了,到这里为止,一套完整的交易已经完成了。
我们最后稍微看看一些常用的维护功能,就是操作员经常做的加钞、清机等。清机比较简单,一般只是将软硬件中的各种计数等信息复位为0。加钞的过程如下:操作员选择加钞,SP发送指令给机芯,通知机芯做些准备动作,比如有些钱箱是上锁的,必需先解锁才可,不然钱箱拔不出来,就没法加钞了。加钞对应着SP里面的StartExchange命令。这时操作员可以把钱箱拿出来了,然后放好钞票重新将钱箱放好,柜门关好。SP接着发送一个类似于机芯复位的命令,使机芯动作,最后让机芯达到一个可以正常使用的状态。
1.操作系统.空机没装操作系统就是个空机.是不能运行.
2.驱动程序.是硬件需要使用程序.
3.有操作系统就能使用.但要更好发挥电脑全部硬件性能.就...
这个问题看似简单,其实涉及到一些很底层的内容和原理。对于一般计算机爱好者来讲,又没有办法说明白,原因就是我们从来没有考虑过电路在物理上的实现。
计算机软件说到...
顾名思义,所谓手机软件就是可以在安装在手机上的软件,完善原始系统的不足与个性化。随着科技的发展,现在手机的功能也越来越多,越来越强大。不是像过去的那么简单死板...
  红红你好!你问“什么是硬件,什么又是软件?”现试答如下:硬件就好比“珠算盘”,工具性质的,有形的,看得见的。软件就好比珠算的“口诀”--九九表,无形的,起到...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
我是学电子的,然后想往软硬件结合方向发展,应该具体的往哪个方向发展比较好?往软硬件结合的方向发展应该学些什么东西?
扫二维码下载作业帮
1.75亿学生的选择
我是马上毕业的学生,也是学电子的,我当初也在思考和你一样的问题,后来不仅家里反对,老师也反对,毕竟现在做硬件的太少了,基本都要有编程的支持,而且这样毕业基本也没什么公司要的,因为没有工作经验,更谈何结合?我已经放弃硬件转学软件了,如果想结合的话,就做嵌入式或者驱动的开发,这些都是和硬件很贴切的,以后的发展也不错!也就是说这样并不是完全的放弃硬件,而是以软件的学习为主,同时硬件的基础知识也要具备,这样比较有挑战了,但是这是唯一结合的方法了,这个行业的人目前较软件开发人员来比,少了许多,竞争有,但是都是在经验上!经验越多越好!兄弟!听我句劝,以后不会再有直接制作硬件的工程师了,也就是以硬件为主,软件为辅,这些研发都让研究生和博士做了,而且这都需要一定软件的知识的,光给人家做PCB或者protel的活儿在大街上的专业打印店都已经可以代做了,这个没有太多的发展的,除非你考研,做大规模集成的研究,否则不会直接面对硬件进行软硬结合的设计的.我的意思:先用和硬件相关的软件知识充实自己,打个底,然后再看看是不是继续接触硬件知识,如果坚持,后面还有很多的东西要学,如果放弃,就目前所学到的,找个小公司进去等两年后出来,一样是个合格的程序员!我也是看到了我的同学们都找不到工作才艰难做出的抉择,放弃硬件!希望你能够在竞争激烈的今天设身处地的好好反省一下自己,尽快做出适合自己的选择,坚持下去,不要有放弃和质疑的念头!因为马上大学毕业的我们没有时间,经历和工作经验来空谈未来的,加油!在硬件和软件的侧重点上选择吧!相信你自己是可以的~
毕竟现在做硬件的太少了????????????
直接面向硬件开发或者研发的现在一般都是研究生,而且研究生的专业一般都是大型电路集成或者微电子这两个,其他人没有工作经验和专业的知识根本就满足不了就业的需求。。我去面试过,问的都是新技术,书本上学的都是90年代的成熟技术,基本上一问三不知
所以我的意思是说,偏硬件的软硬结合这碗饭不好吃,真正做出来的不是很多。。
偏硬件的软硬结合的意思:以硬件的设计和开发为主,软件编写为辅,主要编写整体的框架,做到硬件整体可以启动运行
偏软件的软硬结合:以裸板或者半成板作为对象,然后对其的接口和部分功能进行驱动的编写,完成硬件的整体化运行
那你的意思是直接往软件方向发展?但是这样的话,比得过专门学软件的学生么?“光给人家做PCB或者protel的活儿在大街上的专业打印店都已经可以代做了”这个会不会夸张了点?
只要有原理图,街边上的专业打印店,有的里面有可以代工的+打印的专业人士,这已不是什么新鲜事了,多注意观察你会发现,也可以进去问问,反正我们这里就目前而言我已经看到不到五家店了,店面很大,牌子在门口有写,进去打听人家也是学过这个的,只是不专业而已,不能设计但熟悉软件操作和制作过程,一月3000收入
我的意思是进入软件行业,如果你酷爱硬件,可以较深入的学习驱动知识,里面涉及的例如各种端口、功能、管脚等的驱动,做出来就等同于是完成了硬件最终的一体化,同时深入的研究硬件原理分析和相关知识,比如数电,模电,电微分,电路分析等。。以后以驱动为辅可以帮助你进入硬件研发部门,因为你了解其中的软件构架,又懂得硬件原理,若有时间和精力你可以个人完成项目,这样独当一面的技术人员,当然公司注意力就不会在学历只是本科上了,当然这个是一个踏板,如果你只是想毕业就进硬件方面学习,那就要苦心研究电路了,达到入会贯通,建议你多看看电子公司面试题,万变不离其宗,最新的技术也是演变过来的,只要你不断的学习和了解,就可以进入这行业
专门学习软件的学生?你认为学生在大学真正能学出来的有几个人呢?进入这个软件行业,起点都是一样的,只不过他们能够比你多了解一些东西而已,软件的行业需要的是经验,而不是投机取巧的小方法,了解的多些没有坏处,但是少了解也不是什么大事,毕竟只要有基础就可以上岗,上岗后会有人详细的教你如何去做项目。程序写出来是给别人看的,大体的东西都一样,只是看你有没有这个思维方法,刚开始痛苦的要命,慢慢就好了,掌握了思维套路,按套路出牌自然就会了
说说我吧,1月找的培训班,每天9小时浸泡现在达到上岗水平了,甚至比一般毕业生混的可以,可以说我从零基础零兴趣到现在,没办法,被逼的!我以前很喜欢研究显卡和主板,上面的原理和故障我玩的很灵,但是多次面试后我只能被逼到去联想接故障热线,HR说月薪00,5年6000,我设想未来通过3年硬件故障积累和学习,进入航嘉的硬件工程师部学习模组,最后进入华硕设立的硬件高级工程师全国选秀,但是联想里面的老员工干了10年,依旧是热线,这给我的触动很大,加上目前硬件开发前景不清晰、硬件公司中国只有那几家,而且工作压力很大!就算学出来竞争力也不如有经验和学历的人。而网络开发,尤其手机系统、安卓苹果系统及游戏十分盛行,所以我断然放弃硬件转战网络开发。。硬件只能作为爱好了。。我准备5月找公司
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 随时随地 英语 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信