1*91f16700Schasinglulu@startuml 2*91f16700Schasinglulu 3*91f16700Schasingluluparticipant bl_common 4*91f16700Schasingluluparticipant arm_io_storage 5*91f16700Schasingluluparticipant io_storage 6*91f16700Schasinglulu 7*91f16700Schasinglulu== Platform Setup == 8*91f16700Schasinglulu 9*91f16700Schasinglulubl1_main -> xxx_bl1_setup : bl1_platform_setup() 10*91f16700Schasingluluxxx_bl1_setup -> arm_io_storage : plat_arm_io_setup() 11*91f16700Schasinglulu 12*91f16700Schasingluluarm_io_storage -> arm_io_storage : arm_io_setup() 13*91f16700Schasingluluref over arm_io_storage, io_storage : io device registration 14*91f16700Schasinglulu 15*91f16700Schasinglulu== Get Image == 16*91f16700Schasinglulubl1_main -> xxx_bl1_setup : bl1_plat_get_next_image_id() 17*91f16700Schasinglulubl1_main <-- xxx_bl1_setup : BL2_IMAGE_ID 18*91f16700Schasinglulu 19*91f16700Schasinglulubl1_main -> bl1_main : bl1_load_bl2() 20*91f16700Schasingluluactivate bl1_main 21*91f16700Schasinglulubl1_main -> plat_bl1_common : bl1_plat_get_image_desc(BL2_IMAGE_ID) 22*91f16700Schasinglulubl1_main <-- plat_bl1_common : BL2_IMAGE_DESC 23*91f16700Schasinglulu 24*91f16700Schasinglulubl1_main -> plat_bl1_common : bl1_plat_handle_pre_image_load(BL2_IMAGE_ID) 25*91f16700Schasinglulu 26*91f16700Schasinglulubl1_main -> bl_common : load_auth_image(BL2_IMAGE_ID, image_info) 27*91f16700Schasingluluactivate bl_common 28*91f16700Schasinglulubl_common -> bl_common : load_auth_image_internal(BL2_IMAGE_ID, image_info, is_parent_image) 29*91f16700Schasingluluactivate bl_common 30*91f16700Schasinglulubl_common -> bl_common : load_image(BL2_IMAGE_ID, image_info) 31*91f16700Schasingluluactivate bl_common 32*91f16700Schasinglulubl_common -> arm_io_storage : plat_get_image_source(BL2_IMAGE_ID, &dev_handle, &image_spec) 33*91f16700Schasingluluref over arm_io_storage, io_storage : init and check device (BL2_IMAGE_ID) 34*91f16700Schasinglulubl_common <-- arm_io_storage : dev_handle 35*91f16700Schasinglulu 36*91f16700Schasinglulubl_common -> io_storage : io_open(dev_handle, image_spec, &image_handle) 37*91f16700Schasingluluref over io_storage : io_open() on fip device 38*91f16700Schasinglulubl_common <-- io_storage : image_handle 39*91f16700Schasinglulubl_common -> io_storage : io_size(image_handle, &image_size) 40*91f16700Schasingluluref over io_storage : io_size() on fip device 41*91f16700Schasinglulubl_common -> io_storage : io_read(image_handle, image_base, image_size, &bytes_read) 42*91f16700Schasingluluref over io_storage : io_read() on fip device 43*91f16700Schasinglulubl_common -> io_storage : io_close(image_handle) 44*91f16700Schasingluluref over io_storage : io_close() on fip device 45*91f16700Schasinglulubl_common -> io_storage : io_dev_close(dev_handle) 46*91f16700Schasingluluref over io_storage : io_dev_close() on fip device 47*91f16700Schasinglulu 48*91f16700Schasingluludeactivate bl_common 49*91f16700Schasingluludeactivate bl_common 50*91f16700Schasingluludeactivate bl_common 51*91f16700Schasinglulu 52*91f16700Schasinglulu== Prepare Next Image == 53*91f16700Schasinglulubl1_main -> plat_bl1_common : bl1_plat_handle_post_image_load(BL2_IMAGE_ID) 54*91f16700Schasinglulu 55*91f16700Schasingluludeactivate bl1_main 56*91f16700Schasinglulu 57*91f16700Schasinglulu== Jump to next Image == 58*91f16700Schasinglulu 59*91f16700Schasinglulu@enduml 60