嵌入式软件测试
数据输入与输出,不像pc测试那么好观察和控制,这就是嵌入式软件的弱交互性决定的。
嵌入式软件的测试环境与开发环境是很接近的,有时甚至就是一样的,多与你们的开发人员交流吧。
他们应该协助测试搭建环境的。
你说的这些软件测试,与硬件的相关性都很强。
开发一般会封装一些接口供上层应用使用,应用就无需关心底层硬件的实现细节了。
我想你要测试的就是这些接口吧。
拿定时器来说,开发应该会提供开启定时器的接口,通常包含一个回调函数,定时时间到后就会触发该回调函数,进入超时处理。
如果你们有Trace工具支持片上调试,那么可以在超时处理函数中设置断点,在测试程序中调用该接口开启一个定时器,看定时时间到后有没有到达断点就OK了。
如果没有Trace工具,可以在超时处理函数中添加打印语句来看。
同时开启多个定时器的情况也要测到(询问你们开发人员最多可同时开启几个,应该有限制的)。
当然你的测试程序也是要一起编译并烧录到ROM里的。
我以前做这种测试,在PC上是有工具可以与嵌入式软件通信的,控制测试程序(用例)的执行并记录测试结果。
是我们公司工具组做的。
各个公司、不同产品情况不同,仅供参考吧。
什么是嵌入式软件开发如何学习
展开全部 随着嵌入式软件系统结构越来越复杂,嵌入式软件的开发已成为复杂的系统工程。
早期的嵌入式系统中,软件与硬件密不可分浑然一体,开发者多是电子工程、自动控制等领域的工程师,软件基本上都是用汇编语言实现。
跟着软硬件技术的发展,人们对嵌入式系统的功能要求越来越复杂(好比,手机可以照相、摄影、播放MP3,还可以上网读新闻、玩游戏、购物等),而机能(好比,可靠性、安全性、响应速度、功耗等)要求也越来越高,与此同时,嵌入式软件的开发与硬件仍旧密不可分,从软硬件系统与平台选择、设计、开发到测试与集成,整个过程都是软硬件并行交互进行,这样嵌入式软件开发已经成为一项很复杂的系统工程,嵌入式软件的开发必需遵循系统工程和软件工程的要求。
这是在度娘上面摘的一段 至于如何学习 题主可以选择自学 也可以选择培训班至于培训班就不多说自学的话,题主直接在麦子学院这类IT在线教育网站上面找一套完整的视频教程 按照他们的学习大纲学习就行重要的事情说三遍 完整的视频教程 完整的视频教程 完整的视频教程...
嵌入式软件测试怎么样?
你现在还是实习生,为什么要把自己的定位放在测试上呢?你既然是学开发的,那就应该走开发的路,走测试的路,在国内行不通,工资低,并且地位也不高。
自己你有点开发的基础了,应该去自学嵌入式开发!!!这对你以后才是比较好的路。
学习嵌入式,该学习什么基本的知识呢?首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。
很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。
我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。
其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。
应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。
还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。
很多人看不进书,那就去看看视频吧。
视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。
我也是这样一路走过来的,不过我这人比较懒,我看不进书,一看书我就想睡觉,所以这几年我都是看视频过来的,现在也算学有所成,但也不敢说是高手吧。
我在网上看到,有人把自己学习嵌入式的视频总结出来,嵌入式系列实践和视频教程,大家可以看看网址http://www.003r.com/embedvideo.htm 我仔细看了觉得很不错,我本来也想整理下,可是奈何我自己的电脑硬盘空间才40G,没有办法,时间也是不够,心有余而力不足,我不是在帮他做广告,虽然要花钱,我觉得算不错,至少自己不用去整理和花大量的时间去找资源,当然如果网上有的下,你网速和硬盘都够的话,我建议大家自己网上下也好。
想想我自己该开始学的时候,那时视频资源少之又少,我买书和买视频至少花了几千块,但是我觉得那很值,至少我现在赚回来了很多知识。
最后,希望这篇文章对热爱嵌入式,想致力于嵌入式开发的朋友有所帮助。
送给大家一句简单而又朴素的话,坚持就是胜利,贵在坚持,也可以看看如何坚持嵌入式学习
嵌入式开发软件和硬件学习
我希望我能为楼主答疑解惑1:嵌入式软件开发 驱动和系统是比较难,毕竟需要一些硬件知识,相对应用软件可能工资高点,但是不能说哪个更好,因为做应用有个优势,你会对某一个行业很了解,也许以后你就可以自己做了。
2:嵌入式硬件开发和软件开发也没有办法说哪个更好,累不累在于你要做什么活,你在什么公司做,在A公司也许软件的比较累,B公司也许硬件的比较累,这不是绝对的,工资也是差不多,关键还是在于个人能力。
3:单纯从就业角度来考虑,我认为是软件的机会比较多。
因为一般公司软件的人员比硬件都要多的多。
软件的工作量相对比较大,所以需求也比较大。
4:学习嵌入式的课程,说来说去还是几个基础的课程,建议楼主可以到嵌入式学习网看看,里面有个学习指导,有很多很好的文章,我摘抄一篇文章给你看看,关于如何学习嵌入式的。
首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。
很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。
我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。
其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。
应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。
还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。
很多人看不进书,那就去看看视频吧。
视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。
我也是这样一路走过来的,不过我这人比较懒,我看不进书,一看书我就想睡觉,所以这几年我都是看视频过来的,现在也算学有所成,但也不敢说是高手吧。
我在网上看到,有人把自己学习嵌入式的视频总结出来,嵌入式系列实践和视频教程,大家可以看看网址http://www.ic120.com/embedvideo.htm我仔细看了觉得很不错,我本来也想整理下,可是奈何我自己的电脑硬盘空间才40G,没有办法,时间也是不够,心有余而力不足,我不是在帮他做广告,虽然要花钱,我觉得算不错,至少自己不用去整理和花大量的时间去找资源,当然如果网上有的下,你网速和硬盘都够的话,我建议大家自己网上下也好。
想想我自己该开始学的时候,那时视频资源少之又少,我买书和买视频至少花了几千块,但是我觉得那很值,至少我现在赚回来了很多知识。
最后,希望这篇文章对热爱嵌入式,想致力于嵌入式开发的朋友有所帮助。
送给大家一句简单而又朴素的话,坚持就是胜利,贵在坚持,也可以看看如何坚持嵌入式学习!最后也祝愿楼主学业顺利,也希望楼主早点学好嵌入式
单片机嵌入式系统软件的几种复位方式
飞思系列的8位单片机没有特定的控制寄存器可以实现软件复位,当程序运行过程中代码需要强行产生一个复位时必须通过一些软件技巧实现:本文引用地址:http://www.eepw.com.cn/article/148513.htm软复位,程序从头运行,硬件不复位。
复位脚无复位脉冲输出这可以通过直接获取复位向量的方式来实现:void ForceReset(void){uniON {void (*vector)(void);byte c[2];} softReset;softReset.c[0] = *(byte*)0xFFFE; //get the reset vectorsoftReset.c[1] = *(byte*)0xFFFF;softReset.vector(); //re-STart the code flow}硬复位,程序从头运行,内部所有硬件模块和寄存器同时复位,复位脚有复位脉冲输出这必须结合FSL 8位单片机内部的架构特点来实现:1)COP(看门狗)复位这是最简单的一种方式。
程序死循环然后等看门狗作用产生复位。
你必须事先启动看门狗功能,复位过程将有少许延时。
void ForceReset(void){DisableInterrupts; //disable all interruptfor(;;); //wait for watch-dog reset}2)非法寻址复位当指令对某一个不存在的内存空间进行寻址操作时单片机会产生硬件复位。
void ForceReset(void){asm JMP 0xD000; //jump to illegal address will result a RESET}注意不同芯片其有效内存空间配置不同,具体地址需参考芯片数据手册做适当调整。
3)非法指令复位当执行一条不存在的指令编码时单片机会产生硬件复位。
这里又可以分两种手段:a) 利用“合法”指令在特定配置模式下的“非法性”,例如STOP指令。
如果在芯片的配置寄存器SOPT中设定STOPE位为0禁止STOP指令,你若再执行STOP就会认为是非法指令从而立即产生复位。
void ForceReset(void){asm STOP; //illegal STOP will result a RESET, note SOPT_STOPE must be 0}如果你的应用中正常情况下不会用到STOP,就可以用这种方式。
如果你本来就要用STOP指令就不能用这种方式产生复位,因为SOPT寄存器在复位后只能被写一次。
b) 人为制造非法指令然后强行运行。
这是比较通用的一种方法,这个S08内核系列均可适用。
在单片机的指令表中确认一条不可能出现的指令编码,例如0x9E10,将其填入RAM中然后强制运行,即可立即产生复位。
void ForceReset(void){byte illegalCode[2];illegalCode[0] = 0x9e;illegalCode[1] = 0x10; //illegal instruction((void (*)(void))illegalCode)(); //execute illegal instruction will result a RESET}
什么是嵌入式软件开发
根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
不过上述定义并不能充分体现出嵌入式系统的精髓,目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
http://baike.baidu.com/view/6115.htm
嵌入式实时系统,什么是嵌入式实时系统
嵌入式实时操作系统(Embedded Real-time Operation System,RTOS)。
嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”,是一种以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
而Android是一种基于Linux的自由及开放源代码的操作系统,并不是嵌入式,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由Andy Rubin开发,主要支持手机。
2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码
嵌入式软件系统的构成,嵌入式开发环境搭建的步骤有哪些
1 GECMlO开发板硬件构成 ARM处理器是一种支持16/32位双指令集的高性能、低成本、低功耗的R ISC微处理器,目前已经占领了75%以I:的32位RISC嵌入式产品f仃场。
本文所选用的ARM920T微处理器属于中端产品,应用也十分广泛。
$3C2410是32位低功耗RISC宏单元,其工作频率为203 MHz,同时支持Thumbl6位精。
简指令集,从而能以较小的存储空间需求,获得32位的系统性能。
64M字节的SDRAM,由两片K4S561632组成,工作在32位模式下;64M字节NAND Flash,采用的是K9F1208,可以兼容16M,32M或128M字节;10M以太网接口,采用的是CS8900Q3,带传输和连接指示灯;2路UART串行口,波特率可高达115200bps,并具有RS232电乎转换电路Embedded·ICE(20脚标准JTAG)接口和并口式jTAG接口,支持ADS,SDT软件的卜.uk/pub/armlinux/toolehain/cross-2.95.3.tar.bz2 2)cross-2.95.3.tar.bz2包的安装步骤 a.#mkdir/mr/local/arm; b.#cp CROSS一2.95.3.tar.bz2/usr/local/ann; C.#tar jxvf crog$一2.95.3.tar.bz2; d.添加环境变量:在文{牛/ete/bashrc文件最后添加: export PATH=/usr/local/arm/2.95.3/bin:$PATH: e.工具链安装完成。
2.3配置NFS服务的步骤 NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上。
并且作为其他计算机的一个目录,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。
NFS的使用分服务器端和客户端,其中服务器端提供要共享的文件,客户端通过挂载“mount”这一动作实现对共享文件的访问操作。
下面主要介绍GEC24 10开发板的Linux系统与虚拟机的LintLx通过NFS实现文件共享的方法与步骤: 1)在虚拟机linux配置nfs服务,编辑nfs配置文件/etdexports,设置共享目录如:vi/etc/exports,添加:/root/nfs—share·(rw,sync,no—root—squash)。
rW表示允许下位机读写该目录,no_root_squash允许下位机以主机root用户身份挂载根文件系统。
2)在虚拟机linux启动NFS服务:(修改配置文件后就需要蕈新启动施服务)#/etc/init.d/nfs reSTart或者用命令:#service nfs restarto. 3)防火墙的关闭。
选择系统设置一》安全级别,将安全级别改为“无防火墙”。
4)用交叉网线连接PC机(虚拟机)与开发板,目的让两个linux处在同一个网络内。
开发板的ip地址是:192.168.2.223,因此配置虚拟机ip为192.168.2开头的ip地址,如可用下列命令配置:#ifcONfigethO 192.168.2.23。
5)在开发板linux系统中挂载虚拟机linux的NFS共享目录,执行下列命令:#mkdir/tmp/nfs#mount—t nfs一0 nolock192.168.2.23:/root/nfs—share/trap/nfs。
2.4交叉调试器的制作 2.4.1交叉调试器的结构 程序的调试足检杏程序正确性、可靠性、稳定性的重要手段,也是应用程序开发必不可少的组成部分。
嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。
本地软件开发调试器与被调试的程序往往运行在同一台计算机}:。
而嵌入式软件开发过程中,调试时采用的是在宿主机和目标机之间进行的交叉调试。
调试器运行在宿主机,但被调试的进程却是运行在目标板。
调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
2.4.2制作交叉调试器的方法 1)解压源码包:tar zxf gdb一6.0.tar.gz 2)配置:cd gdb一6.0 mkdir build..arm..1inux cd build..arm..1inux ../configure--target=arm·linux一一prefix=/usr/local/arm/2.95.3/ 3)编译:make 4)安装:make install 在/usr/locaL/arm/2.95.3/bin/目录下生成alTfl-linuxgdb工具 5)编译生成针对f1.Eln处理器的gdbserver a.进入sdb源代码包中的gdb$erver目录 cd sdb-6.0 cd gdb/gdbserver b.配置生成gdbserver chmod U+X configure CC=arnl—linux—gcc./configure一一host=arm-linux c.Make,生成gdbserver、gdbreplay 6)通过凼,将gdbserver/gdbreplay到目标板中 7)启动目标板上的gdbserversabserver 192.168.1.88:2345 cross-teat其中192.168.1.88是目标板的IP地址。
2345是任意指定的端口,也可以是其他端口。
8)启动宿主机端arm.1inux-gdb调试器在宿主机的工作目录中有对应的程序和源文件 #arm·hnux-柚CI'OS8一teat (gdb)target remote 192.168.1.88:2345 连接远程gdbserver (sab)b main 设置断点 (Sdb)C运行
转载请注明出处51数据库 » 嵌入式软件的控制方法
王子不爱灰姑娘