2015-03-02 62 views
1

我想编译这个代码,它使ARM Cortex A8上的循环计数器在目标上通过Debian OS。我在/home中编写了这段代码,并且想编译它。如何为Cortex A8构建内核模块?

我该如何编译它,我应该在哪里放置输出文件?

  • 我只是在嵌入式系统初学者,
  • 我试图遵循一些联系,但都以失败告终
  • 我真的不知道做的步骤,因为我不熟悉Linux

代码:

#include <linux/module.h> 
#include <linux/kernel.h> 

static int OldState; 

int __init init_module(void) 
{ 

    /* enable user-mode access */ 
    asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1)); 

    /* disable counter overflow interrupts (just in case)*/ 
    asm ("MCR p15, 0, %0, C9, C14, 2\n\t" :: "r"(0x8000000f)); 

    printk(KERN_INFO "user-mode access to performance registers enabled\n"); 

    return 0; 
} 


void cleanup_module(void) 
{ 
} 
+0

问题对于SO来说过于宽泛。寻找关于Linux模块开发,覆盆子pi等的教程。一定有很多。 – auselen 2015-03-02 14:44:00

回答

1

为此,您需要ARM工具链(交叉编译器)。它将在x86机器上编译ARM架构的源代码。见thisthis

一旦你安装了ARM工具链,提供CROSS_COMPILE环境变量make(或只是做一些像export CROSS_COMPILE=arm-none-eabi-在你的shell中运行make之前)。内核构建系统将使用此变量作为工具的前缀,如gcc,as,ld等。这样,您的模块将构建用于ARM体系结构。在您的模块文件(.ko)上使用file工具以确保它是为ARM构建的。