如何为PowerPC Booke的定时器编写程序集?

时间:2013-09-20 10:48:34

标签: assembly powerpc

我是汇编语言的新手。最近我正在尝试使用汇编来控制PowerPC Booke架构的计时器。控制的内容是启用,禁用和setTime来中断CPU。我完全不知道如何编写这些汇编语言。有没有PowerPC装配专家可以帮助我或至少给我一些点击?

此致 李思嘉

1 个答案:

答案 0 :(得分:2)

对于PowerPC组装中的任何新手,我建议一个好的方法是:

一个。找出基本操作码是什么:

http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.aixassem/doc/alangref/ppc_instr.htm

湾Google提供有关PowerPC装配样品的资源:

http://www.ibm.com/developerworks/library/l-ppc/

http://www.csd.uwo.ca/~mburrel/stuff/ppc-asm.html

℃。下载Linux内核并直接进入“arch / powerpc”子目录:这是Linux内核中所有PowerPC特定于硬件的逻辑实现的地方 - 大多数在C中,有些在汇编中。例如,计时器的硬件逻辑(根据您的问题) - 从arch / powerpc子目录开始:

./include/asm/reg_booke.h:
#define SPRN_PIT    0x3DB   /* Programmable Interval Timer */
#define SPRN_TSR    0x150   /* Timer Status Register */
#define SPRN_TCR    0x154   /* Timer Control Register */
#define SPRN_TSR    0x3D8   /* Timer Status Register */
#define SPRN_TCR    0x3DA   /* Timer Control Register */
#define CCR1_TCS    0x00000080 /* Timer Clock Select */
#define DBCR0_FT    0x00000001  /* Freeze Timers on debug event */
#define DBCR0_FT    0x00000001  /* Freeze Timers on debug event */
#define DBCR_FT     0x00040000  /* Freeze Timers on Debug Event */

对于自我教育,评论领域具有高度教育性,例如:

 include/asm/time.h:

 /* Accessor functions for the decrementer register.
 * The 4xx doesn't even have a decrementer.  I tried to use the
 * generic timer interrupt code, which seems OK, with the 4xx PIT
 * in auto-reload mode.  The problem is PIT stops counting when it
 * hits zero.  If it would wrap, we could use it just like a decrementer.
 */
static inline unsigned int get_dec(void)
{
#if defined(CONFIG_40x)
        return (mfspr(SPRN_PIT));
#else
        return (mfspr(SPRN_DEC));
#endif
}

/*
 * Note: Book E and 4xx processors differ from other PowerPC processors
 * in when the decrementer generates its interrupt: on the 1 to 0
 * transition for Book E/4xx, but on the 0 to -1 transition for others.
 */
static inline void set_dec(int val)
{

内核源代码应具有满足您设置/启用/禁用计时器要求的源代码。

d。开始觉得技术上的困难?然后,您需要阅读更多技术说明,例如,与PowerPC相关的大学讲义:

https://www.google.com.sg/search?q=powerpc+timer+filetype%3Appt

即与PowerPC相关的数据表(主要在摩托罗拉/ AMCC和飞思卡尔网站上)应该是您的最后选择,因为它们技术性强且不易消化:

https://www.google.com.sg/search?q=powerpc+datasheet+site%3Afreescale.com

,特别是这是您的BookE架构用户指南:

http://www.freescale.com/files/32bit/doc/user_guide/BOOK_EUM.pdf(计时器概念见第8章)。

玩得开心。