UBOOT2016.05
UART初始化及设置
- SPL阶段
第一部分C函数
|- s_init //(arch/arm/cpu/armv7/am33xx/board.c)
|- set_uart_mux_conf(\board\ti\am335x\board.c会用到Kconfig文件中的CONFIG_CONS_INDEX来初始化对应的UART)
|-enable_uart0_pin_mux(\board\ti\am335x\Mux.c)
|-configure_module_pin_mux (src\arch\arm\cpu\armv7\am33xx\Mux.c进行PINMUX设置)
|-setup_clocks_for_console(\arch\arm\cpu\armv7\am33xx\Clock_am33xx.c初始化各个UART控制器时钟)
|-uart_soft_reset(\arch\arm\cpu\armv7\am33xx\board.c 会用到\arch\arm\include\asm\arch-am33xx\Hardware.h的#define DEFAULT_UART_BASE UART0_BASE
进一步的定义在arch\arm\include\asm\arch-am33xx\Hardware_am33xx.h #define UART0_BASE 0x44E09000 )
第二部分C函数
|- board_init_f //(arch/arm/cpu/armv7/am33xx/board.c)
|- board_early_init_f //(arch/arm/cpu/armv7/am33xx/board.c)
|- prcm_init(\arch\arm\cpu\armv7\am33xx\Clock.c)
|-enable_basic_clocks(\arch\arm\cpu\armv7\am33xx\Clock_am33xx.c 外设单元时钟域初始化)
|-scale_vcores(\arch\arm\cpu\armv7\am33xx\Clock.c 暂无作用?);
|-setup_dplls(\arch\arm\cpu\armv7\am33xx\Clock.c 暂时理解为各单元PLL初始化)
|-timer_init(src\arch\arm\cpu\armv7\omap-common\Timer.c 不确定???)
|-set_mux_conf_regs(\board\ti\am335x\ Board.c);
|-enable_board_pin_mux(\board\ti\am335x\ Mux.c 根据板子类型进行PINUMUX配置,注意,这里根据板子类型,第二次设置了串口的PINMUX)
|-configure_module_pin_mux(src\arch\arm\cpu\armv7\am33xx\Mux.c 进行PINMUX设置 这里设置了mmc0_pin