关于内核中 #ifdef CONFIG_**的问题

本文深入探讨了Linux内核中配置宏的作用及如何影响编译过程,特别是通过理解`#ifdef CONFIG_PROC_FS`的机制,展示了如何在特定配置下选择性地编译内核模块。详细解析了配置宏的生成过程以及它们如何通过编译命令影响源代码的编译。

经常在内核中看到这样的宏判断:
#ifdef CONFIG_**
....
#endif
比如,init/main.c中有这样的代码:
#ifdef CONFIG_PROC_FS
        proc_root_init();
#endif
这里的意思我知道,就是根据CONFIG_PROC_FS是否定义来选择proc文件系统。
如果选择proc文件系统,在.config中就会有如下内容:
CONFIG_PROC_FS=y

我不明白的是,如果要将上面的proc_root_init编译进内核,必须有#define CONFIG_PROC_FS或者编译时使用-DCONFIG_PROC_FS,但这两种方法我在代码中都找不到,难道是CONFIG_PROC_FS=y起作用了?如果是的话,它是怎么起作用的?
请指教,谢谢。


=================================================================================================================================

我是这样理解的:
#define CONFIG_PROC_FS 1 是在 include/linux/autoconf.h 中定义的 (autoconf.h 又是通过make menuconfig生成的)
在 顶层的Makefile中 定义了 LINUXINCLUDE.
LINUXINCLUDE    := -Iinclude \
                   $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
           -include include/linux/autoconf.h
在编译 init/main.c时gcc会处理 -include include/linux/autoconf.h,相当于源文件中有 #include "linux/autoconfi.h"语句,此时 init/main.c就可以使用autoconf.h中的个个宏了。

cmd_init/main.o := gcc -m32 -Wp,-MD,init/.main.o.d  -nostdinc -isystem /usr/lib/gcc/i386-redhat-linux/4.1.2/include -D__KERNEL__ -Iinclude -Iinclude2 -I/root/fs_all/kernel/linux-2.6.24/include -include include/linux/autoconf.h -I/root/fs_all/kernel/linux-2.6.24/init -Iinit -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -pipe -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -ffreestanding -maccumulate-outgoing-args -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -I/root/fs_all/kernel/linux-2.6.24/include/asm-x86/mach-generic -Iinclude/asm-x86/mach-generic -I/root/fs_all/kernel/linux-2.6.24/include/asm-x86/mach-default -Iinclude/asm-x86/mach-default -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign  -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(main)"  -D"KBUILD_MODNAME=KBUILD_STR(main)" -c -o init/.tmp_main.o /root/   fs_all/kernel/linux-2.6.24/init/main.c




http://www.oldlinux.org/oldlinux/viewthread.php?tid=13547

==================================================================================================================================

在嵌入式linux中:Linux-2.6.35.7/include/generated/autoconfig.h

// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (c) 2011 The Chromium OS Authors. * (C) Copyright 2002-2006 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> * Marius Groeger <mgroeger@sysgo.de> */ #include <common.h> #include <api.h> #include <bootstage.h> #include <cpu_func.h> #include <exports.h> #include <flash.h> #include <hang.h> #include <image.h> #include <irq_func.h> #include <log.h> #include <net.h> #include <asm/cache.h> #include <asm/global_data.h> #include <u-boot/crc.h> /* TODO: can we just include all these headers whether needed or not? */ #if defined(CONFIG_CMD_BEDBUG) #include <bedbug/type.h> #endif #include <binman.h> #include <command.h> #include <console.h> #include <dm.h> #include <env.h> #include <env_internal.h> #include <fdtdec.h> #include <ide.h> #include <init.h> #include <initcall.h> #if defined(CONFIG_CMD_KGDB) #include <kgdb.h> #endif #include <irq_func.h> #include <malloc.h> #include <mapmem.h> #ifdef CONFIG_BITBANGMII #include <miiphy.h> #endif #include <mmc.h> #include <mux.h> #include <nand.h> #include <of_live.h> #include <onenand_uboot.h> #include <pvblock.h> #include <scsi.h> #include <serial.h> #include <status_led.h> #include <stdio_dev.h> #include <timer.h> #include <trace.h> #include <watchdog.h> #ifdef CONFIG_XEN #include <xen.h> #endif #ifdef CONFIG_ADDR_MAP #include <asm/mmu.h> #endif #include <asm/sections.h> #include <dm/root.h> #include <linux/compiler.h> #include <linux/err.h> #include <efi_loader.h> #include <wdt.h> #if defined(CONFIG_GPIO_HOG) #include <asm/gpio.h> #endif #ifdef CONFIG_EFI_SETUP_EARLY #include <efi_loader.h> #endif DECLARE_GLOBAL_DATA_PTR; ulong monitor_flash_len; __weak int board_flash_wp_on(void) { /* * Most flashes can't be detected when write protection is enabled, * so provide a way to let U-Boot gracefully ignore write protected * devices. */ return 0; } __weak int cpu_secondary_init_r(void) { return 0; } static int initr_trace(void) { #ifdef CONFIG_TRACE trace_init(gd->trace_buff, CONFIG_TRACE_BUFFER_SIZE); #endif return 0; } static int initr_reloc(void) { /* tell others: relocation done */ gd->flags |= GD_FLG_RELOC | GD_FLG_FULL_MALLOC_INIT; return 0; } #if defined(CONFIG_ARM) || defined(CONFIG_RISCV) /* * Some of these functions are needed purely because the functions they * call return void. If we change them to return 0, these stubs can go away. */ static int initr_caches(void) { /* Enable caches */ enable_caches(); return 0; } #endif __weak int fixup_cpu(void) { return 0; } static int initr_reloc_global_data(void) { #ifdef __ARM__ monitor_flash_len = _end - __image_copy_start; #elif defined(CONFIG_NDS32) || defined(CONFIG_RISCV) monitor_flash_len = (ulong)&_end - (ulong)&_start; #elif !defined(CONFIG_SANDBOX) && !defined(CONFIG_NIOS2) monitor_flash_len = (ulong)&__init_end - gd->relocaddr; #endif #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) /* * The gd->cpu pointer is set to an address in flash before relocation. * We need to update it to point to the same CPU entry in RAM. * TODO: why not just add gd->reloc_ofs? */ gd->arch.cpu += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; /* * If we didn't know the cpu mask & # cores, we can save them of * now rather than 'computing' them constantly */ fixup_cpu(); #endif #ifdef CONFIG_SYS_RELOC_GD_ENV_ADDR /* * Relocate the early env_addr pointer unless we know it is not inside * the binary. Some systems need this and for the rest, it doesn't hurt. */ gd->env_addr += gd->reloc_off; #endif #ifdef CONFIG_OF_EMBED /* * The fdt_blob needs to be moved to new relocation address * incase of FDT blob is embedded with in image */ gd->fdt_blob += gd->reloc_off; #endif #ifdef CONFIG_EFI_LOADER /* * On the ARM architecture gd is mapped to a fixed register (r9 or x18). * As this register may be overwritten by an EFI payload we save it here * and restore it on every callback entered. */ efi_save_gd(); efi_runtime_relocate(gd->relocaddr, NULL); #endif return 0; } __weak int arch_initr_trap(void) { return 0; } #ifdef CONFIG_ADDR_MAP static int initr_addr_map(void) { init_addr_map(); return 0; } #endif #if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) static int initr_unlock_ram_in_cache(void) { unlock_ram_in_cache(); /* it's time to unlock D-cache in e500 */ return 0; } #endif static int initr_barrier(void) { #ifdef CONFIG_PPC /* TODO: Can we not use dmb() macros for this? */ asm("sync ; isync"); #endif return 0; } static int initr_malloc(void) { ulong malloc_start; #if CONFIG_VAL(SYS_MALLOC_F_LEN) debug("Pre-reloc malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr, gd->malloc_ptr / 1024); #endif /* The malloc area is immediately below the monitor copy in DRAM */ /* * This value MUST match the value of gd->start_addr_sp in board_f.c: * reserve_noncached(). */ malloc_start = gd->relocaddr - TOTAL_MALLOC_LEN; mem_malloc_init((ulong)map_sysmem(malloc_start, TOTAL_MALLOC_LEN), TOTAL_MALLOC_LEN); return 0; } static int initr_of_live(void) { if (CONFIG_IS_ENABLED(OF_LIVE)) { int ret; bootstage_start(BOOTSTAGE_ID_ACCUM_OF_LIVE, "of_live"); ret = of_live_build(gd->fdt_blob, (struct device_node **)gd_of_root_ptr()); bootstage_accum(BOOTSTAGE_ID_ACCUM_OF_LIVE); if (ret) return ret; } return 0; } #ifdef CONFIG_DM static int initr_dm(void) { int ret; /* Save the pre-reloc driver model and start a new one */ gd->dm_root_f = gd->dm_root; gd->dm_root = NULL; #ifdef CONFIG_TIMER gd->timer = NULL; #endif bootstage_start(BOOTSTAGE_ID_ACCUM_DM_R, "dm_r"); ret = dm_init_and_scan(false); bootstage_accum(BOOTSTAGE_ID_ACCUM_DM_R); if (ret) return ret; return 0; } #endif static int initr_dm_devices(void) { int ret; if (IS_ENABLED(CONFIG_TIMER_EARLY)) { ret = dm_timer_init(); if (ret) return ret; } if (IS_ENABLED(CONFIG_MULTIPLEXER)) { /* * Initialize the multiplexer controls to their default state. * This must be done early as other drivers may unknowingly * rely on it. */ ret = dm_mux_init(); if (ret) return ret; } return 0; } static int initr_bootstage(void) { bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r"); return 0; } __weak int power_init_board(void) { return 0; } static int initr_announce(void) { debug("Now running in RAM - U-Boot at: %08lx\n", gd->relocaddr); return 0; } #ifdef CONFIG_NEEDS_MANUAL_RELOC static int initr_manual_reloc_cmdtable(void) { fixup_cmdtable(ll_entry_start(struct cmd_tbl, cmd), ll_entry_count(struct cmd_tbl, cmd)); return 0; } #endif static int initr_binman(void) { int ret; if (!CONFIG_IS_ENABLED(BINMAN_FDT)) return 0; ret = binman_init(); if (ret) printf("binman_init failed:%d\n", ret); return ret; } #if defined(CONFIG_MTD_NOR_FLASH) __weak int is_flash_available(void) { return 1; } static int initr_flash(void) { ulong flash_size = 0; struct bd_info *bd = gd->bd; if (!is_flash_available()) return 0; puts("Flash: "); if (board_flash_wp_on()) printf("Uninitialized - Write Protect On\n"); else flash_size = flash_init(); print_size(flash_size, ""); #ifdef CONFIG_SYS_FLASH_CHECKSUM /* * Compute and print flash CRC if flashchecksum is set to 'y' * * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX */ if (env_get_yesno("flashchecksum") == 1) { const uchar *flash_base = (const uchar *)CONFIG_SYS_FLASH_BASE; printf(" CRC: %08X", crc32(0, flash_base, flash_size)); } #endif /* CONFIG_SYS_FLASH_CHECKSUM */ putc('\n'); /* update start of FLASH memory */ #ifdef CONFIG_SYS_FLASH_BASE bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; #endif /* size of FLASH memory (final value) */ bd->bi_flashsize = flash_size; #if defined(CONFIG_SYS_UPDATE_FLASH_SIZE) /* Make a update of the Memctrl. */ update_flash_size(flash_size); #endif #if defined(CONFIG_OXC) || defined(CONFIG_RMU) /* flash mapped at end of memory map */ bd->bi_flashoffset = CONFIG_SYS_TEXT_BASE + flash_size; #elif CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE bd->bi_flashoffset = monitor_flash_len; /* reserved area for monitor */ #endif return 0; } #endif #ifdef CONFIG_CMD_NAND /* go init the NAND */ static int initr_nand(void) { puts("NAND: "); nand_init(); printf("%lu MiB\n", nand_size() / 1024); return 0; } #endif #if defined(CONFIG_CMD_ONENAND) /* go init the NAND */ static int initr_onenand(void) { puts("NAND: "); onenand_init(); return 0; } #endif #ifdef CONFIG_MMC static int initr_mmc(void) { puts("MMC: "); mmc_initialize(gd->bd); return 0; } #endif #ifdef CONFIG_PVBLOCK static int initr_pvblock(void) { puts("PVBLOCK: "); pvblock_init(); return 0; } #endif /* * Tell if it's OK to load the environment early in boot. * * If CONFIG_OF_CONTROL is defined, we'll check with the FDT to see * if this is OK (defaulting to saying it's OK). * * NOTE: Loading the environment early can be a bad idea if security is * important, since no verification is done on the environment. * * @return 0 if environment should not be loaded, !=0 if it is ok to load */ static int should_load_env(void) { if (IS_ENABLED(CONFIG_OF_CONTROL)) return fdtdec_get_config_int(gd->fdt_blob, "load-environment", 1); if (IS_ENABLED(CONFIG_DELAY_ENVIRONMENT)) return 0; return 1; } static int initr_env(void) { /* initialize environment */ if (should_load_env()) env_relocate(); else env_set_default(NULL, 0); env_import_fdt(); if (IS_ENABLED(CONFIG_OF_CONTROL)) env_set_hex("fdtcontroladdr", (unsigned long)map_to_sysmem(gd->fdt_blob)); /* Initialize from environment */ image_load_addr = env_get_ulong("loadaddr", 16, image_load_addr); return 0; } #ifdef CONFIG_SYS_BOOTPARAMS_LEN static int initr_malloc_bootparams(void) { gd->bd->bi_boot_params = (ulong)malloc(CONFIG_SYS_BOOTPARAMS_LEN); if (!gd->bd->bi_boot_params) { puts("WARNING: Cannot allocate space for boot parameters\n"); return -ENOMEM; } return 0; } #endif #ifdef CONFIG_CMD_NET static int initr_ethaddr(void) { struct bd_info *bd = gd->bd; /* kept around for legacy kernels only ... ignore the next section */ eth_env_get_enetaddr("ethaddr", bd->bi_enetaddr); return 0; } #endif /* CONFIG_CMD_NET */ #ifdef CONFIG_CMD_KGDB static int initr_kgdb(void) { puts("KGDB: "); kgdb_init(); return 0; } #endif #if defined(CONFIG_LED_STATUS) static int initr_status_led(void) { #if defined(CONFIG_LED_STATUS_BOOT) status_led_set(CONFIG_LED_STATUS_BOOT, CONFIG_LED_STATUS_BLINKING); #else status_led_init(); #endif return 0; } #endif #if defined(CONFIG_SCSI) && !defined(CONFIG_DM_SCSI) static int initr_scsi(void) { puts("SCSI: "); scsi_init(); puts("\n"); return 0; } #endif #ifdef CONFIG_CMD_NET static int initr_net(void) { puts("Net: "); eth_initialize(); #if defined(CONFIG_RESET_PHY_R) debug("Reset Ethernet PHY\n"); reset_phy(); #endif return 0; } #endif #ifdef CONFIG_POST static int initr_post(void) { post_run(NULL, POST_RAM | post_bootmode_get(0)); return 0; } #endif #if defined(CONFIG_IDE) && !defined(CONFIG_BLK) static int initr_ide(void) { puts("IDE: "); #if defined(CONFIG_START_IDE) if (board_start_ide()) ide_init(); #else ide_init(); #endif return 0; } #endif #if defined(CONFIG_PRAM) /* * Export available size of memory for Linux, taking into account the * protected RAM at top of memory */ int initr_mem(void) { ulong pram = 0; char memsz[32]; pram = env_get_ulong("pram", 10, CONFIG_PRAM); sprintf(memsz, "%ldk", (long int)((gd->ram_size / 1024) - pram)); env_set("mem", memsz); return 0; } #endif static int run_main_loop(void) { #ifdef CONFIG_SANDBOX sandbox_main_loop_init(); #endif /* main_loop() can return to retry autoboot, if so just run it again */ for (;;) main_loop(); return 0; } /* * We hope to remove most of the driver-related init and do it if/when * the driver is later used. * * TODO: perhaps reset the watchdog in the initcall function after each call? */ static init_fnc_t init_sequence_r[] = { initr_trace, initr_reloc, /* TODO: could x86/PPC have this also perhaps? */ #if defined(CONFIG_ARM) || defined(CONFIG_RISCV) initr_caches, /* Note: For Freescale LS2 SoCs, new MMU table is created in DDR. * A temporary mapping of IFC high region is since removed, * so environmental variables in NOR flash is not available * until board_init() is called below to remap IFC to high * region. */ #endif initr_reloc_global_data, #if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) initr_unlock_ram_in_cache, #endif initr_barrier, initr_malloc, log_init, initr_bootstage, /* Needs malloc() but has its own timer */ #if defined(CONFIG_CONSOLE_RECORD) console_record_init, #endif #ifdef CONFIG_SYS_NONCACHED_MEMORY noncached_init, #endif initr_of_live, #ifdef CONFIG_DM initr_dm, #endif #ifdef CONFIG_ADDR_MAP initr_addr_map, #endif #if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ defined(CONFIG_SANDBOX) board_init, /* Setup chipselects */ #endif /* * TODO: printing of the clock inforamtion of the board is now * implemented as part of bdinfo command. Currently only support for * davinci SOC's is added. Remove this check once all the board * implement this. */ #ifdef CONFIG_CLOCKS set_cpu_clk_info, /* Setup clock information */ #endif #ifdef CONFIG_EFI_LOADER efi_memory_init, #endif initr_binman, #ifdef CONFIG_FSP_VERSION2 arch_fsp_init_r, #endif initr_dm_devices, stdio_init_tables, serial_initialize, initr_announce, #if CONFIG_IS_ENABLED(WDT) initr_watchdog, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE) blkcache_init, #endif #ifdef CONFIG_NEEDS_MANUAL_RELOC initr_manual_reloc_cmdtable, #endif arch_initr_trap, #if defined(CONFIG_BOARD_EARLY_INIT_R) board_early_init_r, #endif INIT_FUNC_WATCHDOG_RESET #ifdef CONFIG_POST post_output_backlog, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_PCI_INIT_R) && defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do early PCI configuration _before_ the flash gets initialised, * because PCU resources are crucial for flash access on some boards. */ pci_init, #endif #ifdef CONFIG_ARCH_EARLY_INIT_R arch_early_init_r, #endif power_init_board, #ifdef CONFIG_MTD_NOR_FLASH initr_flash, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86) /* initialize higher level parts of CPU like time base and timers */ cpu_init_r, #endif #ifdef CONFIG_CMD_NAND initr_nand, #endif #ifdef CONFIG_CMD_ONENAND initr_onenand, #endif #ifdef CONFIG_MMC initr_mmc, #endif #ifdef CONFIG_XEN xen_init, #endif #ifdef CONFIG_PVBLOCK initr_pvblock, #endif initr_env, #ifdef CONFIG_SYS_BOOTPARAMS_LEN initr_malloc_bootparams, #endif INIT_FUNC_WATCHDOG_RESET cpu_secondary_init_r, #if defined(CONFIG_ID_EEPROM) || defined(CONFIG_SYS_I2C_MAC_OFFSET) mac_read_from_eeprom, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_PCI_INIT_R) && !defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do pci configuration */ pci_init, #endif stdio_add_devices, jumptable_init, #ifdef CONFIG_API api_init, #endif console_init_r, /* fully init console as a device */ #ifdef CONFIG_DISPLAY_BOARDINFO_LATE console_announce_r, show_board_info, #endif #ifdef CONFIG_ARCH_MISC_INIT arch_misc_init, /* miscellaneous arch-dependent init */ #endif #ifdef CONFIG_MISC_INIT_R misc_init_r, /* miscellaneous platform-dependent init */ #endif INIT_FUNC_WATCHDOG_RESET #ifdef CONFIG_CMD_KGDB initr_kgdb, #endif interrupt_init, #if defined(CONFIG_MICROBLAZE) || defined(CONFIG_M68K) timer_init, /* initialize timer */ #endif #if defined(CONFIG_LED_STATUS) initr_status_led, #endif /* PPC has a udelay(20) here dating from 2002. Why? */ #ifdef CONFIG_CMD_NET initr_ethaddr, #endif #if defined(CONFIG_GPIO_HOG) gpio_hog_probe_all, #endif #ifdef CONFIG_BOARD_LATE_INIT board_late_init, #endif #if defined(CONFIG_SCSI) && !defined(CONFIG_DM_SCSI) INIT_FUNC_WATCHDOG_RESET initr_scsi, #endif #ifdef CONFIG_BITBANGMII bb_miiphy_init, #endif #ifdef CONFIG_PCI_ENDPOINT pci_ep_init, #endif #ifdef CONFIG_CMD_NET INIT_FUNC_WATCHDOG_RESET initr_net, #endif #ifdef CONFIG_POST initr_post, #endif #if defined(CONFIG_IDE) && !defined(CONFIG_BLK) initr_ide, #endif #ifdef CONFIG_LAST_STAGE_INIT INIT_FUNC_WATCHDOG_RESET /* * Some parts can be only initialized if all others (like * Interrupts) are up and running (i.e. the PC-style ISA * keyboard). */ last_stage_init, #endif #ifdef CONFIG_CMD_BEDBUG INIT_FUNC_WATCHDOG_RESET bedbug_init, #endif #if defined(CONFIG_PRAM) initr_mem, #endif #ifdef CONFIG_EFI_SETUP_EARLY (init_fnc_t)efi_init_obj_list, #endif run_main_loop, }; void board_init_r(gd_t *new_gd, ulong dest_addr) { /* * Set up the new global data pointer. So far only x86 does this * here. * TODO(sjg@chromium.org): Consider doing this for all archs, or * dropping the new_gd parameter. */ #if CONFIG_IS_ENABLED(X86_64) arch_setup_gd(new_gd); #endif #ifdef CONFIG_NEEDS_MANUAL_RELOC int i; #endif #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) gd = new_gd; #endif gd->flags &= ~GD_FLG_LOG_READY; #ifdef CONFIG_NEEDS_MANUAL_RELOC for (i = 0; i < ARRAY_SIZE(init_sequence_r); i++) init_sequence_r[i] += gd->reloc_off; #endif if (initcall_run_list(init_sequence_r)) hang(); /* NOTREACHED - run_main_loop() does not return */ hang(); }
09-05
enum { MTD_IDX_CONFIG = 0, /* Let DM config size to 2 * MTD_BLOCK_SIZE */ #ifdef INCLUDE_OPTION66 MTD_IDX_ISP_CONFIG = 1, #endif /* INCLUDE_OPTION66 */ MTD_IDX_OTHER = 2, /* Let DM config size to 2 * MTD_BLOCK_SIZE */ MTD_IDX_DECT, MTD_IDX_WIFI, MTD_IDX_WIFI_5G, #ifdef INCLUDE_PON_MTK MTD_IDX_PON, #endif /* INCLUDE_PON_MTK */ #ifdef INCLUDE_IMPORTANT_CONFIG MTD_IDX_IMCONF, #endif /* INCLUDE_IMPORTANT_CONFIG */ MTD_IDX_CONFIG_BAK, MTD_IDX_MAX }; /* end index in MISC partition */ /************************************** block offset defines **************************************/ #define MTD_OFS_CONFIG (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_CONFIG) /* config */ #define MTD_OFS_OTHER (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_OTHER) /* romfile */ #define MTD_OFS_WIFI (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_WIFI) /* radio_2g */ #ifdef INCLUDE_LAN_WLAN_DUALBAND #define MTD_OFS_WIFI_5G (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_WIFI_5G) /* radio_2g */ #endif /* INCLUDE_WIFI_DUALBAND */ #ifdef INCLUDE_PON_MTK #define MTD_OFS_PON (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_PON) #endif /* INCLUDE_PON_MTK */ #ifdef INCLUDE_IMPORTANT_CONFIG #define MTD_OFS_IMCONF (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_IMCONF) #endif /* INCLUDE_IMPORTANT_CONFIG */ #ifdef INCLUDE_OPTION66 #define MTD_OFS_ISP_CONFIG (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_ISP_CONFIG)/* Agile config */ #endif /* INCLUDE_OPTION66 */ #define MTD_OFS_CONFIG_BAK (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_CONFIG_BAK)根据这部分解释一下#define MTD_OFS_OTHER (MTD_OFS_MISC + MTD_BLOCK_SIZE * MTD_IDX_OTHER) /* romfile */什么意思,这是在哪个分区
10-28
product_config/c520wsv2/buildroot.config:2074:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c520wsv2/kernel.config:2268:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c325wbv2/kernel.config:2223:# CONFIG_FDT_UPGRADE_SUPPORT is not set product_config/c310v3/kernel.config:2197:# CONFIG_FDT_UPGRADE_SUPPORT is not set product_config/c530wsv2/buildroot.config:2068:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c530wsv2/kernel.config:2268:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c320wsv2/kernel.config:2222:# CONFIG_FDT_UPGRADE_SUPPORT is not set product_config/tc68v1/buildroot.config:2051:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/tc68v1/kernel.config:2220:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c325wbv1/kernel.config:2223:# CONFIG_FDT_UPGRADE_SUPPORT is not set product_config/c520wsv1/buildroot.config:2074:CONFIG_FDT_UPGRADE_SUPPORT=y product_config/c520wsv1/kernel.config:2210:CONFIG_FDT_UPGRADE_SUPPORT=y tools/firmware-utils/Makefile:18:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) tools/firmware-utils/Makefile:19: HOST_CFLAGS += -DFDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.h:48:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.h:69:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.h:116:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:518:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:1538:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:1658:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:1676:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:1809:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:2067:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:2098:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:2115:#ifdef FDT_UPGRADE_SUPPORT tools/firmware-utils/src/mkslpfw.c:2802:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libsdm/Makefile:99:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) tp_package/lib/libsdm/Makefile:100: TARGET_CFLAGS += -DFDT_UPGRADE_SUPPORT tp_package/lib/libsdm/src/slp_model.h:5361:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libsdm/src/slp_model.h:5381:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libsdm/src/property.c:164:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libsdm/src/property.c:184:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libflashio/Makefile:38:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) tp_package/lib/libflashio/Makefile:39:export CONFIG_FDT_UPGRADE_SUPPORT=y tp_package/lib/libflashio/src/Makefile:31:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) tp_package/lib/libflashio/src/Makefile:32:CFLAGS += -DFDT_UPGRADE_SUPPORT tp_package/lib/libflashio/src/flashio.h:46:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libflashio/src/flashio.h:385:#ifdef FDT_UPGRADE_SUPPORT tp_package/lib/libflashio/src/flashio.c:618:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/Makefile:330:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) tp_package/nsd/Makefile:331:TARGET_CFLAGS += -DFDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:177:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:192:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:1153:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:1708:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:1769:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.c:1984:#ifdef FDT_UPGRADE_SUPPORT tp_package/nsd/src/modules/upgrade/common.h:64:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/usr/include/slp_model.h:5541:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/usr/include/slp_model.h:5561:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/usr/include/flashio.h:46:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/usr/include/flashio.h:385:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-gnueabi-c212v3/usr/include/slp_model.h:5361:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-gnueabi-c212v3/usr/include/slp_model.h:5381:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-gnueabi-c212v3/usr/include/flashio.h:46:#ifdef FDT_UPGRADE_SUPPORT staging_dir/target-arm-openwrt-linux-gnueabi-c212v3/usr/include/flashio.h:385:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libsdm/slp_model.h:5541:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libsdm/slp_model.h:5561:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libsdm/property.c:164:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libsdm/property.c:184:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:177:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:192:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:1153:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:1708:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:1769:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.c:1984:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/nsd/modules/upgrade/common.h:64:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libflashio/Makefile:31:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libflashio/Makefile:32:CFLAGS += -DFDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libflashio/flashio.h:46:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libflashio/flashio.h:385:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-uclibcgnueabi-c110v2/libflashio/flashio.c:618:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libsdm/slp_model.h:5361:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libsdm/slp_model.h:5381:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libsdm/property.c:164:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libsdm/property.c:184:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:177:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:192:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:1153:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:1708:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:1769:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.c:1984:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/nsd/modules/upgrade/common.h:64:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libflashio/Makefile:31:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libflashio/Makefile:32:CFLAGS += -DFDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libflashio/flashio.h:46:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libflashio/flashio.h:385:#ifdef FDT_UPGRADE_SUPPORT build_dir/target-arm-openwrt-linux-gnueabi-c212v3/libflashio/flashio.c:618:#ifdef FDT_UPGRADE_SUPPORT target/linux/nvt98567/image/Makefile:129:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) target/linux/nvt9856x/image/Makefile:124:ifeq ($(CONFIG_FDT_UPGRADE_SUPPORT),y) CONFIG_FDT_UPGRADE_SUPPORT=y是在哪
09-29
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值