【VC++开源代码栏目提醒】:网学会员鉴于大家对VC++开源代码十分关注,论文会员在此为大家搜集整理了“自主研发的嵌入式C语言编译开发系统 - 会议论文”一文,供大家参考学习
2007年中国嵌入式系统年会暨中国嵌入式系统产业链建设国际论坛
论文集● 培训地点较少四、WinCE培训的优势 虽然嵌入式Linux有
免费、开源、支持软件多、呼拥者众多、成本低等特点:但是 Linux本身不是~个为嵌入式
设计的操作系统,不是微内核的,并且实时性不强。
而且 入门较难,开发难度稍大,若是做为本科生教学将会花费许多时间在对Linux系统的熟 悉上。
嵌入式Linux没有任何技术支持,而且使用的每个组件都不是一个统一的机构发 布的,各自的匹配性较差,一旦某个库的版本不对,可能直接导致整个系统的崩溃。
另 外若是开发项目中移植遵循GPL协议的
开源代码,那么也就意味着需要将自己的源代 码给公开出去,这个基本上是许多企业不能接受的。
所以相对于嵌入式Linux,winCE有以下几个优点: 1. 开发环境界面良好,只要用过VC++就可以很快的掌握在WinCE下的开发过 程,降低了开发的复杂度和减少了开发时间; ‘ 2. 系统稳定,整个WinCE都是由同一个机构(微软)完成的,所以系统的健壮 性可以得到良好的保证。
3. 若是使用正版的WinCE,那么可以获得微软强大的技术支持,减少绕弯路的 可能。
4. 在消费类电子中,需要尽可能的缩短研发时间,达到产品及早上市,抢占市场, 所以使用保险的WinCE,可以达到事半功倍的效果。
5. 对于高校教育,更低的
学习门槛有利于学生早日跨入嵌入式行业,而且 Windows的最终界面可以极大的激发学生学习的乐趣,而且从WinCE转型 到Linux下也是一个非常常见的过程。
6. WinCE支持ARM、MIPS、X86、SH3/4,可以跟微软最新的Microsoft Visual Studio 2005联合使用 7. 通过微软官方授权的培训机构(例如:亿道电子)可以为完成培训的学员发放 《微软WinCE学员证书》 总之,嵌入式产业的发展离不开人才的培养,而当前的发展形式对嵌入式人才 来说是一次非常好的机遇。
无论是高校还是培训机构,都应该承担起嵌入式人才培 训的任务。
同时提高对于讹CE培训的重视,必然会加快我国的嵌入式前进的步 伐。
作者简介 喻继粲,亿道电子资深技术工程师兼培训讲师,有多年的Linux下和WinCE下的嵌入式项目开发经验。
自主研发的 嵌入式C语言编译开发系统 许琪一、 引言 在国内我们还没有一家公司或者研究所针对嵌入式系统开发出相关的高级语言编译器 (比如C语言),而在这方面比较知名的是德国的Kcil公司和瑞典的IAR公司从事嵌入式高级语言的编译器的产品开发
工作。
(注:keil已经被ARM收购,为32位平台做准备) 经过三年的开发,我们开发出国内第一款针对嵌入式芯片的c语言编译器,打破了由外国公司垄断的局面,大家也知道一种状况,硬件的发展非常迅速,而软件的发展相对滞后,尤其是在芯片领域,我国的系统
软件工具由于得不到很好的发展,而限制了芯片的发展。
我们的编译器不是移植GCC而来,因为我们已经花时间移植过,很不理想(当时是针对一款8位的芯片)主要因为GCC是一款通用编译器,支持可移植目标主机的定向,但是对于嵌入式芯片的资源空间的有限性,移植后GCC代码产生的代码量比KEIL和IAR产生的多很多,另外GCC不支持增加扩展关键字(需要修改GCC前端到后端,工程量巨大),最终我们还是不得不放弃。
从移植GCC我们学到了很多,尤其是在指令翻译部分给我们很大的启发。
所以我们吸取经验自己重新开发,并且总结了很多经验,终于拥有了自主知识产权的高 1032007年中国嵌入式系统年会暨中国嵌入式系统产业链建设国际论坛
论文集级语言编译器,对于推动国内芯片产业的发展,有着积极的作用,因为高级语言编译器是给开发者用来开发芯片资源的强有力工具。
有了这样的自主工具,国产芯片才有可能抛开兼容或者模仿国外芯片的体系结构和指令集。
国外嵌入式做的非常好的编译器公司由德国的Keil和瑞典的IAR,他们也是我们的榜样,通过程序编译后的代码尺寸对比,我们编译器产生代码尺寸已经和他们不相上下,但是由于时间和人员的关系,支持的芯片种类还没有他们多,不过我们可以根据具体芯片来定制。
二、 编译开发系统 编译器开发
系统是一套集成的开发环境,提供给相关程序开发人员使用,包括调试过程等。
比如我们常说的VC,GCC等,它们都是大型的编译系统。
编译开发系统中的核心是编译器。
什么是编译器?编译器就是将高级语言编写的程序等价的翻译成机器代码的工具。
“等价”,对于编译器来说是一个根本性的要求。
比如不能将1+1翻译成等于3一样的概念,否则会导致程序出现致命性的错误。
我们的C语言编译开发系统具有如下特点: (一)、扩展关键字支持: 支持C89标准,在此基础上针对嵌入式开发的特点增加如下关键字 ◆ 存储器类型:code data idata bdata: ◆ 数据类型:bit sbit sfr sfrl6; ◆ 绝对地址:at. ◆ 中断:evinterrupt exception swinterrupt trap interrupt, ◆ 寄存器组:using: ◆ 模式选择:user system generic: 优先级:priority: ◆ 嵌入式汇编:asm ◆ asm endasm; (二)、调试功能支持: ◆ 支持step in、step ovcr、step out、run to cursor、go等调试手段; ◆ 支持多断点设置,取消所有断点,以及退出调试保留原有断点设置; ◆ 支持对PC指针、栈指针、通用寄存器和PSW的查看: ◆ 支持对CODE段(N、伦厦)、DATA段、BIT段、STACK和SFR的查看和值修改; ◆ 支持C源程序窗口和汇编窗口的同时跟踪调试; ◆ 支持对变量的watch
查询。
(三)、工程管理支持: ◆ 工程窗口中支持建立多个工程,包括C语言工程和汇编语言ASM工程,可以使用 户在同一个IDE窗口中开发和维护多个Cos工程; ◆ 支持对CODE(小『、俸嗄)、RAM、SYSTEM STACK等参数的设定; ◆ 支持对C编译阶段、汇编阶段和连接阶段各种相关文件的输出(搴.1st*.rst*.map等): ◆ 支持对C语言源文件关键字和汇编语言源文件关键字的highlight显示 ◆ 支持工程文件中按开发者要求顺序排列文件 ◆ 支持两种开发调试环境, / simulator适用于不需要进行外部通讯的调试环境 / simulator+扩展板适用于需要同读卡器进行通讯的环境 (四)、标准库支持: ◆ 支持对string的操作string.h ◆ 支持对memory的操作memory.h ◆ 支持对type的操作 ctype.h ◆ 支持一些其他
常用操作stdlib.h (五)、辅助功能支持: ◆ 支持对CODE(矾仆I)、RAM和REGISTER的DUMP功能,以及导入; ◆ 提供库产生器,支持用户库的产生; (六)、用户手册支持 ◆ 用户手册; ◆ C编译器使用手册; ◆ 库函数使用手册。
1042007年中国嵌^式系统年会暨中目嵌^式系统产n链建设目R论坛
论文集 叼雾雩黑孵一三、扩展关键字 对于嵌入式编译开发系统来说,有好的扩展关键字,对嵌入式
程序开发人员来说如虎添翼.这就是移植GCC后而得到的通用编译器最大的不足,小符台用户开发习惯,所以这是放弃移植GCC的重要原因。
对于嵌入式程序开发罪在PC平台上做应用程序开发不太样,主要表现在嵌入式开发人员需要更多的操控硬件,需要在高级语言级能提供对硬件的控制以及对代码定位的控制,其中一个原因就是硬件资源有限,比如几十K字节的ROM,几百个字节的RAM等,而Pc平台的程序开茇人员是不关心机器硬件的(他们更注蕈程序代码的易读性,逻辑性.功能性是否好,基本不会关心硬件资源).所以在高级语言层次提供扩展关键字是必须的。
我们的高级语言选择了C语言,其特点就是执行效率高,在嵌入式领域应用广泛,所以为了符合嵌入式人员的开发习惯需要,我们在满足C89(c语言的标准)的基础L,扩展了如下关键字: asm ∞dc interrupl pnonty sfrl6 trap 惭 定义的变量或常量技分配在代码段 定义变量在直接寻址数据空间 定义变量在间接寻址数据空间 定义变量在可位寻址的数据空间 定义变量在数据段的位寻址空间,只占用位 洲 警怒≯鼍善 声明单字节或双字节特殊功能寄存器 要求使用的SFR足可位寻址的.才可以使用sbit2007年中国嵌入式系统年会暨中国嵌入式系统产业链建设国际论坛
论文集例: code int a=0x12: /+定义4:CODE段的int掣变鞋女/ chardata hi5】={1.2,3.4,5}; /奉定义企DATA段的char艰数组·/ idataint C=0x12: /4定义,【’t!IDATA段if’Jim型变量书/ bdam short a=Oxff: 产定义//〔:.DATA段位寻鼻I:审问的short裂变鼹幸/ sfr sfr—PSWL=0x400; 1%h明瞥7节SFR,指定地鲥:矗j401 tf*/ sbitOV—PSWL^2: /幸,矗咧OV为SFR PSWL的第2{移幸/ (二)、绝对地址定位 at 用于给绝对地址定位 例: struct link f char串test; int temp; }; struct link list idata at 0x440; 产结构变酲list被定义新I!IDATA段,地址是0x440母/ (三)、中断 根据我们的目标机,我们提供如下几种中断关键字,由于目标机的不同,关键字的支持会有不同。
我们现在支持的目标机的C语言程序,都支持这五个关键字。
evinterrupt事件中断 exception 异常中断 swinterrupt软中断 trap 陷阱中断 interrupt 中断(表示所有的中断号)例: void fct—timer0(void)evinterrupt 8 pfiofity l 0 /·两数炎馊和参数必须是void*/ f i++: } (四)、寄存器组访问 using 寄存器组访问例: O d &t V .6d 、, US n g 奉 产 止 V●I、, (五)、编程模式 user/system/generic 三种编程模式,这主要是有我们支持的目标芯片所决定的,有很多芯片比如8051匙不支持这样的系统状态,所以就没有这几个关键字。
另外,user/system/genetic属性只能用于main函数。
(六)、嵌入式汇编 支持两种嵌入式汇编2007年中国嵌入式系统年会暨中国嵌入式系统产业链建设国际论坛
论文集 例: void main() { asm (f|mov r0,#01”tll”); asm (”nlov rl,#0ffh” ”mov r2,#0flh” ”mov r3,殍0ffla”); } 2、 asm endasm例: mov r0.≠≠Ofh IIIOV r1.#400h ITIOV〔rl}1-rO djnz r0.100p nop t ,四、结束 信息家电嵌入式软件技术框架 史兴国,李文杰,陈文智摘要:由于信息家电领域嵌入式系统的多样性和专用性的特点,不同系统的起点、背景、目标及研究路线各不相同,因此,出现了种类繁多的软硬件技术,这些技术在各自封闭的领域内应用和发展,并未考虑过跨领域和互连互融的问题。
而现代硬件技术日新月异,越来越多的应用开始更广泛的集成,跨设备、跨领域的
问题在信息家电领域日益凸现出来。
本文尝试从技术、领域发展趋势、产业链协作等多个角度,探讨一个统一的软件技术平台框架,使各方面技术资产能够在同一体系下互通互融,促进信息家电嵌入式平台技术跨领域协作。
这对提高产品研发效率和创新能力,缩短研发周期,引导行业合理布局,促进信息家电产业发展,推动数字化生活进程,都有着重大的意义。
信息家电概述 信息家电是信息技术与传统消费类家电技术相结合而产生的新一代家用电子产品。
众所周知,信息技术的核心是计算机技术。
所以,信息家电是以
计算机技术为基础,集声、光、图像于一体的一种家用电器。
它既不是计算机,也不是传统的家电,而是在传统家电的基础上,集计算功能、视听功能、通信功能、联网功能于一体的新型家电。
信息家电继承了普通家电的长处——操作简单、性能稳定、价格低廉、维护简便,又具备文字处理、图形处理、发送传真、电子邮件等等PC和现代个人
通信的多种功能,如机顶盒、Web游戏机、Web TV、Web Phone、掌上电脑、手持PC、可穿戴PC等可通过
网络系统交互信息的消费类电子产品。
信息家电横跨了信息技术领域和传统家电领域,成功地打破了电脑、通讯、家电之间泾渭分明的界限,使得各个企业、各种类型的电子产品最终将融合在一起。
信息家电的开发成功使得信息技术融入和改变家庭生活成为现实,打开了信息技术应用的最大市场,也为家用电器的更新换代创造了新的契机。
信息家电市场的发展潜力非常大,