Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GCC ARM - не имплементируются функции SIN, COS
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3
mantech
Цитата(__inline__ @ Oct 3 2017, 04:29) *
С удовольствием девелопил бы и на Windows 98, но есть причины, по которым это сделать теперь невозможно:

Ну ещё вспомнил, что видел скрипт на Питоне, который мигает лампочками на Raspberry Pi. Это клиника скажу я вам.... !
В анальные закрома уходят Ассемблер и Си, зато привествуется Си Диез и скриптовые языки, ну никак не предназначенные для программирования контроллеров!


Не, вин 98 пусть уже отдыхает в мире ином, ибо кроме прямого доступа к железу от нее толку 0, ибо висла она и глючила не по детски...

По поводу писанины под питоном - это еще ерунда, посмотрите все типы извращения, которые предлагают фанатики под вин 10идиотiot biggrin.gif В ходу виртуальные светодиоды из облачных пулов устройств...
Forger
Цитата(mantech @ Oct 3 2017, 10:22) *
В ходу виртуальные светодиоды из облачных пулов устройств...

Уверен, что точно также хихикали программеры в машинных кодах/асм над С-программерами sm.gif Времена не меняются
Но время расставило все на свои места - кто из них не успел запрыгнуть в "поезд прогресса", тот и остался в забвении в прошлом на своих архаичных железках.
В свое время программеры под голой VS хихикали над сырыми .NET 1.0 и JAVA ... Где теперь те "программеры" ? ...
Кто из них до сих пор хихикает, либо уже спились, либо сидят в гос-конторах, поскольку всем остальным они уже бесполезны sm.gif
Эдди
Эти ваши си-диезы, го и прочий шлак до сих пор так шлаком и остался! Ни один вменяемый человек не будет что-нибудь серьезное на этом писать! А уж ядро ОС только на С и пишется: как 30 лет назад, так и сейчас, и в ближайшие 30 лет!
Для С++ место только в узкой нише GUI'шного софта и высокоуровневых библиотек, где его плюшки имеют смысл.
Всякие пхытоны-перлы так и остались фигней для развлечения.
А ассемблер до сих пор используется — но уже как вставки. Писать на чистом ассемблере нецелесообразно из-за его низкоуровневщины, С же — очень высокоуровневый язык, и его за глаза на все случаи жизни хватает.
__inline__
Цитата
Однако, в настоящее время без интернета (выхода в мировую сеть) уже невозможно сделать ни одной современной разработки.

Почему?
Кто мешает использовать два компа - один для выкачивания документации, связи с другими разработчиками, второй - на нём софт и разработка.

Цитата
Используйте reactos или KolibriOS

Последнюю даже пробовал устанавливать и работать.
Проникся уважением (к ОС и её разработчикам).
Была даже идея портировать под KOS свои наработки в виде эмуляторов (сейчас там только NES и GB©), но пока в приоритете - создание своей игровой платформы.

Цитата
Проблема в том, что эти процессоры стали настолько сложными, что сами авторы не могут сходу сказать что произойдёт если изменить какой-то регистр настройки - то ли перегреется, то ли "кирпич" получится.... У них техподдержка умрет отвечая на вопросы типа "я тут записал куда-то 0xFFЕ и у меня не работает ЭКРАН, что делать?"

Техподдержка - это для дятлов.
Потому что :
- внятного от неё ничего не услышишь
- всегда удается разрулить проблему самостоятельно, не дожидаясь запаздалого ответа от ТП
- те кто обращается в ТП, практически все дятлы sm.gif
- ну и в ТП как правило сидят одни ТП sm.gif)))

На счёт сложности тоже спорный вопрос.
Вот что реально сложного на моей практике выпало - это программирование VGA-регистров видеокарты для установки HiRes разрешений с большой цветностью BPP с нестандартными длиной и шириной кадра с логической шириной кадра отличающейся от физической, с изменением частоты обновления экрана от 80 Гц и выше(до 130 Гц).
Гемор ещё тот: программирование более 50 регистров видеокарты.
Вот это я понимаю - сложно.

А дёргнуть флаги разрешения клоков на тот же SPI, установка частоты ядра-памяти , установка кеширования данных через MMU с прямой трансляцией адресов - это пустяк по сравнению с задачей выше.

Ну и разве что в кирпич можно превратить контроллер, если порт настроить на вывод и замкнуть его на питание или землю, думая что порт на вводе (кнопка).
Ну или FUSE сорвать для кварца или SPI-программатора. Но это лечится.

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

Для конечных пользователей - готовые устройства: просим любить и пользоваться.
Отладочные платы - для разработчиков, господа в белых воротничках, извольте открыть доки и описать в SDK как программируется весь набор периферии.

А то получается: ключевые сотрудники в Китае на гитхабе постят дистры Линукса, описывая в группе Гугл о том что SDK они дать не могут, а дистр Линкса - запросто.
Тоесть всё через задницу: хотите SDK - выколупывайте его в Линуксе! А отдельно мы вам его не дадим!
Ну и делать нечего, стал разбираться и понял, что в Линуксе всё спрятано в папках по функциональному назначению:
- видео
- аудио
- порты
- остальные подистемы....
- и там куча сорцов на железки разных производителей, включая то что нужно.
Но разобраться, пропустить через себя и осознать это - нужно времени намного больше, чем время на освоение и осмысление отдельного SDK. sm.gif

Ну и в интернете под Линукс много чего интересного есть - вплоть до дисассемблированного загрузчика, по тексту которого можно понять:
- куда указывает стек
- в какой адрес памяти кладётся программа boot0 (spl)
- какая периферия задействуется
- в каком режиме процессор (супервизор или юзер)
- какие байты в хедере загрузчика важны (сигнатура, контрольная сумма, размер)
- и многое другое ЧТО ПРОСТО ОБЯЗАНО БЫТЬ В ДАТАШИТЕ (в Technical Reference)

Цитата
В ходу виртуальные светодиоды из облачных пулов устройств...

sm.gif как мне тут сказал один знакомый по этому поводу: "... гнойник рано или поздно лопнет ..."

Цитата
Не, вин 98 пусть уже отдыхает в мире ином, ибо кроме прямого доступа к железу от нее толку 0, ибо висла она и глючила не по детски...

Это 95-я глючила, 98-я только вешалась намертво, если что-то забыть важное сделать.

Зато в 98-й винде возможно перейти из DOS-программы в нулевое кольцо по такой схеме: DOS => DOS + DPMI => Ring 0.
Было удивительно написать такую вещь как while(inp(0x60)!=1){}; и созерцать глобальную заморозку всех задач и ядра винды, пока не будет нажата клавиша Esc sm.gif
Ну или рисовать точки не в окне приложения, а с самого верхнего левого угла экрана монитора sm.gif
И это всё через Low Level в ДОС-программе, а не через GDI или Direct Draw !
Forger
Цитата(Эдди @ Oct 3 2017, 10:52) *
Эти ваши си-диезы, го и прочий шлак до сих пор так шлаком и остался!
Ни один вменяемый человек не будет что-нибудь серьезное на этом писать!

Не переживайте вы так, учиться никогда не поздно sm.gif
Сложно другое - начать (сужу по себе) wink.gif

Цитата
А уж ядро ОС только на С и пишется: как 30 лет назад, так и сейчас, и в ближайшие 30 лет!

Ну-ну ... видать все только и делают, что пишут ядра ОС. Ведь больше-то заняться нечем biggrin.gif
mantech
Цитата(Forger @ Oct 3 2017, 10:33) *
Уверен, что точно также хихикали программеры в машинных кодах/асм над С-программерами sm.gif Времена не меняются
Но время расставило все на свои места - кто из них не успел запрыгнуть в "поезд прогресса", тот и остался в забвении в прошлом на своих архаичных железках.
В свое время программеры под голой VS хихикали над сырыми .NET 1.0 и JAVA ... Где теперь те "программеры" ? ...
Кто из них до сих пор хихикает, либо уже спились, либо сидят в гос-конторах, поскольку всем остальным они уже бесполезны sm.gif


Хихикали или нет - не важно. Есть какой-то уровень, до которого нужно дойти, и быть на нем до тех пор, пока не дойдем до чего-то по-настоящему нового и адекватного, на сегодня - это уровень Си, наиболее универсального средства программирования. "Особо одаренные" могут изобретать что угодно, но большинство адекватных продолжает им пользоваться...
JAVA тоже имеет место быть, но только в случае разноплатформенного использования. Для всяких дотнетов тут места нет от слова вообще...
__inline__
Цитата(Эдди @ Oct 3 2017, 07:52) *
Эти ваши си-диезы, го и прочий шлак до сих пор так шлаком и остался! Ни один вменяемый человек не будет что-нибудь серьезное на этом писать! А уж ядро ОС только на С и пишется: как 30 лет назад, так и сейчас, и в ближайшие 30 лет!
Для С++ место только в узкой нише GUI'шного софта и высокоуровневых библиотек, где его плюшки имеют смысл.
Всякие пхытоны-перлы так и остались фигней для развлечения.
А ассемблер до сих пор используется — но уже как вставки. Писать на чистом ассемблере нецелесообразно из-за его низкоуровневщины, С же — очень высокоуровневый язык, и его за глаза на все случаи жизни хватает.

Так я не являюсь сторонником Си Диеза и прочих вещей в нише микроконтроллеров. Они совершенно для других вещей предназначены.
А их внедрение популяризуется из-за большого процента "админов" в IT-шной массе. А они как правило, больше скриптовыми языками владеют, на то и расчёт чтоб с них срубить бабки.

По части программирования ядер ОС на Си... Много ли Си-компилеров, способные дать чистый бинарник с любого ORG и без затирания регистров?
На счёт GCC не уверен, а вот про Open Watcom C слыхал, что можно сделать бинарник без привязки к ОС и clib.

Ну и планировщик задач (Tasker) пишится всёравно на Ассемблере, так как нужно очень чисто пушить и попить контекст задач.
Ковырял исходники ucos под ARM7 видел как это всё сделано.
mantech
Цитата(Forger @ Oct 3 2017, 11:01) *
Ну-ну ... видать все только и делают, что пишут ядра ОС. Ведь больше-то заняться нечем


Писателям игрушек для веба это сложно понять, но тут вопрос о программировании на МК. rolleyes.gif
__inline__
Цитата(mantech @ Oct 3 2017, 08:13) *
Хихикали или нет - не важно. Есть какой-то уровень, до которого нужно дойти, и быть на нем до тех пор, пока не дойдем до чего-то по-настоящему нового и адекватного, на сегодня - это уровень Си, наиболее универсального средства программирования. "Особо одаренные" могут изобретать что угодно, но большинство адекватных продолжает им пользоваться...
JAVA тоже имеет место быть, но только в случае разноплатформенного использования. Для всяких дотнетов тут места нет от слова вообще...

Всему своё время и место.
Можете называть меня ОЛД-фагом, но я не чураюсь машинных кодов, например в ассемблерных вставках: часто бывает что встроенный ассемблер в Си каких-то инструкций не поддерживает, а оформлять дополнительный сорец с ассемблером лень, машинные коды выручают sm.gif

На счёт JAVA раз заговорили, упомяну как сделаны Ведроиды: на ARM процессор ставится виртуальная машина ARM + JAVA : => получается двойная эмуляция!
Зачем?
Учитывая, что есть специальные ARM-ы, с аппаратной поддержкой JAVA (Jazelle вроде бы?). Налицо - говнокодостроение.

JAVA может быть полезна временно, когда нет порта какого-то приложения на целевой платформе, ну или в случае закрытого кода приложения.
В остальных случаях - JAVA - тормоз.
Forger
Цитата(mantech @ Oct 3 2017, 11:16) *
Писателям игрушек для веба это сложно понять, но тут вопрос о программировании на МК. rolleyes.gif

Для "веба" не пишу, но прекрасно их понимаю, и не имею ничего против развития и прогресса.
Если речь про программирование применительно к "бытовым" МК, т.е. под конкретное узкоспециализированное железо, то пока что дальше C/C++ нет смысла соваться. Где возможно, я предпочитаю С++.
В более серьезных железках как минимум неразумно лишь одним "молотком и ножовкой" делать все, начиная от портирования ОС, заканчивая сложными клиентскими приложениями.
Ведь никому адекватному никогда не придёт в голову идея писать приложения для смартфона целиком на asm/С.

С другой стороны, существует известная поговорка "каждый дро%%т как хочет" sm.gif
mantech
Цитата(__inline__ @ Oct 3 2017, 11:21) *
JAVA может быть полезна временно, когда нет порта какого-то приложения на целевой платформе, ну или в случае закрытого кода приложения.
В остальных случаях - JAVA - тормоз.


Вы не учитываете преимущество мультиплатформенного кода, да он более тормозной по сравнению с компилятором, но это не так существенно. Особо тяжелые функции выполняются в маш. кодах, да и не всегда критично быстродействие. Но возможность запустить одно и тоже приложение под принципиально разными осями и процессорами, того стоит..
HardEgor
Цитата(__inline__ @ Oct 3 2017, 15:00) *
Ну и разве что в кирпич можно превратить контроллер, если порт настроить на вывод и замкнуть его на питание или землю, думая что порт на вводе (кнопка).
Ну или FUSE сорвать для кварца или SPI-программатора. Но это лечится.

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

Цитата(__inline__ @ Oct 3 2017, 15:00) *
- и многое другое ЧТО ПРОСТО ОБЯЗАНО БЫТЬ В ДАТАШИТЕ (в Technical Reference)

Угу, и получить эдак 10 томов по 500 страниц каждый. Да они минимум год только писать это будут, а потом каждый месяц выпускать по дополнительному тому "исправлений и дополнений" sm.gif
one_eight_seven
Цитата
Писателям игрушек для веба это сложно понять, но тут вопрос о программировании на МК.

Тестовая среда и всяческие эмуляторы куда быстрее, приятнее и нагляднее пишутся на каком-нибудь протопыхе (perl) или гвидопыхе (python). Да и куча полезного софта управляется с помощью Tcl. Модели опять же на гвидопыхе с numpy пишутся куда быстрее, чем на C или крестах. Есть, конечно, MATLAB, но он стоит сотни нефти, но есть и альтернативы - SciLab, Octave, Axiom и Sagemath (которая чуть более, чем полностью - Pyhton).

Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C. При этом странно, что те, кто знает только C так кичатся своим неприятием других инструментов.
__inline__
Цитата
Это уровень мелких микроконтроллеров, на больших можно просто подпалить чип, ошибочно записав левое число по некому адресу, и потом метаться - либо я неправильно что-то делаю, либо чип глючный.

Ну а ТП, там же не телепаты сидят - ей-то откуда знать что вы натворили с чипом и какие могут быть последствия?
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Цитата
Угу, и получить эдак 10 томов по 500 страниц каждый. Да они минимум год только писать это будут, а потом каждый месяц выпускать по дополнительному тому "исправлений и дополнений

Так из этих 500 страниц каждому понадобятся свои 50 страниц!
Например, для моих применений - видеокодек не нужен, так же как и USB и Эзернет.
Мне надо GPIO, SPI, TF, Video Out, высокая производительность ядра over 1GHz - остальное не важно!
Другим наоборот.
Но никто не заставляет читать все 500 страниц!

Цитата
Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C

Это лишь ваше мнение, которое не является правилом - не обобщайте.
Ну и знания одного Си недостаточно для программирования контроллеров. Нужны ещё и базовые знания как работает железо и как его программировать.
one_eight_seven
Цитата
Это лишь ваше мнение, которое не является правилом - не обобщайте.

Нет. Это мнение не моё, а весьма большого количества людей. Которые, кстати, не судят всех программистов на Си по осилившим только хэллоуворлд, ну или мигание светодиодом, в случае микроконтроллеров. Понятно, что порог входа в пыхоплеяду ниже, чем в Java/C, поэтому, в абсолютном значении monkey-coder'ов среди них, конечно, больше. Но не в процентном.
HardEgor
Цитата(__inline__ @ Oct 3 2017, 17:07) *
Так из этих 500 страниц каждому понадобятся свои 50 страниц!
Мне надо GPIO, SPI, TF, Video Out, высокая производительность ядра over 1GHz - остальное не важно!

Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц. А в больших чипах взаимосвязей и зависимостей на порядки больше.
_3m
Цитата(__inline__ @ Oct 3 2017, 13:07) *
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Легко! Пишете неправильное значение в регистр управления питанием и один из ip блоков в чипе подпаливается.
Похоже вы сложных чипов еще не видели.
__inline__
Цитата(_3m @ Oct 3 2017, 10:48) *
Легко! Пишете неправильное значение в регистр управления питанием и один из ip блоков в чипе подпаливается.
Похоже вы сложных чипов еще не видели.

Ой, да. Забыл добавить сюда управление напряжением питания ядра через ШИМ. Типа как в Блекфинах. biggrin.gif

Ну это ж детский сад, если по этому поводу писать в ТП sm.gif
Obam
Цитата
Ну и как можно спалить чип неверной записью в регистры? (про порты ввода/вывода, фьюзы и ПЛИСы - не рассказывать!)

Можно мои 5 коп добавить? Спасибо (;
Не буду про фьюзы…
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;
Forger
Цитата(Obam @ Oct 3 2017, 14:01) *
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;

Если JTAG отключается лишь через прошивку (софтварно), то дело поправимое - нужно лишь подключить к отладчику цепь сброса МК.
А вот если чип залочен необратимо (у STM32 такое возможно), то чип - на помойку.
__inline__
Цитата(Forger @ Oct 3 2017, 11:06) *
Если JTAG отключается лишь через прошивку (софтварно), то дело поправимое - нужно лишь подключить к отладчику цепь сброса МК.
А вот если чип залочен необратимо (у STM32 такое возможно), то чип - на помойку.

ЕМНИП отладку у STM32F4xx можно делать через SWD + STM32 ST-LINK Utility
Obam
Цитата(__inline__ @ Oct 3 2017, 15:10) *
ЕМНИП отладку у STM32F4xx можно делать через SWD + STM32 ST-LINK Utility

Дык SWD на выводы JTAGа выведен

Тему в "Средства проектирования" надо по-хорошему
Эдди
Цитата(Forger @ Oct 3 2017, 11:23) *
Для "веба" не пишу, но прекрасно их понимаю, и не имею ничего против развития и прогресса.
Если речь про программирование применительно к "бытовым" МК, т.е. под конкретное узкоспециализированное железо, то пока что дальше C/C++ нет смысла соваться. Где возможно, я предпочитаю С++.

Я и под веб нет-нет, да делю что-то (веб-морды для меня более предпочтительны, нежели содомия со standalone GUI), вот там, к сожалению, одним только С не обойтись, приходится еще жабоскрипт использовать и на html разметку делать, но это фигня — один раз помучился, и готово!
Микроконтроллеры — понятное дело, там только чистый С. Я, помучившись с SPL и opencm3 на STM32, понял, что ну его нафиг — эти чужие кривые библиотеки, надо на сниппеты ориентироваться и не долбить себе мозг всякой чушью.
Приложения для связи между компьютером и МК — на чистом С. На нем же клиент-серверные вещи (демоны, логгеры, интерфейсы и т.д., и т.п.).

В общем, С свою актуальность не потеряет еще долго.

Цитата(one_eight_seven @ Oct 3 2017, 12:20) *
Ну и во всём этом есть одна загвоздка - как правило, те, кто знают Python, perl, Java, знают так же и C. При этом странно, что те, кто знает только C так кичатся своим неприятием других инструментов.

Ни разу не встречал тех, кто прекрасно знает одновременно пхытон, перл, жабку и С! Это ж вообще вещи разных классов! Надо быть одновременно и гуманитарием, и технарем, чтобы умудриться все это выучить, а самое главное — понимать!!!

Цитата(HardEgor @ Oct 3 2017, 13:37) *
Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц.

Для мигания светодиодом без таймера нужно будет даже меньше прочесть ☺
Все равно, даже если пользоваться чужими библиотеками, надо будет читать даташит по используемой периферии. Но в случае библиотек, нужно еще скудную документацию к ним читать + ковыряться постоянно в исходниках этих библиотек (мало ли что там индусы наговнокодили — встречал я такие приколы)! Так какой смысл тащить лишнее? Лучше самому постепенно накапливать базу сниппетов, а затем по мере необходимости брать уже готовые куски кода.
__inline__
Цитата(HardEgor @ Oct 3 2017, 10:37) *
Хе-хе, попробуйте запустить простейший STM32 прочитав 50 страниц. А в больших чипах взаимосвязей и зависимостей на порядки больше.

Зачем мне простейший, когда совсем недавно портировал кодек MELP800 на STM32F405 ?
Bare Metal, конечно.
Эдди
Цитата(Obam @ Oct 3 2017, 14:01) *
Ошибочно отключенный (неверной записью в регистры) JTAG - это всё равно что спаленный чип (;

Что за ерунда? Я, например, вообще не использую ни JTAG, ни SWD — все STM32 шью через бутлоадер. Это намного удобней, да и не нужно лишних устройств присобачивать; а висящий на UART1 переходник после прошивки используется для отладки.
__inline__
Цитата(Эдди @ Oct 3 2017, 11:52) *
Лучше самому постепенно накапливать базу сниппетов, а затем по мере необходимости брать уже готовые куски кода.

Вот такую базу у меня есть желание создать под один из современных ARM-ов, типа базового API для работы с нужными узлами.
Нечто похожее сделал для ADSP BlackFin BF532/533 и для STM32F405 и для AT91RM9200 - с кешами, с MMU, на полной скорости.
Эдди
Цитата(Forger @ Oct 3 2017, 14:06) *
А вот если чип залочен необратимо (у STM32 такое возможно)

Это как? Неужто его можно залочить так, что даже бутлоадер не примет перезапись флеша? А если стереть бутлоадер, остается еще возможность стереть через SWD/JTAG при должной сноровке (жамкаем reset, а отпуская жмем enter в командной строке, где уже вбили команду стирания флеша).

Цитата(__inline__ @ Oct 3 2017, 14:56) *
Вот такую базу у меня есть желание создать под один из современных ARM-ов

Под STM32F0, кстати, есть уже готовые сниппеты от самих ST. Жаль, что под другие линейки они не потрудились подобное накатать.
С STM8 я сразу начал работать в стиле "пошли все нафиг, я даже заголовочный файл с дефайнами портов сам напишу", накапливая сниппетобазу. А вот с STM32, дурак, сразу не подумал так сделать. В итоге у меня есть одна интересная заготовка под F407 на дурацком SPL + еще куча полезных вещей на opencm3, все руки не дойдут переписать без библиотек. Позже стал осваивать STM32F0, там уже на грабли не натыкался — сразу пошел правильной дорогой.
__inline__
Цитата(Эдди @ Oct 3 2017, 11:54) *
Что за ерунда? Я, например, вообще не использую ни JTAG, ни SWD — все STM32 шью через бутлоадер. Это намного удобней, да и не нужно лишних устройств присобачивать; а висящий на UART1 переходник после прошивки используется для отладки.

SWD очень сильно помог мне, когда нужно было сдампить большой буфер данных из памяти контроллера, которые создал кодек речи. По UART будет дольше и это - дополнительная микросхема согласования лог. уровней + терминал. А через SWD - три проводка + встроенный программатор/отладчик на плате STM Discovery на USB + Utilites + окно в котором всё видно!

Цитата(Эдди @ Oct 3 2017, 11:59) *
Под STM32F0, кстати, есть уже готовые сниппеты от самих ST. Жаль, что под другие линейки они не потрудились подобное накатать.

А вот под V3s нет sm.gif
Только в составе Линукса sm.gif
Поэтому лепить своё с оглядкой на Линукс biggrin.gif

Для STM32F... вообще проблем быть не должно: Keil ARM генерит достаточно внятный стартап с пресетами + куча статей на русском языке!
Ну разве что когда код в RAM исполнять - не забыть раздефайнить перенос таблицы векторов прерываний (если они используются)

Ну и там же CMSYS со всеми объявленными хедерами - регистры, константы, битовые маски.

А HAL + пресеты STM Cube - зло ))) Разве что для раскидки пинов использовать, куб идёт только в блевистах при установленной JRE, поэтому приходится идти в гости к знакомым.
Тяжела нынче жизнь аппаратчика sm.gif Приходится искать альтернативные пути, не нарушая свои принципы...
Forger
Цитата(Эдди @ Oct 3 2017, 14:59) *
Это как? Неужто его можно залочить так, что даже бутлоадер не примет перезапись флеша?

Можно. Да так, что ядро отладки напрочь отключается, если прошивка не финальная, то камень в помойку. RTFM sm.gif

Цитата
А если стереть бутлоадер, остается еще возможность стереть через SWD/JTAG при должной сноровке (жамкаем reset, а отпуская жмем enter в командной строке, где уже вбили команду стирания флеша).

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

Цитата
я даже заголовочный файл с дефайнами портов сам напишу
Вот уж действительно заняться нечем cranky.gif
__inline__
Цитата(Forger @ Oct 3 2017, 12:09) *
Вот уж действительно заняться нечем cranky.gif

иногда такой подход оправдан.
как правило дефайны регистров делаю т через указатели и к ним обращаются так: *pGPIO_ISR=0x000, а хочется так: GPIO_ISR=0x0000.
вот и приходится (volatile unsigned long int*) переправлять на *(volatile unsigned long int*) и отсекать *p
Ну это уже мелочи.
И кстати, из опыта, некоторые регистры отсутствуют в стандартных хедерах на STM32, приходилось дописывать самому.
Forger
Цитата(__inline__ @ Oct 3 2017, 15:20) *
как правило дефайны регистров делаю т через указатели и к ним обращаются так: *pGPIO_ISR=0x000, а хочется так: GPIO_ISR=0x0000.
вот и приходится (volatile unsigned long int*) переправлять на *(volatile unsigned long int*) и отсекать *p

Дык, в штатном дейфайне на STM это уже сделано, через структуры. Все просто и очевидно.
Но если изобретение велосипеда - хобби, то это все меняет sm.gif

__inline__
Кстати, вот список процессов в WinXP от компа с которого пишу:

Нажмите для просмотра прикрепленного файла

Обратите внимание - как мало процессов. Говно практически вычищено. Очень сомневаюсь, что под блевистами (windows vista,7,8,9,10,...) такое возможно.

Вот это действительно конфа под которой приятно работать, так как всё чисто.

И вирусы поймать можно только если запустить левый exe-шник скачанный из интернета.
Потому что Java, Silverligtht, Flash, RPC выпилены, порты закрыты (кроме нужных)

Цитата(Forger @ Oct 3 2017, 12:24) *
Дык, в штатном дейфайне на STM это уже сделано, через структуры. Все просто и очевидно.
Но если изобретение велосипеда - хобби, то это все меняет sm.gif

Структурное описание регистров порой генерит слишком большой код и снижает понимание процессов, происходящих в аппаратуре.
Но это лишь моё мнение.
Forger
Цитата(__inline__ @ Oct 3 2017, 15:26) *
Обратите внимание - как мало процессов. Говно практически вычищено.
Вот это действительно конфа под которой приятно работать, так как всё чисто.

Гы biggrin.gif Яркий пример хронической паранойи и суперпедантизма.
Либо вам, просто, заняться больше нечем laughing.gif

Цитата
Структурное описание регистров порой генерит слишком большой код
Это так, если компилятор взят из 90х
Эдди
Цитата(__inline__ @ Oct 3 2017, 15:03) *
Для STM32F... вообще проблем быть не должно: Keil ARM генерит достаточно внятный стартап с пресетами + куча статей на русском языке!

Я эту фигню не использую, во-первых, линуксоид, во-вторых, зачем мне под виртуалкой гонять ворованный софт, когда есть родное? IDE — geany (правда, я его тупо как редактор использую), а дальше все при помощи make делается (от компиляции до загрузки).

Цитата(Forger @ Oct 3 2017, 15:09) *
Вот уж действительно заняться нечем cranky.gif

Для STM8 это был единственный вариант, т.к. готового заголовочного файла в нормальном формате со всеми дефайнами и под лицензией, совместимой с GPLv3, я не нашел!

Цитата(Forger @ Oct 3 2017, 15:24) *
Дык, в штатном дейфайне на STM это уже сделано, через структуры.

Что такое "штатный дефайн STM"? Не встречал. Скажем, под F0 я выдрал нужное из сниппетов от ST. А вот когда опять вернусь к F1, придется, видимо, из opencm3 выдирать.

Цитата(__inline__ @ Oct 3 2017, 15:30) *
Структурное описание регистров порой генерит слишком большой код

Я тоже так думал, пока не проверил. Код получается абсолютно таким же, как и без структур. Все раскрывается на стадии препроцессора gcc.
Конечно, выглядит по-ублюдски, но сойдет.

P.S. А вот под STM8 так делать нельзя, потому как sdcc не оптимизирует код вообще никак! А кроме sdcc компиляторов под STM8 нет, к сожалению. Благо, этот МК не используется настолько часто, как более приятные STM32.
Forger
Цитата(Эдди @ Oct 3 2017, 15:57) *
Что такое "штатный дефайн STM"? Не встречал.

После установки голого KEIL, все дефайны/датышиты/профили и т.п. идут в виде отдельных PACK-ов. Их можно скачать без самого keil, и переименовать в zip, открыв содержимое.
Там все нужные дефайны.
Поскольку от HAL/SPL/CUBE отказался, сам пользую такое решение.
Аналогично у ARM сделано для других процов.

В шапке каждого дефайна вот такой текст (на примере STM32F0xx_DFP):

Код
  * @file    stm32f0xx.h
  * @author  MCD Application Team
  * @version V2.2.3
  * @date    29-January-2016
  * @brief   CMSIS STM32F0xx Device Peripheral Access Layer Header File.


зы. Keil платный, отладчики от SEGGER тоже платные.
mantech
Цитата(__inline__ @ Oct 3 2017, 15:30) *
Обратите внимание - как мало процессов. Говно практически вычищено. Очень сомневаюсь, что под блевистами (windows vista,7,8,9,10,...) такое возможно.


А торрент зачем? biggrin.gif
__inline__
Уважаемые mantech и другие пользователи!

Мне очень интересно поддерживать общение с вами в данной теме, но мне бы совершенно не хотелось разводить здесь юридические шашни, связанные с программным обеспечением.
В частности: последствия таблеток, какое у вас ПО, наличие-отсутствие лицензий, торренты и всё в таком духе.

Давайте не будем превращать Форум Разработчиков Электроники в ещё один форум юристов!
А то складывается такое впечатление, что некоторых кто-то напугал.
Например, пишете про Keil - какой он у вас или упоминаете его в контексте крякнутого. Не нужно этого. Зачем и перед кем оправдыватесь?

Давайте лучше делиться опытом в разработке программ для ARM ! rolleyes.gif
Эдди
Цитата(__inline__ @ Oct 4 2017, 04:40) *
Давайте лучше делиться опытом в разработке программ для ARM ! rolleyes.gif

С поправкой: в среде свободного программного обеспечения!
jcxz
Цитата(Эдди @ Oct 3 2017, 19:57) *
А кроме sdcc компиляторов под STM8 нет, к сожалению.

Не надо ля-ля. Есть IAR.
Эдди
Цитата(jcxz @ Oct 4 2017, 08:28) *
Не надо ля-ля. Есть IAR.

Я говорю про свободные компиляторы, а не мерзопакостную мастдайную ворованную дрянь!
Forger
Цитата(Эдди @ Oct 4 2017, 09:26) *
мерзопакостную мастдайную ворованную дрянь
Точно также так утверждают слесари с ножовкой по металлу, но то тех пор, пока не познали УШМ (болгарку) biggrin.gif
Однако, в ряде простых случаев ножовкой пользоваться все же удобнее ...
mantech
Цитата(Эдди @ Oct 4 2017, 09:26) *
мерзопакостную мастдайную ворованную дрянь!


У вас есть рабочая сборка под кортекс А9 и А7 на каком-нить эклипсе с вашим любимым гнушным компилятором, чтоб я смог установить ее к себе на машину (32х битную, если что) и не плясать неделями с бубном чтоб ее настроить, прописать кучу конфигов, либ и пр...? Может поделитесь? laughing.gif
А если нет - то оставьте это мнение при себе, в моем понимании инструмент должен быть прежде всего удобным, чтоб человек мог заняться собственно программированием своей задачи, а не мучиться в настройках этого инструмента.
Эдди
Эклипсой не пользуюсь. Что нужно, писал у себя в ЖЖ. В принципе, если не разрабатывать под Cortex-M0, то хватит стандартного тулчейна из реп. Пользуюсь гентой. Вот для STM32F0 пришлось тащить тулчейн с оф. сайта (т.к. в "родном" тулчейне деление не работало).
В моем понимании тоже инструмент прежде всего должен быть удобным. Ну и не смущать совесть того, кто этим инструментом пользуется. Потому-то я уже лет 15 мастдайку не использую — в ней невозможно работать, 90% времени тратишь на лишние телодвижения.

И да, зачем в 2017 году работать на 32-битной машине 20-летней давности?
mantech
Цитата(Эдди @ Oct 4 2017, 11:07) *
И да, зачем в 2017 году работать на 32-битной машине 20-летней давности?


Потому, что она меня полностью устраивает rolleyes.gif
Эдди
Не представляю себе, даже... Меня домашний компьютер 5-летней давности с 4-ядерным процессором и 8ГБ оперативы напрягает иногда: запустишь kicad, а комп задумывается.. Или гентушку поставишь обновлять, и как-то оно долго, да еще и другие задачи подтормаживают. Хотя, интернет меня больше напрягает: дома висит старый зухелевский рутер, который на 3 потребителя никак не может честно разделить входящие почти 100Мбит, если торренты качаю, то больше никому интернета нет ☹
mantech
Цитата(Эдди @ Oct 4 2017, 11:37) *
Не представляю себе, даже... Меня домашний компьютер 5-летней давности с 4-ядерным процессором и 8ГБ оперативы напрягает иногда: запустишь kicad, а комп задумывается..


Надоело оффтопить здесь, конечно, но уж скажу, мой знакомый поставил в конторе у себя на 4хядернике с 8гигами, убунту и на ней кикад, при перетаскивании схемы, не маленькой, он "листает" ее, что оч. заметно. Я не знаю, что он не так сделал, установил кривые дрова на видюху или еще что-то, но на моей древней машине с ненавистной масдайкой, тот же кикад не тормозит нисколько. Просто, когда я ставлю масдайку на машину, трачу 30 мин на установку драйверов и не парюсь от слова вааще, в его случае, я даже не знаю что тут делать где-то искать дрова, собирать их самому или что еще... Да нафига мне это нужно, мне проект делать надо, а не в собиралки играть. Именно поэтому считаю, что свободный, читай, любительский софт никогда не будет конкурировать с профессиональным, т.к. делают его итузиасты в свободное время.
И еще на тему торможения - я никогда не использую рабочую машину для инета, да еще с открытием кучи вкладок в браузере, поэтому и не тормозит ничего, для инета есть рядом стоящий ноутбук.
Эдди
ОК, все равно мне никогда психологию вендузятников не понять…
Forger
Цитата(Эдди @ Oct 4 2017, 11:37) *
Не представляю себе, даже... Меня домашний компьютер 5-летней давности с 4-ядерным процессором и 8ГБ оперативы напрягает иногда: запустишь kicad, а комп задумывается..

На всех современных компах узким местом является наличие HDD.
Поэтому достаточно лишь поставить SSD, хотя бы чисто под систему и установленный софт.
После этого даже откровенный хлам легко обгонит нормальный комп с обычным HDD!
Неоднократно подобное наблюдал. Рекомендую
Тогда не потребуется параноидальная чистка запущенных процессов, тонкий тюнинг системы и т. п. фетишизм wacko.gif
mantech
Цитата(Forger @ Oct 4 2017, 12:03) *
Поэтому достаточно лишь поставить SSD, хотя бы чисто под систему и установленный софт.
После этого даже откровенный хлам легко обгонит нормальный комп с обычным HDD!


Поддерживаю, и добавить оперы по максимуму, после этого мой древний амдшный турион стал работать куда шустрее biggrin.gif

Цитата(Forger @ Oct 4 2017, 12:03) *
Тогда не потребуется параноидальная чистка запущенных процессов, тонкий тюнинг системы и т. п. фетишизм wacko.gif


Никогда этим не занимался, просто установлено только то, что нужно.
Forger
Цитата(mantech @ Oct 4 2017, 12:09) *
Никогда этим не занимался, просто установлено только то, что нужно.

Этот камень был направлен не в ваш огород wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.