Mercurial > ecos
comparison packages/redboot/current/src/flash.c @ 1823:ecd76f498508
* cdl/redboot.cdl (CYGBLD_REDBOOT_MIN_IMAGE_SIZE): Correct the
description to match what the option is actually used for.
* src/flash.c (find_free, fis_free, fis_find_free): Don't ignore
an extra CYGBLD_REDBOOT_MIN_IMAGE_SIZE amount from the start.
This fixes the case where nothing uses the start of flash.
| author | asl |
|---|---|
| date | Tue, 09 Nov 2004 18:59:14 +0000 |
| parents | 0031b615f51c |
| children | 83b190379205 |
comparison
equal
deleted
inserted
replaced
| 1822:b9ae2f90a53e | 1823:ecd76f498508 |
|---|---|
| 562 int i, idx; | 562 int i, idx; |
| 563 int num_chunks = 1; | 563 int num_chunks = 1; |
| 564 | 564 |
| 565 // Do not search the area reserved for pre-RedBoot systems: | 565 // Do not search the area reserved for pre-RedBoot systems: |
| 566 fis_ptr = (CYG_ADDRESS *)((CYG_ADDRESS)flash_start + | 566 fis_ptr = (CYG_ADDRESS *)((CYG_ADDRESS)flash_start + |
| 567 CYGNUM_REDBOOT_FLASH_RESERVED_BASE + | 567 CYGNUM_REDBOOT_FLASH_RESERVED_BASE); |
| 568 CYGBLD_REDBOOT_MIN_IMAGE_SIZE); | |
| 569 fis_end = (CYG_ADDRESS *)flash_end; | 568 fis_end = (CYG_ADDRESS *)flash_end; |
| 570 chunks[num_chunks-1].start = (CYG_ADDRESS)fis_ptr; | 569 chunks[num_chunks-1].start = (CYG_ADDRESS)fis_ptr; |
| 571 chunks[num_chunks-1].end = (CYG_ADDRESS)fis_end; | 570 chunks[num_chunks-1].end = (CYG_ADDRESS)fis_end; |
| 572 fis_read_directory(); | 571 fis_read_directory(); |
| 573 img = (struct fis_image_desc *) fis_work_block; | 572 img = (struct fis_image_desc *) fis_work_block; |
| 618 unsigned long *area_start; | 617 unsigned long *area_start; |
| 619 void *err_addr; | 618 void *err_addr; |
| 620 | 619 |
| 621 // Do not search the area reserved for pre-RedBoot systems: | 620 // Do not search the area reserved for pre-RedBoot systems: |
| 622 fis_ptr = (unsigned long *)((CYG_ADDRESS)flash_start + | 621 fis_ptr = (unsigned long *)((CYG_ADDRESS)flash_start + |
| 623 CYGNUM_REDBOOT_FLASH_RESERVED_BASE + | 622 CYGNUM_REDBOOT_FLASH_RESERVED_BASE); |
| 624 CYGBLD_REDBOOT_MIN_IMAGE_SIZE); | |
| 625 fis_end = (unsigned long *)(CYG_ADDRESS)flash_end; | 623 fis_end = (unsigned long *)(CYG_ADDRESS)flash_end; |
| 626 area_start = fis_ptr; | 624 area_start = fis_ptr; |
| 627 while (fis_ptr < fis_end) { | 625 while (fis_ptr < fis_end) { |
| 628 flash_read(fis_ptr, &flash_data, sizeof(unsigned long), (void **)&err_addr); | 626 flash_read(fis_ptr, &flash_data, sizeof(unsigned long), (void **)&err_addr); |
| 629 if (flash_data != (unsigned long)0xFFFFFFFF) { | 627 if (flash_data != (unsigned long)0xFFFFFFFF) { |
| 670 unsigned long *area_start; | 668 unsigned long *area_start; |
| 671 void *err_addr; | 669 void *err_addr; |
| 672 | 670 |
| 673 // Do not search the area reserved for pre-RedBoot systems: | 671 // Do not search the area reserved for pre-RedBoot systems: |
| 674 fis_ptr = (unsigned long *)((CYG_ADDRESS)flash_start + | 672 fis_ptr = (unsigned long *)((CYG_ADDRESS)flash_start + |
| 675 CYGNUM_REDBOOT_FLASH_RESERVED_BASE + | 673 CYGNUM_REDBOOT_FLASH_RESERVED_BASE); |
| 676 CYGBLD_REDBOOT_MIN_IMAGE_SIZE); | |
| 677 fis_end = (unsigned long *)(CYG_ADDRESS)flash_end; | 674 fis_end = (unsigned long *)(CYG_ADDRESS)flash_end; |
| 678 area_start = fis_ptr; | 675 area_start = fis_ptr; |
| 679 while (fis_ptr < fis_end) { | 676 while (fis_ptr < fis_end) { |
| 680 flash_read(fis_ptr, &flash_data, sizeof(unsigned long), (void **)&err_addr); | 677 flash_read(fis_ptr, &flash_data, sizeof(unsigned long), (void **)&err_addr); |
| 681 if (flash_data != (unsigned long)0xFFFFFFFF) { | 678 if (flash_data != (unsigned long)0xFFFFFFFF) { |
