使用完整版本的Angel开发应用程序
发布时间:2008/12/23 0:00:00 访问次数:516
在这里介绍一些使用完整版本的angel开发应用程序时的知识,主要包括:
·开发应用程序时需要规划的内容。
·使用完整版本的angel开发应用程序时的编程限制。
·angel和实时操作系统rtos一起使用时的技术。
·用户应用程序在处理器特权模式下执行。
·异常中断处理程序链接。
·c语言运行时库的使用方式。
·在调试时使用断言(assertions).
·关于断点的设置。
(1)开发应用程序时需要规划的内容
在着手开发应用程序之前,必须确定下面一些选项。
·应用程序使用的atpc调用标准。
·在应用程序中是否包含arm程序和thu血b程序的相互调用。
·目标系统的内存模式。
·在最终产品中是否包含最小版本的angel,如果最终产品中不包含最小版本的angel,用户则必须自己编写系统引导和初始化部分的代码,必须自己处理系统中的异常中断。
·在最终产品中是否需要c语言运行时库的支持,如果需要,用户则需要自己实现这 些c语言运行时库的支持函数,因为在最终产品中不能使用semihosting请求主机资源。
·在生成的影响文件中是否包含调试需要的信息。这将影响目标映像文件的大小和代码的可调试性。
·确定目标系统的通信需求。用户需要设计通信时使用的各设备的驱动程序。
·确定目标系统中的存储器大小。目标系统中的存储器必须能够保存aneel和应用程序,并且必须能够提供程序运行所需要的存储空间。
(2)使用完整版本的angel开发应用程序时的编程限制
在使用完整版本的angel开发应用程序时,由于angel需要一定的资源,因此给程序设计带来了一定的限制。这些限制包括:
·angel需要使用自己的处理器特权模式下的数据栈,因此在angel和实时操作系统rtos一起使用时,必须确保在angel运行时,rtos不会切换处理器的模式,否则可能造成死机。
·用户应用程序尽量避免使用swi 0x123456及swi 0xab。这两个swi异常中断号保留给angel使用,angel使用它们来实现目标程序中c语言运行时库的semihosting请求。
·如果用户应用程序中使用了swi,则在退出swi时必须将各寄存器的值还原成进入swi时的值。
·如果应用程序中需要使用未定义的指令异常中断,必须注意angel使用了未定义的指令异常中断。
(3)angel和实时操作系统rtos一起使用时的技术
angel ffi要使用自己的处理器特权模式下的数据栈,因此在angel和实时操作系统rtos一起使用时,必须确保在angel运行时,rtos不会切换处理器的模式,否则可能造成死机。一般来说,在angel运行时,rtos不能进行任务切换,这是一个苛刻的要求。使用angel来调试rtos将是一件非常困难的工作。
(4)用户应用程序在处理器特权模式下执行
如果用户应用程序在处理器特权模式下执行,则必须设置应用程序自己的特权模式数据栈。当应用程序在特权模式下调用angel的swi时,angel在进入swi时,需要使用应用程序的特权模式数据栈4个字节的空间;在进入swi后,angel将使用自己的特权模式下的数据栈。
因此,当应用程序在特权模式下调用angel的swi时,必须保证它的特权模式数据栈为fd(满且地址递减)类型,并且有足够的angel进入swi时需要的可用的空间。
(5)异常中断处理程序链接
angel使用除复位异常中断以外的其他arm异常中断,具体的使用方式如下。
·swi异常中断。angel使用swi异常中断实现目标系统上c语言库的semihosting请求,并可以完成进入和退出处理器的特权模式。
·未定义指令异常中断。angel使用3条未定义的指令来实现在目标程序中设置断点。
·数据终止和指令预取终止异常中断。angel设置了基本的数据终止和指令预取终止异常中断处理程序。通过这些程序实现挂起程序的运行,将控制权交回到调试器。
·fiq和irq异常中断。angel使用fiq或irq异常中断完成中断处理操作。如果可能,推荐使用irq异常中断。这样,如果用户应用程序需要使用其中的某些异常中断,则用户应用程序中相应的异常中断处理程序必须恰当地连接到angel中异常中断处理程序中,否则可能使angel无法正常工作。具体影响对于不同异常中断而有所不同。
下面列出了各种异常中断控制权没有转交到angel中的处理程序时造成的错误。
·swi异常中断。如果应用程序的处理程序没有实现entersvc swi,则angel将不能工作。如果应用程序的处理程序没有实现其他的swi,则目标系统上c语言库的semihosting请求不能使用。
·未定义指令异常中断。这时将不能在目标程序中设置断点,目标程序也不能单步运行。
·数据终止和
在这里介绍一些使用完整版本的angel开发应用程序时的知识,主要包括:
·开发应用程序时需要规划的内容。
·使用完整版本的angel开发应用程序时的编程限制。
·angel和实时操作系统rtos一起使用时的技术。
·用户应用程序在处理器特权模式下执行。
·异常中断处理程序链接。
·c语言运行时库的使用方式。
·在调试时使用断言(assertions).
·关于断点的设置。
(1)开发应用程序时需要规划的内容
在着手开发应用程序之前,必须确定下面一些选项。
·应用程序使用的atpc调用标准。
·在应用程序中是否包含arm程序和thu血b程序的相互调用。
·目标系统的内存模式。
·在最终产品中是否包含最小版本的angel,如果最终产品中不包含最小版本的angel,用户则必须自己编写系统引导和初始化部分的代码,必须自己处理系统中的异常中断。
·在最终产品中是否需要c语言运行时库的支持,如果需要,用户则需要自己实现这 些c语言运行时库的支持函数,因为在最终产品中不能使用semihosting请求主机资源。
·在生成的影响文件中是否包含调试需要的信息。这将影响目标映像文件的大小和代码的可调试性。
·确定目标系统的通信需求。用户需要设计通信时使用的各设备的驱动程序。
·确定目标系统中的存储器大小。目标系统中的存储器必须能够保存aneel和应用程序,并且必须能够提供程序运行所需要的存储空间。
(2)使用完整版本的angel开发应用程序时的编程限制
在使用完整版本的angel开发应用程序时,由于angel需要一定的资源,因此给程序设计带来了一定的限制。这些限制包括:
·angel需要使用自己的处理器特权模式下的数据栈,因此在angel和实时操作系统rtos一起使用时,必须确保在angel运行时,rtos不会切换处理器的模式,否则可能造成死机。
·用户应用程序尽量避免使用swi 0x123456及swi 0xab。这两个swi异常中断号保留给angel使用,angel使用它们来实现目标程序中c语言运行时库的semihosting请求。
·如果用户应用程序中使用了swi,则在退出swi时必须将各寄存器的值还原成进入swi时的值。
·如果应用程序中需要使用未定义的指令异常中断,必须注意angel使用了未定义的指令异常中断。
(3)angel和实时操作系统rtos一起使用时的技术
angel ffi要使用自己的处理器特权模式下的数据栈,因此在angel和实时操作系统rtos一起使用时,必须确保在angel运行时,rtos不会切换处理器的模式,否则可能造成死机。一般来说,在angel运行时,rtos不能进行任务切换,这是一个苛刻的要求。使用angel来调试rtos将是一件非常困难的工作。
(4)用户应用程序在处理器特权模式下执行
如果用户应用程序在处理器特权模式下执行,则必须设置应用程序自己的特权模式数据栈。当应用程序在特权模式下调用angel的swi时,angel在进入swi时,需要使用应用程序的特权模式数据栈4个字节的空间;在进入swi后,angel将使用自己的特权模式下的数据栈。
因此,当应用程序在特权模式下调用angel的swi时,必须保证它的特权模式数据栈为fd(满且地址递减)类型,并且有足够的angel进入swi时需要的可用的空间。
(5)异常中断处理程序链接
angel使用除复位异常中断以外的其他arm异常中断,具体的使用方式如下。
·swi异常中断。angel使用swi异常中断实现目标系统上c语言库的semihosting请求,并可以完成进入和退出处理器的特权模式。
·未定义指令异常中断。angel使用3条未定义的指令来实现在目标程序中设置断点。
·数据终止和指令预取终止异常中断。angel设置了基本的数据终止和指令预取终止异常中断处理程序。通过这些程序实现挂起程序的运行,将控制权交回到调试器。
·fiq和irq异常中断。angel使用fiq或irq异常中断完成中断处理操作。如果可能,推荐使用irq异常中断。这样,如果用户应用程序需要使用其中的某些异常中断,则用户应用程序中相应的异常中断处理程序必须恰当地连接到angel中异常中断处理程序中,否则可能使angel无法正常工作。具体影响对于不同异常中断而有所不同。
下面列出了各种异常中断控制权没有转交到angel中的处理程序时造成的错误。
·swi异常中断。如果应用程序的处理程序没有实现entersvc swi,则angel将不能工作。如果应用程序的处理程序没有实现其他的swi,则目标系统上c语言库的semihosting请求不能使用。
·未定义指令异常中断。这时将不能在目标程序中设置断点,目标程序也不能单步运行。
·数据终止和
上一篇:使用Angel开发应用程序