嵌入式地插步步高i8哪有的卖卖的

成都华域国盛科技有限公司-嵌入式数字娱乐客厅系列,多媒体弱电组合面板系列,多媒体弱电面板模块系列,多媒体弱电面板一体化系列,多媒体免焊地插模块系列,HDMI双绞线延长分配共享系列, * 鼠标、键盘、USB信号延长, * 高清VGA音频延长器分配系,高
成都华域国盛科技有限公司&
公司基本信息
&&&&成都华域国盛科技有限公司是一家拥有国际化背景的高新技术企业,由留学归国的高科技团队、多名大学教授及博士鼎立支持建立的,与四川大学、电子科技大学、中科院等单位有密切的合作关系,专门从事数字家庭、嵌入式系统、网络通讯、SoC芯片、电脑周边设备产品研发和生产的高科技企业。
&&&&总部位于成都国家级高新技术开发区,在中亚、北京、上海、深圳等地设有分公司,具有研究、开发、生产、销售的雄厚硬件资源和有效的软件管理模式。近年来,我们已经成功推出:&嵌入式数字娱乐客厅系统系列、高清HDMI延长分配系列、高清VGA音频延长分配系列、高清色差延长分配系列、键盘鼠标、USB延长系列、多媒体弱电面板模块系列、多媒体弱电面板系列、多媒体弱电面板一体化系列、企业多功能服务器软件、基于短信的远程监控系统、基于短信的移动搜索平台、数字化智能仪器仪表平台、嵌入式Linux智能手机平台、税控机51核SoC芯片、家庭网关SoC芯片等产品&,广泛应用于家庭、电信、政府、税务、公安等各个领域,&强大的功能和卓越稳定的性能深受广大客户及经销商青睐。
&&&&发展高科技产业,为民族复兴、国家强盛、社会和谐提供高品质服务的企业经营目标;秉承“科技成就梦想,创新成就未来”的企业宗旨;奉行“客户第一,以人为本”的企业文化;使公司在同行业中脱颖而出,赢得了政府和客户的一致好评。&
立足成都,辐射西南、西北、华中、华北、东北、华南等全国七大区域,并积极开拓海外市场,通过专业统一的销售和服务平台为客户专业高效的服务。
&&&&我们一直致力于成为中国最强的家庭网络、嵌入式系统及SoC产品的研发厂商之一,为提高民族IT产业竞争力、打造新一代自主知识产权的民族品牌而坚持不懈地努力!
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
?(09月10日)
共 15 条信息,当前显示第 1
- 15 条,共 1 页
主营产品或服务:
嵌入式数字娱乐客厅系列,多媒体弱电组合面板系列,多媒体弱电面板模块系列,多媒体弱电面板一体化系列,多媒体免焊地插模块系列,HDMI双绞线延长分配共享系列, * 鼠标、键盘、USB信号延长, * 高清VGA音频延长器分配系,高;
企业经济性质:
私营有限责任公司;
经营模式:
员工人数:
公司注册地:
主营行业:
插座,电脑相关用品,其他未分类
主营市场:
主要经营地:
四川省成都市高新区益州大道都会路6号都会路苑1-1-1604
年营业额:
人民币 500 万元 - 700 万元
法人代表/负责人:
成立时间:
经营品牌:
注册资金:
主要客户:
开户银行:
管理认证体系:
质量控制:
是否提供OEM服务:
研发人数:
成都华域国盛科技有限公司
先生 (经理)
电  话:
传  真:
移动电话:
在线联系:
公司地址:
中国四川成都市四川省成都市火车南站西路25号上锦雅筑2-1-4-5
邮  编:
公司主页:
免责声明:
以上所展示的信息由会员自行提供,内容的真实性、准确性和合法性由发布会员负责。 对此不承担任何责任。
主营行业1:
主营行业2:插入式熔喷滤芯买卖市场
价格:面议
价格:¥2000
价格:面议
价格:¥25
价格:¥100
价格:¥5000
价格:面议
?首先要看自己的要求,选择适合的插入式熔喷滤芯样品;其次要看插入式熔喷滤芯价格,货比三家吧;最后可以顺便了解更多插入式熔喷滤芯商机。如果能融合在一起,就完美了!基于GCC的嵌入式程序插装技术-
基于GCC的嵌入式程序插装技术
名称:基于GCC的嵌入式程序插装技术   本文介绍一种通过分析和修改GCC编译工具,实现程序插装的新方法。该方法具有批量自动插装,插装与编译连接紧密结合,适用语言广泛等优点。最后具体讨论了如何在ARM嵌入式程序中实现程序插装,并给出修改GCC的源代码。
  程序插装(Program Instrumentation)概念最先是由J.G.Huang教授提出,是借助往被测程序中插入操作(称为“探针”),以便获取程序的控制流和数据流信息,从而实现测试目的的方法。在软件动态测试中,程序插装是一种基本的测试手段,应用广泛,是覆盖率测试、软件故障注入和动态性能分析的基础技术。
  GCC(GNU Compiler Collection)是一个高度优化,高度可移植,广泛使用的编译系统。它能处理多种语言,包括C/C++、Fortran、Java和Pascal等多种语言前端,而且后端支持几乎所有的处理器结构。GCC作为源码开放的软件,人们可以自由修改和使用;加入插装模块后,在GCC所支持的语言中都可插入相应的测试代码(这里只介绍C语言的插装模块)。本文将详细叙述如何修改GCC,使其在编译每个C函数时,分别将各个形式参数连同该函数名传递给一个指定函数。该指定函数的返回值赋予原来的形式参数,从而可以人为控制被插装函数的每个参数实际值,进而完成各种规则下的测试。
1 GCC编译流程分析
编译器的工作是将源代码(通常使用高级语言编写)翻译成目标代码(通常是低级的目标代码或者机器语言)。在现代编译器的实现中,这个工作一般是分为两个阶段来实现的:
第一阶段,编译器的前端接收输入的源代码,经过词法、语法和语义分析等得到源程序的某种中间表示方式。
第二阶段,编译器的后端将前端处理生成的中间表示方式进行一些优化,并最终生成在目标机器上可运行的代码。
GCC编译器以一个函数为单位对经过预处理的输入源文件进行编译处理。根据GNU Bison(一个类似YACC但功能更强大的文法分析工具)生成的语法分析程序,前端完成语法、语义分析,建立语法树,并转换成中间代码。GCC内部使用了一种能对实际的体系结构做一种抽象的,与硬件平台无关的语言,这个中间语言就是RTL(Register Ttansfer Language)。通过修改源程序的RTL,可以改变、删除源程序,包括插入所需要的代码,由GCC后端处理并最终输出对应硬件平台的汇编码,源程序无需手工修改便可实现插装功能。
GCC的入口点main函数在文件main.c中。此函数非常简单,只有一条直接调用toplev_main函数的语句。toplev_main函数是在toplev.c文件中定义的,以下我们只关心与编译有关的源码,其他的暂时忽略。toplev_main中最重要的是调用了do_complile函数,这个函数从名字看就是做编译工作的;而在此之后,toplev_main函数就返回了。dD_compile函数也是在tokv.c中定义的,其中真正进行编译工作的是调用compilte_file函数。compik_file函数最终调用了一个钩子函数来分析(parse)整个输入文件:
(*lang_hooks.parse_file)(set_yydebug);
这里的lang_hooks是一个全局变量,不同语言的前端对此赋以不同的值。对C语言来说,这条语句相当于调用了c-opts.c中的c_common_parse_file函数。c_com-mon_parse_file中调用了c-parse.c中的c_parse_file函数;在此函数中又调用了同文件中的yyparse函数,该函数负责解析C语言源文件,并转化为特殊的语法树结构。该函数是GNU bison将YACC转变为C语言而自动生成的,所以这段代码阅读起来比较困难,但我们并不关心语法分析的细节。在完成函数体的分析后,利用已经建立的tree结构生成RTL,优化后最终输出汇编码;自此C函数的编译就算结束了,这些是由yyparse调用finish_function函数完成的。finish_function函数中最重要的函数是tree_rest_of_compilation(定义在tree_optimize.c中),它是真正实现上述功能的函数。为了说明它所做的具体事情,我们将该函数做了删减,保留了关键的地方。
将函数各个部分展开成RTL形式后,调用函数rest_of_compilation将RTL输出为汇编码。至此,得到了一张清晰的GCC编译时的函数调用路线。
2 基于GCC的程序插装技术
根据插装测试的要求,需要在函数开始时为每个参数调用钩子函数,并用钩子函数的返回值更新参数的值;同时,将被插装函数的名称压入函数本地栈内,作为该函数的一个匿名本地变量,只用于传递给钩子函数。从上面列出的tree_rest_of_compilation函数源码得知,负责建立被编译函数参数和返回值的函数是expand_function_start,定义是在文件function.c中。expand_function_start中处理函数参数和返回值的函数是assign_parms,这是需要特别关注的函数。
斜体加粗的部分是增加的代码。在for循环前,获得当前编译的函数名(见源码中①位置);但暂时不能输出到函数的RTL链中,因为本地栈要在所有参数传递完毕才完全建立起来。在for循环体结束前,记录下函数参数的一份拷贝(见②),最后调用。insert_function_name_local函数,将当前函数名插入本地栈,并且修正栈指针(见③)。经过以上修改,得到了插装所需的所有信息,包括函数参数和函数名称的RTX表示。GCC将函数编译后生成的RTX表示以链表形式组织,最后一次性把这个RTX链表输出为后端平台的汇编码。完成这项工作的是rest_of_compilation函数,所以在调用rest_of_complilation函数前插入我们的RTX,最终完成插装,由函数inject_rtl负责完成。
3 APCS与程序插装实现
编译器必须以一套统一的方法编译函数的定义和调用过程,才能确保不同语言编写的函数能相互调用。规定这些细节的便叫作“函数调用规范(Procedure Call Stand-ard)”。ARM体系结构定义了自己的函数调用规范――ARM函数调用标准(ARM Procedure Call Standard,APCS)。虽然APCS不是强制性的,但实现APCS并不困难,而且可获得统一的二进制兼容的好处,所以大部分的编译器都实现了APCS,其中包括GCC。
APCS中函数传递参数的定义如下:
◇前4个整数实参(或者更少)被装载到r0~r3。前4个整数实参(或者更少)被装载到r0~r3。
◇前4个浮点实参(或者更少)被装载到f0~f3。
◇如果参数为双字(8字节),就必须从偶数寄存器开始放置。
◇如果一个参数不能完全放入寄存器中,则超过的那部分拷贝到栈中。
其他任何实参(如果有的话)存储在内存中,用进入函数时紧接在sp值上面的字来指向。换句话说,其余的参数被压入栈顶。所以,要想简单,最好定义接受4个或更少的整数参数的函数。
本文所述的插入函数只有两个整型形参,所以调用时只需将两个实参分别传入ro和rl。GCC提供emit_li-brary_call函数用来生成函数调用的RTL码,GCC将按照APCS产生正确的函数调用汇编码。
为便于检查插装效果,用经过修改的GCC编译一段简单的C语言程序。该程序为一个独立函数foo,接受两个整数类型的参数。
从GCC输出的汇编码可以看到,foo函数的两个参数都经过钩子函数pt_hook_partns的处理更新;在pt_hook_parms函数内,可以根据测试算法返回不同的边界值,从而达到测试的目的。依照此方法,一个实际程序经过插装后,在ARM模拟器上顺利运行,并取得预期的测试效果。
本文详细地论述了修改GCC增加插装功能的实现方法。按照这样的思路,成功地实现了基于ARM7芯片的嵌入式系统的动态参数边界测试,达到了预期的效果。本文所述的插装函数比较简单,没有区分参数的类型,所有参数均按照一个字大小来处理;下一步的工作是细分参数不同类型,插装不同的处理函数。作为一种通用的插装方法,在此摹础上.通过识别不同的插装点和插装不同的函数,可以实现函数调用栈检查,程序覆盖率测试,获取函数实际执行时间等需要插装技术作为基础的功能。
专利技术分类您可能感兴趣的产品
访上海科恒实业发展有限公司销售经理孙金祥正泰电工 五孔地插 二三眼地插 10A 嵌入式 地面插座 全铜特价
价格:¥112
推荐商城:
商品描述:
分类:接线板&
品牌:正泰&
折扣:特价&
更多和相关的宝贝分享请点击看看
相关热门标签}

我要回帖

更多关于 哪有猴子卖 的文章

更多推荐

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

点击添加站长微信