Cy topic RAM model
verbatim names · 32-bit Cortex-M · Cyphal/CAN · conservative planning allowance
typical name: 20 B / 3 segmentshome + namespace ≤230 B2 CAN interfacesO1Heap rounding includeddefault Cy configuration
node + CAN floorplan 1.25 KiBmodel: 1,168 B
first publisher; new topicplan 1 KiBresident model: 816 B
first verbatim subscriber; new topicplan 2 KiBresident model: 1,456 B; pinned: 1,584 B
another cy_subscribe(); same verbatim nameplan 0.25 KiBresident model: 256 B
Hard bound requires caps
required heap = resident allowance + peak traffic state + safety margin
application caps: associations/topic · simultaneous reliable futures · queued CAN frames · remote publishers · subscriber extent
Adding a verbatim cy_subscribe()
same verbatim name already has local cy_subscribe()?YES → 0.25 KiB256 B
NO →
topic already exists?YES → 0.75 KiB720 B
NO →
new topic2 KiB allowance1,456 B non-pinned · 1,584 B pinned
Then add peak traffic state
128 B / remote publisher + subject + 128 B / reliable remote publisher + topic + queued message + partially received transfers
| extent (maximum transfer size) | queued multi-frame message | each reassembly (partially received transfer) |
|---|---|---|
| 64 B | 192 B | 128 B |
| 256 B | 576 B | 512 B |
| 1,024 B | 2,112 B | 2,048 B |
reassemblies: 0…8 priorities / remote publisher + subject · single-frame queued message: 64…128 B
Adding a publisher
| resident state after first transfer drains | model | allowance |
|---|---|---|
| additional publisher; topic already published locally | 32 B | 64 B |
| first local publisher; existing topic | 80 B | 128 B |
| first local publisher; new typical topic | 816 B | 1 KiB |
Reliable publication peak
+128 B / reliable subscriber association (publisher-side) · retained with topic
| payload; 8 associations | future + retry copy + 1 CAN-FD attempt |
|---|---|
| 0 B | 528 B |
| 256 B | 2,064 B |
| 1,024 B | 4,624 B |
+1,024 B persistent associations · multiply pending futures · cap global CAN TX queue
32 KiB subscriber check
| 3 KiB currently free · planning allowances | before extra safety margin |
|---|---|
| same verbatim cy_subscribe() | ✓ 0.25 KiB + traffic |
| new topic · 64 B extent · 1 reliable remote · queued message + 1 reassembly | ✓ 2.56 KiB |
| new topic · 1,024 B extent · 1 remote · queued message | ✗ ≥4.19 KiB |
Ordered subscriber
+256 B / subscriber + remote publisher + topic + ≤16 interned (buffered ordered) messages
16 interned · 1,024 B extent · 1 remote35,072 Bordering state alone
Delayed release
destroy subscriberfuture retained
next cy_spinsubscriber; last subscription state
600 s idle + poll delayimplicit topic; name; gossip; writer; associations
retirement polls1 topic/Cy poll · 1 reader tombstone/CAN poll