我有一个unsigned long,需要获取一个特定于平台的变量。
我不希望使用启动参数,因为此驱动程序将进入产品,供应商不愿意更改启动参数。
我想知道这个变量是否可以从Makefile或Kconfig初始化。
我记得早在使用menuconfig设置它时,Kconfig中提供了早期printk的串口地址。但我从来不明白这是如何运作的。
答案 0 :(得分:2)
您可以从程序文件的该目录中的Kconfig文件传递该值,
您可以将Kconfig设置为所需变量的值
例如,在Kconfig中,为变量添加以下配置
config MY_VALUE_LONG // config keyword
hex "MY VALUE IS" //What you see in the menuconfig
default 0xAB123 //unsigned long value in hex
在上面的Kconfig中, MY_VALUE_LONG 会以十六进制格式保存长值, MY VALUE IS 是调用$ make menuconfig时显示的内容,以及使用默认变量设置的默认值将传递给程序。
在Program(需要变量值)中,使用配置变量 CONFIG_MY_VALUE_LONG 以十六进制获取值
例如,
无符号长值= CONFIG_MY_VALUE_LONG
答案 1 :(得分:1)
在下面找到C文件和Makefile实现以满足您的要求
foo.c的
main ()
{
int a = MAKE_DEFINE;
printf ("MAKE_DEFINE value:%d\n", a);
}
生成文件
all:
gcc -DMAKE_DEFINE=11 foo.c
MAKE_DEFINE是一个定义,通过Makefile
启用