1.1 存储空间分配
1.2 A/D转换器
真器可以大大提高程序调试开发的效率。
2.2 SAM8的开发环境
SAM8系列单片机常用的开发软件是IAR公司提供的基于IAR Embedded Wordbench的集成开发环境,该开发系统集IAR C编译器、汇编器、连接器、代码编辑器、工程管理器及C-SPY调试器于一体,可以编辑、汇编和编译汇编语言和C语言的源文件,而且汇编程序和C程序可共用相同格式的头文件,是一个功能强大的开发环境。该集成开发平台(IDE)可在Windows 98/ME/NT4/2000/XP下进行工程管理、运行属性设置、代码编辑和调试等。其中内部IAR C语言编码器的功能强大,能支持ISO/ANSI标准C语言编译,且具有多样的代码大小和编译速度模式以及可选的堆栈模式。此外,还支持SAM8扩展关键字,同时支持C语言和汇编语言的混合程序编译。
该开始环境集成有基于通用指令集的重定位宏汇编器,且内嵌C语言预处理程序,可接受所有的C语言宏定义。而集成的IAR XLINK连接器支持灵活的代码段和数据段重定位,并可根据重定位模块提供的信息将若干个应用程序所需要的可重定位代码模块文件组装成一个程序,从而产生可执行的目标代码。此外,环境中的C-SPY调试器具有多种测试分析功能,支持单步调试,控制程序运行到指定位置(Go to Cursor/Go to Label/Go to Address),调试返回(Go to Return)、实时跟踪变量、寄存器(Register Groups)、存储器(Memory)等,这些都在很大程序上提高了开发效率。
3 混合编程的软件设计
在对SAM8系列单片机进行软件开发过程中,用C语言编程具有开发周期短、可读性强、可移植性好和修改方便等优点,但是C程序反汇编生成的汇编代码往往较长。若直接用汇编语言编程,虽然编制的程序较短,但开发周期长,修改也不方便,所以,较好的解决方法是把程序的框架或主体部分用C语言编写,而将执行效率要求较高的部分用汇编语言来编写。下面主要介绍针对SAM8系列单片机进行混合编程的软件设计方法。
3.1 IAR C语言编译器的函数参数传送规则
IAR C语言编译器规定函数参数传递有2种方式,即寄存器传递和堆栈传递。传递顺序是从左至右,具体采用哪种方式传递取决于函数参数的类型。
IAR C语言编译器把单片机的寄存器分成2组,其中高速暂存器组(R10-R15)中的函数参数由左至右依次传入R15至R10,直至这些寄存器点满,而其余函数参加由堆栈来传递。由迂些寄存器是暂存器,用完就释放掉,所以应用过程中不用保护。第二组为普通寄存器(R1、R4-R9),这组寄存器主要用作寄存器变量和保存中间变量,应用过程不必须对其进行保护,但在C语言函数编写中可以不体现,而由编译器自动完成。
当函数参数为以下2种类型时,应当选用堆栈方式传递:种是传递参数为struct或union大于4字节的参数类型。第二种是长度可变函数的未命名参数类型。
函数参数通常放在由堆栈指针指定的位置为起始的主存储器中,被调用函数的参数则由左至右依次存放在被指定的堆栈中,当被调用函数返回调用函数时,堆栈自动清零,主存储器空间被释放,以供下次供传递函数使用。
函数返回值可根据其类型放在R15或R15:R14寄存器对中。若返回值是struct或union类型,则返回R15中的值是存放返回结果的堆栈指针起始位置。
C语言编译器也是编译中断函数时会自动保护所用到的寄存器(包括R10-R15),状态寄存器FLAGS的保护也是在中断处理过程中自动完成的。中断过程中用到的寄存器都使用PUSH Rn的指令进行保护,而采用POP Rn指令恢复。当用IRET指令自动恢复状态寄存器FLAGS时,可以从中断中返回。
&n
4.2 汇编语言写中断服务程序
真器可以大大提高程序调试开发的效率。
2.2 SAM8的开发环境
SAM8系列单片机常用的开发软件是IAR公司提供的基于IAR Embedded Wordbench的集成开发环境,该开发系统集IAR C编译器、汇编器、连接器、代码编辑器、工程管理器及C-SPY调试器于一体,可以编辑、汇编和编译汇编语言和C语言的源文件,而且汇编程序和C程序可共用相同格式的头文件,是一个功能强大的开发环境。该集成开发平台(IDE)可在Windows 98/ME/NT4/2000/XP下进行工程管理、运行属性设置、代码编辑和调试等。其中内部IAR C语言编码器的功能强大,能支持ISO/ANSI标准C语言编译,且具有多样的代码大小和编译速度模式以及可选的堆栈模式。此外,还支持SAM8扩展关键字,同时支持C语言和汇编语言的混合程序编译。
该开始环境集成有基于通用指令集的重定位宏汇编器,且内嵌C语言预处理程序,可接受所有的C语言宏定义。而集成的IAR XLINK连接器支持灵活的代码段和数据段重定位,并可根据重定位模块提供的信息将若干个应用程序所需要的可重定位代码模块文件组装成一个程序,从而产生可执行的目标代码。此外,环境中的C-SPY调试器具有多种测试分析功能,支持单步调试,控制程序运行到指定位置(Go to Cursor/Go to Label/Go to Address),调试返回(Go to Return)、实时跟踪变量、寄存器(Register Groups)、存储器(Memory)等,这些都在很大程序上提高了开发效率。
3 混合编程的软件设计
在对SAM8系列单片机进行软件开发过程中,用C语言编程具有开发周期短、可读性强、可移植性好和修改方便等优点,但是C程序反汇编生成的汇编代码往往较长。若直接用汇编语言编程,虽然编制的程序较短,但开发周期长,修改也不方便,所以,较好的解决方法是把程序的框架或主体部分用C语言编写,而将执行效率要求较高的部分用汇编语言来编写。下面主要介绍针对SAM8系列单片机进行混合编程的软件设计方法。
3.1 IAR C语言编译器的函数参数传送规则
IAR C语言编译器规定函数参数传递有2种方式,即寄存器传递和堆栈传递。传递顺序是从左至右,具体采用哪种方式传递取决于函数参数的类型。
IAR C语言编译器把单片机的寄存器分成2组,其中高速暂存器组(R10-R15)中的函数参数由左至右依次传入R15至R10,直至这些寄存器点满,而其余函数参加由堆栈来传递。由迂些寄存器是暂存器,用完就释放掉,所以应用过程中不用保护。第二组为普通寄存器(R1、R4-R9),这组寄存器主要用作寄存器变量和保存中间变量,应用过程不必须对其进行保护,但在C语言函数编写中可以不体现,而由编译器自动完成。
信息www.dzzl.cn
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。