Author |
Message |
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
С ARM ни разу не сталкивался, и тут можно сказать сразу в огонь - нужно некий код с ARM7 перенести на Cortex-M3, а если конкретнее, то на сабж. Старый код писан в IAR, крутиться в бесконечном цикле. Есть какой-то планировщик задач, но в целом - это цикл. Вводят в ступор все эти IRQ, тонны инициализации периферии... Ессно все это не собирается под новое ядро.
Поэтому стоит вопрос: а) найти где-то скелет под сабж и делать по образу и подобию старого кода, то есть вкручивать свой планировщик задач, бесконечный цикл.
б) заюзать какую-нибудь RTOS, например FreeRTOS. Усугубляется положение еще и тем, что кроме как знакомого названия (FreeRTOS) больше мне это ни о чем не говорит. Вроде как система реального времени, значит наверное можно свои процессы выполнять и упорядочивать - вот все что я пока о ней думаю.
Как поступить?
PS: На сабже светодиодом поморгал, так что hello world почти пройден...
|
09 Oct 2014 13:12 |
|
|
lbodnar
Novelist
Joined: 24 Dec 2004 13:58 Posts: 39 Location: UK
|
А на каком языке все это написано?
http://www.google.co.uk/search?q=migrating+arm7+to+cortex+M3
С моей точки зрения нужно попытаться перенести код с минимальными изменениями. Придумывать его заново на неизвестной архитектуре не имеет смысла. Определите отличия и сделайте модификации / заглушки или вставьте код для конверсии деталей одной архитектуры в другую на уровне регистров, управления периферией и тп.
Я ARMы знаю плохо но миграция на Cortex в то время очень хорошо была организована. Я только помню что в Cortex-ах остался Thumb а полноценный режим был уничтожен. Но если у Вас там все на С или выше то можно об этом не заботиться на первом этапе.
|
09 Oct 2014 13:48 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Код писан на Си. Но в кортексах они переделали работу с прерываниями, а на них там многое завязано...
|
09 Oct 2014 22:07 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
В общем, все таки заморочился с RTOS. Сначала копнул в сторону некой ChibiOS, нашел вроде бы даже порт под LPC1768. Собрать увы не смог, не помню уже что за ошибки, но как то не сраслось. Хотя подкупила вначале наличием HAL, и соответственно легкостью переносимости кода в дальнейшем на любой другой проц.
Поэтому успокоился и начал ковырять FreeRTOS. День ушел на то, чтобы спаять JTAG и поморгать светодиодом с помощью таска в ней. Потом собрал какой-то пример с web-сервером и брикнул ковыряемую плату, так что в H-JTAG проц определяется, но во флешере наглухо не чекается и не считывается-прошивается. Пол дня угрохал на анбрик с помощью магии и бубна. Седня день угрохал на то, что бы как-то скрестить дрова от LPCOpen с FreeRTOS, в частности очень интересен UART для начала. Добился того, что хоть собралось без ошибок. UART не заработал, наверное с инициализацией что-то.. Будем смотреть...
Да, ARM это не PIC....
|
11 Oct 2014 11:57 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Да, старт оказался нифига не быстрым. Седня почти пол дня пытался хоть что-то вывести в UART создав таск в FreeRTOS. В итоге получилось выводить. Еще один шаг пройден. Теперь нужно собирать данные из UART. Смотрел в сторону FreeRTOS+IO из FreeRTOS-Plus, но пока не решился. Сделал через обработчик IRQ. Подсознательно чувствую, что это говнокод и так делать не гуд, но зато это работает. Может в дальнейшем все-таки разберусь с FreeRTOS-IO. Теперь делаю CLI aka shell....
|
12 Oct 2014 07:27 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Весь день угрохал чтоб завести SSP в режиме SPI. Не завел. Делал уже тупо по ману, писал сам в конф регистры что надо и потом писал в DR в цикле значения - смотрю осцилом: На MISO - постоянный 0, CLCK - ноль. Херня какая-то.
|
16 Oct 2014 23:29 |
|
|
lbodnar
Novelist
Joined: 24 Dec 2004 13:58 Posts: 39 Location: UK
|
А peripheral clock для SPP включен или нет? После сброса он выключен по умолчанию.
|
17 Oct 2014 01:00 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Включен. Таки завел. Внезапно оказалось, что CS aka SSEL распаяна не на SSEL SSP0, а рядом на какую-то левую ногу. Приходится дергать ногой самому. Не знаю как на это смотрит FreeRTOS, наверно так делать нельзя, но работает. По крайней мере флеха отдает правильный ID. И что-то читает. Завтра считаю флеху на программаторе и сравню с тем, что читается.
|
17 Oct 2014 12:32 |
|
|
lbodnar
Novelist
Joined: 24 Dec 2004 13:58 Posts: 39 Location: UK
|
S в SSEL означает Slave. В master mode CS закатывается вручную с любого доступного I/O контакта. В PIC то-же самое.
|
17 Oct 2014 12:36 |
|
|
Tronix
Doomed
Joined: 18 Nov 2013 02:38 Posts: 662 Location: Москва
|
Век живи - век учись
|
17 Oct 2014 12:39 |
|
|