url : git@github.com:lisider/u-boot.git
branch : ok6410a
commit id : e63a4077ad3aea53107495b0b68b95e720fe6033
config : ok6410a_mini_defconfig
// There are 67 .S .s .c files involved
From the entrance to the exit
// Run at 0x0c00 0000
reset arch/arm/cpu/arm1176/start.S 39
lowlevel_init(108) board/samsung/ok6410a/lowlevel_init.S 72
_main(110) arch/arm/lib/crt0.S 91
board_init_f(117) board/samsung/ok6410a/ok6410a.c 266
debug_uart_init(271) include/debug_uart.h 193
_debug_uart_init(196) drivers/serial/s3c64xx_serial.c 315
board_init_r(177) common/spl/spl.c 589
spl_board_init(641) board/samsung/ok6410a/ok6410a.c 255
spl_boot_mmc(258) board/samsung/ok6410a/bl2_mmc_copy.c 18
mmc_bl2_copy(23) board/samsung/ok6410a/bl2_mmc_copy.c 7
CopyMovitoMem(HSMMC_CHANNEL, MOVI_BL2_POS, MOVI_BL2_BLKCNT, bl2_base, MOVI_INIT_REQUIRED)(13) arch/arm/mach-s3c64xx/include/mach/movi.h 25
bl2base(24) // Jump to u-boot image of u-boot
SPL standard process
reset arch/arm/cpu/arm1176/start.S 39
lowlevel_init(108) board/samsung/ok6410a/lowlevel_init.S 72
_main(110) arch/arm/lib/crt0.S 91
board_init_f(117) board/samsung/ok6410a/ok6410a.c 266
debug_uart_init(271) include/debug_uart.h 193
_debug_uart_init(196) drivers/serial/s3c64xx_serial.c 315
board_init_r(177) common/spl/spl.c 589
spl_board_init(641) board/samsung/ok6410a/ok6410a.c 255
memset(&spl_image, '', sizeof(spl_image)); // u-boot.img
spl_image.boot_device = 0xdeadbeef;
// Get the device type of u-boot.img
board_boot_order(spl_boot_list);
spl_boot_list[0] = spl_boot_device();
ok6410a_get_boot_device
// Get the loader function by device type
// Use loader function to load u-boot.img to ddr
boot_from_devices(&spl_image, spl_boot_list, (sizeof(spl_boot_list) / sizeof((spl_boot_list)[0])));
loader = spl_ll_find_loader(spl_boot_list[i]);
spl_load_image(spl_image, loader);
loader->load_image/spl_mmc_load_image
spl_mmc_load
...
spl_parse_image_header
spl_parse_legacy_header
spl_image->load_addr = image_get_load(header);
spl_image->entry_point = image_get_ep(header);
spl_image->size = image_get_data_size(header);
// If you need to patch, patch it quickly
// For example, if there is a problem with your u-boot.img, the parsed entry_point is incorrect
//You need to reassign entry_point
// Usually null
spl_perform_fixups(&spl_image);
switch (spl_image.os) {
case IH_OS_U_BOOT:
break;
}
// Usually null
spl_board_prepare_for_boot
jump_to_image_no_args(&spl_image);
image_entry_noargs_t image_entry = (image_entry_noargs_t)spl_image->entry_point;
image_entry
Previous article:OK6410A development board (three) 9 u-boot-2021.01 boot analysis U-boot image running part bootcmd
Next article:OK6410A development board (three) 7 u-boot-2021.01 boot analysis u-boot and linux configuration part
Recommended ReadingLatest update time:2024-11-23 02:49
- Naxin Micro and Xinxian jointly launched the NS800RT series of real-time control MCUs
- How to learn embedded systems based on ARM platform
- Summary of jffs2_scan_eraseblock issues
- Application of SPCOMM Control in Serial Communication of Delphi7.0
- Using TComm component to realize serial communication in Delphi environment
- Bar chart code for embedded development practices
- Embedded Development Learning (10)
- Embedded Development Learning (8)
- Embedded Development Learning (6)
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- Intel promotes AI with multi-dimensional efforts in technology, application, and ecology
- ChinaJoy Qualcomm Snapdragon Theme Pavilion takes you to experience the new changes in digital entertainment in the 5G era
- Infineon's latest generation IGBT technology platform enables precise control of speed and position
- Two test methods for LED lighting life
- Don't Let Lightning Induced Surges Scare You
- Application of brushless motor controller ML4425/4426
- Easy identification of LED power supply quality
- World's first integrated photovoltaic solar system completed in Israel
- Sliding window mean filter for avr microcontroller AD conversion
- What does call mean in the detailed explanation of ABB robot programming instructions?
- STMicroelectronics discloses its 2027-2028 financial model and path to achieve its 2030 goals
- 2024 China Automotive Charging and Battery Swapping Ecosystem Conference held in Taiyuan
- State-owned enterprises team up to invest in solid-state battery giant
- The evolution of electronic and electrical architecture is accelerating
- The first! National Automotive Chip Quality Inspection Center established
- BYD releases self-developed automotive chip using 4nm process, with a running score of up to 1.15 million
- GEODNET launches GEO-PULSE, a car GPS navigation device
- Should Chinese car companies develop their own high-computing chips?
- Infineon and Siemens combine embedded automotive software platform with microcontrollers to provide the necessary functions for next-generation SDVs
- Continental launches invisible biometric sensor display to monitor passengers' vital signs
- EEWORLD University - What is an antenna vibrator?
- Selling new and second-hand Xilinx development boards, both high-end and low-end
- [RISC-V MCU CH32V103 Review] First Look at CH32V103
- May was quite busy, and my hand broke.
- Important parameters of Rfid technology
- Pre-registration for the prize-winning live broadcast | Infineon system solutions make electric motorcycle design more reliable and efficient!
- Embedded systems and real-time software development
- What methods do you generally use to recruit or find jobs? Which platform is used more often?
- Summary of the points to note when using CCS8.0 to program MSP430G2553
- picture