Например TDA7294

Форум РадиоКот :: Просмотр темы - Начало. Применение GD32F405RG и модуля MSP3520
Форум РадиоКот
https://radiokot.ru/forum/

Начало. Применение GD32F405RG и модуля MSP3520
https://radiokot.ru/forum/viewtopic.php?f=62&t=196599
Страница 1 из 1

Автор:  kurator [ Пт янв 31, 2025 12:41:30 ]
Заголовок сообщения:  Начало. Применение GD32F405RG и модуля MSP3520

Начало. Применение GD32F405RG и модуля MSP3520
В интернете не много информации на микропроцессоры GD32, в частности
GD32F405 и на графические индикаторы, в частности MSP3520, на русском языке.
В этой статье попытаюсь компенсировать данный недостаток и показать
некоторые методы вывода на индикатор

Вложения:
Начало Применение GD32F405RG и модуля MSP3520.pdf [1.19 MiB]
Скачиваний: 95

Автор:  shonty [ Пт янв 31, 2025 13:45:56 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Тема явно заслуживает внимания, а труд уважения.
Пример использование ассемблера под ARM.

Как аргумент холиварщикам, что асм заканчивается на мегах.

Автор:  jcxz [ Вс фев 02, 2025 00:01:04 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Да уж... Прикольно конечно, но в данном случае применение ассемблера - бессмысленно. Так как применён он в таком месте, где в этом нет нужды.
Вот если-б автор реализовал на нём какой-то алгоритм, требующий максимального быстродействия... Скажем - модулятор или демодулятор. Или фильтр какой. Или какой-то нестандартный алгоритм, нереализуемый на си. Например - какой-то алгоритм с самомодифицирующимся кодом или что-то подобное. Или хотя бы просто - алгоритм требующий активного использования редких команд или каких-то особенностей CPU.
А так....

PS: По тексту видно не очень эффективное программирование на ассемблере:
1. Использование задержек NOP-ами. Имхо - такое на процессорах типа ARM - вообще не комильфо.
2. Функции оформлены без следования стандартным соглашениям вызова. Из-за этого - их нельзя использовать совместно с си-кодом.
3. Неоправданное повсеместное использование MOV32, вместо загрузки констант с адресацией по PC.
4. Использование команд без суффикса 'S' (более длинные команды).
5. Вообще автор выполняет в коде много странных, бессмысленных действий. Типа сохранения LR в начале функции и восстановления в конце. Непонятно с какой целью. Для обучения это явно не гуд.

Например тут:
Код:
lnter_DMA1_Channel5 PROC ;- любое немаскированное прерывание от канала 5 модуля DMA1
PUSH    {LR}
MOV32   R0, #DMA1
LDR     R1, [R0,#DMA_INTF1]
STR     R1, [R0,#DMA_INTC1]  ;Очистка  прерывания
MOV32   R0, #NVIC_ICPR2     ; Сбрсить признаки отложенных прерываний 64...96
MOV     R1, #(1<<(DMA1_Channel5_IRQn - 64))
STR     R1, [R0]
MOV32   R0, #GPIOA
MOV32   R1, #CS_off      ; CS_off: 1
STR     R1, [R0,#GPIO_BOP]
POP     {LR}
BX     LR
 
ENDP 
Зачем тут делается PUSH/POP LR?
Также - зачем тут делается очистка запроса прерывания в NVIC? Он уже был очищен, когда CPU перешёл на этот ISR. А такая повторная очистка уже после сброса флагов в регистре периферии (DMA) имхо может привести в какой-то момент к багам: Если новый запрос прерывания успеет прийти между очисткой флагов в регистре DMA и сбросом нового флага запроса в NVIC. Флаг запроса будет стоять в регистре DMA, но не будет вызывать вызова ISR, так как в NVIC запрос уже сброшен.
Также в конце процедуры не выполняются требований Errata2.1.3 Cortex-M3/M4 (отсутствует инструкция барьера).

PPS: Вобщем имхо - код написан весьма грязно.

Автор:  smacorp [ Вс фев 02, 2025 00:20:43 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Вот именно по этой причине я никогда не выкладываю исходный код там, где есть возможность его комментировать.

Неважно как код действительно написан, всегда найдётся тот, кто знает "как лучше" и наведёт жуткую критику.

Не по этой же ли причине Майкрософт не публикует исходники Windows? ;)

Автор:  jcxz [ Вс фев 02, 2025 01:04:42 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Вот именно по этой причине я никогда не выкладываю исходный код там, где есть возможность его комментировать.
Странно... Всегда думал, что это как раз плюс. Ведь читая критику, можно повысить свои знания и профессионализм. Для того и нужна критика.
В нормальных конторах любое важное решение принимается только после обсуждения, на котором автора проекта нещадно критикуют коллеги-оппоненты. И если он успешно защитил своё решение, только после этого оно воплощается в жизнь. А если оппоненты нашли косяки в его проекте, то нормальный человек должен только поблагодарить за это. Потому как это - помощь ему.

А обижаются на критику обычно только мамкины программисты с завышенным ЧСВ. :))) Конструктивную критику конечно.

Добавлено after 1 minute 25 seconds:
Не по этой же ли причине Майкрософт не публикует исходники Windows? ;)
Не по этой ли причине в них до сих пор столько багов? :))) Которые живут годами...

Автор:  shonty [ Вс фев 02, 2025 08:40:05 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

jcxz, вы черезмерно категоричны :)))
Потому что ценность материала в его существовании в принципе.

Я из тех "специалистов", которые предпочитают изучать тему "с конца", а не искать качественную литературу по КР580ВМ80А, чтобы программировать STM :)))

Поэтому любые рабочие примеры для меня (и возможно таких как я) имеют определённую ценность. Независимо рационально они написаны или нет))
Лично для мненя важно иметь стартовый шаблон, а уж свои методы я потом сам как нибудь выработаю и проверю на практике..

:beer:

Добавлено after 1 hour 26 minutes 30 seconds:
jcxz писал(а):
В нормальных конторах любое важное решение принимается только после обсуждения, на котором автора проекта нещадно критикуют коллеги-оппоненты.
Сильно сомневаюсь в "нормальности" таких контор :)))

Автор:  Adrift [ Вс фев 02, 2025 10:50:16 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Как аргумент холиварщикам, что асм заканчивается на мегах.

Сам факт того, что кто-то написал прогу на ассме для ARM, а у автора и несколько законченных проектов есть - не аргумент. Лично я вижу одни контраргументы, потому что очевидно времени на написание было затрачено существенно больше, ни о какой экономии места говорить особо не приходится, т.к. у мк метр флеша и в других проектах у него минимум F103, где по факту 128КБ флеша, а прошивки меньше в разы как минимум. Оптимизаций по скорости тоже не наблюдается, может хоть перенести на другие мк будет проще? Например, на более простые и мелконогие M0/M23 с сильно урезанным набором инструкций? Нет, придется все переписывать. Или, например, что будет если случайно вывести часть текста за пределами экрана? Какие-то рантайм проверки там есть? Может компайл-тайм? А что насчет более сложной периферии? USB CDC или SDIO + FatFs на ассме думаю можно ждать очень долго и в итоге не дождаться. И это еще мк с достаточно простой периферией, китайцы ее из первых серий STM32 заимствуют, а на самих STM32 она уже несколько раз эволюционировала.

Автор:  shonty [ Вс фев 02, 2025 11:07:01 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Adrift писал(а):
очевидно времени на написание было затрачено существенно больше,
Ну так не спорю.. но в последствии же код разбивается на "библиотеки"..
На СИ писать быстрее, потому что на библиотеки уже кто-то потратил время.
Adrift писал(а):
Оптимизаций по скорости тоже не наблюдается,
И это я заметил, и множество нопов видел..
Не думаю. что автор хотел выставить тут шедевр и раскрыть какие-то эксклюзивные приёмы.
А как шаблон начального уровня вполне.

jcxz писал(а):
Конструктивную критику конечно.
Конструктивной критики не бывает :)))
Критика всегда деструктивна. Хотя бы потому, что у критикующего априори доминирующий статус :)))

Автор:  Adrift [ Вс фев 02, 2025 12:39:52 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Ну так не спорю.. но в последствии же код разбивается на "библиотеки"..
На СИ писать быстрее, потому что на библиотеки уже кто-то потратил время.

Библиотеки и стандартные бывают, на их написание потратили время профессиональные программисты, я просто пользуюсь результатом их труда чтобы тратить меньше времени на написание собственных библиотек. Но даже если забыть про любые библиотеки вообще все равно на С писать быстрее и код получается более надежным, в том числе потому, что компилятор вместе со всевозможными анализаторами будут пытаться подсказывать в сомнительных ситуациях.

Adrift писал(а):
И это я заметил, и множество нопов видел..
Не думаю. что автор хотел выставить тут шедевр и раскрыть какие-то эксклюзивные приёмы.
А как шаблон начального уровня вполне.

Да, но из этого шаблона начального уровня, как и из других проектов автора, не понятно почему написание проектов для ARM целиком на ассме в принципе является целесообразным. Я же начал с того, что аргументов не видно, потому и холивара никакого быть не может.

Автор:  shonty [ Вс фев 02, 2025 12:52:39 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Adrift писал(а):
на С писать быстрее и код получается более надежным, в том числе потому, что компилятор вместе со всевозможными анализаторами будут пытаться подсказывать в сомнительных ситуациях.
Ну можно с этого утверждения холивар начать :)))
Имею ввиду надёжность кода. Чем асм-код не надёжнее сишного, если он работает так как нужно))
Хотя возможно я ещё мелко плавю)) Си не знаю, но по форуму видно, что и у сишников проблем не меньше. И компиляторы не решают)

Автор:  Adrift [ Вс фев 02, 2025 13:51:23 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Чем асм-код не надёжнее сишного, если он работает так как нужно))

Любой правильно работающий код одинаково надежный, однако таковой сначала нужно написать )

shonty писал(а):
Хотя возможно я ещё мелко плавю)) Си не знаю, но по форуму видно, что и у сишников проблем не меньше. И компиляторы не решают)

Тут многие раньше писали на ассме для AVR/PIC, потом на С для AVR/PIC, наконец на C/C++ для ARM, а если С даже не знаешь, то как сравнивать? ) Более того, поскольку вы на ассме для простенького AVR пишете, то имеет еще и смутное представление о том с чем пришлось бы столкнуться на ARM со значительно более сложной периферией. По форуму видно, что далеко не все такой переезд пережили, даже если для AVR они писали на С. А проблемы у любых начинающих(и не очень) будут, на чем бы они не писали, однако если на С у народа может быть проблема как запустить связку SPI + DMA + графический дисплей, то на ассме они бы до сих пор порты настраивали чтобы светодиодом помигать )

Автор:  jcxz [ Вс фев 02, 2025 17:53:13 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

ни о какой экономии места говорить особо не приходится, т.к. у мк метр флеша и в других проектах у него минимум F103, где по факту 128КБ флеша, а прошивки меньше в разы как минимум.
Код написан неоптимально. Думаю - даже си-компилятор сгенерит намного компактнее. :)
USB CDC или SDIO + FatFs на ассме думаю можно ждать очень долго и в итоге не дождаться.
Ну здесь-то как раз ничего сложного: Включаете си-компилятору опцию генерации листингов и ассемблерный код почти готов. Только слегка доработать напильником.

Добавлено after 6 minutes 25 seconds:
Ну так не спорю.. но в последствии же код разбивается на "библиотеки"..
Вы видимо не читали мой пост:
2. Функции оформлены без следования стандартным соглашениям вызова. Из-за этого - их нельзя использовать совместно с си-кодом.
Код автора не следует стандартным соглашениям вызова. И вообще - написан без какого-то единого стиля использования регистров, сохранения/восстановления контекста на входе/выходе функций и т.п. Чтобы код можно было использовать как библиотеку и вызывать из другого кода, он должен следовать каким-то общим правилам, которые называются "соглашения вызова". И обычно описаны в документации на компилятор. Благодаря им, код, написанный в одном компиляторе, можно вызывать из кода, написанного в другом компиляторе. В обсуждаемом же коде не наблюдается следования каким-то общим "соглашениям вызова". Писано в стиле "кто в лес, кто по дрова". Подозреваю, что автор даже не слышал о таких правилах.

Добавлено after 4 minutes 18 seconds:
Не думаю. что автор хотел выставить тут шедевр и раскрыть какие-то эксклюзивные приёмы.
А как шаблон начального уровня вполне.
Как "шаблон начального уровня" гораздо лучше подойдёт листинг-выхлоп си-компилятора. Там и качество кода выше и соглашения вызова выполняются. Код автора в данном плане скорее вреден для начинающих.

Автор:  Аlex [ Пн фев 03, 2025 16:19:19 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Сильно сомневаюсь в "нормальности" таких контор :)))
Вы серьёзно ? :)

Цитата:
Процесс просмотра, критики и анализа чужого кода на ошибки называется "code review" (или "ревью кода"). Это важная часть разработки программного обеспечения, которая помогает улучшить качество кода, найти ошибки и поделиться знаниями между разработчиками.
Что такое code review?

Code review — это процесс, при котором один или несколько разработчиков проверяют код, написанный другим разработчиком, чтобы:
Найти ошибки (баги).
Убедиться, что код соответствует стандартам и best practices.
Проверить, что код решает поставленную задачу.
Поделиться знаниями и опытом.

Основные этапы code review:
Подготовка:
Разработчик пишет код и создаёт pull request (PR) или merge request (MR).

Проверка:
Другие разработчики просматривают код, оставляют комментарии и предлагают улучшения.

Исправление:
Автор кода вносит изменения на основе комментариев.

Утверждение:
После исправлений код утверждается и сливается в основную ветку.

Автор:  shonty [ Пн фев 03, 2025 17:43:55 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Аlex писал(а):
Вы серьёзно ?
Дураков из людей делают :)))
То то все на фриланс и стремятся))

Добавлено after 4 minutes 30 seconds:
Аlex писал(а):
и поделиться знаниями между разработчиками.
а вот это много где практикуется..
Спорная надо сказать процедура :))) и не для всех приятная)

Автор:  jcxz [ Пн фев 03, 2025 19:37:39 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

Процесс просмотра, критики и анализа чужого кода на ошибки называется "code review"
Кстати да - и code review у нас в конторе - тоже обязательная часть раб. процесса.
Но то, о чём я говорил выше - это ДО реализации какого-то решения. Защита своего варианта решения, до начала чего-то-делания. А code review - уже ПОСЛЕ.

Добавлено after 3 minutes 40 seconds:
Спорная надо сказать процедура :))) и не для всех приятная)
Над вами эту процедуру проводили посредством трепанации черепа и считываем оттуда прошивки чтоль? :)))

Автор:  shonty [ Пн фев 03, 2025 19:38:34 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

От "делиться знаниями" - выигрывает в основном хозяин и отстающие работники))
А основной специалист - обесценивается, со всеми вытекающими перспективами :)))

Автор:  jcxz [ Пн фев 03, 2025 19:53:41 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

От "делиться знаниями" - выигрывает в основном хозяин и отстающие работники))
А основной специалист - обесценивается, со всеми вытекающими перспективами :)))
Так надо требовать премию и молоко за каждую операцию чтения вашей уникальной прошивки! :)))

PS: Имхо - как раз наоборот - не обесценивается, а оценивается по заслугам. Откуда вашему хозяину галеры знать - чего вы стоите? Он же наверняка не спец. в вашей области. А как увидит, что к вам выстроилась очередь как к наставнику, будет вас ценить. Только сразу соглашаться делиться не нужно - обязательно нужно поломаться, набить себе цену, плюшек/премий потребовать! Чтобы на шею не садились и почитали Наставника. 8)

Автор:  shonty [ Пн фев 03, 2025 19:59:23 ]
Заголовок сообщения:  Re: Начало. Применение GD32F405RG и модуля MSP3520

jcxz писал(а):
Только сразу соглашаться делиться не нужно - обязательно нужно поломаться, набить себе цену, плюшек/премий потребовать!
у меня это всё уже в прошлом :)))
Я на пенсии)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/