要回答这个问题,需要考虑到各种因素,如Linux系统的复杂程度,ARM处理器的能力,学习ARM和Linux的时间,以及实际的实施时间。一般来说,如果你已经有一些Linux/ARM编程经验,并且你拥有一定的ARM处理器知识,那么可能需要几个星期的时间就可以搞定。 但是,如果你是一名初学者,可能需要数月的时间才能掌握完整的ARM和Linux知识,并能够正确地实施和调试。
用ARM板装LINUX+php服务器是没问题的。在 http://www.ubuntu.com/download/arm 这里你能下载到 ARM 版本的 Linux *** 作系统。
在该版本的 Linux *** 作系统上你安装 PHP 没有任何问题。
其实,几乎所有的 X86上的 Linux 上能运行的软件都可以在 ARM 版的 Linux 上运行,因为它们一般都能下载到源代码,你用源代码在 ARM 的 Linux 上用arm-linux-gcc编译一下就能用了。
内核分配2个page来当kernel stack,即使不减去8,它的地址也应该是double-word aligned,所以对齐显然不是原因。可以参考下x86下的处理,x86也是保留了8个byte,原因见注释,我想arm原因也是一样的。
arch/x86/inlcude/asm/processor.h
/*
* The below -8 is to reserve 8 bytes on top of the ring0 stack.
* This is necessary to guarantee that the entire "struct pt_regs"
* is accessible even if the CPU haven't stored the SS/ESP registers
* on the stack (interrupt gate does not save these registers
* when switching to the same priv ring).
* Therefore beware: accessing the ss/esp fields of the
* "struct pt_regs" is possible, but they may contain the
* completely wrong values.
*/
#define task_pt_regs(task) \
({ \
struct pt_regs *__regs__ \
__regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8)\
__regs__ - 1 \
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)