1

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

问候李思佳

4

1 回答 1

2

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

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

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

湾。谷歌有关 PowerPC 组装示例的资源:

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

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

C。下载 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

e. 与 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 章介绍了计时器概念)。

玩得开心。

于 2013-09-25T16:03:00.337 回答