博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uboot 下board_init_f调用函数集合
阅读量:4154 次
发布时间:2019-05-25

本文共 5173 字,大约阅读时间需要 17 分钟。

 
前面我们讨论了board_init_f调用的调用时机,此函数主要是对init_sequence_f中的函数进行回调。
common/board_f.c static const init_fnc_t init_sequence_f[] = {#ifdef CONFIG_SANDBOX setup_ram_buf,#endif  setup_mon_len, #ifdef CONFIG_OF_CONTROL fdtdec_setup,#endif #ifdef CONFIG_TRACE trace_early_init,#endif  initf_malloc, initf_console_record, #if defined(CONFIG_X86) && defined(CONFIG_HAVE_FSP) x86_fsp_init,#endif  arch_cpu_init,  /* basic arch cpu dependent setup */ mach_cpu_init,  /* SoC/machine dependent CPU setup */ initf_dm, arch_cpu_init_dm, mark_bootstage,  /* need timer, go after init dm */ #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f,#endif  /* TODO: can any of this go into arch_cpu_init()? */#if defined(CONFIG_PPC) && !defined(CONFIG_8xx_CPUCLK_DEFAULT) get_clocks,  /* get CPU and bus clocks (etc.) */#if defined(CONFIG_TQM8xxL) && !defined(CONFIG_TQM866M) \  && !defined(CONFIG_TQM885D) adjust_sdram_tbs_8xx,#endif  /* TODO: can we rename this to timer_init()? */ init_timebase, #endif #if defined(CONFIG_ARM) || defined(CONFIG_MIPS) || \  defined(CONFIG_BLACKFIN) || defined(CONFIG_NDS32) || \  defined(CONFIG_SH) || defined(CONFIG_SPARC) timer_init,  /* initialize timer */#endif #if defined(CONFIG_BOARD_POSTCLK_INIT) board_postclk_init,#endif #if defined(CONFIG_SYS_FSL_CLK) || defined(CONFIG_M68K) get_clocks,#endif  env_init,  /* initialize environment */ #if defined(CONFIG_8xx_CPUCLK_DEFAULT) /* get CPU and bus clocks according to the environment variable */ get_clocks_866, /* adjust sdram refresh rate according to the new clock */ sdram_adjust_866, init_timebase,#endif  init_baud_rate,  /* initialze baudrate settings */ serial_init,  /* serial communications setup */ console_init_f,  /* stage 1 init of console */ #ifdef CONFIG_SANDBOX sandbox_early_getopt_check,#endif  display_options, /* say that we are here */ display_text_info, /* show debugging info if required */ #if defined(CONFIG_MPC8260) prt_8260_rsr, prt_8260_clks,#endif /* CONFIG_MPC8260 */ #if defined(CONFIG_MPC83xx) prt_83xx_rsr,#endif #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SH) checkcpu,#endif #if defined(CONFIG_DISPLAY_CPUINFO) print_cpuinfo,  /* display cpu info (and speed) */#endif #if defined(CONFIG_DISPLAY_BOARDINFO) show_board_info,#endif  INIT_FUNC_WATCHDOG_INIT #if defined(CONFIG_MISC_INIT_F) misc_init_f,#endif  INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SYS_I2C) init_func_i2c,#endif #if defined(CONFIG_HARD_SPI) init_func_spi,#endif  announce_dram_init,  /* TODO: unify all these dram functions? */#if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_NDS32) || \  defined(CONFIG_MICROBLAZE) || defined(CONFIG_AVR32) || \  defined(CONFIG_SH) dram_init,  /* configure available RAM banks */#endif #if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K) init_func_ram,#endif #ifdef CONFIG_POST post_init_f,#endif  INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_SYS_DRAM_TEST) testdram,#endif /* CONFIG_SYS_DRAM_TEST */  INIT_FUNC_WATCHDOG_RESET #ifdef CONFIG_POST init_post,#endif  INIT_FUNC_WATCHDOG_RESET  /*  * Now that we have DRAM mapped and working, we can  * relocate the code and continue running from DRAM.  *  * Reserve memory at end of RAM for (top down in that order):  *  - area that won't get touched by U-Boot and Linux (optional)  *  - kernel log buffer  *  - protected RAM  *  - LCD framebuffer  *  - monitor code  *  - board info struct  */ setup_dest_addr, #if defined(CONFIG_BLACKFIN) || defined(CONFIG_XTENSA) /* Blackfin u-boot monitor should be on top of the ram */ reserve_uboot,#endif #if defined(CONFIG_SPARC) reserve_prom,#endif #if defined(CONFIG_LOGBUFFER) && !defined(CONFIG_ALT_LB_ADDR) reserve_logbuffer,#endif #ifdef CONFIG_PRAM reserve_pram,#endif  reserve_round_4k, #if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF)) && \  defined(CONFIG_ARM) reserve_mmu,#endif #ifdef CONFIG_DM_VIDEO reserve_video,#else  # ifdef CONFIG_LCD 	reserve_lcd,  # endif   /* TODO: Why the dependency on CONFIG_8xx? */  # if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) && \      !defined(CONFIG_ARM) && !defined(CONFIG_X86) && \      !defined(CONFIG_BLACKFIN) && !defined(CONFIG_M68K)     reserve_legacy_video,  # endif#endif /* CONFIG_DM_VIDEO */  reserve_trace, #if !defined(CONFIG_BLACKFIN) && !defined(CONFIG_XTENSA) reserve_uboot,#endif #ifndef CONFIG_SPL_BUILD reserve_malloc, reserve_board,#endif  setup_machine, reserve_global_data, reserve_fdt, reserve_arch, reserve_stacks, setup_dram_config, show_dram_config, #if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \ defined(CONFIG_SH) setup_board_part1,#endif #if defined(CONFIG_PPC) || defined(CONFIG_M68K) INIT_FUNC_WATCHDOG_RESET setup_board_part2,#endif  display_new_sp, #ifdef CONFIG_SYS_EXTBDINFO setup_board_extra,#endif  INIT_FUNC_WATCHDOG_RESET reloc_fdt, setup_reloc, #if defined(CONFIG_X86) || defined(CONFIG_ARC) copy_uboot_to_ram, do_elf_reloc_fixups, clear_bss,#endif #if defined(CONFIG_XTENSA) clear_bss,#endif #if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX) && \  !CONFIG_IS_ENABLED(X86_64) jump_to_copy,#endif  NULL,};我们稍后对这些函数详细的分析。
 

转载地址:http://ikhti.baihongyu.com/

你可能感兴趣的文章
Windows和Ubuntu11.10在Eclipse中配置C和GTK
查看>>
Python SIP使用总结(Win&Linux通用)
查看>>
MinGW手动安装
查看>>
Visual Studio2011安装问题(更新无法定位程序输入点_Atomic_fetch_sub_4动态链接库MSVCR110.dll上的问题)
查看>>
C++11的新功能特性对Boost库影响
查看>>
《计算机网络》试读感想
查看>>
试译雷神的微软平台安全宝典第二章 简介和RSA章节
查看>>
Eclipse 4 IDE学习笔记(2、必须理解的几个Eclipse概念)
查看>>
《图像处理与计算机视觉算法及应用》读后感
查看>>
利用开源软件提高自己的GIS编程能力
查看>>
GDAL/ORG之Python获取与安装
查看>>
如何下载MSN离线包
查看>>
初学者开发iOS游戏的入门必备用书——iOS 5 cocos2d游戏开发实战(第2版)
查看>>
《代码阅读》——“Jolt大奖精选丛书”有奖征文
查看>>
《面向对象的分析与设计》——“Jolt大奖精选丛书”有奖征文
查看>>
《快学Scala》试读——对Scala的一点了解
查看>>
《x86/x64体系探索及编程》试读
查看>>
拥有优秀作者和优秀译者的优秀的C指针书籍——《征服C指针》
查看>>
Windows下IPython的配置安装
查看>>
NumPy简明教程(一、简介)
查看>>