11#![ no_std]
22#![ no_main]
33
4- mod algo;
5-
6- use core:: mem:: MaybeUninit ;
7-
8- use self :: algo:: * ;
4+ use flash_algorithm:: * ;
95
106fn find_func < T > ( tag : [ u8 ; 2 ] ) -> Option < T > {
117 let tag = u16:: from_le_bytes ( tag) as u32 ;
@@ -53,7 +49,16 @@ struct RP2040Algo {
5349 funcs : ROMFuncs ,
5450}
5551
56- algo ! ( RP2040Algo ) ;
52+ algorithm ! ( RP2040Algo , {
53+ flash_address: 0x1000_0000 ,
54+ flash_size: 0x0100_0000 ,
55+ page_size: 0x100 ,
56+ empty_value: 0xFF ,
57+ sectors: [ {
58+ size: 0x1000 ,
59+ address: 0x10000000 ,
60+ } ]
61+ } ) ;
5762
5863const BLOCK_SIZE : u32 = 65536 ;
5964const SECTOR_SIZE : u32 = 4096 ;
@@ -76,12 +81,21 @@ impl FlashAlgo for RP2040Algo {
7681 }
7782
7883 fn erase_sector ( & mut self , addr : u32 ) -> Result < ( ) , ErrorCode > {
79- ( self . funcs . flash_range_erase ) ( addr - FLASH_BASE , SECTOR_SIZE , BLOCK_SIZE , BLOCK_ERASE_CMD ) ;
84+ ( self . funcs . flash_range_erase ) (
85+ addr - FlashDevice . dev_addr ,
86+ SECTOR_SIZE ,
87+ BLOCK_SIZE ,
88+ BLOCK_ERASE_CMD ,
89+ ) ;
8090 Ok ( ( ) )
8191 }
8292
83- fn program_page ( & mut self , addr : u32 , size : u32 , data : * const u8 ) -> Result < ( ) , ErrorCode > {
84- ( self . funcs . flash_range_program ) ( addr - FLASH_BASE , data, size) ;
93+ fn program_page ( & mut self , addr : u32 , data : & [ u8 ] ) -> Result < ( ) , ErrorCode > {
94+ ( self . funcs . flash_range_program ) (
95+ addr - FlashDevice . dev_addr ,
96+ data. as_ptr ( ) ,
97+ data. len ( ) as u32 ,
98+ ) ;
8599 Ok ( ( ) )
86100 }
87101}
0 commit comments