|
Освоение ARM контроллеров |
|
|
|
Mar 29 2016, 14:17
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Появилась необходимость в освоении ARM контроллеров. Есть проект реализованный на PIC контроллере, который необходимо портировать на ARM. Это связано с тем, что в него нужно доработать реализацию воспроизведения аудио файлов. Просьба помочь в выборе контроллера и отладочных средств к нему для изучения ARM, с учетом моих задач. Просто не хочется брать первую попавшеюся отладочную плату с установленным в нее контроллером. А выбрать тот набор оборудования и ПО, который поможет мне в изучении ARM и параллельно реализовать все мои задачи. Основные параметры основываясь на старый проект: 1) Объем памяти программ не меньше 128kB. 2) Объем памяти данных не меньше 4kB. Учитывая что в старом проекте используется внешняя EEPROM для хранения параметров на 64kB, а в новом проекте еще и нужно хранить аудио треки. И насколько я успел поверхностно ознакомится, в ARM можно использовать внешнюю flash память и для памяти данных контроллера и для хранения треков и параметров. Если я прав, то тогда ARM можно брать вообще без внутреннего ОЗУ. 3) Большое количество портов. В старом проекте был PIC на 80 ног. 4) Нужно 17 АЦП для измерения напряжения, остальные GPIO. 5) 2 порта UART. 6) Желательно USB. 7) И самое главное возможность проиграть аудио ролики (не важно в каком формате хоть в “amr”) в аудио тракт GSM модема. Эти ролики будут подготовлены на ПК и записываться в цифровом формате во внешнюю flash (то есть никаких кодеков для записи аудио не нужно). Есть под ARM готовые библиотеки для воспроизведения аудио файлов? В качестве среды разработки хочу взять CooCox CoIDE (GCC Compiler) в виду того что она бесплатная. Вроде неплохие отзывы о ней. Кстати кто знает, в ней есть ОС под ARM. ARM контроллер и отладочный комплект ST или NuVotone. Лучше ST так как на мой взгляд они наиболее популярны, а по второму производителю маловато информации в сети. Заранее благодарен за любую помощь.
|
|
|
|
|
 |
Ответов
|
Apr 13 2016, 07:50
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Apr 13 2016, 10:25)  Как можно контролировать стек (не задач в RTOS), который растет себе и растет, пока не налезет на кучу или переменные?? Также, как и "задач в RTOS". Какие проблемы? Те стеки тоже "растут себе и растут"... С контролем НЕ в реальном массштабе времени проблем нет. Но вот именно отсутствие контроля в реальном времени как раз и не позволяет на ходу разруливать ситуации со стеком и следовательно по любому под стек нужно выделять гарантированно достаточное место. Потом уже постфактум по результатам контроля, если надо, думать уменьшить его или нет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 13 2016, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Apr 13 2016, 13:50)  Также, как и "задач в RTOS". Какие проблемы? Те стеки тоже "растут себе и растут"... С контролем НЕ в реальном массштабе времени проблем нет. Но вот именно отсутствие контроля в реальном времени как раз и не позволяет на ходу разруливать ситуации со стеком и следовательно по любому под стек нужно выделять гарантированно достаточное место. Потом уже постфактум по результатам контроля, если надо, думать уменьшить его или нет. В принципе - можно и в реальном. И даже под многозадачную ОС. С MMU конечно вообще проблем нет такое сделать. Но даже с MPU это возможно. Я уже не раз задумывался чтобы внести такую функциональность в свои проекты, всё руки не доходят. Как: Вынести все стеки задач в единый сплошной сегмент памяти. Закрыть полностью доступ к этому сегменту через MPU. В ISR PendSV при каждом переключении пользовательского контекста, программировать перекрывающую запись таблицы MPU (более приоритетную чем та запись, которая закрывает доступ ко всему сегменту стека) на новый стек (находящийся внутри общего сегмента стека). Конечно будут потери памяти на выравнивании, необходимом для MPU. Но сделать вроде можно. Да - в начале и в конце сегмента стека должны быть небольшие интервалы неиспользуемой памяти. Конечно, если функция внутри задачи написана так, что выделяет размер массива выходящий за границу сегмента стека, то тогда такая защита может не спасти. Но чаще всего доступ к стеку идёт более-менее последовательно, небольшими шагами. Цитата(zltigo @ Apr 13 2016, 15:01)  Если-бы я с какого-то бодуна выделял стеки задачам статически, то, да и эти БЛОКИ памяти я бы ТОЖЕ описал для линкера. А с какого бодуна Вы выделяете стеки задачам динамически? И зачем такое делать? Задачи создавать/убивать? Это лишнее.
|
|
|
|
Сообщений в этой теме
maxntf Освоение ARM контроллеров Mar 29 2016, 14:17 Forger Цитата(maxntf @ Mar 29 2016, 17:17) Появи... Mar 29 2016, 15:54 agregat Цитата(maxntf @ Mar 29 2016, 17:17) Появи... Mar 29 2016, 15:59 Forger Цитата(agregat @ Mar 29 2016, 18:59) А за... Mar 29 2016, 16:01 ЯadiatoR Вы путаете назначение ОЗУ и энергонезависимой памя... Mar 29 2016, 16:07 maxntf Цитата(ЯadiatoR @ Mar 29 2016, 19:07) Вы ... Mar 29 2016, 17:44  Forger Цитата(maxntf @ Mar 29 2016, 20:44) STM32... Mar 29 2016, 17:49   maxntf Цитата(Forger @ Mar 29 2016, 20:49) Это ч... Mar 29 2016, 17:55    Forger Цитата(maxntf @ Mar 29 2016, 20:55) Не пл... Mar 29 2016, 18:02    Obam ЦитатаЦитата(maxntf @ Mar 29 2016, 20:44) *
Взять ... Mar 30 2016, 08:14     maxntf Цитата(Obam @ Mar 30 2016, 11:14) Характе... Mar 30 2016, 09:05      AVI-crak Цитата(maxntf @ Mar 30 2016, 16:05) Понят... Mar 30 2016, 13:15  scifi Цитата(maxntf @ Mar 29 2016, 20:44) Допус... Mar 29 2016, 17:56  mantech Цитата(maxntf @ Mar 29 2016, 20:44) Возмо... Mar 29 2016, 18:46   maxntf Цитата(mantech @ Mar 29 2016, 21:46) Реко... Mar 29 2016, 18:51  mantech Цитата(maxntf @ Mar 29 2016, 20:44) Взять... Mar 29 2016, 18:48   jcxz Цитата(mantech @ Mar 30 2016, 00:48) Стра... Mar 30 2016, 04:53 Tarbal Да что вы все такие злые?
Ну не знает человек сто... Mar 29 2016, 17:18 Forger Цитата(Tarbal @ Mar 29 2016, 20:18) Да чт... Mar 29 2016, 17:33 ЯadiatoR Печально, что вы гоняясь за бюджетом и другими вещ... Mar 29 2016, 17:59 maxntf Цитата(ЯadiatoR @ Mar 29 2016, 20:59) + д... Mar 29 2016, 18:48 maxntf Во избежание лишних дискуссий буду задавать более ... Mar 30 2016, 07:33 jcxz Цитата(maxntf @ Mar 30 2016, 13:33) ROM -... Mar 30 2016, 07:57  maxntf Цитата(jcxz @ Mar 30 2016, 10:47) Сомнева... Mar 30 2016, 08:05   jcxz Цитата(maxntf @ Mar 30 2016, 14:05) ROM -... Mar 30 2016, 08:16   ЯadiatoR Цитата(maxntf @ Mar 30 2016, 11:05) Так я... Mar 30 2016, 11:18 ЯadiatoR Опять же как я и говорил - нечеткие требования нап... Mar 30 2016, 08:01 ЯadiatoR Не имея представления об ARM, в частности о процах... Mar 30 2016, 13:21 den1s по требованиям много каналов АЦП, памяти, USB и Co... Apr 1 2016, 16:03 jcxz Цитата(den1s @ Apr 1 2016, 22:03) Отладку... Apr 1 2016, 18:18  den1s Цитата(jcxz @ Apr 1 2016, 21:18) Вменяемы... Apr 1 2016, 19:24   jcxz Документация вроде нормально к ним находится в ине... Apr 2 2016, 08:19    den1s Цитата(jcxz @ Apr 2 2016, 12:19) Документ... Apr 2 2016, 14:50     jcxz Цитата(den1s @ Apr 2 2016, 20:50) Возможн... Apr 2 2016, 17:29 maxntf Продолжаем разбираться. Получил железо, просмотрел... Apr 4 2016, 12:51 ЯadiatoR Адрес 0x00 не принимает никакого значения boot. Ту... Apr 4 2016, 14:12 maxntf Цитата(ЯadiatoR @ Apr 4 2016, 17:12) Адре... Apr 4 2016, 16:23 esaulenka Нет. Значение SYSCFG определяет, на какую область ... Apr 4 2016, 19:33 AVI-crak Цитата(esaulenka @ Apr 5 2016, 02:33) Но ... Apr 5 2016, 04:17 jcxz Цитата(esaulenka @ Apr 5 2016, 01:33) Нет... Apr 5 2016, 08:37 x893 Ремапом приходится пользоваться в STM32F0 серии та... Apr 4 2016, 19:52 maxntf STM32F407VG.
Как в программе выполнить reset?
В PI... Apr 5 2016, 09:06 scifi Цитата(maxntf @ Apr 5 2016, 12:06) STM32F... Apr 5 2016, 09:29 jcxz Цитата(maxntf @ Apr 5 2016, 15:06) STM32F... Apr 5 2016, 09:38  scifi Цитата(jcxz @ Apr 5 2016, 12:38) Универса... Apr 5 2016, 10:15   jcxz Цитата(scifi @ Apr 5 2016, 16:15) А ещё м... Apr 5 2016, 10:27 maxntf Сейчас разбираюсь с юзерским бутлоадером. Почитал ... Apr 5 2016, 13:32 scifi Цитата(maxntf @ Apr 5 2016, 16:32) Только... Apr 5 2016, 13:45 maxntf Вот два кода, первый бутлоадера, а второй моя прог... Apr 5 2016, 14:29 scifi Цитата(maxntf @ Apr 5 2016, 17:29) Вот дв... Apr 5 2016, 14:41  maxntf Тогда не верно выразился, нужно так - "Так вс... Apr 5 2016, 14:55   scifi Цитата(maxntf @ Apr 5 2016, 17:55) - когд... Apr 5 2016, 15:10    maxntf Цитата(scifi @ Apr 5 2016, 18:10) Я отлаж... Apr 9 2016, 07:36     scifi Цитата(maxntf @ Apr 9 2016, 10:36) А где ... Apr 9 2016, 09:13 jcxz Цитата(maxntf @ Apr 5 2016, 20:29) //здес... Apr 5 2016, 15:33  maxntf Цитата(jcxz @ Apr 5 2016, 18:33) Это то к... Apr 5 2016, 15:58   jcxz Цитата(maxntf @ Apr 5 2016, 21:58) При ус... Apr 5 2016, 16:08    maxntf Цитата(jcxz @ Apr 5 2016, 19:08) Так если... Apr 5 2016, 16:20     jcxz Цитата(maxntf @ Apr 5 2016, 22:20) Хотя с... Apr 5 2016, 16:37      maxntf Цитата(jcxz @ Apr 5 2016, 19:37) Как Вы с... Apr 5 2016, 17:26  zltigo QUOTE (jcxz @ Apr 5 2016, 18:33) Как-то с... Apr 5 2016, 16:43   jcxz Цитата(zltigo @ Apr 5 2016, 22:43) 1. #de... Apr 5 2016, 16:50    zltigo QUOTE (jcxz @ Apr 5 2016, 19:50) У ТС адр... Apr 5 2016, 16:56     scifi Цитата(zltigo @ Apr 5 2016, 19:56) Это см... Apr 5 2016, 17:35 Kabdim Афаик нужно после смены адреса таблицы прерываний ... Apr 6 2016, 08:23 maxntf Подключил FreeRTOS, пока практически пустой проект... Apr 12 2016, 15:09 Сергей Борщ QUOTE (maxntf @ Apr 12 2016, 17:09) Подск... Apr 12 2016, 15:36 zltigo QUOTE (maxntf @ Apr 12 2016, 18:09) Смотр... Apr 12 2016, 16:13  AVI-crak Цитата(zltigo @ Apr 12 2016, 23:13) Следу... Apr 12 2016, 17:14   zltigo Цитата(AVI-crak @ Apr 12 2016, 20:14... Apr 12 2016, 18:49    AVI-crak Цитата(zltigo @ Apr 13 2016, 01:49) Как и... Apr 12 2016, 21:39     zltigo QUOTE (AVI-crak @ Apr 13 2016, 00:39... Apr 12 2016, 21:52      AVI-crak Цитата(zltigo @ Apr 13 2016, 04:52) Это В... Apr 13 2016, 00:41       zltigo QUOTE (AVI-crak @ Apr 13 2016, 03:41... Apr 13 2016, 05:30  jcxz Цитата(zltigo @ Apr 12 2016, 22:13) Вообщ... Apr 13 2016, 06:10   zltigo QUOTE (jcxz @ Apr 13 2016, 09:10) ЗАЧЕМ??... Apr 13 2016, 06:27    jcxz Цитата(zltigo @ Apr 13 2016, 12:27) Чем? ... Apr 13 2016, 08:43     zltigo QUOTE (jcxz @ Apr 13 2016, 11:43) Есть за... Apr 13 2016, 09:01      jcxz Цитата(zltigo @ Apr 13 2016, 15:01) Вот и... Apr 13 2016, 09:19       zltigo QUOTE (jcxz @ Apr 13 2016, 12:19) И не уб... Apr 13 2016, 09:38   KnightIgor Цитата(jcxz @ Apr 13 2016, 07:10) PS: Кон... Apr 13 2016, 09:20    jcxz Цитата(KnightIgor @ Apr 13 2016, 15:20) Н... Apr 13 2016, 09:25     MrYuran Цитата(jcxz @ Apr 13 2016, 12:25) Если ес... Apr 13 2016, 09:40    zltigo QUOTE (KnightIgor @ Apr 13 2016, 12:20) С... Apr 13 2016, 09:41 maxntf Блин сам и напоролся. Смотрел конфиг из чужого про... Apr 12 2016, 15:37 maxntf Подскажите во время отладки в CoIDE где можно узна... Apr 13 2016, 13:24
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|