我想编译这段代码,通过Debian操作系统在目标上启用ARM Cortex A8上的循环计数器。我在/home
中编写了这段代码,并希望对其进行编译
我如何编译它,输出文件应该放在哪里?
- 我只是嵌入式系统的初学者
- 我试着关注一些链接,但都失败了
- 实际上我不知道该怎么做,因为我不熟悉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, 0nt" :: "r"(1));
/* disable counter overflow interrupts (just in case)*/
asm ("MCR p15, 0, %0, C9, C14, 2nt" :: "r"(0x8000000f));
printk(KERN_INFO "user-mode access to performance registers enabledn");
return 0;
}
void cleanup_module(void)
{
}
为此需要ARM工具链(交叉编译器)。它将在x86机器上编译ARM体系结构的源代码。看看这个和这个。
安装ARM工具链后,向make
提供CROSS_COMPILE
环境变量(或者在运行make
之前,在shell中执行类似export CROSS_COMPILE=arm-none-eabi-
的操作)。内核构建系统将使用此变量作为gcc
、as
、ld
等工具的前缀。这样,您的模块将为ARM架构构建。在模块文件(.ko
)上使用file
工具以确保它是为ARM构建的。