Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support memory maps #24

Open
xobs opened this issue Nov 25, 2019 · 11 comments
Open

Support memory maps #24

xobs opened this issue Nov 25, 2019 · 11 comments

Comments

@xobs
Copy link

xobs commented Nov 25, 2019

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 (#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.

@drom
Copy link
Member

drom commented Nov 28, 2019

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

@xobs
Copy link
Author

xobs commented Nov 28, 2019

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

@drom
Copy link
Member

drom commented Dec 13, 2019

Example with some paper tear effect.

memmap001

@xobs
Copy link
Author

xobs commented Dec 13, 2019

map

@xobs
Copy link
Author

xobs commented Dec 16, 2019

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

@nopeslide
Copy link
Contributor

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

@drom
Copy link
Member

drom commented Jan 30, 2020

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

@nopeslide
Copy link
Contributor

nopeslide commented Feb 1, 2020

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

Sa_1 _Feb_13:04:07_CET_2020

@drom
Copy link
Member

drom commented Apr 7, 2020

Dm2iry-V4AAnBvV

@xobs
Copy link
Author

xobs commented Apr 24, 2020

From the nRF52833 document:

image

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

image

@xobs
Copy link
Author

xobs commented Jul 30, 2020

image

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants