реклама на сайте
подробности

 
 
> проблемы с байтовым инструкциями, stm32f767
klen
сообщение Feb 12 2017, 23:22
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравствуюйте.
Начал осваивать F7
компилятор генерит код:
Код
NOP();
08000684:   nop    
08000686:   ldrb    r5, [r6, #0]
08000688:   orr.w   r4, r5, #1
0800068c:   strb    r4, [r6, #0]
08000684:   nop


содержание регистров r4,r5,r6
Цитата
r4 268436096
r5 640
r6 0x40026010 (Hex)


байтовая инструкция ldrb r5, [r6, #0] вызывает вываливание в hard fault? в тоже время переписанный код который организован как чтение слова по томуже адресу не вызывает исключительной ситуации. чтение регистра DMA_CR. при этом же такое же байтовое чтение модификация записm проканывает с регистром RCC AHB1

так должно быть - неможеn он байтовый кусок вычитать из переферийного адреса?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Feb 14 2017, 09:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вот хидер на 407 камень
вот первое попавшиеся ...
Код
typedef struct
{
  __IO uint32_t              MCR;                 /*!< CAN master control register,         Address offset: 0x00          */
  __IO uint32_t              MSR;                 /*!< CAN master status register,          Address offset: 0x04          */
  __IO uint32_t              TSR;                 /*!< CAN transmit status register,        Address offset: 0x08          */
  __IO uint32_t              RF0R;                /*!< CAN receive FIFO 0 register,         Address offset: 0x0C          */
  __IO uint32_t              RF1R;                /*!< CAN receive FIFO 1 register,         Address offset: 0x10          */
  __IO uint32_t              IER;                 /*!< CAN interrupt enable register,       Address offset: 0x14          */
  __IO uint32_t              ESR;                 /*!< CAN error status register,           Address offset: 0x18          */
  __IO uint32_t              BTR;                 /*!< CAN bit timing register,             Address offset: 0x1C          */
  uint32_t                   RESERVED0[88];       /*!< Reserved, 0x020 - 0x17F                                            */
  CAN_TxMailBox_TypeDef      sTxMailBox[3];       /*!< CAN Tx MailBox,                      Address offset: 0x180 - 0x1AC */
  CAN_FIFOMailBox_TypeDef    sFIFOMailBox[2];     /*!< CAN FIFO MailBox,                    Address offset: 0x1B0 - 0x1CC */
  uint32_t                   RESERVED1[12];       /*!< Reserved, 0x1D0 - 0x1FF                                            */
  __IO uint32_t              FMR;                 /*!< CAN filter master register,          Address offset: 0x200         */
  __IO uint32_t              FM1R;                /*!< CAN filter mode register,            Address offset: 0x204         */
  uint32_t                   RESERVED2;           /*!< Reserved, 0x208                                                    */
  __IO uint32_t              FS1R;                /*!< CAN filter scale register,           Address offset: 0x20C         */
  uint32_t                   RESERVED3;           /*!< Reserved, 0x210                                                    */
  __IO uint32_t              FFA1R;               /*!< CAN filter FIFO assignment register, Address offset: 0x214         */
  uint32_t                   RESERVED4;           /*!< Reserved, 0x218                                                    */
  __IO uint32_t              FA1R;                /*!< CAN filter activation register,      Address offset: 0x21C         */
  uint32_t                   RESERVED5[8];        /*!< Reserved, 0x220-0x23F                                              */
  CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register,                 Address offset: 0x240-0x31C   */
} CAN_TypeDef;

Ну и далее по тексту для любителей якобы CMSIS
Код
/*!<CAN control and status registers */
/*******************  Bit definition for CAN_MCR register  ********************/
#define  CAN_MCR_INRQ                        ((uint32_t)0x00000001)        /*!<Initialization Request */
#define  CAN_MCR_SLEEP                       ((uint32_t)0x00000002)        /*!<Sleep Mode Request */
#define  CAN_MCR_TXFP                        ((uint32_t)0x00000004)        /*!<Transmit FIFO Priority */
#define  CAN_MCR_RFLM                        ((uint32_t)0x00000008)        /*!<Receive FIFO Locked Mode */
#define  CAN_MCR_NART                        ((uint32_t)0x00000010)        /*!<No Automatic Retransmission */
#define  CAN_MCR_AWUM                        ((uint32_t)0x00000020)        /*!<Automatic Wakeup Mode */
#define  CAN_MCR_ABOM                        ((uint32_t)0x00000040)        /*!<Automatic Bus-Off Management */
#define  CAN_MCR_TTCM                        ((uint32_t)0x00000080)        /*!<Time Triggered Communication Mode */
#define  CAN_MCR_RESET                       ((uint32_t)0x00008000)        /*!<bxCAN software master reset */
#define  CAN_MCR_DBF                         ((uint32_t)0x00010000)        /*!<bxCAN Debug freeze */
/*******************  Bit definition for CAN_MSR register  ********************/
#define  CAN_MSR_INAK                        ((uint32_t)0x0001)            /*!<Initialization Acknowledge */
#define  CAN_MSR_SLAK                        ((uint32_t)0x0002)            /*!<Sleep Acknowledge */
#define  CAN_MSR_ERRI                        ((uint32_t)0x0004)            /*!<Error Interrupt */
#define  CAN_MSR_WKUI                        ((uint32_t)0x0008)            /*!<Wakeup Interrupt */
#define  CAN_MSR_SLAKI                       ((uint32_t)0x0010)            /*!<Sleep Acknowledge Interrupt */
#define  CAN_MSR_TXM                         ((uint32_t)0x0100)            /*!<Transmit Mode */
#define  CAN_MSR_RXM                         ((uint32_t)0x0200)            /*!<Receive Mode */
#define  CAN_MSR_SAMP                        ((uint32_t)0x0400)            /*!<Last Sample Point */
#define  CAN_MSR_RX                          ((uint32_t)0x0800)            /*!<CAN Rx Signal */

Ну и так далее ....
Обращаю внимание, что в битовой маске сразу указаны и устройство и регистры...
Прикрепленные файлы
Прикрепленный файл  stm32f407xx.zip ( 59.82 килобайт ) Кол-во скачиваний: 3
 
Go to the top of the page
 
+Quote Post
Alechek
сообщение Feb 14 2017, 14:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(SasaVitebsk @ Feb 14 2017, 14:33) *
Слушайте, ну незнание не освобождает и далее по тексту....
Там имеется и то и другое...


Цитата(SasaVitebsk @ Feb 14 2017, 14:40) *
Вот хидер на 407 камень
вот первое попавшиеся ...

И где такое интересно дают?
IAR 7.7
inc/ST

файлов stm*.h вообще не наблюдаю
есть только вида iostm*.h
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 14 2017, 14:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Alechek @ Feb 14 2017, 17:07) *
И где такое интересно дают?

В интернете: тынц.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Feb 14 2017, 14:53
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(scifi @ Feb 14 2017, 19:20) *
В интернете: тынц.

В интернете это понятно. Там речь про IAR шла.
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 14 2017, 15:06
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alechek @ Feb 14 2017, 17:53) *
речь про IAR шла.

Неужели в IAR не С/C++, а что-то свое, нестандартное? sm.gif


оффффф. В свое время пытался по-юзать IAR, он мне оказался жутко нестандатной IDE (вот уж стоило где изобретать лисапет), поплевался, поматерился и в итоге удалил ... не жалею ни разу )))
Keil тоже не конфетка, но под нетолстые ARMы это пока что самое нормальное с привычным интерфейсом (имхо!), особенно после кроссворкса ...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Alechek
сообщение Feb 15 2017, 04:18
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Forger @ Feb 14 2017, 20:06) *
Неужели в IAR не С/C++, а что-то свое, нестандартное? sm.gif


Примерно так
Код
/* Clock configuration register (RCC_CFGR) */
typedef struct {
  __REG32  SW             : 2;
  __REG32  SWS            : 2;
  __REG32  HPRE           : 4;
  __REG32  PPRE1          : 3;
  __REG32  PPRE2          : 3;
  __REG32  ADC_PRE        : 2;
  __REG32  PLLSRC         : 1;
  __REG32  PLLXTPRE       : 1;
  __REG32  PLLMUL         : 4;
  __REG32  USBPRE         : 1;
  __REG32                 : 1;
  __REG32  MCO            : 3;
  __REG32                 : 5;
} __rcc_cfgr_bits;

....
__IO_REG32_BIT(RCC_CFGR,          0x40021004,__READ_WRITE ,__rcc_cfgr_bits);


Использовать как
Код
  RCC_CFGR_bit.PLLMUL = 2;
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 15 2017, 07:00
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alechek @ Feb 15 2017, 07:18) *
Примерно так..

Я имел ввиду скормить ИАРу стандартные h файлы (от производителя чипа), которые должен понимать даже самый чахлый С компилятор.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 16 2017, 09:49
Сообщение #9


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



все коллеги были правы но меня не поняли. я чуть позже выложу для обозрения велосипед и тогда можно будет кинуть в меня какахой предметно. наверно будет очень похоже на иар
естественно для мня только С++, С - это тоже самое на выходе кодогенератора но куча фатальных граблей для программиста. полагаю что если не писать код достаточно большой который пишут >10 человек и сложный то этого не понять потому что не заметить.

почему не использую иар? а у меня есть деньги на него?
Go to the top of the page
 
+Quote Post
Obam
сообщение Feb 16 2017, 10:24
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(klen @ Feb 16 2017, 13:49) *
почему не использую иар? а у меня есть деньги на него?


У мну тоже нет, а я в образовательных целях, кроме того без support-а столько усилилий затрачено, что они мне приплатить обязаны (по поводу приплатить - шутка).


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- klen   проблемы с байтовым инструкциями   Feb 12 2017, 23:22
- - Genadi Zawidowski   заглянул в RM0410.PDF. Регистра DMA_CR не нашел, н...   Feb 13 2017, 00:02
|- - klen   Цитата(Genadi Zawidowski @ Feb 13 2017, 03...   Feb 13 2017, 11:13
|- - adnega   Цитата(klen @ Feb 13 2017, 14:13) ну он д...   Feb 13 2017, 13:02
|- - ViKo   Цитата(klen @ Feb 13 2017, 14:13) ... в м...   Feb 13 2017, 13:15
|- - SasaVitebsk   Цитата(klen @ Feb 13 2017, 14:13) тема св...   Feb 13 2017, 14:53
||- - Alechek   Цитата(SasaVitebsk @ Feb 13 2017, 19:53) ...   Feb 13 2017, 15:34
||- - SasaVitebsk   Цитата(Alechek @ Feb 13 2017, 18:34) Рань...   Feb 14 2017, 09:33
|- - Forger   Цитата(klen @ Feb 13 2017, 14:13) тема св...   Feb 13 2017, 17:17
- - KRS   IAR - делает! но у него запись битовых полей ...   Feb 13 2017, 17:20
|- - klen   Цитата(KRS @ Feb 13 2017, 20:20) IAR - де...   Feb 13 2017, 22:02
|- - Forger   Цитата(klen @ Feb 14 2017, 01:02) в случа...   Feb 13 2017, 22:22
||- - Kabdim   Цитата(Forger @ Feb 14 2017, 01:22) едино...   Feb 14 2017, 07:37
||- - Forger   Цитата(Kabdim @ Feb 14 2017, 10:37) Истин...   Feb 14 2017, 07:43
|- - Сергей Борщ   QUOTE (klen @ Feb 14 2017, 00:02) наприме...   Feb 14 2017, 06:58
||- - AHTOXA   Цитата(Сергей Борщ @ Feb 14 2017, 11:58) ...   Feb 14 2017, 09:38
|- - scifi   Цитата(klen @ Feb 14 2017, 01:02) зачем э...   Feb 14 2017, 07:08
|- - Сергей Борщ   QUOTE (scifi @ Feb 14 2017, 09:08) Ну и д...   Feb 14 2017, 08:00
|- - scifi   Цитата(Сергей Борщ @ Feb 14 2017, 11:00) ...   Feb 14 2017, 09:34
- - Kabdim   Не мог не продолжить .   Feb 14 2017, 07:45
|- - Forger   Цитата(SasaVitebsk @ Feb 14 2017, 12:40) ...   Feb 14 2017, 09:45
- - Сергей Борщ   QUOTE (AHTOXA @ Feb 14 2017, 11:38) Напом...   Feb 14 2017, 09:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 03:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.02157 секунд с 7
ELECTRONIX ©2004-2016