vendor/brand/proprietary/bootable/bootloader/lk/makefile
OUTBIN := $(BUILDDIR)/lk.bin
OUTELF := $(BUILDDIR)/lk
vendor/brand/proprietary/bootable/bootloader/lk/make/build.mk
$(OUTBIN): $(OUTELF)
@echo generating image: $@
$(NOECHO)$(SIZE) $<
$(NOCOPY)$(OBJCOPY) -O binary $< $@
$(NOECHO)cp -f $@ $(BUILDDIR)/lk-no-mtk-header.bin
$(MKIMAGE) $@ img_hdr_lk.cfg > $(BUILDDIR)/lk_header.bin
$(NOECHO)mv $(BUILDDIR)/lk_header.bin $@
@echo linking $@
$(NOECHO)$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) $(OUTPUT_TZ_BIN) $(ALLOBJS) $(LIBGCC) $(LIBSEC) $(LIBSEC_PLAT) $(wildcard $(PICACHU_LIB)) -o $@
vendor/brand/proprietary/bootable/bootloader/lk/makefile
ALLOBJS := \
$(BOOTOBJS) \
$(OBJS)
vendor/brand/proprietary/bootable/bootloader/lk/arch/arm/rules.mk
BOOTOBJS += \
$(LOCAL_DIR)/crt0.o
vendor\brand\proprietary\bootable\bootloader\lk\arch\arm\crt0.S
bl kmain
vendor\brand\proprietary\bootable\bootloader\lk\kernel\main.c
kmain
thread_init_early //添加當前線程進 線程上下文(線程管理)
platform_early_init
uart_init_early(4個串口 #define CONFIG_BAUDRATE 921600)
mt_gpio_set_default
mt_gpio_set_default_chip(gpio0-163)
(bootarg_addr: 0x4489ef00, bootarg_size: 0x167b)
pmic_init(mt_pmic_6357.c)
thread_resume(thread_create("bootstrap2", &bootstrap2, NULL, DEFAULT_PRIORITY, DEFAULT_STACK_SIZE));
thread_resume(thread_create("iothread", &iothread, NULL, IO_THREAD_PRIORITY, DEFAULT_STACK_SIZE));
vendor\brand\proprietary\bootable\bootloader\lk\platform\product\platform.c
bootstrap2
platform_init
mmc_legacy_init
mmc_init
mmc_init_mem_card
mt_part_register_device
part_init
read_gpt
parse_gpt_header
bldr_load_dtb("boot")
mboot_recovery_load_raw_part("boot") //bootimage_header boot 頭文件
//placed setup_fdt() after bldr_load_dtb() due to it set the fdt_header-> totalsize
ret = setup_fdt((void *)dtb_kernel_addr, DTB_MAX_SIZE); //0x200000); //根據dts文件(0x44000000)創建fdt //g_fdt = fdt;
leds_init
mt65xx_leds_brightness_set //關閉背光
get_cust_led_dtsi //從dtsi中得到device led的默認配置
mt_disp_init((void *)g_fb_base); //"disp init" //FB base = 0x7f370000 //初始化framebuffer
primary_display_init
disp_lcm_probe
(lcm_drv->get_params)lcm_get_params
disp_lcm_get_params
boot_mode_select
unshield_recovery_detection
recovery_check_command_trigger
mboot_recovery_load_misc
mboot_recovery_load_raw_part("para")
while(get_timer(begin)<50)
mtk_detect_key
kernel_power_off_charging_detection
is_force_boot
mboot_common_load_logo((unsigned long)mt_get_logo_db_addr_pa(), "logo"); // logo_db_addr_pa = 0x5e900000
mboot_common_load_part("logo", "logo", logo_addr);
mt_disp_show_boot_logo
init_fb_screen
fill_animation_logo
mt_disp_update
mt_disp_update
mt65xx_bat_init //battery
target_init
apps_init
app->init(app);
aboot_init
shell_init
mt_boot_init
boot_linux_from_storage
boot_linux
boot_linux_fdt
lk_jump64((u32)entry, (u32)tags, 0, KERNEL_64BITS);
start_app(app);
iothread
vendor/brand/proprietary/bootable/bootloader/lk/app/shell/shell.c:37:APP_START(shell)
vendor/brand/proprietary/bootable/bootloader/lk/app/aboot/aboot.c:1439:APP_START(aboot)
vendor/brand/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c:2068:APP_START(mt_boot)
vendor\brand\proprietary\bootable\bootloader\lk\app\mt_boot\mt_boot.c
setup_fdt
vendor\brand\proprietary\bootable\bootloader\lk\platform\product\mt_leds.c
char *leds_name[MT65XX_LED_TYPE_TOTAL] = {
"red",
"green",
"blue",
"jogball-backlight",
"keyboard-backlight",
"button-backlight",
"lcd-backlight",
};
char *leds_node[MT65XX_LED_TYPE_TOTAL] = {
"/led@0",
"/led@1",
"/led@2",
"/led@3",
"/led@4",
"/led@5",
"/led@6",
};
aeon_lt8912b_fhd_dsi_vdo.c
primary_display_init
vendor/brand/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c
APP_START(mt_boot)
.init = mt_boot_init,
APP_END
mt_boot_init
boot_linux_from_storage
mboot_android_load_bootimg_hdr(MTK_GPT_SCHEME_SUPPORT = yes)
boot_linux
/* boot type definitions */
typedef enum {
NORMAL_BOOT = 0,
META_BOOT = 1,
RECOVERY_BOOT = 2,
SW_REBOOT = 3,
FACTORY_BOOT = 4,
ADVMETA_BOOT = 5,
ATE_FACTORY_BOOT = 6,
ALARM_BOOT = 7,
#if defined (MTK_KERNEL_POWER_OFF_CHARGING)
KERNEL_POWER_OFF_CHARGING_BOOT = 8,
LOW_POWER_OFF_CHARGING_BOOT = 9,
#endif
FASTBOOT = 99,
DOWNLOAD_BOOT = 100,
UNKNOWN_BOOT
} BOOTMODE;
vendor\brand\proprietary\bootable\bootloader\lk\platform\product\boot_mode.c
boot_mode_select
CFG_BOOTIMG_LOAD_ADDR 0x40008000