|
проблемы с байтовым инструкциями, stm32f767 |
|
|
|
Feb 12 2017, 23:22
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 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 он байтовый кусок вычитать из переферийного адреса?
|
|
|
|
|
 |
Ответов
|
Feb 13 2017, 00:02
|

Профессионал
    
Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634

|
заглянул в RM0410.PDF. Регистра DMA_CR не нашел, но на странице 262 встретилось вот такое: Цитата 8.5 DMA registers The DMA registers have to be accessed by words (32 bits). Как оно могло такое нагенерить, если регистр volatile и 32 бита? Из другого места (опять не понятно про что вопрос - с регистром RCC AHB1): Цитата 5.3.10 RCC APB1 peripheral clock enable register (RCC_APB1ENR) Address offset: 0x40 Reset value: 0x0000 0000 Access: no wait state, word, half-word and byte access. А hard fault как-бы намекает, что так (байтом) нельзя.
Сообщение отредактировал Genadi Zawidowski - Feb 13 2017, 00:18
|
|
|
|
|
Feb 13 2017, 11:13
|

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

|
Цитата(Genadi Zawidowski @ Feb 13 2017, 03:02)  заглянул в RM0410.PDF. Регистра DMA_CR не нашел, но на странице 262 встретилось вот такое:
Как оно могло такое нагенерить, если регистр volatile и 32 бита?
Из другого места (опять не понятно про что вопрос - с регистром RCC AHB1):
А hard fault как-бы намекает, что так (байтом) нельзя. спасибо! вопросов больше не имею. спасибо что тыкнули мордой даташит. я просто не дочитал до этого места думая что как у других регистров возможна байтовый доступ. печально. теперь буду внимательнее. код компиллер нагенерил так потому что я сам его так попросил. тема связана с тем что я делаю такую штуку - описываю регистры как структуры с битовыми полями. так удобнее писать код. в DMA вылезло что так нельзя потому что тогда компиллер генерить код вытягивания модификации и записи байта - ну он думает если ты бит изменяеш в слове то достаточно только байт модифицировать. но я придумал как обойти это ограничение. еще раз убеждаемся - не просто читать даташит а читать ВНИМАТЕЛЬНО! в моем случае выло как обычно - смотриш в книгу - видиш фигу  вечер воскресения бесполезно убит этой глупостью.
|
|
|
|
|
Feb 13 2017, 13:02
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(klen @ Feb 13 2017, 14:13)  ну он думает если ты бит изменяеш в слове то достаточно только байт модифицировать. А как вы описываете бит? По моему так не должно быть. Я описываю так Код DWORD none:1; и надеюсь увидеть 32-битный доступ.
|
|
|
|
Сообщений в этой теме
klen проблемы с байтовым инструкциями Feb 12 2017, 23:22  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 SasaVitebsk Вот хидер на 407 камень
вот первое попавшиеся ...
... Feb 14 2017, 09:40 Forger Цитата(SasaVitebsk @ Feb 14 2017, 12:40) ... Feb 14 2017, 09:45 Alechek Цитата(SasaVitebsk @ Feb 14 2017, 14:33) ... Feb 14 2017, 14:07  scifi Цитата(Alechek @ Feb 14 2017, 17:07) И гд... Feb 14 2017, 14:20   Alechek Цитата(scifi @ Feb 14 2017, 19:20) В инте... Feb 14 2017, 14:53    Forger Цитата(Alechek @ Feb 14 2017, 17:53) речь... Feb 14 2017, 15:06     Alechek Цитата(Forger @ Feb 14 2017, 20:06) Неуже... Feb 15 2017, 04:18      Forger Цитата(Alechek @ Feb 15 2017, 07:18) Прим... Feb 15 2017, 07:00       klen все коллеги были правы но меня не поняли. я чуть п... Feb 16 2017, 09:49        Obam Цитата(klen @ Feb 16 2017, 13:49) почему ... Feb 16 2017, 10:24 Сергей Борщ QUOTE (AHTOXA @ Feb 14 2017, 11:38) Напом... Feb 14 2017, 09:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|