Skip to content

Commit cfef334

Browse files
committed
feat: Update flash size if not provided and read from the target
1 parent f73fef4 commit cfef334

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

cargo-espflash/src/main.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use cargo_metadata::{Message, MetadataCommand};
88
use clap::{Args, CommandFactory, Parser, Subcommand};
99
use espflash::{
1010
cli::{self, config::Config, monitor::monitor, *},
11-
flasher::parse_partition_table,
11+
flasher::{parse_partition_table, FlashSize},
1212
logging::initialize_logger,
1313
targets::{Chip, XtalFrequency},
1414
update::check_for_update,
@@ -330,12 +330,18 @@ fn flash(args: FlashArgs, config: &Config) -> Result<()> {
330330

331331
print_board_info(&mut flasher)?;
332332

333+
let mut flash_config = args.build_args.flash_config_args;
334+
flash_config.flash_size = flash_config
335+
.flash_size
336+
.or_else(|| flasher.flash_detect().ok().flatten())
337+
.or_else(|| Some(FlashSize::default()));
338+
333339
if args.flash_args.ram {
334340
flasher.load_elf_to_ram(&elf_data, Some(&mut EspflashProgress::default()))?;
335341
} else {
336342
let flash_data = make_flash_data(
337343
args.flash_args.image,
338-
&args.build_args.flash_config_args,
344+
&flash_config,
339345
config,
340346
build_ctx.bootloader_path.as_deref(),
341347
build_ctx.partition_table_path.as_deref(),
@@ -571,9 +577,14 @@ fn save_image(args: SaveImageArgs, config: &Config) -> Result<()> {
571577
println!("Merge: {}", args.save_image_args.merge);
572578
println!("Skip padding: {}", args.save_image_args.skip_padding);
573579

580+
let mut flash_config = args.build_args.flash_config_args;
581+
flash_config.flash_size = flash_config
582+
.flash_size
583+
.or_else(|| Some(FlashSize::default()));
584+
574585
let flash_data = make_flash_data(
575586
args.save_image_args.image,
576-
&args.build_args.flash_config_args,
587+
&flash_config,
577588
config,
578589
build_ctx.bootloader_path.as_deref(),
579590
build_ctx.partition_table_path.as_deref(),

espflash/src/bin/espflash.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{fs, path::PathBuf};
33
use clap::{Args, CommandFactory, Parser, Subcommand};
44
use espflash::{
55
cli::{self, config::Config, monitor::monitor, *},
6-
flasher::parse_partition_table,
6+
flasher::{parse_partition_table, FlashSize},
77
logging::initialize_logger,
88
targets::{Chip, XtalFrequency},
99
update::check_for_update,
@@ -243,16 +243,16 @@ fn flash(args: FlashArgs, config: &Config) -> Result<()> {
243243
// Read the ELF data from the build path and load it to the target.
244244
let elf_data = fs::read(&args.image).into_diagnostic()?;
245245

246+
let mut flash_config = args.flash_config_args;
247+
flash_config.flash_size = flash_config
248+
.flash_size
249+
.or_else(|| flasher.flash_detect().ok().flatten())
250+
.or_else(|| Some(FlashSize::default()));
251+
246252
if args.flash_args.ram {
247253
flasher.load_elf_to_ram(&elf_data, Some(&mut EspflashProgress::default()))?;
248254
} else {
249-
let flash_data = make_flash_data(
250-
args.flash_args.image,
251-
&args.flash_config_args,
252-
config,
253-
None,
254-
None,
255-
)?;
255+
let flash_data = make_flash_data(args.flash_args.image, &flash_config, config, None, None)?;
256256

257257
if args.flash_args.erase_parts.is_some() || args.flash_args.erase_data_parts.is_some() {
258258
erase_partitions(
@@ -298,9 +298,14 @@ fn save_image(args: SaveImageArgs, config: &Config) -> Result<()> {
298298
println!("Merge: {}", args.save_image_args.merge);
299299
println!("Skip padding: {}", args.save_image_args.skip_padding);
300300

301+
let mut flash_config = args.flash_config_args;
302+
flash_config.flash_size = flash_config
303+
.flash_size
304+
.or_else(|| Some(FlashSize::default()));
305+
301306
let flash_data = make_flash_data(
302307
args.save_image_args.image,
303-
&args.flash_config_args,
308+
&flash_config,
304309
config,
305310
None,
306311
None,

espflash/src/flasher/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ impl Flasher {
843843
Err(Error::FlashConnect)
844844
}
845845

846-
fn flash_detect(&mut self) -> Result<Option<FlashSize>, Error> {
846+
pub fn flash_detect(&mut self) -> Result<Option<FlashSize>, Error> {
847847
const FLASH_RETRY: u8 = 0xFF;
848848

849849
let flash_id = self.spi_command(CommandType::FlashDetect, &[], 24)?;

0 commit comments

Comments
 (0)