|
Освоение 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 5 2016, 14:29
|
Частый гость
 
Группа: Участник
Сообщений: 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
//Дальше код основной программы }
|
|
|
|
|
Apr 5 2016, 15:33
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Apr 5 2016, 15:58
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Цитата(jcxz @ Apr 5 2016, 18:33)  Это то как раз и непонятно. Что-то у Вас неправильно компилится/линкуется. Не надо делать "не под бутлоадер". Если правильная конфигурация командного файла линкёра, то после загрузки ПО JTAG-ом, PC устанавливается на точку входа (содержимое вектора сброса или начало функции main()). И это вне зависимости от того, на какие адреса линковали - хоть в FLASH хоть в SRAM хоть во внешнюю SDRAM. При установке в настройка линкера CooCox старт адреса 0x08001000, после компиляции и запуска отладки у меня во втором слове памяти по адресу 0x00000004 почему весит значение с адресом 0x00010101. Да и вообще я вижу, что в памяти какая то бяка вместо моей программы.
|
|
|
|
|
Apr 5 2016, 16:20
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Цитата(jcxz @ Apr 5 2016, 19:08)  Так если линкуете с адреса 0x08001000, то зачем смотрите на адрес 0x00000000??? И что такое старт адрес 0x08001000? У Вас там таблица векторов прерываний расположена? Смотрю на адрес 0x00000004 потому что внем записано 0x00010101 и у меня отладчик висит на этом адресе после старта. Хотя смотрел бинарник после компиляции, там вроде все верно. (по крайней мере код программы есть) Наверное я что то делаю не так. Можете поэтапно указать все изменения проекта под бутлоадер от стандартного проекта, пусть даже который создаем через визар.
|
|
|
|
|
Apr 5 2016, 16:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(maxntf @ Apr 5 2016, 22:20)  Хотя смотрел бинарник после компиляции, там вроде все верно. (по крайней мере код программы есть) Наверное я что то делаю не так. Как Вы смотрите бинарник? Как там видите адреса? Смотреть надо map-файл. По нему проверяете куда у Вас скомпоновалась таблица векторов прерываний и прочие секции кода и данных. Также там указана точка входа ПО (в IAR называется "Entry symbol"). Вот с этой точки входа отладчик и стартует. Я не знаю кокос, пользуюсь IAR.
|
|
|
|
|
Apr 5 2016, 17:26
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Цитата(jcxz @ Apr 5 2016, 19:37)  Как Вы смотрите бинарник? Как там видите адреса? Не адреса я смотрю в отладчике, а в бинарнике вижу что он совсем отличается от того что выдаёт отладчик. Данные с бинарника похожие на то что в отладчике только когда я собираю проект без смещения.
Сообщение отредактировал maxntf - Apr 5 2016, 17:32
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|