- 软件介绍
- 相关专题
- 下载地址
ICCV8简介
ICCV8 for R是单片机的编辑软件。可以在软件中直接使用R编辑器设计单片机。您可以使用“设置/编辑器/颜色”或在编辑器内单击鼠标右键,然后单击“配置编辑器”来更改编辑器的颜色。您可以在移动鼠标的同时按下Contl键来放大和缩小小编编辑器,该编辑器支持寻址绝对内存位置。你的程序可能需要解决它。例如,外部输入输出外设通常被映射到特定的内存位置,其中可能包括液晶显示器接口和双端口静态随机存取存储器。您还可以在特定位置分配数据,以便在引导加载程序和主应用程序之间或访问双端口内存的两个独立处理器之间进行通信。在项目树中键入时,可以通过按Alt-G轻松查找/打开文件,每个项目可以有多个构建目标,例如,构建库的目标和使用库构建应用程序的目标!
ICCV8 软件功能
访问k范围以外的内存
通过16位指针,R通常可以访问K字节数据存储器、用于函数的K字程序存储器和用于常量数据的K字节程序存储器。后者需要澄清:因为代码必须在字边界上对齐,所以R使用字地址来访问代码(例如,对于函数调用)。这允许函数调用达到16位字地址的Mega128闪存空间的全部128K字节/K字。然而,闪存中的常量数据使用字节地址,因此R只能使用LPM指令访问闪存低k字节中的常量数据。
为了解决这些限制,r使用RAMPZ IO寄存器来允许访问大于k的闪存,XMega有四个这样的IO寄存器:RAMPX、RAMPY、RAMPZ和RAMPD,以允许访问大于k的数据和闪存。
任务
如“汇编接口和调用约定”页面所述,编译器通常生成代码来保存和恢复保留的寄存器。在某些情况下,这种行为可能是不可取的。例如,如果您正在使用RTOS(实时操作系统),RTOS将在任务切换期间管理寄存器的保存和恢复,编译器插入的代码将变得多余。
引导加载程序应用程序
一些较新的大型设备支持引导加载程序应用程序。您可以将引导加载程序构建为的应用程序,也可以将主代码和引导加载程序代码包含在单个程序中。
汇编中断处理程序
您可以在程序集中编写中断处理程序。但是,如果在汇编处理程序中调用C函数,汇编例程必须保存和恢复易失性寄存器,因为C函数不会(除非声明为中断处理程序,否则不应直接调用它们)。
特定r问题
Atmel提供多种R设备,其内存大小不同于外设。本节介绍一些特定于R和设备的问题。
r函数
r采用哈佛架构,程序和数据分开存储。
程序的大小以字节为单位指定(例如,M32有32K字节的闪存),但每条指令的长度至少为2字节。因此,指令中编码的程序位置是字地址。当用作字表等的存储时,程序存储器可以使用lpm/elpm指令序列进行字节寻址。
ICCV8适用于R程序(例如,适当的编译器、汇编器和链接器)在大多数情况下使用字节地址,这些工具将根据需要执行适当的字地址转换。
寄存器并不都是通用的。使用直接源操作数(如addi、ldi等)的R指令。)仅适用于上面16个寄存器r 16至R31。“指针”寄存器只有三组:R26/R27或X、R28/R29或Y、R30/R31或Z,Y和Z可以使用带偏移的位移模式,但X不能使用这种模式。
生成的代码使用两个堆栈作为调用返回地址的本机硬件堆栈和使用Y指针的软件堆栈。虽然这样可以更有效地确保两个堆栈都有足够的空间,但是使用单个堆栈的替代品会生成更多的代码。
设备特定指令
程序内存小于等于8K字节的设备不支持jmp和调用指令,只支持rjmp和rcall相关指令。r的初始生成(有时称为“经典”r)没有更新的指令,例如乘法指令和扩展lpm指令。
相对跳转/调用包装
在具有8K程序内存的设备上,您可以使用相对跳转和调用指令(rjmp和rcall)来到达所有内存位置。因此,相对跳转和调用围绕8K边界。例如,向前跳转到字节位置0x2100(0x2000是8K)被包装到字节位置0x100。
函数指针
为了与代码压缩器(tm)完全兼容,所有间接函数引用都必须传递额外的间接级别。如果您使用函数指针调用函数,这将在c语言中自动完成。换句话说,函数指针的行为与预期的一样,只是稍微慢一点。
机器程序
大多数C操作都被转换成直接的Atmel R指令。但是,有些操作因为涉及很多机器指令而被转换成子程序调用,如果转换是内联完成的,会导致代码过度膨胀。这些例程是用汇编语言编写的,可以通过例程名称不以下划线开头或有两个下划线前缀来区分。这些例程可能使用也可能不使用标准的调用约定,您不应该直接使用它们,因为我们可能会根据编译器版本更改它们的名称或实现。
外部静态随机存取存储器数据存储器
如果选择具有32K或K个外部静态随机存取存储器的设备目标,堆栈将被放置在内部静态随机存取存储器的顶部,并朝着低存储器地址向下增长。内存从硬件堆栈的顶部开始向上增长。
分配方式不同,因为内部SRAM的访问时间比外部SRAM快,大多数情况下,将栈项分配到更快的内存更有优势。
和堆栈函数。
除了静态程序区域,C运行时环境还包含两个其他数据区域:堆栈区域和堆区域。堆栈用于过程调用、局部和临时变量以及参数传递。堆用于由标准cmaloc()、calloc()和realloc()调用创建的动态分配对象。要使用堆函数,必须首先初始化堆区域。
驾驶员
编译器驱动程序输入每个文件,并根据文件扩展名和接收到的命令行参数处理该文件。那个。c文件和。文件分别是C源文件和程序集源文件。IDE的设计思想是让它尽可能的易用。然而,命令行编译器非常灵活。您可以通过向它传递命令行参数来控制它的行为。如果您想使用自己的图形用户界面(如代码编辑器或多重编辑编辑器)与编译器交互,您需要知道以下几点。
编译器参数
集成开发环境通过向编译器驱动程序传递命令行参数来控制编译器的行为。通常,您不需要知道这些命令行参数的功能,但是当您执行构建时,您可以在生成的makefile和状态窗口中看到它们。但是,如果您想使用自己的编辑器/IDE(如Codewght)来驱动编译器,此页面会记录Timp430 IDE使用的选项。所有参数都传递给驱动程序,驱动程序将适当的参数传递给不同的通道。
MISRA/Lint代码
MISRA C是http://www.misra.org.uk汽车软件协会开发的C编程语言的编码标准。MISRA C标准原本是为了提高汽车行业程序的安全性和可移植性而设计的,但随着嵌入式设备的日益普及,汽车行业之外的嵌入式领域也有很多机构采用了MISRA C标准。(如果你熟悉MISRA C,可以把它看作Lint的超集。)
压缩机
Compressor (tm) optimizer是最先进的优化程序,可以将最终程序大小从5%减少到18%。它在我们的编译器的高级和专业版本中针对特定目标提供。它适用于您的整个计划,并且可以搜索所有文件以寻找减小计划大小的机会。我们为商业嵌入式编译器提供的这项创新技术比任何人都多。
便捷功能
C: B的一些更有用的功能是:
并折叠和展开代码,使显示更加清晰。
使用编辑->;…(评论)& # 8230;注释/取消注释选定的文本块。
使用制表符缩进选定的文本块,使用shift-TAB缩进。
通过下拉列表(工具箱图标下的行)跳转到任何函数定义。
右键单击一个函数名,并选择查找其实现或声明。
右键单击源文件上的任意位置,然后选择交换头文件/源文件以打开同名头文件。
使用插件->;源代码格式化程序(AStyle)格式化源代码。
菜单:构建选项-项目
项目类型-仅适用于高级和专业版本。
允许您构建通用可执行输出或库输出。
Makefile选项-指定在生成的Makefile中应该使用相对路径还是绝对路径。
在生成之前执行命令-在生成项目之前执行用户定义的命令。C:: B支持的变量列表见下文。
成功构建后执行命令-成功构建项目后执行用户定义的命令。C:: B支持的变量列表见下文。
R Studio版本(COFF)-指定您正在使用的R Studio版本。
请注意,Studio 4.0和更高版本允许源文件和COFF文件位于不同的目录中,而Studio 4.06和更高版本可以扩展结构成员。
构建选项-路径
包含路径-您可以指定编译器应该在其中搜索包含文件的目录。您可以通过用分号或空格分隔路径来指定多个目录。如果路径包含空格,请用双引号引起来。
如果未指定完整路径(即路径不以或驱动器号开头),则该路径相对于Pject目录(即。cbp文件)。
编译器驱动程序会自动将C: ICC V8 AVR include添加到包含路径中,所以不需要显式添加。
汇编程序包含路径-您可以指定汇编程序应该在其中搜索包含文件的目录。您可以通过用分号或空格分隔路径来指定多个目录。如果路径包含空格,请用双引号引起来。
构建选项-编译器
严格-ANSI C由最初的K&R C演变而来,虽然ANSI C标准比K&R C有更严格的语言和类型,但它仍然允许一些潜在的不安全工作。如果选择此选项,编译器将警告没有原型的函数类型的声明和转换,指向整数和枚举的指针之间的分配,以及从指针到较小整数类型的转换。它还警告无法识别的控制线、文本中的非ANSI语言扩展和源字符、未引用的变量和静态函数以及声明不完整类型的数组。
该选项通常应处于打开状态,应研究所有警告,以确保它们是可接受的。
ICCV8 软件特色
1.现在为所有增强的核心设备启用“使用ELPM/RAMPZ”。
2.增加了8位优化。根据标准C规则合法完成的表达式,大多数(如果不是全部)可以完成8位int类型,而不是提升。
3.将大多数程序增加1%到2%或更多的变量被广泛使用。
4.增加了AT90USB82和AT90USB162的设备入口编译器。
5.编译器将参数寄存器保存到另一个保存的寄存器,而不保存保留的寄存器。
6.这通常只有在函数没有其他局部变量并且碰巧调用了其他带参数的C函数的情况下。
ICCV8 安装方法
1.打开iccv8avr_8.04.exe开始安装,然后单击“下一步”。
2.阅读软件安装协议,然后单击接受接受它。
3.设置软件的安装地址c:iccv8avr
4.设置开始菜单文件夹。
5.提示准备安装界面,点击安装。
6.软件已经安装在电脑上了。打开主程序,开始使用!
ICCV8 使用说明
1.软件界面如图,可以同时打开多个项目。
2.每个项目可以有多个建设目标。例如,构建库的目标和使用库构建应用程序的目标。
3.代码::Blocks当前不是C/C ++源文件的默认应用程序。
是否将其设置为默认值?
将来您可以随时从环境设置中更改关联。
不,保留一切。
不,什么都留着(但下次问我)
是,关联代码:块与C/C ++文件类型。
是,将代码::与每个支持的类型相关联(包括来自其他IDE的项目文件)
4.提示新建项目设计界面,可以选择需要创建的编辑项目。
5.欢迎使用新的GLUT项目向导!
该向导将指导您使用GLUT OpenGL扩展创建一个新项目。
当您准备好继续时,请单击“下一步”。
6.请选择要在其中创建新项目的文件夹及其标题。
7.请选择GLUT在计算机上的位置。
这是安装(解压)GLUT的顶层文件夹。
为了帮助您,此文件夹必须包含子文件夹“include”和“lib”。
8.常规设置
启动时显示启动屏幕
动态数据交换只允许一个正在运行的实例(需要重新启动应用程序才能生效)(需要重新启动应用程序才能生效)。
如果可能的话,使用一个已经运行的实例,而不是启动一个新的实例。
放在上面。
9.缩写
自动完成独立于代码完成插件。通过键入以下关键字之一并按下Ctrl-j来调用它,用相应的代码替换相应类型的关键字。
ICCV8 教程
标准输入输出功能
因为标准文件IO对嵌入式微控制器没有意义,所以很多标准stdio.h内容不适用。尽管如此,仍然支持一些IO功能。在使用这些函数之前,请使用#include。您需要初始化输出端口。最低级的IO例程由单字符输入(getchar)和输出(putchar)例程组成。您需要实现这些例程,因为它们是特定于目标设备的。我们提供示例实现。在大多数情况下,您只需要将正确的示例文件复制到项目中。请参见下面的功能描述。不需要修改高级的标准IO函数,比如pntf、s pntf、scanf等。
在多个输出设备上使用pntf
在多个设备上使用pntf非常简单。您可以编写自己的putchar()来根据全局变量和改变它的函数将它写入不同的设备。,当你想切换到其他设备时,只需调用设备更改功能即可。您甚至可以使用vfpntf()函数来实现带有一些设备号参数的pntf版本,如下所示。
字符串处理功能
支持以下字符串函数。在使用这些功能之前,请使用# include >。。定义文件NULL和typedefsfize _ t,以及以下字符串和字符数组函数:
Void * memchr(void * s,int c,size_t n)在大小为n的数组s中搜索c的第一次出现,如果没有找到匹配,它将返回匹配元素的地址或空指针。
Intcmp (void * S1,void * s2,size_t n)比较两个数组,每个数组的大小都是n。如果数组相等,则返回0;如果s1中的第一个不同元素大于s2中的对应元素,则返回0。否则,它将返回一个小于0的数字。
Void * memcpy(void * s1,const void * s2,size_t n)将N个字节从s2复制到s1。
Void * memmove(void * s1,const void * s2,size_t n)将s2复制到s1中,每个大小为n,即使输入重叠,例程也能正常工作。它返回s1。
Void * memset(void * s,int c,size_t n)将C存储在大小为n的数组S的所有元素中。返回到S..
Char * strcat(char * s1,const char * s2)将s2连接到s1。它返回s1。
Char * strcher (constchar * s,int c)搜索c在s中的第一次出现,包括其终止的空字符。如果没有找到匹配,它将返回匹配元素的地址或空指针。
Int strcmp(const char * s1,const char * s2)比较两个字符串。如果字符串相等,则返回0;如果s1中的第一个不同元素大于s2中的对应元素,则返回0。
否则,它将返回一个小于0的数字。
Intrcoll (constchar * S1,const char * s2)使用区域设置比较两个字符串。在我们的编译器下,这和strcmp函数完全一样。
堆栈功能
为堆栈溢出提供了几个库函数。考虑以下内存映射;如果硬件堆栈扩展到软件堆栈,软件堆栈的内容将会改变。这将改变局部变量和其他堆叠项的值。因为硬件堆栈用于函数返回地址,如果函数调用树嵌套太深,可能会发生这种情况。
类似地,溢出到数据区的软件堆栈将修改全局变量或其他静态分配的项目(如果使用动态分配的内存,堆项目将被修改)。如果声明了太多的局部变量或者局部聚合变量太大,就会发生这种情况。
如果您经常使用函数pntf,格式字符串可能会占用数据区的大量空间。
总结
要使用堆栈功能:
1.#包括
2.insert _ stack check();希望堆栈溢出的代码。这可以在代码中的任何地方,比如看门狗定时器功能。
3.当_ stackcheck()检测到堆栈溢出时,它将调用函数_ stackoverflow(),其整数参数值为1表示硬件堆栈已溢出,0表示软件堆栈已溢出。
4.default _ StackOverflowed()库函数跳转到位置0并重置程序。要更改这种默认行为,请在源代码中编写您自己的_ StackOverflowed函数。这将覆盖默认值。对于程序调试,您的_ StackOverflowed函数应该做一些事情来指示一个困难的情况,也许通过闪烁一个发光二极管。如果使用调试器,可以在_ StackOverflowed函数中设置断点,查看是否调用了该函数。
头文件Rdf . h列出了这两个函数的原型。
哨兵
启动代码在数据区上方的地址写入一个前哨字节,在软件堆栈上方的地址写入一个类似的字节。如果前哨字节被改变,堆栈溢出已经发生。
存取函数
C语言的优点是,虽然它是一种高级语言,但它允许您访问目标设备的低级功能。有了这个函数,几乎没有理由使用汇编,除非优化的代码是必不可少的。即使目标函数在C语言中不可用,内联程序集和预处理器宏通常也可以用来透明地访问这些函数。
io???V.h头文件
IO寄存器的命名方案、位定义和中断向量在这些头文件中是标准化的。io???用V.H .中的头文件R、中断向量号和锁/熔丝位(如果支持)定义符号名的IO寄存器和位(仅限Mega R)。IO寄存器和位名的定义与数据手册中规定的相同,只有少数例外和扩展(请注意,有时摘要页面上有拼写错误!)。文件iccioavr.h有条件地包括所有这些io????V.h文件,取决于定义的设备宏(由IDE传递)。
程序数据和常量内存
r是哈佛架构的机器,将程序内存和数据内存分开。这种设计有几个优点。其中之一是,与传统架构相比,单独的地址空间允许R设备访问更多的总内存。在非哈佛架构的8位CPU中,它可以寻址的最大内存量通常为K字节。要在这种设备中要求超过k字节,通常需要使用某种寻呼方案。使用哈佛架构,Atmel R设备有很多变体,在不使用分页方案的情况下,它们的总地址空间超过K字节。
不幸的是,C并不是在这样的机器上发明的。C指针可以是数据指针,也可以是函数指针,C规则已经规定不能假设可以重复转换数据和函数指针。另一方面,
对于像R这样的哈佛架构机器,数据指针可能指向数据存储器或闪存(程序存储器)中的常量数据。
仓库
生成的代码使用两个堆栈:子程序调用和中断处理程序使用的硬件堆栈,以及用于为参数、临时变量和局部变量分配堆栈帧的软件堆栈。虽然看起来很麻烦,但是使用两个堆栈而不是一个堆栈可以以最透明和代码高效的方式使用数据RAM。
因为硬件栈主要用来存储函数返回地址,所以通常比软件栈小很多。通常,如果您的程序不是调用密集型的,并且不使用调用密集型库函数(例如% f格式的pntf),默认的16字节应该可以正常工作。在大多数情况下,硬件堆栈的最大值40字节就足够了,除非您的程序有一个深度递归的例程。
全球注册
有时候,如果你的程序可以访问全局寄存器,它会更有效率。例如,在中断处理程序中,您可能希望添加程序的另一部分可能需要访问的全局变量。由于保存和恢复寄存器的开销以及访问全局变量所在的内存的开销,以这种方式使用常规的C语言全局变量可能需要比中断处理程序更多的开销。
可以勾选“编译器”->“选项”->;“目标”->:不要使用R20..R23”选项要求编译器不使用寄存器R20、R21、R22和R23。一般来说,不应该使用这个选项,因为编译器可能使用更少的寄存器,所以它可能会生成更大的程序。除此设置外,您不能保留其他寄存器。
- 安卓合集
- 软件合集
- 浏览器
- 电脑管家
- 安卓游戏
软件排行榜
热门推荐
-
VMware InstallBuilder Enterprise破解版
v20.12.0 / 347 MB / 简体中文
-
Spark Studio官方版
v2.6.3 / 7.78 MB / 简体中文
-
Yearning SQL审核平台官方版
v2.3.2 / 10.2 MB / 简体中文
-
Protege官方版
v5.5 / 38.3 MB / 简体中文
-
HUAWEI LiteOS Studio官方版
v1.45.6 / 115 MB / 简体中文
-
Huawei LiteOS官方版
v5.0.0 / 87.6 MB / 简体中文
-
C语言代码实例助手官方版
v1.0 / 38.5 MB / 简体中文
-
idle python中文汉化版
v3.7 / 1.62 MB / 简体中文
-
Metabase官方版
v0.37.5 / 45.8 MB / 简体中文
-
编程猫硬件助手官方版
v1.4.1.0 / 39.3 MB / 简体中文
装机必备软件
-
word文档密码破解工具应用软件
-
冰点还原永久免费版系统软件
-
人生日历应用软件
-
一彩送货单管理系统应用软件
-
Process View系统软件
-
开心手机恢复大师其他类别
-
pdf文件阅读器应用软件
-
视频剪辑格式工厂应用软件
-
PhotoMetri应用软件
-
specinker应用软件
-
miwifi驱动驱动工具
-
海洋色音效助手影音软件
-
乐播投屏影音软件
-
seo外链助手网络软件
-
AES安全加密记事本安全相关





