Segger J Flash Arm Keygen Generator

  1. Недолго думая я посетил сайт производителя SEGGER и скачал от туда. Использовал кейген для лицензий (установились все кроме GDBserver). Опять перезагружаю все вместе с программой J-link arm,.
  2. Dec 26, 2017 - Также он может прошивать FPGA и flash-память. STM32CubeMX – это бесплатный генератор кода для любых МК STM32. Q: Я хочу использовать CLion для моих разработок на базе ARM, но не на STM32. Плюсы инфраструктуры Segger (+ J-Link): нативная поддержка большинством.
  3. Dec 3, 2011 - Я думал придется искать кейген для лицензии, но оказалось, в девайсе все лицензии уже. Страничка эмбеддера — Самодельный отладчик для ARM (j-link v5).

Поскольку я активно перехожу на ARM - пытаюсь сразу подружиться со всем инструментарием, который доступен и используется. Насчитал используемых IDE разной степени глючности в общем случае аж 3 (может кто и больше юзает. IAR - старичёк со многими нелюбимым IDE, но отличным компилятором, кучей екзамплов и т.д. Keil - ввёл меня в когнитивный диссонанс. При том, что я выбираю камень в визарде, оно само подтягивает все нужные инклуды и драйвера, 'но. Он любит вас!' (С)Карлин ВСЁ РАВНО РУКАМИ надо показывать.

Долго тупил как заставить его дружить с J-Link - оказалось надо просто показать 2 раза. 1й - выбрать в списке чем дебажу, 2 - показать в папке проекта 'ах куда же я положил драйвер'(С)забывчивый Keil. Верхние 2 - платные. Eclipse - прородитель и сен-сей всякой фришной поебени. На его базе сделаны CooCox и некий монстр от Olimex (да, Olimex перебрали еклипс под свои борды. На вскидку - не менее вздроченный, чем сам оригинальный еклипс, что не странно). Впечатления от IAR - ни каких.

Долго тупил как заставить его дружить с J-Link - оказалось надо просто. Arm-none-eabi/bin/ld.exe: cannot find -lc_p-lc_p. Этот ключ, сцуко, не находится ни в файлах проекта, ни виндой. Список поддерживаемых процессоров есть на сайте segger (J-Link) и на улинк тоже где-то есть.

То есть - стартовал и не заметил. Причем было это лет 5 назад и дебажилось виглером. Взял екзампл от олимекса на какую-то из плат, выкинул лишнее - получилась рыба с готовыми библиотеками всей периферии. В общем - Plug And Prei. Впечатление от Keil - как от шизофреника.

Эдакий дедушка профессор, крутой, дорогой,. Тем не менее - проект откомпилился и дебажится. Хотя понять чего ему было надо - было непросто. (Ну не привык я, что коммерческому продукту, в котором есть визард и он даже работает, надо показывать куда он, суко, сам свои файлы запихал). Eclipse - вот тут-то начинается самое весёлое.

Сам еклипс компилит, но совершенно не хочет дружить с J-Link-ом, хотя его поддержку туда совсем недавно вернули. CooCox на базе еклипса - не компилит вообще. 2 из трёх багов выловил на просторах интернета и оба они связаны либо с повторным объявлением в CooCox-овских инклудах, либо с тупняком в них же. Хотя у IDE есть свой визард, который неплохо сам подтягивает, но штук 5 несмертельных варнингов о том, что что-то 2 раза объявлено - присутствуют. Я посмотрел на это и думаю, что не поддержу этот проект не то что донатом, но ещё и матюков могу написать. Eclipse for Olimex Development Suite - сразу после создания пустого проекта ругнулся Description Resource Path Location Type make:. Нет правила для сборки цели `all'.

Olimex2 C/C Problem Description Resource Path Location Type make:. Нет правила для сборки цели `all'. TestOlimexv1 C/C Problem Чем развлёк, напугал, ввёл в ступор - одновременно. Я в раздумьях. Из всего многообразия есть платное и Eclipse, не дружащий с J-Tagom. Взял бы IAR и не парился, но так как я хочу положить что-то на SourceForge - хотелось бы использовать всёж опенсорсную среду. Итого - кто уже дружил Eclipse с J-Link?

Ну и вообще - давайте про армьё сюда писать, а-то всё как-то получилось разбросанным по разным темом, если и упоминалось. Вот только линкер. 'Не знаю почему индусы решили усложнить нам жизнь.' (с) Хотя я таки использую его так как поддерживает ВСЕ( именно большими буквами). Начинал с CooCox, но быстро вляпался заюзав неподдерживаемый камень. Ну дык платный он. Сам бы юзал, тем более, что работаю с широко применяемым и всеми поддерживаемым STM32F103.

К стати, если кокоса вообще удалось запустить - неподдерживаемый камени приаттачить из еклипса или кейла не получилось? По идее должен дружить. Хидеры и флэшмапы вроде везде сишные, или я ошибаюсь?

Теоретически можно попробовать, но не хочется же шаманить, и так каждый раз. Хочется работать нормально через стандартные меню и средства. Ф103 конечно в коксе лучше ибо проще. Хотя после продвинутых иде для шарпа и явы трудно писать на си, очень трудно. Даже атмел перестал выделываться и стянул оболочку с 2010 визуалстудии, которую доблестно и прикрутил к своим компиляторам:) Теперь атмел-студия имеет дополнение синтаксиса и прочие приятные плюшки:) Только не пойму связи продвинутых IDE с трудностями писания на чистом С:) Оно ж не от IDE зависит. Тот же еклипс, как IDE - неплох.

Подсвечивает, группирует, дерево показывает и т.д. Тольк приходится ипатсо, чтобы заработало, а так ничего:) CrossWorks забыли Я им не пользовался. Если ты юзал - опиши впечатления- я добавлю в стартпост:). Касательно бесплатных средств разработки есть древний опус 'Using Open Source Tools for AT91SAM7S Cross Development' в котором очень подробно описано как все это делать бесплатно.

Кроме того, был отличный компилятор CodeSourcery, который все еще вроде как распрострняется бесплатно в версии лайт. Он легко интегрируется с Eclipse. И еще на сайте Macraigor есть простое описание как наладить open tools хоть и с уклоном в их детище, но вполне универсальное: Но вообще, многое зависит от того, какой из АРМов выбирать. Бесплатный PIC32 не уступает АРМ7 ни в чем, а АРМ9 и больше имеет смысл только если использовать Линукс или производить страшные real-time расчеты. Ну тут на саомм деле имелись ввиду плюшки ИДЕ для удобства написания кода, а не язык и его приятные дополнения. Ну например анализ зон видимости элементов и их типов для их автоподстановки.

Еклипс, как раз, удобством по лучше IAR и Keil, не умеющих даже скобки закрывать. Анализ зон видимости, видимо, приятная шняга, но не понимаю как он облегчит жизнь. Если проект влазит в фэш арма - очень трудно забыть, что ты вызываешь метод функции, находящейся в другом файле. Тут решает систематизированный подход, а не подсказка компилятора.C+.h на каждый объект виртуализации, если объект можно выделить. Флэшки максимум 128к - не космос. Касательно бесплатных средств разработки есть древний опус 'Using Open Source Tools for AT91SAM7S Cross Development' в котором очень подробно описано как все это делать бесплатно.

Кроме того, был отличный компилятор CodeSourcery, который все еще вроде как распрострняется бесплатно в версии лайт. Он легко интегрируется с Eclipse. И еще на сайте Macraigor есть простое описание как наладить open tools хоть и с уклоном в их детище, но вполне универсальное: Надо зазырить. А чем кодесоурцери лучше других?

И чем у него лайт отличается от остальных? Но вообще, многое зависит от того, какой из АРМов выбирать.

Бесплатный PIC32 не уступает АРМ7 ни в чем, а АРМ9 и больше имеет смысл только если использовать Линукс или производить страшные real-time расчеты. По соотношению цена/качество STM пока всех делает. Если не лезть в 'страшные real-time расчеты', то его 72МГц хватает на многое.

Для страшного многие используют DSP и плиски (для страшно-быстрого). Я вижу ARM как замену 8-ми биток в средствах автоматизации и роботах.

На это его сил хватает с головой. Даже ARM7 хватает, но он уже отходит.

Arm

Cortex гораздо приятнее. По-настоящему перспективным и интересным могло быть сразу попробоватх soft-core processor. Вкратце это процессоры внутри FPGA, т.е. Сначала загружается VHDL (или verilog) код для процессора, а потом уже С код для программы. Как ни странно, по цене они сопоставимы с недорогими микроконтроллерами, а некоторые даже распространяются с бесплатными IDE (ACTEL, например поддерживает Cortex).

Одно из их бесспорных преимуществ -можно добавлять любой (насколько хватит места) набор периферийных модулей или логических устройств в том же чипе. Если вы все еще не пределились, стотит добавитх в список.

По-настоящему перспективным и интересным могло быть сразу попробоватх soft-core processor. Вкратце это процессоры внутри FPGA, т.е. Сначала загружается VHDL (или verilog) код для процессора, а потом уже С код для программы. Как ни странно, по цене они сопоставимы с недорогими микроконтроллерами, а некоторые даже распространяются с бесплатными IDE (ACTEL, например поддерживает Cortex). Одно из их бесспорных преимуществ -можно добавлять любой (насколько хватит места) набор периферийных модулей или логических устройств в том же чипе. Если вы все еще не пределились, стотит добавитх в список. Пока это для отдаленного будущего.

В принципе - задумка хорошая, продавать один унифицированный камень, а потом кто на чем привык писать - тот то из него и прошивает, а потом под него пишет. Нехватает только массовой рекламы таких решений:) Ну и интернета, пестрящего екзамплами. А-то как показывает практика - стартонуть на бесплатной IDE по мануалам - не так-то и просто. Они все корявые и требуют напильника.

Плюс - добавляется ещё один программатор, что для предприятия, в принципе, фигня, а вот для одиночки-любителя - иногда проблема. Тем более - для начинающих. Но я верю, что когда-нибудь именно так и будет выглядеть элементная база: программируемые матрицы и всё. Потом делай из неё что угодно, хоть проц, хоть всю логику одним чипом, хоть и то и то вместе. Так а почему не заюзать любую 'оболочку' того еклипса, которых тысячи? Это и есть оболочка того еклипса.

А вот компилятор с линкером туда прикрычиваться в паре ни как не хотят. Ну или хотят, но чего-то не находят. Любая оболочка того еклипса у меня глючит. И какос и олимекс глючат. По разому, но глючат. Это линкер ругается,не может найти имя -lcp-lcp. Это была метафора.

Линкер - там написано:) Что за херь '-lcp-lcp.' Вообще такая? Гугль впадает в глухое недоумение при поиске -lс.

А на makefile можно посмотреть? Сейчас - нет, но там стоит автоматом, он сам составляет. Надо будет хоть самому посмотреть чего он туда пишет:) Вечером доберусь домой - посмотрим. Добавлено Каг и обесчЪал выкладываю ###################################################################### ########## # Automatically-generated file. Пницепите zip-ованный проект - интересно поковырять Я его снёс уже раз 5:) Но сейчас попробую с пустого начать ещё раз - если будет так же глючить, то брошу в зип. Я просто переставил тулчайн.

Грешу на него. Руки, к сожалению, переставить не могу - встроенные:) Как бы это не оказались ключи линкеру использовать библиотеку,проверь,чего там предписано линкеру относительно библиотек(правой кнопкой по имени проекта-Properties-C/C Build-Settings-ARM Sourcery Windows GCC Linker-Libraries Нет там такого пункта Properties-C/C Build-Settings-ARM Sourcery Windows GCC Linker-Libraries А шо там должно быть? Есть только './ldscripts' То, что -lp это ключ - это понятно по формату. Этот ключ, сцуко, не находится ни в файлах проекта, ни виндой по содержимому файлов вообще.

Видимо какой-то служебный и он где-то в еклипсе. Полюбэ проблемы с либами или с тулчайном. А где у него вообще хидеры на проц? Как этому дауну объяснить какой у меня проц вообще?

Я пользовался в визарде каким-то проектом STM32-H103(это борда такая есть, как я понимаю). Сейчас создал пустой - там вообще ни либ ни процессор хидеров - ни хрена нет. Если не влом - поясните, откуда подключать. Вот рар всего воркспейса с чистым проектом, тока он мало поможет - он пустой без объявлений, соответственно - не имеет понятия какой проц. Ну и я в пути либ от фонаря папок навставлял из ягарты. Если шо, тулчайн установлен в папку: C: Program Files GNU Tools ARM Embedded 4.8 2013q4 по умолчанию туда ставится. Вёркспейс в папке E: ProjKu4a EclipseWorkspace.

А где у него вообще хидеры на проц? Как этому дауну объяснить какой у меня проц вообще? Я пользовался в визарде каким-то проектом STM32-H103(это борда такая есть, как я понимаю). Сейчас создал пустой - там вообще ни либ ни процессор хидеров - ни хрена нет. Если не влом - поясните, откуда подключать.

Вот рар всего воркспейса с чистым проектом, тока он мало поможет - он пустой без объявлений, соответственно - не имеет понятия какой проц. Ну и я в пути либ от фонаря папок навставлял из ягарты. Если шо, тулчайн установлен в папку: C: Program Files GNU Tools ARM Embedded 4.8 2013q4 по умолчанию туда ставится. Вёркспейс в папке E: ProjKu4a EclipseWorkspace Я все еще не понимаю что ты и, главное, зачем делаешь? Выбрал проц, закинув в папку проекта цмсис, показал ссылки на него кампилятору, в главном хидере цмсиса задефайнил нужный камень - все!

Ну еще тупому иару адреса для линкера вбил. Во всех остальных иде оно само знает где и чо. А если еще заюзать утилитки для автоматического добавления библиотек. Поставил птички, оно само файлы в проект скопировало, добавило ссылки на них. В коксе оно встроено в иде даже и при создании проекта не мейн выкидывает, а именно это окно. То есть создание проекта( по пунктам): 1 - выбор камня.

Если используется цмсис( который явно используется:)) 2.1 - постановка нескольких птичек: core и rcc + опционально нужная перефирия. 2.2 - дефайн нужного камня. Спецы смогу я прочитать и записать LPC2368 J-link-ом или U-Link2? Да, почему нет?

Список поддерживаемых процессоров есть на сайте segger (J-Link) и на улинк тоже где-то есть. Там простыня - в ней ищем свой, если он есть - мможно читать-писать. Я все еще не понимаю что ты и, главное, зачем делаешь? Что я делаю: перехожу с IARa (на нем я писал) на еклипс, так как он бесплатный.

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

Если есть нормальная проверенная - ткните плиз пальцем. Чистый еклипс тоже компилит хрень. Я забыл уже какую именно - неделю не занимался этим. Ну не знаю как он мог до этого фейлить ибо не ищет же файлы компилятора сам, не ищет ссылки на них в реестре или каких либо иных свалках данных системы так как просит тебя указать прямую на них ссылку. То есть по сути есть независимая программа, которая вызывавет через имеющиеся прямые ссылки файлы с некоторыми параметрами зависящими от того, что ты там в проекте намудрил. Но заработало - хорошо. Кокс мне очень навится.

В свое время частично съехал с него ибо он не поддерживал много камней разных - большинство ф3-ф4, л1хх. Но сейчас все чики-пики. Из крайне полезных плюшек относительно иара: 1 - кой какая система отпределения зон видимости и подстановки. Хотя после мс студии никакая, но в иаре вообще ничего по сути нет. 2 - удобный просмотрщик компонентов файла. 3 - встроеная система добавления библиотек 1 кликом. В иаре тоже есть, но шаманить приходится.

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

Ну на папку с gcc - ладно, но сам GCC при работе вызывает нидецкий батхерт у комода, который пытается с пяток екзешников послать в песочницу трудиться при первой компиляции. Е вот когда сосно тулчайн ставишь - он зачем-то спрашивает прописаться ли ему в переменные путей, или не надо. Добавлено P.S. Бля, ни как не могу привыкнуть к еклипсному интерфейсу. Ну и лажа, господи помилуй:рукалицо: Куда кокос прячет отчет о компилляции? И главное - нахуя прячет?

Фуф, ёпт, он его внизу сжал в ноль - вставил сверху окно с екзамплами за счет него. Text data bss dec hex filename 752 0 1024 1776 6f0 FirstStepSTM32.elf Сморим чего он там умеет писать. Текст программы, что-ли, или он так обзывает program memory? Data - SRAM, как я понял (ну да, ещё ни один объект не объявлен) bss - это что такое? Добавлено Где выбрать симулятор-то? Он вообще есть у него? А-то у мну большие сомнения, что он нихрена не работает - я пишу всиляку хрень, но результат компилляции не меняется несмотря на volatile.

J-линк поддерживает, в том-то и дело. На сайте сеггера по кокосу есть отдельный мануал как его поддерживать и соответствующая строка в листбоксе дебаггера - тоже есть. Флэшер - тот да, не поддерживает, но язашил сеггеровским родным - и зашился и верифицировался ровно и гладко. Мороз возникает при попытке дебажить. С ИАРом прокатывало такое - шили H-Jtag ом и на вшитый код натравливали IAR. Тут чего-то не. Какая-то лажа.

Добавлено Ага, спасает DBG0 замкнуть на Vss и нажать Reset. Выставил ресет по пину - помогло. Отчего-то дебагер сам не захотел сбрасывать проц, или у меня руки кривыенах. Нет, все не так как вы сказали. Это не ЭБУ от авто - это програматор для этого ЭБУ (китайский Piasini). Он никак его не сломает, это 100%( да и к вам никаких претензий, тоже 100%:) )!

У меня есть такой же второй, рабочий программатор - им делаю, все ок! Вот хочу слить прошивку со своего рабочего. В общем если все же, согласитесь помочь - буду признателен. Ну и интересен вопрос цены. Просто из всех форумов, реальных спецов не увидел - только одни умники, а здесь похоже есть специалисты. В общем - хочу восстановить свою первую пиасиньку. Как-то так.:).

Въезжать в ЭТО не серьезно. Почему STPeriph не используешь? Переведя иниты с перифа на прямые записи регистров экономится чуть-ли не 1 кБ. Reset, позволю совет - сейчас St толкает CubeMx - генератор кода для stm32. Есть масса достоинств. Недостатки конечно то-же есть.

Как всегда ( приколы с Spi, Rtc, Ethernet, нет пока emWin для Stm32f4 - приходиться самому, по старинке ). Но инициализация периферии таки обычно работает.

Собсно, им и пользовался, но какое он имеет к DMA отношение? Скачал вчера последний - не заметил там вообще DMA, как и его разрешения для АЦП. Как по мне - ещё писать и писать этот продукт.

Но в копилку положил - он из полезного, красненьким подсвечивает периферию двойного применения, которую уже задействовали. Дополню: STM32CubeMX = бывший MicroXplorer. Не знаю кто это. Далёк от совершенства, как я от французского балета. Так что-бы да, так вроде нет.

Значительно мощнее и удобнее. Скорее ближе к генератору в 5 кейле с его паками. Я например уже и подзабыл как FreeRTOS вручную накатывать ( оно понятно что и вспомнить недолго ). С lwIp ( с его туевой хучей настроек ) - просто песня. В кейле правда emWin есть в генераторе. Когда-то было важно. Но вроде пока обхожусь.

А объясните мне, в чём заключается эйфория от этой хрени? Может я не ту версию скачал? Или там глубже лезть надо? Переведя иниты с перифа на прямые записи регистров экономится чуть-ли не 1 кБ. Все это делается на этапе компиляции. Результатом есть такая же прямая загрузка значения в регистры. Лучше подскажите мне что еще сохранить в функции на асме вставленой в си в cvavr чтобы она не херила данные.

Там довольно сложно и разбирать полный промежуточный асм код я уже затрахался мочи нет. Но некоторые флаги( глобальные переменные) в процессе работы слетают при использовании асм функции. Все регистры посохранял. Все это делается на этапе компиляции. Результатом есть такая же прямая загрузка значения в регистры. Или мы о разном.

Если через XXXInitStructure.xxxx - код получается гораздо больше. Библиотечные функции содержат больше проверок и странных телодвижений. Лучше подскажите мне что еще сохранить в функции на асме вставленой в си в cvavr чтобы она не херила данные. Там довольно сложно и разбирать полный промежуточный асм код я уже затрахался мочи нет. Но некоторые флаги( глобальные переменные) в процессе работы слетают при использовании асм функции. Все регистры посохранял.

Что значит 'что ещё сохранить'? А что Вы УЖЕ сохранили? И что именно она херит? Если глобальные переменные слетают - значит функция в них пишет.

Это может происходить по нескольким причинам: 1. Асм пишет в память, где лежит переменная, о чем он совершенно не догадывается. Переменная объявлена как регистровая, или на момент вызова асма числится в регистре (не имею понятия как именно cvavr компилит, но Сиспользует ограниченный и жестко фиксированный набор регистров) 3. У Вас молоко убежало стек закончился, или с ним неправильно обращаются. В любом случае без кода не разобраться.

Не поленился, создал проект под 100 семейство - реально ограничен функционал. Видимо St не считает нужным уже их поддерживать. Да и я уже подзабыл. Создай проект под 4 семейство ( перед этим паки нужно поставить ) - сравни. Странно, 100 семейство полным ходом вытесняет AVR и PIC и отказываться от него было бы несколько преждевременным. Есть полно применений, где нет смысла ставить проц за 8 баксов, а хватит за 1,7-2 бакса.

CVAVR еще раз доказал, что он удобный, но иногда херню порет полную. Благо это всего третий раз в моей жизни. Правда самый крутой. Выкладывать код смысла нет, он самый что ни на есть обычный, использует только разрешенные компилятором регистры, которые не надо сохранять и восстанавливать. Но даже сохранение ВСЕХ регистров ничего не давало. В результате просмотра листинга оказалось, что компилятор при выходе из функции прыгает НЕ ТУДА откуда он в нее пришел. Хз как так, путается в своих же subrou для передачи параметров и возвращения при оптимизации.

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

Схоже на 3-й варіант від Reset-а. Вряд ли, он пишет 'с самого начала была'.

Вряд ли он успел захренячить стек в начале. Компилятор, обычно, этим сам по себе страдать не склонен, он PUSH и POP юзает вполне себе грамотно, хотя и с перебором (я на асме гораздо меньше его использую, компилятор же тулит его куда надо и не надо - тоже).

Скорее всего, проблемы с оптимизацией, или какая-то грубая ошибка закралась, которую автор не видит. Так бывает в сях. Область видимости, к примеру, может злые шутки разыгрывать. Добавлено На смену f1 семейству предназначено f0.

Для него генератор есть. Позырил - не впечатлило. Уменьшение функционала, что правда, и падение цены. Меня f103 устраивает более всех. Добавлено Перепроверил по ценам - если количество не десятки тысяч, то разницы в цене практически нет, а разница в тактовой - уже есть. F103 пока остается оптимумом для замены атмег и пичков16-18.

Добавлено Тааагс.' ПЪядайзяем йазгавог'(С)Кролик Я чёт не врубаюсь как в шайтан-кристале происходит логика взаимодействия АЦП и ДМА. Кто может человеческим езыгом объяснить? В моих иллюзиях размышлениях мне казалось, что DMA должно сам валить данные в массив по указанному адресу, при этом по достижении указанной длины - выставлять прерывание.

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

В моих иллюзиях размышлениях мне казалось, что DMA должно сам валить данные в массив по указанному адресу, при этом по достижении указанной длины - выставлять прерывание. Я правильно понял?

Или как-то ещё? Ибо АЦП бит, что конвершен комплите выставил, но массив девственно чист. Пробовал USART на f207 через dma гонять. Полет нормальный. В конце трансфера происходит прерывания типа трансфер комплит.

Наверное в регистрах(очередности) чего-то не так. Или стандартные грабли с RCC???

Потому, что в тех регистрах голову можно сломать, и вероятность ошибки только из-за какой-то мелочи огромна. Perif же по умолчанию настроит в любом случае, ты уже детали добавляешь. Голову в регистрах сломать можно не более, чем в perif. Чем они так критично отличаются, если ты название битов, которое я пишу в маску, и тыкаю в регистр - всё равно пишешь, но тыкаешь в структуру, а потом вызываешь функцию, которая распихивает поля структуры по регистрам? Не могу понять логики использования перифа. Жрёт как не в себя память и делает то же самое.

Там из полезного есть всего 2 файла, которые следует подключать. Остальное - для совсем начинающих, чтобы абстрагироваться от ядра. Хотя, от него совершенно вредно - абстрагироваться. Голову в регистрах сломать можно не более, чем в perif.

Чем они так критично отличаются, если ты название битов, которое я пишу в маску, и тыкаю в регистр - всё равно пишешь, но тыкаешь в структуру, а потом вызываешь функцию, которая распихивает поля структуры по регистрам? Не могу понять логики использования перифа. Жрёт как не в себя память и делает то же самое.

Там из полезного есть всего 2 файла, которые следует подключать. Остальное - для совсем начинающих, чтобы абстрагироваться от ядра. Хотя, от него совершенно вредно - абстрагироваться. Потому, что в структуру тыкаются не названия битов, названия которых как-то отдаленно теоретически схожи с их функциями, а полноценно понятные названия. К тому же в большинстве случаев 'решают' несколько бит, что увеличивает шанс ошибки.

Mode = out2Mhz и установка минимум 4 бит вручную. И где будет ошибка? К тому же за битами надо лазить в мануал.

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

Хотя нет, я помню зачем я в мануал лазил последний раз. Да и вообще бывает лажу иногда. Это регистры данных периферии для ДМА. Чтото СТ тут прохалявили. Да и вообще, говорить про медленность такой настройки в угоду потере удобства в 2014 году как-то фу-фу-фу.

Возьми проц быстрее. Справедливости ради нужно отметить что писанина под стм32 в стиле как писалось все для авр-а (напрямую по регистрам) это путь вникуда. Как только начинаешь юзать что то стороннее типа оси, стека все все равно приходиться переписывать под драйвер.

Плюс как только возможна миграция от проекта к проекту на другое семейство то же самое - с библой меньше возни. У всякого решения есть свои плюсы и минусы. Единственное, что радует в либах - там описаны все семейства и переход равен смене дефайна. Только есть одно 'но' - у STM все одночисленные по пинам корпуса - совместимы по пинам. Вот такая вот хрень.

Даже переразводить не придется. Да, регистры тоже одинаковые внутри семейства.

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

Не вижу великого смысла в глубинной кроссплатформизации - библиотечной достаточно. Труднее всего переносить именно обширные программные решения, по этому их локализуют в либы. Переносить сетап при старте? Танунах - там делать нечего, а экономия памяти существенная. (за кадром слышен звоночек сработавшей кассы и голос 'продано!'

Mode = out2Mhz и установка минимум 4 бит вручную. И где будет ошибка?

Где-нибудь в той самой stdperflib писанной индусами, но вот чтоб ее найти придется хорошо знать и биты портов и константы либы Справедливости ради нужно отметить что писанина под стм32 в стиле как писалось все для авр-а (напрямую по регистрам) это путь вникуда. Как только начинаешь юзать что то стороннее типа оси, стека все все равно приходиться переписывать под драйвер. Плюс как только возможна миграция от проекта к проекту на другое семейство то же самое - с библой меньше возни. Это можно принимать как аргумент, шо если уж и пользовать какую-то либу, то, как вариант, хал от какой-нить оськи, которых щас тоже полно. Оу воу:p (((Ледащі китайці не залили свою тестову прошивку у діскавері, а диск мені прочитати нічим:фейспалм: А з оцього посилання я ахуєваю:фейспалм: http://www.kosmodrom.com.ua/el.php?name=STM32-OPEN407V-D. Оу воу:p (((Ледащі китайці не залили свою тестову прошивку у діскавері, а диск мені прочитати нічим:фейспалм: А з оцього посилання я ахуєваю:фейспалм: Ты плотно подсел на дискавери, я смотрю:D. Ты плотно подсел на дискавери, я смотрю:D Замовив ще й 207 плату таку і пару модулів:D Бо з ф4 тупо не знаю що робити.

Точніше робити є що, колупаю потихеньку sdio, fsmc, екранчик, роботу окремих модулів зручно відпрацьовувати, але не бачу практичного використання. Хоча прикольно. РТОСка за замовчанням системну купу 75.1024 біт підняла, а йому хоч би хни:D І ще є мінус - 'нові' портові регістри, як у L серії. Тепер DiHalt-овські макроси не працюють:(. Хоча налаштування альтернативних функцій та ремапів тут більш логічні. Любителі голого екліпсу! Розкажіть мені, що з ним треба зробити після встановлення, щоб він запрацював.

Я вже не можу:фейспалм: На Linux работает с пол пика. А вот на Windows, помню, помучился.

Там gdb не хотел дружить с openocd. Скорее всего потому, что система 64-битная. Ну а так, ставим Eclipse. Ставим в нем CDT и GNU ARM Eclipse Plugin. Ставим gnu-arm-none-eabi и openocd.

В принципе все:) В GNU ARM Eclipse Plugin есть простенький визард для начальных настроек проекта. Один большой минус - он заточен под SPL и HAL. Если последний еще более-менее, то первый - решето. Но если повозиться с шаблонами проектов, думаю, можно и под libopencm3 заточить.

1 60 Программирование и отладка микроконтроллеров ARM Cortex-M4 фирмы Atmel в среде операционной системы Linux Андрей Курниц В статье описан процесс развертывания экосистемы разработки приложений для микроконтроллеров Atmel серии SAM4S в среде операционной системы Linux. Читатель познакомится также с оценочной платой SAM4S-EK и семейством ARM Cortex-M4 микроконтроллеров фирмы Atmel. Приведены рекомендации по работе с адаптером отладки SAM-ICE (он же J LINK) и программой OpenOCD. Введение Выбор операционной системы Linux в качестве среды для программирования микроконтроллеров ARM Cortex-M4 фирмы Atmel трудно назвать общепринятой практикой. Напротив, для разработки под свои микроконтроллеры Atmel свободно распространяет среду Atmel Studio 7, предназначенную исключительно для операционных систем Windows. Не секрет и тот факт, что для новичка разворачивание и настройка среды Atmel Studio 7 окажется куда проще, чем выбранный автором путь.

Автор предлагает использовать среду разработки Qt Creator в связке с инструментарием для кросс-компиляции GCC и с пакетом OpenOCD для отладки. В качестве операционной системы выбрана Linux Lubuntu LTS (выполняющаяся на виртуальной машине, но это несущественно). Данный подход позволяет с легкостью переходить на другие ARM (и не только) микроконтроллеры, не меняя при этом привычный комплект инструментов.

В частности, в 1 приводится пример разработки для микроконтроллеров STM32F4 фирмы STMicroelectronics с применением такого же комплекта инструментов. Внешний вид платы SAM4S-EK с подключенным отладочным адаптером Несколько слов об используемой терминологии.

Аппаратное устройство, которое подключается к целевому микроконтроллеру и к рабочей станции, далее именуется отладочным адаптером. Отладчиком же будет называться компьютерная программа, служащая для пошагового выполнения программы, просмотра значений ячеек памяти и т. Аппаратная платформа Автор работает с оценочной платой SAM4S-EK от фирмы Atmel и отладочным адаптером SAM-ICE, любезно предоставленными компанией Rainbow Electronics (рис. В основе оценочной платы лежит микроконтроллер SAM4S16C фирмы Atmel, ключевые особенности которого приведены ниже: Ядро ARM Cortex-M4, максимальная тактовая частота 120 МГц. Объемы памяти на кристалле: 1 Мбайт flash-памяти и 128 кбайт ОЗУ.

Среди периферийных устройств можно выделить: USB-контроллер (работа только в режиме Device); контроллер внешней NAND flash-памяти; контроллер SD-карт памяти. Контроллеры интерфейсов UART, I 2 C, SPI и др. 100 выводный корпус. К особенностям оценочной платы SAM4S-EK относится следующее: Микросхема NAND flash-памяти Micron MT29F2G08ABAEA объемом 2 Гбит. Цветной дисплейный модуль FTM280C34D разрешением точек, с диагональю 2,8 дюйма и резистивной сенсорной панелью.

Дисплей содержит встроенный контроллер Ilitek ILI9320, подключенный к микроконтроллеру по параллельному интерфейсу. Контроллер резистивной сенсорной панели Texas Instruments ADS7843E. Распаяны два DB9 разъема для двух портов RS 232 (один из них с сигналами RTS, CTS), выведен также интерфейс RS 485. Элементы сенсорного управления по технологии Atmel QTouch расположены прямо на печатной плате (5 сенсорных кнопок и слайдер). Электретный микрофон и операционный усилитель TS922 для него. Усилитель звуковой частоты для подключения наушников TPA022, а также 3,5 мм гнездо типа «джек».

2 микроконтроллеры компоненты 61 Рис. Структурная схема процесса отладки микроконтроллера Два коаксиальных BNC-разъема, которые подключены к встроенным АЦП и ЦАПблокам микроконтроллера. Держатель micro SD-карты памяти. 63 вывода общего назначения (GPIO) выведены на IDC-разъемы с шагом 2,54 мм. Более подробно как о плате SAM4S-EK, так и о микроконтроллере SAM4S16C можно узнать на сайте Atmel 12. Комплект инструментов Когда аппаратная (плата SAM4S-EK) и программная (операционная система Linux Lubuntu) платформы определены, можно построить систему аппаратных и программных инструментов для программирования и отладки целевого микроконтроллера (рис. 2) По интерфейсу JTAG микроконтроллер подключен к отладочному адаптеру SAM-ICE, который в свою очередь подсоединен к рабочей станции по интерфейсу USB.

Питание отладочного адаптера подается также по интерфейсу USB, а питание платы разработчика вместе с микроконтроллером должно осуществляться отдельно (на рис. 2 не показано). На рабочей станции должна выполняться некая программа, взаимодействующая с адаптером отладки SAM-ICE с одной стороны и отладчиком GDB, входящим в инструментарий GCC, с другой. На эту роль идеально подходит свободно распространяемая программа OpenOCD 4 6, которая помимо отладки может использоваться для загрузки прошивки во flash-память микроконтроллера и для внутрисхемного тестирования. Программа OpenOCD поддерживает как адаптер отладки SAM-ICE (в действительности это аналог популярного J LINK), так и оценочную плату SAM4S-EK (соответственно и микроконтроллеры Atmel SAM4). Кроме этого, OpenOCD доступна в виде исходных кодов и может быть собрана для операционной системы Linux. Интегрированная среда разработки Qt Creator (рис.

2) получает отладочную информацию через отладчик GDB и предоставляет ее в удобном для разработчика виде (точки останова, значения переменных, пошаговое выполнение программы и др.). Программа OpenOCD работает в режиме сервера и допускает подключение других клиентов программ, например telnetклиента (рис.

Это может быть удобно для серийного программирования микроконтроллеров на производстве. Установка OpenOCD Установить OpenOCD можно наименее трудоемким способом из репозиториев Ubuntu, для чего следует выполнить команду: sudo apt-get openocd Однако в этом случае будет установлена устаревшая версия (проверить версию установленной программы OpenOCD можно, выполнив команду openocd -version).

Для получения актуальной версии (на момент написания статьи 0.9.0) необходимо собрать OpenOCD из исходных кодов. Для этого надо выполнить следующие действия: 1. Загрузить исходные коды OpenOCD с сайта 2, выполнив команду: cd wget openocd/0.9.0/openocd tar.bz2. В результате в домашнем каталоге должен появиться файл-архив openocd tar.bz2. Далее следует разархивировать OpenOCD, выполнив команду: tar xvf openocd tar.bz2 В результате в домашнем каталоге должен появиться каталог с исходным кодом openocd Проверить, установлена ли библиотека libusb-dev, которая необходима для взаимодействия рабочей станции и адаптера SAM-ICE по USB-интерфейсу.

Чтобы проверить наличие библиотеки libusb-dev, следует выполнить команду: sudo dpkg -get-selections grep libusb Если библиотека установлена, то вывод должен быть примерно такой: libusb-0.1-4:i386 libusb-1.0-0:i386 libusb dbg:i386 libusb dev:i386 libusb-1.0-doc libusbmuxd2 Если библиотека не установлена, то сделать это можно, выполнив команду: sudo apt-get libusb-dev 4. Для сборки OpenOCD также потребуются следующие пакеты: make; libtool; pkg-config версии 0.23 и выше; autoconf версии 2.64 и выше; automake версии 1.9 и выше; texinfo. E.ru 3 62 Проверить их наличие можно тем же способом, что и библиотеки libusb-dev, как описано выше. Теперь можно собрать пакет OpenOCD с поддержкой адаптера SAM-ICE, для чего следует последовательно выполнить следующие команды: cd /openocd /configure -enable-jlink make sudo make Ключ -enable-jlink предписывает включить поддержку адаптера J LINK.

Дело в том, что адаптер SAM-ICE представляет собой модифицированный J LINK BASE от фирмы Segger, так что он может взаимодействовать только с микроконтроллерами фирмы Atmel. Однако программный интерфейс для работы с J LINK полностью совместим с адаптером SAM-ICE. Подключение адаптера SAM-ICE Далее следует подсоединить адаптер SAM- ICE к рабочей станции и проверить список подключенных по USB устройств командой: Lsusb Если адаптер SAM-ICE подключен, то вывод команды должен содержать следующую строку: Bus 002 Device 003: ID 1366:0101 SEGGER J-Link ARM где 1366 VID-номер (код производителя USB-устройства), 0101 PID-номер (код изделия). Эти номера потребуются в дальнейшем для настройки менеджера устройств udev. Для того чтобы обеспечить взаимодействие сервера отладки OpenOCD с адаптером SAM-ICE по интерфейсу USB, необходимо создать файл-правило для менеджера устройств udev, например так: sudo nano /etc/udev/rules.d/45-jlink.rules В окне редактора Nano ввести следующий текст: SUBSYSTEMS usb, ATTRSidVendor 1366, ATTRSidProduct 0101, MODE:= 0666, SYMLINK+= jlink%n где поля idvendor и idproduct соответствуют полученным ранее номерам VID и PID. Далее следует перезагрузить рабочую станцию.

Если же сконфигурировать udev, как описано в 3, то запуск сервера отладки OpenOCD будет возможен только с правами суперпользователя, что в дальнейшем создаст проблемы с отладкой из среды Qt Creator. 4 микроконтроллеры компоненты 63 и ее размер получен из документации на данный микроконтроллер 12. В случае успешного стирания вывод программы OpenOCD должен содержать строку: erased address 0x (length ) in s ( KiB/s) Для непосредственно записи прошивки во flash-память надо выполнить команду: openocd -f interface/jlink.cfg -f board/atmelsam4sek.cfg -c init -c halt -c flash writeimage erase sam.hex -c reset -c shutdown где sam.hex имя файла с прошивкой в формате Intel HEX. OpenOCD принимает также другие форматы файлов с прошивкой, например binary и ELF.

В случае успешной загрузки прошивки во flash-память вывод должен содержать строки: Рис. Добавление сервера отладки OpenOCD в Qt Creator Info: sam4 does not auto-erase while programming (Erasing relevant sectors) Info: sam4 First: 0x Last: 0x Info: Erasing sector: 0x wrote 8192 bytes from file sam.hex in s (2.685 KiB/s) То есть в данном случае очищаются лишь те сектора flash-памяти, в которые будет размещена прошивка. Создание комплекта в Qt Creator Теперь, когда связка «адаптер отладки сервер отладки» настроена и готова к работе, можно приступать к настройке интегрированной среды разработки, в нашем случае Qt Creator. При этом предполагается, что на рабочую станцию уже установлен инструментарий GCC для сборки микроконтроллеров ARM, а также установлена и настроена сама среда Qt Creator, процесс установки и настройки которых подробно описан в 1. Прежде всего, необходимо добавить сервер отладки, для этого в Qt Creator следует вызвать настройки (пункт главного меню «Инструменты - Параметры»), выбрать вкладку BareMetal («Голое устройство»), нажать «Добавить» и выбрать пункт OpenOC.

Появится окно, где можно указать параметры запуска сервера (рис. Следует отметить, что поддержка OpenOCD добавляется в среду Qt Creator при включении модуля BareMetal, как это сделать описано в 1. Имя сервера отладки можно задать OpenOCD + SAM-ICE (рис. «Режим запуска» следует установить в «Запуск в режиме TCP/IP».

Так как сервер OpenOCD будет выполняться на рабочей станции, то поле «Хост» должно содержать имя компьютера localhost и порт 3333, указанный ранее в конфигурационном файле openocd.cfg. В поле «Исполняемый файл» следует вписать имя исполняемого файла openocd (или полный путь к нему, если необходимо). Добавление комплекта для микроконтроллеров Atmel SAM4S в Qt Creator Поле «Файл конфигурации» должно содержать путь к файлу конфигурации OpenOCD, созданному ранее, в данном случае это sam/openocd.cfg. Поля «Команды инициализации» и «Команды сброса» по умолчанию имеют в своем составе команды управления сервером, менять их содержимое не требуется. Далее можно добавить новое устройство, для которого будет производиться сборка и отладка, микроконтроллер семейства Atmel SAM4S. Для этого в настройках Qt Creator следует выбрать вкладку «Устройства» и нажать «Добавить».

После чего ввести имя устройства, например Atmel SAM, и выбрать настроенный ранее сервер отладки OpenOCD + SAM-ICE. Когда устройство добавлено, можно окончательно настроить комплект для сборки так, как показано на рис. Компилятор GCC и отладчик GDB заданы из состава инструментария GCC для микроконтроллеров ARM так, как описано в 1. Создание, запуск и отладка примитивной программы на Atmel SAM4S микроконтроллере Теперь, когда на рабочую станцию установлено и настроено программное обеспечение для разработки под микроконтроллеры Atmel SAM4S, можно убедиться в работоспособности системы, создав простейшую программу, которая будет зажигать и гасить светодиод на плате SAM4S-EK.

Для сборки работоспособной программы для микроконтроллера помимо инструментария GCC необходимы следующие компоненты: 1. Библиотека CMSIS (Cortex Microcontroller Software Interface Standard) описывает единый интерфейс взаимодействия с ядром микроконтроллеров ARM Cortex-M, общая для микроконтроллеров ARM Cortex-M различных производителей. Библиотека для взаимодействия с периферией данного семейства микроконтроллеров своя для каждого производителя, будь то Atmel, STMicroelectronics, NXP и др. Скрипт линковщика (linker script) файл с указаниями о размещении программы во flash-памяти микроконтроллера, а также о размещении в ОЗУ служебных областей (секций): стек, куча и др.

Для различных микроконтроллеров с разными объемами памяти используются соответственно различные скрипты линковщика. Файл syscalls.c содержит системные функции, необходимые для работы стандартной библиотеки языка C (реализация newlib). Обычно эти функции являются частью операционной системы, для которой предназначена программа. Однако в случае же микроконтроллера, который чаще всего работает без операционной системы, в сборку должен быть включен файл syscalls.c, содержащий в большинстве своем пустые системные функции 10. Справедливости ради следует отметить, что существует множество операционных систем, разработанных специально для микроконтроллеров. Код начальной инициализации (startup code) отвечает за заполнение таблицы векторов прерываний соответствующими обработчиками, в том числе и обработчиком прерывания по сбросу микроконтроллера (reset handler).

Также содержит реализацию обработчика прерывания по сбросу, который обнуляет необходимые секции памяти, инициализирует стандартную библиотеку C и передает управление в точку входа программы в функцию main. Особенности установки Atmel Studio IDE Рис. Выбор типа проекта в Atmel Studio IDE Библиотека Atmel Software Framework Для создания программ для своих микроконтроллеров фирма Atmel свободно распространяет библиотеку Atmel Software Framework (сокращенно ASF) для языков C/C, которая содержит все пять компонентов из приведенного выше списка, необходимых для сборки программы. Библиотека ASF предоставляет высокоуровневый интерфейс, единый для микроконтроллеров различных семейств и архитектур: megaavr, AVR XMEGA, AVR UC3 и SAM. Библиотека ASF предоставляет примеры работы с различными периферийными блоками микроконтроллеров, а также с внешними устройствами, расположенными на различных оценочных платах.

Такое разнообразие поддерживаемых микроконтроллеров отрицательно сказалось на легкости в освоении библиотеки ASF. Она оказалась очень сложной, запутанной и большой по размеру (архив 400 Мбайт, содержащий более файлов).

Даже несмотря на то, что библиотеку ASF можно загрузить отдельно 8 и она рассчитана на использование в том числе и компилятора GCC, автор не сумел вручную выделить из библиотеки требуемые файлы для создания простейшей программы для микроконтроллера Atmel SAM4S16C. Автор предлагает такой путь: 1.

Чтобы получить минимальный компилируемый проект, использовать интегрированную среду разработки Atmel Studio IDE, предназначенную для операционных систем Windows и основанную на среде Microsoft Visual Studio В дальнейшем вручную добавлять необходимые компоненты в полученный проект, копируя их из отдельно загруженной библиотеки ASF. Читатели могут не повторять эти рутинные действия и загрузить проект, готовый для сборки в среде Linux, по адресу 11.

Среда Atmel Studio IDE Среда Atmel Studio IDE поставляется бесплатно, загрузить ее можно с официального сайта 9. Во время установки на компьютере или виртуальной машине под управлением Windows следует выбрать архитектуру ARM и указать необходимость установить библиотеку ASF (рис. После установки следует запустить Atmel Studio IDE и создать новый проект, выбрав пункт меню File - New - Project Затем выбрать тип проекта GCC C ASF Board Project, как показано на рис. Далее откроется окно выбора аппаратной платформы, для которой будет собран проект (рис. Можно ввести название микроконтроллера, но в данном случае проще задать название оценочной платы.

Для этого следует 6 микроконтроллеры компоненты 65 Рис. Выбор микроконтроллера Рис. Структура простейшего проекта выбрать пункт Select by Board и выбрать название SAM4S-EK (рис. В списке ниже следует отметить появившийся пункт с наименованием микроконтроллера ATSAM4S16C и нажать OK. После того как проект будет создан, файлы исходного кода будут размещены в указанном ранее (рис. 6) каталоге (в случае автора c: users andreyk documents atmel Studio 7.0 GccBoardProject1 GccBoardProject1 src).

Каталог src теперь можно перенести в операционную систему Linux в каталог проекта, например в каталог /sam/. Его структура представлена на рис. Внимание следует обратить на расположение: Скрипт линковщика это файл /sam/src/asf/sam/utils/linker scripts/sam4s/sam4s16/gcc/flash.ld. Код начальной инициализации и таблица векторов прерываний находятся в файле /sam/src/asf/sam/utils/cmsis/sam4s/source/ templates/gcc/startupsam4s.c. Файл syscalls.c находится в каталоге /sam/src/asf/sam/utils/syscalls/gcc.

Добавление модуля из библиотеки ASF На данный момент в проекте отсутствует компонент delay.h, необходимый для получения задержек на точно заданное время (это понадобится для мигания светодиодом). Далее показано, как по мере роста проекта добавлять нужные компоненты из библиотеки ASF, на примере компонента delay.h.

Чтобы его добавить, надо скопировать из отдельно загруженного архива библиотеки ASF 8 файл common/services/ delay/delay.h и каталог со всеми файлами common/services/delay/sam/ в каталог проекта /sam/src/asf/common/services/delay. Кроме этого, следует включить компонент delay.h в сборку, добавив в конце файла /sam/src/asf.h строку: #include Как видно, добавление отдельных компонентов из библиотеки ASF в проект не представляет больших трудностей. Код простейшей программы Листинг файла main.c приведен ниже: #include int main (void) boardinit; sysclkinit; while (1) LEDOn(LED1GPIO); delayms(500); LEDOff(LED1GPIO); delayms(500); return 0; Функция boardinit инициализирует порты ввода/вывода (GPIO) микроконтроллера в соответствии с подключенными к ним внешними электронными компонентами, в том числе настраивает порты ввода/вывода как выходы для включения/выключения расположенных на плате светодиодов.

Функция boardinit находится в файле src/asf/sam/borads/sam4sek/init.c. Предоставлена возможность выбирать, какие порты будут проинициализированы, а какие нет, с помощью макроопределений в файле src/config/confborad.h. Функция sysclkinit отвечает за инициализацию блока тактирования микроконтроллера. После сброса включается встроенный RC-генератор на 4 МГц 12.

Функция sysclkinit активирует генератор, работающий от внешнего кварцевого резонатора на 12 МГц, а также настраивает блок фазовой автоподстройки частоты PLL, чтобы частота тактирования ядра микроконтроллера составляла 120 МГц. Изменить настройки тактирования можно, меняя значения макроопределений в файле src/config/confclock.h. Далее в бесконечном цикле последовательно вызываются функции включения и выключения светодиодов оценочной платы: LEDOn и LEDOff. В качестве аргумента передается макроопределение LED1GPIO, что соответствует зеленому светодиоду, подключенному к порту PA20. Функции LEDOn, LEDOff и макроопределение LED1GPIO определены в исходных файлах в каталоге src/asf/sam/borads/sam4sek/, который содержит помимо прочего описание подключения светодиодов к выводам микроконтроллера.

Вызов функции delayms(500), входящей в добавленный ранее модуль delay.h, приводит к задержке выполнения на 0,5. Задержка реализована пустыми циклами микроконтроллера, причем нет необходимости заботиться об учете частоты тактирования микроконтроллера текущая частота учитывается внутри библиотеки ASF после вызова функции sysclkinit. Сборка с помощью системы автоматизации QBS Для того чтобы получить исполняемый файл прошивки, нужно провести компиляцию довольно большого количества файлов. E.ru 7 66 Фирма Atmel предлагает пользоваться файлами makefile, которые представляют собой инструкции для компилятора GCC. Автор же предлагает воспользоваться встроенной в Qt Creator средой автоматизации сборки QBS 1. Для этого придется создать QBS-файл проекта, содержащий сведения об исходных файлах, подлежащих компиляции. Одним из преимуществ QBS является то, что нет необходимости вручную вносить название каждого файла с исходным кодом в QBS-файл достаточно указать каталоги размещения файлов, остальное система сделает сама.