我是汇编语言的新手。最近我正在尝试使用汇编来控制PowerPC Booke架构的计时器。控制的内容是启用,禁用和setTime来中断CPU。我完全不知道如何编写这些汇编语言。有没有PowerPC装配专家可以帮助我或至少给我一些点击?
此致 李思嘉
答案 0 :(得分:2)
对于PowerPC组装中的任何新手,我建议一个好的方法是:
一个。找出基本操作码是什么:
湾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章)。
玩得开心。