Перейти к содержанию
    

IAR EWARM6.3 и NVIC в ATSAM4S16B

При работе с SAM4S16B (ATMEL) пользуюсь IAR EWARM6.3 и ассемблером : в выпадающем списке окна Registers нет регистров, относящихся к NVIC.

Отладка идет с использованием штатного IAR-овского файла iosam4s16b.svd: в нём нет и намёка на NVIC.

Есть подозрение, что в файлике iosam4s.ddf NVIC прописан, только его нет нигде.

 

Может уважаемое сообщество знает как помочь моей беде? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так же как и с любой другой периферией ядра:

заходите на

http://infocenter.arm.com/help/index.jsp?t...home/index.html

качаете Reference Manual на своё ядро и изучаете раздел NVIC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любезный, как RefMAN на ядро поможет включить отображение регистров NVIC в EWARM при отладке SAM4S16? ;)

 

Вы бы посмотрели у себя в каталоге с IARом: может завалялся файлик iosam4s.ddf?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы бы посмотрели у себя в каталоге с IARом: может завалялся файлик iosam4s.ddf?

 

Такого нет, но есть такие:

ATSAM4S16A.ddf

ATSAM4S16B.ddf

ATSAM4S16C.ddf

ATSAM4S2A.ddf

ATSAM4S2B.ddf

ATSAM4S2C.ddf

ATSAM4S4A.ddf

ATSAM4S4B.ddf

ATSAM4S4C.ddf

ATSAM4S8A.ddf

ATSAM4S8B.ddf

ATSAM4S8C.ddf

ATSAM4SA16B.ddf

ATSAM4SA16C.ddf

ATSAM4SD16B.ddf

ATSAM4SD16C.ddf

ATSAM4SD32B.ddf

ATSAM4SD32C.ddf

ATSAM4SP32A.ddf

 

А из iosam4s бывает только хидер:

iosam4s.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Xenia, (сужу по аватарке) голубушка, поделитесь .ddf-ками на SAM4, не сочтите за труд.

В моей инсталляции EWARM Сortex-ы Atmela разрисованы только .svd-файлами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Xenia, (сужу по аватарке) голубушка, поделитесь .ddf-ками на SAM4, не сочтите за труд.

В моей инсталляции EWARM Сortex-ы Atmela разрисованы только .svd-файлами.

 

Это файлы от EWARM-7303

ATSAM4S.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Любезный, как RefMAN на ядро поможет включить отображение регистров NVIC в EWARM при отладке SAM4S16? ;)

Элементарно:

1.Описываете необходимую периферию. Например так:

//NVIC (Cortex-M3 Peripheral)
typedef struct {
 u32 unuse0[1];
 u32 INT_TYPE;
 u32 ACTLR;
 u32 unuse1[1];
 struct {
   u32 CTRL;
   u32 LOAD;
   u32 VAL;
   u32 CAL;
 } ST;
 u32 unuse2[56];
 u32 ENA[2];
 u32 unuse3[30];
 u32 DIS[2];
 u32 unuse4[30];
 u32 SETPEND[2];
 u32 unuse5[30];
 u32 CLRPEND[2];
 u32 unuse6[30];
 u32 ACTIVE[2];
 u32 unuse7[62];
 u32 PRI[16];
 u32 unuse8[560];
 u32 CPUID;
 u32 INT_CTRL;
 u32 VTABLE;
 u32 APINT;
 u32 SCR;         //System Control Register
 u32 CCR;         //Configuration Control Register
 u32 SYSPRI[3];   //System Handler Priority Registers
 u32 SHCSR;       //System Handler Control and State Register
 union {
   u32 CFSR;      //Configurable Fault Status Register
   struct {
     u8 MMFSR;    //Memory Manage Fault Status Register
     u8 BFSR;     //Bus Fault Status Register
     u16 UFSR;    //Usage Fault Status Register
   };
 };
 u32 HFSR;        //Hard Fault Status Register
 u32 DFSR;        //Debug Fault Status Register
 u32 MMFAR;       //Memory Manage Fault Address Register
 u32 BFAR;        //Bus Fault Address Register
 u32 unuse9[21];
 u32 MPU_TYPE;
 u32 MPU_CTRL;
 u32 MPU_NUMBER;
 u32 MPU_BASE;
 u32 MPU_ATTR;
 u32 unuse10[19];
 u32 DBG_CTRL;
 u32 DBG_XFER;
 u32 DBG_DATA;
 u32 DBG_INT;
 u32 unuse11[64];
 u32 SW_TRIG;
} HwRegsNVIC;

 

2.Натягиваете её на адресное пространство:

EXTERN volatile __no_init __root __absolute HwRegsNVIC NVIC @ 0xE000E000;

 

3.В окне Watch IAR-а вводите NVIC.

4Наслаждаетесь результатом. Без всяких ddf.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну во-первЫх: ddf-ы неотъемлемая часть IARa, а Atmel небрежно их составляет (вспоминаются стародавние времена EWARM4.30 - у AT91SAM7S256

были прописаны по одному AIC_SMR и AIC_SМR регистру вместо 32-х); почему-то для NXP-овых и STM-ных

Cortexов NVIC в окне регистров отображается.

Во-вторых: нету никаких "volatile","__root", __absolute" и прочей ботвы - ибо ассемблер.

 

Вот как-то так…

 

Это файлы от EWARM-7303

 

Спасибо большое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появилось чуть свободного времени и я "добил" тему с неотображением NVIC в регистрах IAR EWARM6.3: с сайта ARM взял STM32F4xx.svd,

(в нём NVIC расписан) привел раздел <peripheral> в соответствие с Atmel-11100G-ATARM-SAM4S-Datasheet_27-May-14, добавил в ATSAM4S16B.svd

и всё заработало.

 

    <peripheral>
     <name>NVIC</name>
     <description>Nested Vectored Interrupt
     Controller</description>
     <groupName>NVIC</groupName>
     <baseAddress>0xE000E000</baseAddress>
     <addressBlock>
       <offset>0x0</offset>
       <size>0x1001</size>
       <usage>registers</usage>
     </addressBlock>
     <addressBlock>
       <offset>0x1001</offset>
       <size>0xFFFFF3FF</size>
       <usage>reserved</usage>
     </addressBlock>
     <registers>
       <register>
         <name>NVIC_STIR</name>
         <displayName>NVIC_STIR</displayName>
         <description>Software Triggered Interrupt
         Register</description>
         <addressOffset>0xF00</addressOffset>
         <size>0x20</size>
         <access>write-only</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>INTID</name>
             <description>interrupt to be triggered</description>
             <bitOffset>0</bitOffset>
             <bitWidth>9</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISER0</name>
         <displayName>NVIC_ISER0</displayName>
         <description>Interrupt Set-Enable Register</description>
         <addressOffset>0x100</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETENA</name>
             <description>SETENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISER1</name>
         <displayName>NVIC_ISER1</displayName>
         <description>Interrupt Set-Enable Register</description>
         <addressOffset>0x104</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETENA</name>
             <description>SETENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISER2</name>
         <displayName>NVIC_ISER2</displayName>
         <description>Interrupt Set-Enable Register</description>
         <addressOffset>0x108</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETENA</name>
             <description>SETENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICER0</name>
         <displayName>NVIC_ICER0</displayName>
         <description>Interrupt Clear-Enable
         Register</description>
         <addressOffset>0x180</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRENA</name>
             <description>CLRENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICER1</name>
         <displayName>NVIC_ICER1</displayName>
         <description>Interrupt Clear-Enable
         Register</description>
         <addressOffset>0x184</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRENA</name>
             <description>CLRENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICER2</name>
         <displayName>NVIC_ICER2</displayName>
         <description>Interrupt Clear-Enable
         Register</description>
         <addressOffset>0x188</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRENA</name>
             <description>CLRENA</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISPR0</name>
         <displayName>NVIC_ISPR0</displayName>
         <description>Interrupt Set-Pending Register</description>
         <addressOffset>0x200</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETPEND</name>
             <description>SETPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISPR1</name>
         <displayName>NVIC_ISPR1</displayName>
         <description>Interrupt Set-Pending Register</description>
         <addressOffset>0x204</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETPEND</name>
             <description>SETPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ISPR2</name>
         <displayName>NVIC_ISPR2</displayName>
         <description>Interrupt Set-Pending Register</description>
         <addressOffset>0x208</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>SETPEND</name>
             <description>SETPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICPR0</name>
         <displayName>NVIC_ICPR0</displayName>
         <description>Interrupt Clear-Pending
         Register</description>
         <addressOffset>0x280</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRPEND</name>
             <description>CLRPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICPR1</name>
         <displayName>NVIC_ICPR1</displayName>
         <description>Interrupt Clear-Pending
         Register</description>
         <addressOffset>0x284</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRPEND</name>
             <description>CLRPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_ICPR2</name>
         <displayName>NVIC_ICPR2</displayName>
         <description>Interrupt Clear-Pending
         Register</description>
         <addressOffset>0x288</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>CLRPEND</name>
             <description>CLRPEND</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IABR0</name>
         <displayName>NVIC_IABR0</displayName>
         <description>Interrupt Active Bit Register</description>
         <addressOffset>0x300</addressOffset>
         <size>0x20</size>
         <access>read-only</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>ACTIVE</name>
             <description>ACTIVE</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IABR1</name>
         <displayName>NVIC_IABR1</displayName>
         <description>Interrupt Active Bit Register</description>
         <addressOffset>0x304</addressOffset>
         <size>0x20</size>
         <access>read-only</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>ACTIVE</name>
             <description>ACTIVE</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IABR2</name>
         <displayName>NVIC_IABR2</displayName>
         <description>Interrupt Active Bit Register</description>
         <addressOffset>0x308</addressOffset>
         <size>0x20</size>
         <access>read-only</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>ACTIVE</name>
             <description>ACTIVE</description>
             <bitOffset>0</bitOffset>
             <bitWidth>32</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR0</name>
         <displayName>NVIC_IPR0</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x400</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR1</name>
         <displayName>NVIC_IPR1</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x404</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR2</name>
         <displayName>NVIC_IPR2</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x408</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR3</name>
         <displayName>NVIC_IPR3</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x40C</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR4</name>
         <displayName>NVIC_IPR4</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x410</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR5</name>
         <displayName>NVIC_IPR5</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x414</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR6</name>
         <displayName>NVIC_IPR6</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x418</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR7</name>
         <displayName>NVIC_IPR7</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x41C</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
       <register>
         <name>NVIC_IPR8</name>
         <displayName>NVIC_IPR8</displayName>
         <description>Interrupt Priority Register</description>
         <addressOffset>0x420</addressOffset>
         <size>0x20</size>
         <access>read-write</access>
         <resetValue>0x00000000</resetValue>
         <fields>
           <field>
             <name>PRI0</name>
             <description>PRI0</description>
             <bitOffset>0</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI1</name>
             <description>PRI1</description>
             <bitOffset>8</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI2</name>
             <description>PRI2</description>
             <bitOffset>16</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
           <field>
             <name>PRI3</name>
             <description>PRI3</description>
             <bitOffset>24</bitOffset>
             <bitWidth>8</bitWidth>
           </field>
         </fields>
       </register>
     </registers>
   </peripheral>

 

post-83663-1423052272_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...