реклама на сайте
подробности

 
 
> Освоение ARM контроллеров
maxntf
сообщение Mar 29 2016, 14:17
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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 так как на мой взгляд они наиболее популярны, а по второму производителю маловато информации в сети.
Заранее благодарен за любую помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
maxntf
сообщение Apr 5 2016, 14:29
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Вот два кода, первый бутлоадера, а второй моя программа. Так нужно делать?

Код
//В проекте бутлоадера
int main(void)
{
//Здесь код бутлоадера



//здесь переопределение адреса таблицы векторов прерываний
//и переход к выполнению основной программы
__disable_irq ();
__set_MSP( *(uint32_t*)(0x08001000) );
SCB->VTOR = 0x08001000;
(*(void(*)(void))( *(uint32_t*)(0x08001000+4) ))();
}

//В проекте с основной программой
int main(void)
{

SCB->VTOR = 0x08001000;//и в линкере проекта основной программы установить адресацию с 0x08001000

//Дальше код основной программы
}
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 5 2016, 15:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(maxntf @ Apr 5 2016, 20:29) *
//здесь переопределение адреса таблицы векторов прерываний
//и переход к выполнению основной программы
__disable_irq ();
__set_MSP( *(uint32_t*)(0x08001000) );
SCB->VTOR = 0x08001000;
(*(void(*)(void))( *(uint32_t *)(0x08001000+4) ))();
}

Как-то слишком кудряво и лишнее разименование. Надо быть проще:
((void(*)(void))*(void **)0x08001004)();
И, как тут уже сказали, основная программа должна выставлять VTOR какой ей надо (как и все прочие регистры периферии), а не бутлоадер.
И какое-то у Вас странное содержимое SP. Вы уверены, что по этим адресам у Вас находится ОЗУ? Обычно в МК с ядром Cortex-M по этим адресам находится Flash.
И насчёт __disable_irq () - не уверен, что это будет работать в Cortex-M. Обычно для Cortex-M используют __disable_interrupt().
А __disable_irq() и __disable_fiq() - это для ARM7/9 (и Cortex-A наверное).

Цитата(maxntf @ Apr 5 2016, 19:32) *
Почитал про систему прерываний Cortex, она кардинально от PIC отличается но в принципе все понятно.

Кроме того: система прерываний Cortex-M кардинально отличается от системы прерываний Cortex-A.

Цитата(maxntf @ Apr 5 2016, 20:55) *
- когда я ставлю в линкере основного проекта адрес 0x08001000, то после компиляции при переходе в отладку, у меня все весит по адресу 0x00000000. Ну это и понятно, потому что там ничего нет. Тогда как отлаживать? Сначала делаем программу как обычную не под бутлоадер, то есть не меняя в ней адрес таблицы векторов и не трогая линкер

Это то как раз и непонятно. Что-то у Вас неправильно компилится/линкуется.
Не надо делать "не под бутлоадер". Если правильная конфигурация командного файла линкёра, то после загрузки ПО JTAG-ом, PC устанавливается на точку входа (содержимое вектора сброса или начало функции main()). И это вне зависимости от того, на какие адреса линковали - хоть в FLASH хоть в SRAM хоть во внешнюю SDRAM.
Go to the top of the page
 
+Quote Post
maxntf
сообщение Apr 5 2016, 15:58
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Цитата(jcxz @ Apr 5 2016, 18:33) *
Это то как раз и непонятно. Что-то у Вас неправильно компилится/линкуется.
Не надо делать "не под бутлоадер". Если правильная конфигурация командного файла линкёра, то после загрузки ПО JTAG-ом, PC устанавливается на точку входа (содержимое вектора сброса или начало функции main()). И это вне зависимости от того, на какие адреса линковали - хоть в FLASH хоть в SRAM хоть во внешнюю SDRAM.

При установке в настройка линкера CooCox старт адреса 0x08001000, после компиляции и запуска отладки у меня во втором слове памяти по адресу 0x00000004 почему весит значение с адресом 0x00010101. Да и вообще я вижу, что в памяти какая то бяка вместо моей программы.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 5 2016, 16:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(maxntf @ Apr 5 2016, 21:58) *
При установке в настройка линкера CooCox старт адреса 0x08001000, после компиляции и запуска отладки у меня во втором слове памяти по адресу 0x00000004 почему весит значение с адресом 0x00010101. Да и вообще я вижу, что в памяти какая то бяка вместо моей программы.

Так если линкуете с адреса 0x08001000, то зачем смотрите на адрес 0x00000000???
И что такое старт адрес 0x08001000? У Вас там таблица векторов прерываний расположена?
Go to the top of the page
 
+Quote Post
maxntf
сообщение Apr 5 2016, 16:20
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Цитата(jcxz @ Apr 5 2016, 19:08) *
Так если линкуете с адреса 0x08001000, то зачем смотрите на адрес 0x00000000???
И что такое старт адрес 0x08001000? У Вас там таблица векторов прерываний расположена?


Смотрю на адрес 0x00000004 потому что внем записано 0x00010101 и у меня отладчик висит на этом адресе после старта.
Хотя смотрел бинарник после компиляции, там вроде все верно. (по крайней мере код программы есть)
Наверное я что то делаю не так.
Можете поэтапно указать все изменения проекта под бутлоадер от стандартного проекта, пусть даже который создаем через визар.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 5 2016, 16:37
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(maxntf @ Apr 5 2016, 22:20) *
Хотя смотрел бинарник после компиляции, там вроде все верно. (по крайней мере код программы есть)
Наверное я что то делаю не так.

Как Вы смотрите бинарник? Как там видите адреса?
Смотреть надо map-файл. По нему проверяете куда у Вас скомпоновалась таблица векторов прерываний и прочие секции кода и данных.
Также там указана точка входа ПО (в IAR называется "Entry symbol"). Вот с этой точки входа отладчик и стартует.
Я не знаю кокос, пользуюсь IAR.
Go to the top of the page
 
+Quote Post
maxntf
сообщение Apr 5 2016, 17:26
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008



Цитата(jcxz @ Apr 5 2016, 19:37) *
Как Вы смотрите бинарник? Как там видите адреса?

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

Сообщение отредактировал maxntf - Apr 5 2016, 17:32
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - 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
|- - 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
- - ViKo   Как можно контролировать стек (не задач в RTOS), к...   Apr 13 2016, 07:25
|- - zltigo   QUOTE (ViKo @ Apr 13 2016, 10:25) Как мож...   Apr 13 2016, 07:50
|- - jcxz   Цитата(zltigo @ Apr 13 2016, 13:50) Также...   Apr 13 2016, 09:05
|- - zltigo   QUOTE (jcxz @ Apr 13 2016, 12:05) А с как...   Apr 13 2016, 09:08
- - maxntf   Подскажите во время отладки в CoIDE где можно узна...   Apr 13 2016, 13:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 15:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01533 секунд с 7
ELECTRONIX ©2004-2016