STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

Myp3ik, да хочу разобраться. Можно и по-народному, конечно. Но в чужом коде частенько попадаются подобные конструкции. Хотелось бы увереннее стоять на ногах. Название ветки и вопрос вроде соответствуют. Reflector, значит, если явно не указать sizeof(тип), то единица измерения адреса это байт и не зависит от размерности выражения, тоесть если к адресу 32 битного регистра прибавить 1, адрес сместится на байт, если к адресу 16 битного прибавить 1. то смещение будет тоже 1 байт. Я ожидал смещение адреса согласно размерности регистра. Что не логично.
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение WiseLord »

Если к _адресу_ прибавить единицу, указатель сместится именно на то количество байт, которое занимает тип данных, на которые указатель, собственно, указывает. На 1 байт - частный случай для char и т.п. однобайтных символов.

А Reflector на ошибку правильно указал. Единицу-то Вы прибавляете не к указтелю, а к обычному uint32_t числу.
Реклама
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

Как правильно написать? Мозги кипят. Изначально я отталкивался от справочника по С. Вот отрывок: "Операции адресной арифметики подчиняются следующим правилам. После выполнения операции
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.
Применительно к указателям на char, операций адресной арифметики выполняются как обычные
арифметические операции, потому что длина объекта char всегда равна 1. Для всех указателей
адрес увеличивается или уменьшается на величину, равную размеру объекта того типа, на который
они указывают. Поэтому указатель всегда ссылается на объект с типом, тождественным базовому
типу указателя." Но потом запутался где-то.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Что мешает самому объявить как два uint16_t , и не насиловать мозг себе и окружающим?
Реклама
Эиком - электронные компоненты и радиодетали
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Вместе с кубом в новом дизайне появилась и утилитка для прошивки STM32 с незатейливым названием STM32CubeProgrammer. По сути, это бывший STM32 ST-LINK Utility, но в новом оперении.

Изображение

Каких либо революционных новшеств я пока не увидел, но китайский ST-LINK V2 оно мне прошило до новой версии, чего от старой утилиты было не добиться.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

a5021 писал(а):китайский ST-LINK V2 оно мне прошило до новой версии, чего от старой утилиты было не добиться.
С STM32 ST-LINK Utility поставляется утилита ST-LinkUpgrade которая нормально обновляет китайские ст-линки.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

До какой версии?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

А он каквсегданевкурсе...
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

[uquote="AlDr70",url="/forum/viewtopic.php?p=3512293#p3512293"]После выполнения операции
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.[/uquote]

Здесь имелись в виду операции инкремента/декремента указателя ++ и --
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение ARV »

AlDr70 писал(а):длина объекта char всегда равна 1
не всегда
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

a5021 писал(а):До какой версии?
До текущей V2.J32.S7.
xVekx
Встал на лапы
Сообщения: 125
Зарегистрирован: Вс мар 01, 2009 20:41:19

Re: STM32 новичку в ARM что к чему

Сообщение xVekx »

Кто терзал тач на STM32F746G-Discovery или ft5336 ft6x06 чипы регистр Gesture ID получалось заставить работать?
lazarev
Открыл глаза
Сообщения: 53
Зарегистрирован: Вт янв 19, 2016 23:13:21

Re: STM32 новичку в ARM что к чему

Сообщение lazarev »

[uquote="AlDr70",url="/forum/viewtopic.php?p=3512140#p3512140"]да хочу разобраться. Можно и по-народному, конечно. Но в чужом коде частенько попадаются подобные конструкции. Хотелось бы увереннее стоять на ногах.[/uquote]Если действительно хотите разобраться в полете инженерной мысли типа #define i_Low (*(uint16_t *)((uint32_t)&(i))), разбейте его на маленькие части, упростите, и склейте упрощение части, и в результате ви получите (uint16_t)i(на конкретном примере). Или же используйте отладчик, и налету посмотрите значения переменних или карту памяти, и сразу все станет ясно и понятно как на картинке. Второй вопрос - если дошло до такого, то кто знает как он используется гдето там в коде.

PS: хороший пример того как простое чтение/запись переменной превратить в настоящий ад для человека, читающего этот код. Стоит ли использовать это дальше - однозначно да, особенно если нужно будет через пол года, год внести какието правки, и снова нужно будет потратить 2 часа времени, чтоб просто понять, что это делает
Вложения
debug.png
(61.73 КБ) 474 скачивания
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

lazarev, я так и сделал. Разбил этот код на маленькие участки и разбирался с этим. Пока по другому никак. Нехорощо, конечно, когда столкнешься с плохо читаемым кодом. Отладка в железе пока мечта в слезах. Напаял светодиодов на выходе . Не получается и все тут. Много сайтов пересмотрел. Остается обновить STLink, но боюсь напортачить. Нечем будет и прошивать. Мой вопрос в целях учебы, ваши мнения все равно нужны. Практически, конечно, чем проще - тем надежней. За ответы всем спасибо. Есть сайты, где вообще могут тупо игнорировать человека если вопрос не понравился.
lazarev
Открыл глаза
Сообщения: 53
Зарегистрирован: Вт янв 19, 2016 23:13:21

Re: STM32 новичку в ARM что к чему

Сообщение lazarev »

для st-link есть официальная утилита для обновления прошивки - STSW-LINK007, чтото нетак сделать там очень сложно(там 2 кнопки: проверить, обновить - последняя прошивка автоматом грузиться с офф. сайта).
Можно еще поексперементировать с отладкой с помощю официальной IDE AC6 SW4STM32, займет до 30мин. времени(включая скачивание, установку, запуск, создание нового проекта, нажатие кнопки Debug) + можно добавить Куб(гламурний инструмент для создания проектов, если вам нравится путь конфигурирования с помощью кнопочек/картиночек)
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

Я боюсь, что мой программатор слишком китайский. Он в красном корпусе, написано ST-LINK V2. Ниже STM8 & STM32. Внутрь не лазил. Не знаю какой там чип. Слышал, что некоторые после обновления не работают. Про такие и сказал слишком китайский. Залез внутрь, там 103CB. Скачал утилиту stsw-link007. Ну что, пробую?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

AlDr70 писал(а):Я боюсь, что мой программатор слишком китайский.
Нормально они обновляются. В случае чего МК можно также прошить через USART или USB в зависимости от его типа.

Немного о обновлении прошивки. http://purebasic.mybb.ru/viewtopic.php?id=565
И об отладке. http://purebasic.mybb.ru/viewtopic.php?id=564
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

Нет, не получилось stsw-link007. Завтра еще на работе попробую.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

AlDr70 писал(а):Нет, не получилось stsw-link007
Что не получилось? Скачать или обновить прошивку?
AlDr70
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Вс ноя 13, 2016 18:04:13

Re: STM32 новичку в ARM что к чему

Сообщение AlDr70 »

Обновить не получилось. Теперь и STM32 ST-LINK Utility не видит прграмматор, я в ней прошивку заливал. Чего и боялся.
Ответить

Вернуться в «ARM»