Skip to content

Save some RAM - #451

Open
erichelgeson wants to merge 10 commits into
mainfrom
eric/mem
Open

erichelgeson wants to merge 10 commits into
mainfrom
eric/mem

Conversation

@erichelgeson

@erichelgeson erichelgeson commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Some easy wins for saving some RAM.

Backed out nano lib as it changed memset/family to a much more inefficient mode.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Test this PR

Flash the firmware built from e6bed32: BlueSCSI binaries.zip

Must be signed in to GitHub. Build expires after 90 days.

BlueSCSI Memory Report

Compared against release v2026.08.17

Memory Usage

Target FLASH RAM SCRATCH_X SCRATCH_Y
Pico_2_Audio_SPDIF 645.2 KB (-40.4 KB) [32%] 511.7 KB [100%] 3.5 KB [88%] 3.8 KB [94%]
Pico_2_DaynaPORT 637.4 KB (-40.5 KB) [31%] 511.7 KB [100%] 3.5 KB [88%] 3.0 KB [75%]
Pico_Audio_SPDIF 666.8 KB (-41.6 KB) [33%] 234.2 KB (-18.3 KB) [91%] 1.5 KB [38%] 768 B [19%]
Pico_DaynaPORT 658.6 KB (-41.7 KB) [32%] 228.1 KB (-18.1 KB) [89%] 1.5 KB [38%] —
Ultra 654.8 KB (-40.6 KB) [32%] 511.7 KB [100%] 3.5 KB [88%] 3.0 KB [75%]
Ultra_Wide 413.2 KB (-40.9 KB) [20%] 511.7 KB [100%] 2.0 KB [50%] 3.0 KB [75%]

Symbol Region Changes

Pico_Audio_SPDIF: 120 symbols moved RAM → FLASH (-16.9 KB RAM)
Symbol Size
mscd_xfer_cb 1.4 KB
scsi_accel_log_state() 1.2 KB
scsiDiskHandleVerify(unsigned long long, unsigned long, bool) 1.2 KB
platform_network_init 760 B
image_config_t::get_capacity_lba() 592 B
bluescsi_msc_loop() 480 B
onGetFile10(char*) 476 B
checkIs2023a 412 B
get_file_from_index(unsigned char, char const*, bool) 356 B
mscd_control_xfer_cb 328 B
platform_sense_msc() 300 B
scsiByteAddress 292 B
scsiDiskCheckDir(char*, int, image_config_t*, S2S_CFG_TYPE, char const*) 284 B
init_eject_button() [clone .part.0] 280 B
tud_rhport_init 244 B
s2s_doReserveRelease 232 B
readIniIntRange(char const*, char const*, long, long, long, long*) 224 B
scsiSaveByteAddress 220 B
platform_msc_lock_set(bool) 212 B
stdio_put_string 208 B
calculate_sync_period_limit 208 B
platform_setup_sd 208 B
stdio_out_chars_crlf 184 B
proc_read10_cmd.constprop.0 184 B
uart_set_baudrate 180 B
doSeek(unsigned long) 180 B
cdromCloseTray(image_config_t&) 168 B
cdromReinsertFirstImage(image_config_t&) 164 B
add_program_at_offset 164 B
irq_add_tail_to_free_list 164 B
... and 90 more
Pico_DaynaPORT: 118 symbols moved RAM → FLASH (-16.9 KB RAM)
Symbol Size
mscd_xfer_cb 1.4 KB
scsi_accel_log_state() 1.2 KB
scsiDiskHandleVerify(unsigned long long, unsigned long, bool) 1.2 KB
platform_network_init 760 B
image_config_t::get_capacity_lba() 592 B
checkIs2023a 516 B
bluescsi_msc_loop() 480 B
onGetFile10(char*) 476 B
get_file_from_index(unsigned char, char const*, bool) 356 B
mscd_control_xfer_cb 328 B
platform_sense_msc() 300 B
scsiByteAddress 292 B
scsiDiskCheckDir(char*, int, image_config_t*, S2S_CFG_TYPE, char const*) 284 B
init_eject_button() [clone .part.0] 280 B
tud_rhport_init 244 B
s2s_doReserveRelease 232 B
readIniIntRange(char const*, char const*, long, long, long, long*) 224 B
scsiSaveByteAddress 220 B
platform_msc_lock_set(bool) 212 B
stdio_put_string 208 B
calculate_sync_period_limit 208 B
platform_setup_sd 208 B
stdio_out_chars_crlf 184 B
proc_read10_cmd.constprop.0 184 B
uart_set_baudrate 180 B
cdromCloseTray(image_config_t&) 168 B
cdromReinsertFirstImage(image_config_t&) 164 B
add_program_at_offset 164 B
irq_add_tail_to_free_list 164 B
scsiReadBuffer 160 B
... and 88 more

Comment thread lib/BlueSCSI_platform_RP2MCU/rp2040-template.ld
Loading a cue sheet at boot overflowed the 3KB RP2350 stack (STKOF).

(cherry picked from commit df7df165ea928fa95f00ba727098fcee6bfae72f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants