Skip to content

Commit 9845a06

Browse files
committed
ports: fomu: move more functions into ram for stability
The SPI flash on current Fomu firmware is slow. Circuitpython runs XIP from SPI flash, and so execution time can also be slow. Ordinarily this isn't a problem, however certain operations are time-sensitive. In particular, USB function needs to be handled quickly in order to prevent the host from re-enumerating the device. Place several critical TinyUSB structures into RAM, as well as several hot functions that are frequently called. This reduces execution time at the expense of system memory, and greatly improves system stability. Signed-off-by: Sean Cross <[email protected]>
1 parent f47b964 commit 9845a06

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

ports/litex/boards/fomu/fomu-spi.ld

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,42 @@ SECTIONS
2626
. = ALIGN(4);
2727
_sdata = .; /* create a global symbol at data start; used by startup code in order to initialise the .data section in RAM */
2828

29-
*(.itcm.*) /* Instruction Tightly Coupled Memory */
30-
*(.dtcm_data.*) /* Data Tightly Coupled Memory */
29+
*(.itcm.*) /* Instruction Tightly Coupled Memory */
30+
*(.dtcm_data.*) /* Data Tightly Coupled Memory */
31+
32+
*(.text.cmp_lfn)
33+
*(.text.qstr_find_strn)
34+
*(.text.dcd_edpt_xfer)
35+
*(.text.pop_rule)
36+
*(.text.ff_wtoupper)
37+
*(.text.dir_find)
38+
*(.text.push_rule)
39+
*(.text.csr_writel)
40+
*(.text.csr_readl)
41+
*(.text.timer0_ev_pending_write)
42+
*(.text.autoreload_tick)
43+
*(.text.filesystem_tick)
44+
*(.text.usb_background)
45+
46+
*(.text.dcd_*)
47+
*(.text.tud_control_*)
48+
*(.text.tud_cdc_n_write_flush)
49+
*(.text.tud_task)
50+
*(.text.tu_edpt_dir)
51+
*(.text.tu_fifo_empty)
52+
*(.text.usbd_edpt_busy)
53+
*(.text.irq_getmask)
54+
*(.text.irq_setmask)
55+
*(.text.irq_pending)
56+
*(.text._osal_q_lock)
57+
*(.text.osal_queue_receive)
58+
59+
*(.text.mp_obj_get_type)
60+
*(.text.mp_parse)
61+
*(.text.parse_compile_execute)
62+
*(.text.mp_map_lookup)
63+
*(.text.mp_execute_bytecode) /* Note: this function is 7kb */
64+
3165
*(.ramtext) /* .text* sections (code) */
3266
*(.ramtext*) /* .text* sections (code) */
3367
*(.data) /* .data sections */
@@ -63,7 +97,7 @@ SECTIONS
6397
_sbss = .; /* define a global symbol at bss start; used by startup code */
6498
*(.bss)
6599
*(.bss*)
66-
*(.dtcm_bss.*) /* Data Tightly Coupled Memory */
100+
*(.dtcm_bss.*) /* Data Tightly Coupled Memory */
67101
*(.sbss)
68102
*(.sbss*)
69103
*(COMMON)

0 commit comments

Comments
 (0)