位置:51电子网 » 技术资料 » 嵌入式系统

使用完整版本的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请求不能使用。

  ·未定义指令异常中断。这时将不能在目标程序中设置断点,目标程序也不能单步运行。

  ·数据终止和

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!