NXP LPC1768 быстрый старт

32-битные ARM-совместимые микроконтроллеры (AT91, ARM7, ARM9), а также микропроцессоры вплоть до ARM64

Moderator: Shaos

Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

NXP LPC1768 быстрый старт

Post by Tronix »

С ARM ни разу не сталкивался, и тут можно сказать сразу в огонь - нужно некий код с ARM7 перенести на Cortex-M3, а если конкретнее, то на сабж. Старый код писан в IAR, крутиться в бесконечном цикле. Есть какой-то планировщик задач, но в целом - это цикл. Вводят в ступор все эти IRQ, тонны инициализации периферии... Ессно все это не собирается под новое ядро.

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

Как поступить?

PS: На сабже светодиодом поморгал, так что hello world почти пройден...
lbodnar
Novelist
Posts: 39
Joined: 24 Dec 2004 13:58
Location: UK

Post by lbodnar »

А на каком языке все это написано?

http://www.google.co.uk/search?q=migrat ... +cortex+M3

С моей точки зрения нужно попытаться перенести код с минимальными изменениями. Придумывать его заново на неизвестной архитектуре не имеет смысла. Определите отличия и сделайте модификации / заглушки или вставьте код для конверсии деталей одной архитектуры в другую на уровне регистров, управления периферией и тп.

Я ARMы знаю плохо но миграция на Cortex в то время очень хорошо была организована. Я только помню что в Cortex-ах остался Thumb а полноценный режим был уничтожен. Но если у Вас там все на С или выше то можно об этом не заботиться на первом этапе.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Код писан на Си. Но в кортексах они переделали работу с прерываниями, а на них там многое завязано...
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

В общем, все таки заморочился с RTOS. Сначала копнул в сторону некой ChibiOS, нашел вроде бы даже порт под LPC1768. Собрать увы не смог, не помню уже что за ошибки, но как то не сраслось. Хотя подкупила вначале наличием HAL, и соответственно легкостью переносимости кода в дальнейшем на любой другой проц.

Поэтому успокоился и начал ковырять FreeRTOS. День ушел на то, чтобы спаять JTAG и поморгать светодиодом с помощью таска в ней. Потом собрал какой-то пример с web-сервером и брикнул ковыряемую плату, так что в H-JTAG проц определяется, но во флешере наглухо не чекается и не считывается-прошивается. Пол дня угрохал на анбрик с помощью магии и бубна. Седня день угрохал на то, что бы как-то скрестить дрова от LPCOpen с FreeRTOS, в частности очень интересен UART для начала. Добился того, что хоть собралось без ошибок. UART не заработал, наверное с инициализацией что-то.. Будем смотреть...

Да, ARM это не PIC....
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Да, старт оказался нифига не быстрым. Седня почти пол дня пытался хоть что-то вывести в UART создав таск в FreeRTOS. В итоге получилось выводить. Еще один шаг пройден. Теперь нужно собирать данные из UART. Смотрел в сторону FreeRTOS+IO из FreeRTOS-Plus, но пока не решился. Сделал через обработчик IRQ. Подсознательно чувствую, что это говнокод и так делать не гуд, но зато это работает. Может в дальнейшем все-таки разберусь с FreeRTOS-IO. Теперь делаю CLI aka shell....
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Весь день угрохал чтоб завести SSP в режиме SPI. Не завел. Делал уже тупо по ману, писал сам в конф регистры что надо и потом писал в DR в цикле значения - смотрю осцилом: На MISO - постоянный 0, CLCK - ноль. Херня какая-то.
lbodnar
Novelist
Posts: 39
Joined: 24 Dec 2004 13:58
Location: UK

Post by lbodnar »

А peripheral clock для SPP включен или нет? После сброса он выключен по умолчанию.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Включен. Таки завел. Внезапно оказалось, что CS aka SSEL распаяна не на SSEL SSP0, а рядом на какую-то левую ногу. Приходится дергать ногой самому. Не знаю как на это смотрит FreeRTOS, наверно так делать нельзя, но работает. По крайней мере флеха отдает правильный ID. И что-то читает. Завтра считаю флеху на программаторе и сравню с тем, что читается.
lbodnar
Novelist
Posts: 39
Joined: 24 Dec 2004 13:58
Location: UK

Post by lbodnar »

S в SSEL означает Slave. В master mode CS закатывается вручную с любого доступного I/O контакта. В PIC то-же самое.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Post by Tronix »

Век живи - век учись ;)