bitfield icon indicating copy to clipboard operation
bitfield copied to clipboard

Support memory maps

Open xobs opened this issue 6 years ago • 11 comments

Issue moved from https://github.com/wavedrom/wavedrom/issues/257

Memory maps are conceptually similar to bitfields, except they're rotated on their sides. Memory maps may also be non-uniform in size, though that may be a future enhancement.

It may be possible to reuse the compact view (https://github.com/drom/bitfield/pull/23) to create memory maps, by setting the number of lanes to the number of memory sections (e.g. 16), and the width to 1.

xobs avatar Nov 25 '19 05:11 xobs

Do you have some visually pleasing example of memory map diagram that you like?

drom avatar Nov 28 '19 07:11 drom

Here's a memory map from the EFM32HG by SiLabs, which is a bit on the advanced side but nicely shows how you'd expand on memory register regions. This is my favourite of the bunch, because of how it visually explains where the "expanded" regions are: image

Various 8051 chips also have handy memory maps, and because they're so small they actually specify bitfields within the memory maps: image

Here's one of the Nintendo 64, which mostly illustrates how you'd have variable-height regions: image

Here's one describing the NES, which is nice because it has two side-by-side memory maps that are independent: image

xobs avatar Nov 28 '19 08:11 xobs

Example with some paper tear effect.

memmap001

drom avatar Dec 13 '19 07:12 drom

map

xobs avatar Dec 13 '19 16:12 xobs

I spent a lot of time with the i.MX233 which has a bank of otp fuses. Here's the memory map from the reference manual: Screenshot_20191216_135253

Here's the full memory map, which just has the peripherals listed as "Peripheral Space": Screenshot_20191216_135057_com google android apps docs

xobs avatar Dec 16 '19 21:12 xobs

Necessary modification I see:

  • left-sided index must be a settable property of lane
    • may be autofilled via global option for default compact behaviour
    • additional begin & end index needs to be introduced for large adress spaces
    • attributes may be used for this, since they are not compatible with the compact mode
  • cage rendering must support multiple options
    • merged option
      • only left/right, starting lane bottom and ending lane top border is drawn. Multiple lanes would be merged to a single thing. Label is only drawn once.
    • no tick option
      • draw no ticks inside the cage
    • crossed out option
      • connecting left,bottom corner with right,upper one
        • for showing non linear behaviour
  • some attribute holding a whole new bitfield object
    • will be on the right side of prior bitfield
    • centered to the lane holding the attribute
    • have these "extending" lines from the right corners of cage to the left corners of new bitfield

nopeslide avatar Jan 30 '20 13:01 nopeslide

@nopeslide good ideas. I would need some sketches of the ideas you have.

drom avatar Jan 30 '20 22:01 drom

@drom I sketched just the index and sub-bitfield idea

Sa_1 _Feb_13:04:07_CET_2020

nopeslide avatar Feb 01 '20 12:02 nopeslide

Dm2iry-V4AAnBvV

drom avatar Apr 07 '20 05:04 drom

From the nRF52833 document:

image

Where, apropos of nothing, I found this SPI timing diagram:

image

xobs avatar Apr 24 '20 01:04 xobs

image

Discovered in the reference manual of an RZ/T1 -- this has four separate memory spaces, and so there are four columns.

xobs avatar Jul 30 '20 04:07 xobs