Jump to content

    

Скоростной АРМ - использование в качестве МК

Recommended Posts

greenie

Уважаемые форумчане, долго не могу разобраться в вопросе. Периодический поиск на просторах инета и форумах результата не дает, вот даже зарегистрировался, чтобы создать тему.

Исходные данные. Нужно обрабатывать изображения падающего предмета раз 20 в сек. Т.е. за 50мс нужно получить изображение с фотокамеры, провести все алгоритмы обработки и приступить к следующему кадру. Есть опыт работы с АВР и АРМ с встроенной памятью.

Думаю, что можно использовать ARM Cortex-A8 к примеру. Частота 1ГГц должно хватить. Линукс или другие ОС нежелательны, потому что во-первых, их нужно осваивать, во-вторых, нужна реакция на результат обработки изображения (вовремя включить исполнительный механизм, чтобы в полете поймать предмет). Вопрос, который меня мучает, собственно вот в чем. Могу ли я программировать этот ARM Cortex-A8 как обычный МК (вот например, сейчас на работе я использую STM32F103, раньше были атмеги и иксмеги)? Плату можно купить любую отладочную с этим или похожим АРМом, мне важна частота и объем оперативки.

ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

Share this post


Link to post
Share on other sites

kovigor
Могу ли я программировать этот ARM Cortex-A8 как обычный МК (вот например, сейчас на работе я использую STM32F103, раньше были атмеги и иксмеги)? Плату можно купить любую отладочную с этим или похожим АРМом, мне важна частота и объем оперативки.

ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

Да, можете. Если не нужен Linux, можете пойти двумя путями. Первый - писать всю инициализацию с нуля, но это сложно и долго. Второй - не грузить Linux, а грузить только U-Boot, который сам сделает за вас всю необходимую инициализацию. И свои программы запускать из-под U-Boot'а, предварительно скомпилировав их тем же CodeSourcery и загрузив в ОЗУ платы по TFTP (последнее можно сделать из командной строки U-Boot'а). отладочная плата от Freescale на i.MX53 (Cortex-A8) стоит $149. Вот ее и можно приобрести. U-Boot и Linux там уже предустановлены:

 

http://www.freescale.com/webapp/sps/site/t...X53_FAMILY#nogo

Share this post


Link to post
Share on other sites

AlexandrY
ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

 

Не вижу чтобы Keil имел сейчас компилятор для A8.

Надо либо переходить на IAR либо прикручивать к uVision компилятор ARM RVCT.

У IAR есть очень простые примеры инициализации A8.

А чтобы внешнюю флеш программировать и в IAR и в Keil есть шаблоны для разработки модулей программирования подгружаемых в RAM микроконтроллера по JTAG.

Чтобы потом инициализировать остальную периферию советую обратиться к примерам для чипов того же производителя, но на ARM9

Если это Freescale, то смотреть примеры для i.MX27

 

Share this post


Link to post
Share on other sites

sharikov
Нужно обрабатывать изображения падающего предмета раз 20 в сек. Т.е. за 50мс нужно получить изображение с фотокамеры, провести все алгоритмы обработки и приступить к следующему кадру. Есть опыт работы с АВР и АРМ с встроенной памятью.

Думаю, что можно использовать ARM Cortex-A8 к примеру. Частота 1ГГц должно хватить. Линукс или другие ОС нежелательны, потому что во-первых, их нужно осваивать, ...

ПРосто не пойму, как программировать контроллеры с внешней флэш. Вот например сейчас все просто - написал в Keil'е программу, скомпилировал, залил ее ST-Link'ом. А как это все делать для ARM Cortex-A8... И чтобы без всяких линуксов - принцип точно такой же, как обычный МК?

Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.

Без посторонней нагрузки под линуксом время реакции будет зависеть только от вашего алгоритма.

Share this post


Link to post
Share on other sites

SergeyDDD
Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.

 

Глупости.

Все зависит от того, какая периферия нужна, так как с ней больше всего работы.

А по объему работы Cortex-A8 это или Cortex-M3 разница не особо большая.

 

Kovigor посоветовал отладочную плату Freescale MCIMX53-START-R за $149 (реальная цена будет несколько больше).

Действительно очень хороший вариант, правда есть два но...

- Пересмотрите схему платы и документацию процессора, так как интерфейс CMOS сенсора выведен не полностью на плате.

- На плате используется не очень доставаемый низкопрофильный разъем для вывода периферии. Для решения проблемы я вынужден был докупить плату HDMI с ответником этого разъема.

У Freescale довольно неплохая поддержка своей продукции. Для быстрого запуска документации достаточно.

Я бы наверное сначала посоветовал бы ознакомится с Linux SDK этой платы и запуститься под Линуксом.

Думаю с этим вариантом сэкономите массу времени. А потом будет виднее - нужна ОС или нет.

 

И еще...

К этому процессору существует библиотека "On-Board Diagnostics Suite (OBDS) for the Freescale i.MX53 SBRTH LCB platform" с исходниками периферии.

* Debug UART (used for communication with the host PC), transmit and receive test

* DDR test

* Audio out only test

* IPU TFT (Chunwa WVGA), LVDS and VGA display test

* I2C peripheral connectivity test

* MMC/SD test for SD Slot 2, where SD Slot 1 implicitly tested as OBDS boots from SD

* LED test – test for the on board GPIO controlled LED

* Ethernet FEC loopback test (requires loopback cable)

* USBH1 Device enumeration test (requires USB device, like USB-mouse connected to top USB port of J2)

* SRTC test

* SATA test

* DA9053 PMIC device ID check test

* HDMI

Share this post


Link to post
Share on other sites

AlexandrY
Вы пытаетесь идти по неправильному пути. Для камней класса Cortex-A8 работать без linux/winCE можно, но глупо. Камни зело тяжелы. На программировании аппаратных блоков видеопрецессинга ввода с камеры вы закопаетесь. В операционках программированием аппратных интерфейсов занимался вендор при создании bsp, реалистичный путь - использовать то что дает производитель.

Без посторонней нагрузки под линуксом время реакции будет зависеть только от вашего алгоритма.

 

Забавная логика.

Все знают, что нормальный, безглючный и полнофункциональный BSP под линукс стоит диких денег особенно если под заказную платформу.

В данном случае речь видимо идет о оригинальной камере.

Но даже получив BSP придется платить дальше поскольку драйверы для графических ускорителей будут в бинарном виде и самим их поддерживать никак не возможно будет. Уже не говорю о цене инструментов, того же JTAG который мог бы отлаживать под линуксом.

 

Еще три года назад Segger портировал свою RTOS на Cortex-A8, раньше чем чипы вообще на доступном рынке появились. Т.е. для серьезных, корпоративных клиентов.

А embOS от Segger-а это по сути работа с голым железом без всяких MMU и прочих виртуализаций.

Уже не говорю о том что такие серьезные конторы как Mentor Graphics вообще свою RTOS портируют на все новые чипы с Cortex-A8.

А Nucleus OS от Mentor Graphics это в сущности тот-же старый добрый uc/OS-II работающий напрямик с железом без виртуализаций.

 

Share this post


Link to post
Share on other sites

greenie

Может, использовать линукс правильнее с данным процессором. Просто я имел дело только с МК, из армов это только stm32f100 и stm32f103. А в этой работе (кстати, это аспирантура в свободное от работы время, а в универах с закупом нужного оборудования у нас дело плохо обстоит, поэтому надо по-минимуму за свой счет и нельзя ошибиться в выборе компонентов)))) мне от проца нужно только управлять ногами, ну и пару уартов иметь - двухстрочный дисплейчик подключить и с компом по компорту общаться. Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.

Share this post


Link to post
Share on other sites

greenie

Кстати, от KEIL придется отказаться, наверное, там бесплатно только до 32КБ, IAR тоже по причине платности не подходит. Сейчас ищу инфу что такое CodeSourcery и с чем его едят)

Share this post


Link to post
Share on other sites

sharikov
Может, использовать линукс правильнее с данным процессором. Просто я имел дело только с МК, из армов это только stm32f100 и stm32f103.

...

поэтому надо по-минимуму за свой счет и нельзя ошибиться в выборе компонентов)))) мне от проца нужно только управлять ногами, ну и пару уартов иметь - двухстрочный дисплейчик подключить и с компом по компорту общаться. Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.

у как все запущено...

Ногодрыгом получать изображение скамеры...

Наверно вы думаете что гигагерцовый кортекс и ногами машет на гигагерце...

Увы, это далеко не так.

 

Share this post


Link to post
Share on other sites

kovigor
Сейчас ищу инфу что такое CodeSourcery и с чем его едят)

Компилятор такой. Для i.MX53 качайте виртуальную машину (Ubuntu) с сайта FreeScale, ставьте в ней CodeSourcery, собирайте библиотеку NewLib и пробуйте писать простейшие программки:

 

Ubuntu:

http://www.freescale.com/webapp/sps/site/p...esign_Tools_Tab

Выберите: "Board Support Packages"

 

CodeSourcery:

https://sourcery.mentor.com/GNUToolchain/su...757fcaeae081292

Выберите: "Download Sourcery CodeBench Lite 2012.03-56"

 

Вот статья, по которой я разбирался с newlib:

https://balau82.wordpress.com/2010/12/16/us...metal-programs/

Share this post


Link to post
Share on other sites

KRS

greenie,

посмотрите ARM DS-5, там есть все необходимое и для bare-metal

и если есть beagleboard (а освоение Cortex-A8 IMHO проще всего начать с нее или beaglebon), то там все есть для быстрого старта т.е. за 5 мин можно Hello World! написать и отладить через gdb server прямо на плате (образы angstrom тоже есть)

 

еще есть среда от TI - Code Composer Studio, тоже сейчас на эклипсе, там все есть для быстрого старта с beaglebone, в отличии от DS-5 поддерживает, например XDS100 (просто FTDI) в качестве железного отладчика. Для beaglebon там есть много примеров инициализации и т.п. что бы без линукса работать!

 

Share this post


Link to post
Share on other sites

dinam
Камеру я тоже не выбрал, думаю что-то вроде матрицы LUPA-300. Если на плате порты ввода\вывода выведены, я ее как-нибудь прицеплю... Конечно, вся работа с камерой вручную - кадры считывать с ног, но я не нашел скоростную камеру с каким-нибудь интерфейсом, которым я могу к ней прицепиться и получать изображения так быстро (20 раз в секунду) и еще успевать все обработать до прихода нового.
Насчет матрицы LUPA-300. Я попробовал штук 6 разных матриц разных производителей. Так вот эта оказалась самой паршивой по качеству изображения, может и я что-то где-то накосячил, но с другими такого не было. Плюс был аппаратный глюк в самой матрице, да и её производитель поменялся. Так что с поддержкой, будет наверное совсем плохо.

Рекомендую попробовать MT9V034. Дешевая, легко покупаемая, беспроблемная.

Share this post


Link to post
Share on other sites

SergeyDDD
Кстати, от KEIL придется отказаться, наверное, там бесплатно только до 32КБ, IAR тоже по причине платности не подходит. Сейчас ищу инфу что такое CodeSourcery и с чем его едят)

 

Читайте доки Фрискейла. Там все вполне доступно разжевано

 

На семинаре по iMX53 работали под виндой в Eclipse (Win32), а компилятор был на виртульной машине, работающей под Linux Ubuntu.

С такой связкой примеры собирались как для Linux так и для Android.

 

Теоретически можно воспользоваться компилятором и тулчейном Yagarto Win32 (Known ARM CPUs (for use with the -mcpu= and -mtune= options): ... cortex-a9, cortex-a8, cortex-a5, ...) + Eclipse.

Если iMX53 без ОС, то и jLink для отладки

Share this post


Link to post
Share on other sites

andrewlekar

Мне кажется или описанную задачу можно с наименьшим геммороем решить на ПК? По-моему, вполне реально обрабатывать видеопоток с указанной скоростью и сервоприводом пошевелить с заданной реакцией.

Share this post


Link to post
Share on other sites

sasamy
И еще...

К этому процессору существует библиотека "On-Board Diagnostics Suite (OBDS) for the Freescale i.MX53 SBRTH LCB platform" с исходниками периферии.

 

Используя эти примеры максимум что вы сделаете- аналог u-boot, который ни по скорости ни по функционалу рядом не лежит с Linux. Как вы собираетесь использовать 2D,3D графические процессоры, видеопроцессор ? к примеру контроллер dma (sdma - smart dma) это отдельный 16 битный risc-процессор для которого фирмвари пишут специально обученые люди :) с тем же видеозахватом и программированием IPU заплюхаетесь разбираться.

Edited by sasamy

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.