1 Востаннє редагувалося vsprosto (05.09.2013 21:59:39)

Тема: Мікроконтролери і паскаль

Збірка компілятора Паскаль для виготовлення програм  для мікроконтролерів ARM7, а саме STM32 які побудовані на ядрі CortexM3.

На данний момент це найдешевші 32 бітні мікроконтролери які можна придбати. В Україні за ціною менше 20 грн за штуку(STM32F100C4 -16 кб ПЗУ 4кб оперативної памяті, UART,DAC,ADC 12bit і куча всього). В інтернеті можна зайти кучу прикладів мовою Сі дуже мало на асемблері, та взагалі немає на паскалі. Відповідно і середовищ розробки так само.
Для паскаля знайшов тільки одне і то платне (http://www.mikroe.com/mikropascal/arm/).

А як же «вільне програмне забезпечення» - знайомтесь - «Free Pascal.»
http://freepascal.org/

Використовуючи його чудову можливість як –крос-компіляція ми зможемо програмувати мікроконтролери. Кроскомпіляція – це спосіб створення програм для платформ відмінних від поточної. Наприклад ми працюємо під Windows XP 32bit, а компілюємо під платформу FREE BSD 64bit. 

Ну що ж почнемо.
1. Якщо у вас , ще не має  Free Pascal заходим на сторінку завантаження та зкачуємо останью стабільну версію: http://freepascal.org/download.var та встановлюємо.
На даний момент це версія 2.6.2, але яка на жаль дуже слабко підтримує ARM, але вона нам потрібна для збірки компілятора для нашого мікроконтролера.

2. Завантажуємо всі початкові коди компілятора та всіх стандартних бібліотек.
Не пізніше версії 2.7.1.
ftp://ftp.freepascal.org/pub/fpc/snapsh … cbuild.zip
І розпаковуємо на диск e:\

3. завантажуємо модулі для крос компіляції  заходим по посиланню
http://svn.freepascal.org/svn/fpcbuild/ … 386-win32/
і закачуємо все що починається на «arm-embedded». Тут знаходяться асемблер, лінковщик, «викидачка» символів наладки(striper) і тд.

4. Спочатку збираємо новий компілятор під вашу платформу, в командній стрічці вводимо
E:

cd e:\fpcbuild\fpcsrc

("C:\FPC\2.6.2\bin\i386-win32\make.exe"  TARGETDIR=e:\pp all NODEBUG=1)

C:\FPC\2.6.2\bin\i386-win32\make.exe fpc=C:\FPC\2.6.2\bin\i386-win32\fpc.exe TARGETDIR=e:\pp clean install NODEBUG=1

Тут e:\pp -де в нас появиться новий компілятор, змінюєте згідно своїх потреб.

5. Далі потрібно зкопіювати все з каталогу e:\fpcbuild\install\binw32 в  e:\pp\bin\i386-win32\

 Copy  e:\fpcbuild\install\binw32\*.*  e:\pp\bin\i386-win32\

6. Створюємо командний файл для збору компілятора ARM v7 

Copy con armco.cmd <enter>
set fpcbin=e:\pp\bin\i386-win32\
%fpcbin%make  FPC=%fpcbin%fpc  CROSSINSTALL=1  OS_TARGET=embedded CPU_TARGET=arm  SUBARCH=armv7m NOGDB=1 PREFIX=e:\pp CROSSOPT="-XParm-embedded-"   buildbase installbase             
<ctrl>+Z

7. Запускаємо скрипт на виконання

 armco.cmd

В результаті у нас з’явиться в каталозі e:\pp\units\ каталог arm-embedded

8. І останнє зкачуємо з  http://j-software.dk/ файл stm32f103.pas
http://j-software.dk/stm32f103.php

Ну тепер все готове для компіляції.
Далі буде …

2

Re: Мікроконтролери і паскаль

vsprosto
Спробуйте CodeTyphon, можливо вдасться зробити усе те саме кількома кліками.
Крім того, скоро вийде Delphi XE5, в якій також буде ARMv7-сумісний компілятор для Андроїда.

3

Re: Мікроконтролери і паскаль

Тайфун він на то і тайфун, що в одній версії працює кроскомпіляція ембедед, а в іншій ні.
Ну це по перше.
А по друге потрібно наприклад вам для контролера LPC 21x а там другі параметри використати треба, що в тайфуні не передбачено.
Там також не передбачено й компіляції "кнопкою".

Щодо делфі в них зараз здається є компіляція під ІОS, але то тільки з підтримкою зовнішнього компілятора, а саме Free Pascal.

А тут є простір для маневру, хто хоче може це все загнати в командний файл з налаштуванням логування для встановлення.
А якщо хто захоче може написати свій GETW(як в лінусі) - то й закачку автоматизувати.
(до речі його написати нескладно за допомогою бібліотеки synapse)

4

Re: Мікроконтролери і паскаль

Ну нехай тоді буде на той випадок, якщо в когось не вийде зробити за вашою інструкцією. В CodeTyphon можна подивитися готові скрипти, та й джерельні коди у нього в комплекті хоч трохи протестовані. Якщо ж качати транк, то можна напоротися на непрацездатну версію.

Подякували: Очі.завидющі1

5

Re: Мікроконтролери і паскаль

Далі буде ???

6

Re: Мікроконтролери і паскаль

з ібашу, комілятор паскаль для CUDA повинен називатись PasCUDA

Подякували: DOP, Master_Sergius2

7

Re: Мікроконтролери і паскаль

А що треба? Що цікавить, пишіть.

8

Re: Мікроконтролери і паскаль

reverse2500 написав:

з ібашу, комілятор паскаль для CUDA повинен називатись PasCUDA

Та перейшли всі вони на OpenCL і в паскалі можна використовувати, а підпрограмму для паралельних розрахунків потрібно писати на псевдо Сі от де паскудство.

9

Re: Мікроконтролери і паскаль

Цікавить повноцінний огляд мікроконтролера з притомною архітектурою, бо початківці досі починають з 8051, який мав залишитися в 80-х роках. Подробиці тут. Переконувати цю людину в найближчий рік є нераціонально, але щоб таке не повторювалося треба нормальний огляд якоїсь архітектури та чіпів на її основі.

10

Re: Мікроконтролери і паскаль

0xDADA11C7 написав:

Цікавить повноцінний огляд мікроконтролера з притомною архітектурою, бо початківці досі починають з 8051, який мав залишитися в 80-х роках. Подробиці тут. Переконувати цю людину в найближчий рік є нераціонально, але щоб таке не повторювалося треба нормальний огляд якоїсь архітектури та чіпів на її основі.

мав залишитись, але
[url]http://www.atmel.com/v2PFResults.aspx#(actives:!(8238,8394,8362,8282,8431,8300,8358,8392,8378,8445,8236,8449,8474,8248,8264,8447,8256,8254,8286,8462,8429,8458,8466,8400,8302,8278),data:(area:'',category:'34864[34282]',pm:!((i:8238,v:!(3,11)),(i:8394,v:!(2,13)),(i:8362,v:!(11,24)),(i:8282,v:!(11,12)),(i:8431,v:!(4,17)),(i:8300,v:!(1,9)),(i:8358,v:!(5,29)),(i:8378,v:!n),(i:8449,v:!(2,4)),(i:8474,v:!(0)),(i:8256,v:!(1)),(i:8254,v:!(6,8)),(i:8462,v:!(1)),(i:8429,v:!(1)),(i:8458,v:!(1)),(i:8466,v:!(1)),(i:8278,v:!(1))),view:list),sc:1)[/url]
на космодромі ціни
http://www.kosmodrom.com.ua/prodlist.ph … B%E0%E4%F3

а по stm32 є й українською огляд
http://indrekis2.blogspot.com/2012/10/s … onics.html

http://fpga.in.ua/dsp/procesori-stm32-a … eriya.html

Подякували: 0xDADA11C71