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

Displaying a 64 bit register #111

Open
chocotov1 opened this issue Aug 17, 2020 · 0 comments
Open

Displaying a 64 bit register #111

chocotov1 opened this issue Aug 17, 2020 · 0 comments

Comments

@chocotov1
Copy link

chocotov1 commented Aug 17, 2020

I want to check out the NVM User Row register of the SAMD21 via svd. Since it's not defined in ATSAMD21G18A.svd I tried to add it myself.

The problem is, I can only see the values that are in the first word. This register is split into two words: 0x804000 and 0x804004.

From the SAMD21 datasheet:
Selection_006

Here is what I added to the svd file:

      <name>NVM</name>
      <description>NVM</description>
      <baseAddress>0x804000</baseAddress>
      <registers>
        <register>
          <name>USER_ROW</name>
          <description>user row 0x804000</description>
          <addressOffset>0x0</addressOffset>
          <size>0x40</size>
          <fields>
            <field>
              <name>BOOTPROT</name>
              <bitRange>[2:0]</bitRange>
            </field>
            <field>
              <name>EEPROM</name>
              <bitRange>[6:4]</bitRange>
            </field>
            <field>
              <name>BOD33 Level</name>
              <bitRange>[13:8]</bitRange>
            </field>
            <field>
              <name>BOD33 Enable</name>
              <bitRange>[14:14]</bitRange>
            </field>
            <field>
              <name>BOD33 Action</name>
              <bitRange>[16:15]</bitRange>
            </field>
            <field>
              <name>WDT Enable</name>
              <bitRange>[25:25]</bitRange>
            </field>
            <field>
              <name>WDT Always-On</name>
              <bitRange>[26:26]</bitRange>
            </field>
            <field>
              <name>WDT Period</name>
              <bitRange>[30:27]</bitRange>
            </field>
            <field>
              <name>WDT Window</name>
              <bitRange>[34:31]</bitRange>
            </field>
            <field>
              <name>WDT EWOFFSET</name>
              <bitRange>[38:35]</bitRange>
            </field>
            <field>
              <name>WDT WEN</name>
              <bitRange>[39:39]</bitRange>
            </field>
            <field>
              <name>BOD33 Hysteresis</name>
              <bitRange>[40:40]</bitRange>
            </field>
            <field>
              <name>LOCK</name>
              <bitRange>[63:48]</bitRange>
            </field>
          </fields>
        </register>
      </registers>
    </peripheral>

The second word seems to be missing:

(gdb) x/t 0x804000
0x804000:	11011000111000000000000000000111
(gdb) 
0x804004:	11111111111111111111110001011101
(gdb) svd/t NVM 
Registers in NVM:
	USER_ROW:  0b0000000000000000000000000000000011011000111000000000000000000111  user row 0x804000
(gdb) svd/d NVM USER_ROW
Fields in NVM USER_ROW:
	BOOTPROT:           7  
	EEPROM:             0  
	BOD33 Level:        0  
	BOD33 Enable:       0  
	BOD33 Action:       0  
	WDT Enable:         0  
	WDT Always-On:      0  
	WDT Period:        11  
	WDT Window:         1  
	WDT EWOFFSET:       0  
	WDT WEN:            0  
	BOD33 Hysteresis:   0  
	LOCK:               0  

I haven't tried the .svd file in other software.

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

No branches or pull requests

1 participant