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

 
 
> проблемы с байтовым инструкциями, 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
Ответов
KRS
сообщение Feb 13 2017, 17:20
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



IAR - делает!
но у него запись битовых полей в 32 разрядные регистры не приводит к байтовым операциям!
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 13 2017, 22:02
Сообщение #3


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

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



Цитата(KRS @ Feb 13 2017, 20:20) *
IAR - делает!
но у него запись битовых полей в 32 разрядные регистры не приводит к байтовым операциям!

ну я еще придумаю как это обустроить sm.gif

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

например теперь невозможно записать в поля номера канала регистра DMAx_STREAMy.channel канал которого нет - его не будет в перечислении sm.gif

велосипед вещь фундаментальная как инь и янь! подозреваю что велосипед это средство перемещения в будующее где у тебя уже будет опыт им не пользоватся
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 14 2017, 07:08
Сообщение #4


Гуру
******

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



Цитата(klen @ Feb 14 2017, 01:02) *
зачем это надо?
при расписывании полей можно указать тип этого поля и в перечислении все его допустимые значения.
в таком виде при написании кода пропадает возможность наступить на мои любимые грабли - записать задефайненый бит одного похоженго регистра в другой похожий регистр или перепутать флаги ...

Сие есть страдание от безделья. Этот класс ошибок совсем не страшный, ибо обнаруживается сразу же по факту того, что код просто не работает.
Ну и да, язык не даёт никаких гарантий, что не будет использован побайтовый доступ, поэтому раскидывать себе грабли на этом поле едва ли разумно.
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
|- - 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
|- - Сергей Борщ   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


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

 


RSS Текстовая версия Сейчас: 26th August 2025 - 23:32
Рейтинг@Mail.ru


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