@@ -1398,7 +1398,7 @@ void info_guts(memory_access &raw_access) {
1398
1398
string program_name, program_build_date, program_version, program_url, program_description;
1399
1399
string pico_board, sdk_version, boot2_name;
1400
1400
vector<string> program_features, build_attributes;
1401
-
1401
+
1402
1402
uint32_t binary_end = 0 ;
1403
1403
1404
1404
// do a pass first to find named groups
@@ -1839,11 +1839,14 @@ bool load_command::execute(device_map &devices) {
1839
1839
}
1840
1840
}
1841
1841
1842
- for (auto mem_range : ranges) {
1843
- enum memory_type type = get_memory_type (mem_range.from );
1844
- // new scope for progress bar
1845
- {
1846
- progress_bar bar (" Loading into " + memory_names[type] + " : " );
1842
+ size_t total_size = 0 ;
1843
+ for (auto mem_range : ranges) { total_size += mem_range.to - mem_range.from ; }
1844
+
1845
+ {
1846
+ progress_bar bar (" Loading: " );
1847
+ size_t loaded_size = 0 ;
1848
+ for (auto mem_range : ranges) {
1849
+ enum memory_type type = get_memory_type (mem_range.from );
1847
1850
vector<uint8_t > file_buf;
1848
1851
vector<uint8_t > device_buf;
1849
1852
for (uint32_t base = mem_range.from ; base < mem_range.to ; ) {
@@ -1877,13 +1880,18 @@ bool load_command::execute(device_map &devices) {
1877
1880
raw_access.write_vector (base, file_buf);
1878
1881
base += this_batch;
1879
1882
}
1880
- bar.progress (base - mem_range.from , mem_range.to - mem_range.from );
1883
+ loaded_size += this_batch;
1884
+ bar.progress (loaded_size, total_size);
1881
1885
}
1882
1886
}
1883
- if (settings.load .verify ) {
1887
+ }
1888
+
1889
+ if (settings.load .verify ) {
1890
+ progress_bar bar (" Verifying: " );
1891
+ size_t verified_size = 0 ;
1892
+ for (auto mem_range : ranges) {
1884
1893
bool ok = true ;
1885
1894
{
1886
- progress_bar bar (" Verifying " + memory_names[type] + " : " );
1887
1895
uint32_t batch_size = 0x8000 ;
1888
1896
vector<uint8_t > file_buf;
1889
1897
vector<uint8_t > device_buf;
@@ -1902,14 +1910,12 @@ bool load_command::execute(device_map &devices) {
1902
1910
}
1903
1911
if (ok) {
1904
1912
pos = base + this_batch;
1913
+ verified_size += this_batch;
1914
+ bar.progress (verified_size, total_size);
1905
1915
}
1906
- bar.progress (pos - mem_range.from , mem_range.to - mem_range.from );
1907
1916
}
1908
1917
}
1909
- if (ok) {
1910
- std::cout << " OK\n " ;
1911
- } else {
1912
- std::cout << " FAILED\n " ;
1918
+ if (!ok) {
1913
1919
fail (ERROR_VERIFICATION_FAILED, " The device contents did not match the file" );
1914
1920
}
1915
1921
}
0 commit comments