51
51
#include "bootutil_priv.h"
52
52
#include "bootutil_misc.h"
53
53
54
- #if defined(CONFIG_NRF_MCUBOOT_BOOT_REQUEST ) && !defined(CONFIG_MCUBOOT )
55
- #include <bootutil/boot_request.h>
56
- #define SEND_BOOT_REQUEST
57
- #endif /* CONFIG_NRF_MCUBOOT_BOOT_REQUEST && !CONFIG_MCUBOOT */
58
-
59
54
#ifdef CONFIG_MCUBOOT
60
55
BOOT_LOG_MODULE_DECLARE (mcuboot );
61
56
#else
@@ -508,79 +503,32 @@ boot_write_copy_done(const struct flash_area *fap)
508
503
return boot_write_trailer_flag (fap , off , BOOT_FLAG_SET );
509
504
}
510
505
511
- #ifdef SEND_BOOT_REQUEST
512
- static int
513
- send_boot_request (uint8_t magic , bool confirm , int image_id , uint32_t slot_id )
514
- {
515
- int rc = BOOT_EBADIMAGE ;
516
-
517
- /* Handle write-protected active image. */
518
- if ((magic == BOOT_MAGIC_GOOD ) || (magic == BOOT_MAGIC_UNSET )) {
519
- if (confirm ) {
520
- BOOT_LOG_DBG ("Confirm image: %d, %d" , image_id , slot_id );
521
- rc = boot_request_confirm_slot (image_id , slot_id );
522
- } else {
523
- BOOT_LOG_DBG ("Set image preference: %d, %d" , image_id , slot_id );
524
- rc = boot_request_set_preferred_slot (image_id , slot_id );
525
- }
526
- if (rc != 0 ) {
527
- rc = BOOT_EBADIMAGE ;
528
- }
529
- }
530
-
531
- return rc ;
532
- }
533
- #endif /* SEND_BOOT_REQUEST */
506
+ #ifndef MCUBOOT_BOOTUTIL_LIB_FOR_DIRECT_XIP
534
507
535
- #if defined(SEND_BOOT_REQUEST ) || (!defined(MCUBOOT_BOOTUTIL_LIB_FOR_DIRECT_XIP ))
536
- static int flash_area_to_image_slot (const struct flash_area * fa , uint32_t * slot )
508
+ static int flash_area_to_image (const struct flash_area * fa )
537
509
{
538
- int id = flash_area_get_id (fa );
539
510
#if BOOT_IMAGE_NUMBER > 1
540
511
uint8_t i = 0 ;
512
+ int id = flash_area_get_id (fa );
541
513
542
514
while (i < BOOT_IMAGE_NUMBER ) {
543
- if (FLASH_AREA_IMAGE_PRIMARY (i ) == id ) {
544
- if (slot != NULL ) {
545
- * slot = 0 ;
546
- }
547
- return i ;
548
- } else if (FLASH_AREA_IMAGE_SECONDARY (i ) == id ) {
549
- if (slot != NULL ) {
550
- * slot = 1 ;
551
- }
515
+ if (FLASH_AREA_IMAGE_PRIMARY (i ) == id || (FLASH_AREA_IMAGE_SECONDARY (i ) == id )) {
552
516
return i ;
553
517
}
554
518
555
519
++ i ;
556
520
}
557
521
#else
558
522
(void )fa ;
559
- if (slot != NULL ) {
560
- if (FLASH_AREA_IMAGE_PRIMARY (0 ) == id ) {
561
- * slot = 0 ;
562
- } else if (FLASH_AREA_IMAGE_SECONDARY (0 ) == id ) {
563
- * slot = 1 ;
564
- } else {
565
- * slot = UINT32_MAX ;
566
- }
567
- }
568
523
#endif
569
524
return 0 ;
570
525
}
571
- #endif /* defined(SEND_BOOT_REQUEST) || (!defined(MCUBOOT_BOOTUTIL_LIB_FOR_DIRECT_XIP)) */
572
526
573
- #ifndef MCUBOOT_BOOTUTIL_LIB_FOR_DIRECT_XIP
574
527
int
575
528
boot_set_next (const struct flash_area * fa , bool active , bool confirm )
576
529
{
577
530
struct boot_swap_state slot_state ;
578
531
int rc ;
579
- int image_id ;
580
- uint32_t slot_id ;
581
-
582
- BOOT_LOG_DBG ("boot_set_next: fa %p active == %d, confirm == %d" ,
583
- fa , (int )active , (int )confirm );
584
532
585
533
if (active ) {
586
534
confirm = true;
@@ -591,15 +539,6 @@ boot_set_next(const struct flash_area *fa, bool active, bool confirm)
591
539
return rc ;
592
540
}
593
541
594
- image_id = flash_area_to_image_slot (fa , & slot_id );
595
-
596
- #ifdef SEND_BOOT_REQUEST
597
- rc = send_boot_request (slot_state .magic , confirm , image_id , slot_id );
598
- if ((rc != 0 ) || active ) {
599
- return rc ;
600
- }
601
- #endif
602
-
603
542
switch (slot_state .magic ) {
604
543
case BOOT_MAGIC_GOOD :
605
544
/* If non-active then swap already scheduled, else confirm needed.*/
@@ -630,7 +569,7 @@ boot_set_next(const struct flash_area *fa, bool active, bool confirm)
630
569
} else {
631
570
swap_type = BOOT_SWAP_TYPE_TEST ;
632
571
}
633
- rc = boot_write_swap_info (fa , swap_type , image_id );
572
+ rc = boot_write_swap_info (fa , swap_type , flash_area_to_image ( fa ) );
634
573
}
635
574
}
636
575
break ;
@@ -661,10 +600,6 @@ boot_set_next(const struct flash_area *fa, bool active, bool confirm)
661
600
{
662
601
struct boot_swap_state slot_state ;
663
602
int rc ;
664
- #ifdef SEND_BOOT_REQUEST
665
- int image_id ;
666
- uint32_t slot_id ;
667
- #endif
668
603
669
604
BOOT_LOG_DBG ("boot_set_next: fa %p active == %d, confirm == %d" ,
670
605
fa , (int )active , (int )confirm );
@@ -683,15 +618,6 @@ boot_set_next(const struct flash_area *fa, bool active, bool confirm)
683
618
return rc ;
684
619
}
685
620
686
- #ifdef SEND_BOOT_REQUEST
687
- image_id = flash_area_to_image_slot (fa , & slot_id );
688
-
689
- rc = send_boot_request (slot_state .magic , confirm , image_id , slot_id );
690
- if ((rc != 0 ) || active ) {
691
- return rc ;
692
- }
693
- #endif
694
-
695
621
switch (slot_state .magic ) {
696
622
case BOOT_MAGIC_UNSET :
697
623
/* Magic is needed for MCUboot to even consider booting an image */
0 commit comments