"Осваиваем AT91SAM7" или "Для тех, кому ресурсов AVR уже не хватает"

Tahoe, 16.02.2006 21:27
Много хорошего есть в этих машинках. И цена вполне разумная ( от $5-6 в розницу ), и USB встроеный есть ( причём с возможностью программирования через него, а если учесть, что стоимость какого-нить USB камня FTxxx около $5, то получается примерно та же стоимость, что и обычный AVR с навешеным USB, только намного лучше, т.к. есть DMA ), и ещё много чего вкусного. В общем если кто ещё не видел - "рекомендуется лучшими собаководами".

P.S.
Для сомневающихся - корпус у этих камней вполне паябельный. Обычный QFP.
Всё что мы соместно накропАли по мотивам данной ветки выкладывается здесь (http://svn.berlios.de/svnroot/repos/ixbtscope/trunk/) .
Формат в основном OrCAD. Рядом постараемся выкладывать в pdf-формате (http://www.adobe.com/products/acrobat/readstep2.html) .
Возникнет желание воспользоваться, присоединиться или спросить - не стесняйтесь.
Ссылки по теме из этой ветки и не только:

ОПИСАНИЕ
Описание на сайте производителя. ENG (http://www.atmel.com/dyn/products/product_card.asp?part_id=3521)
Микроконтроллеры из семейства AT91 на основе ядра ARM® Thumb® (http://sub.chipdoc.ru/html.cgi/txt/ic/Atmel/micros/arm/AT91SAM7S32_321_64_128_256.htm?fid=16)
Описание семейства на atmel.ru. RUS (http://www.atmel.ru/Articles/Atmel32.htm)
Краткий обзор на Rainbow. RUS (http://www.rtcs.ru/news_detail.asp?id=931)
Справочное руководство по процессору ARM7TDMI. RUS (http://www.gaw.ru/html.cgi/txt/doc/micros/arm/arh_7dtmi/index.htm)


СРАВНЕНИЕ
Что больше понравилось LPCxxxx или AT91SAM7xxx? (http://www.caxapa.ru/echo/arm.html?id=32290)
ЧТО удобнее at91sam7s ИЛИ LPC2148, ПОМОГИТЕ выбрать (http://electronix.ru/forum/index.php?s=efe6beeb46bad755bf4730935037e316&showtopic=13570)
STR71x против SAM7 - плюсы и минусы? (http://www.caxapa.ru/echo/arm.html?id=54984)
Выбор между LPC21xx и AT91sam7s, На чем остановиться? (http://electronix.ru/forum/index.php?showtopic=14154)
ARM плюсы и минусы (http://www.caxapa.ru/echo/arm.html?id=43654&1144562497)
Сводная таблица по разным МК, в т.ч. AT91SAM7 (http://www.caxapa.ru/mcudb/?name=&comment=&arch=6&mips=&mem=&otp=&ram=&eeprom=&temp=&price=0&prt=&pins=&pitch=&uart=&can=&usb=&adc=&adch=&capcom=&timer=&lcd=&dio=&minv=0&maxv=0)


EVALBOARD
megajohn - Отладочная плата для AT91SAM7S64 (FREE) (http://members.caxapa.ru/megajohn/iv/)
Tahoe - AT91SAM7LIGHT, отладочная плата, OrCAD (FREE) (http://svn.berlios.de/svnroot/repos/ixbtscope/trunk/devboard)

ATMEL - AT91SAM7S-EK (http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3784)
OLIMEX - EB SAM7-H64 (http://olimex.com/dev/sam7-h64.html)
OLIMEX - EB SAM7-P64 (60 USD) (http://olimex.com/dev/sam7-p64.html)
MCPros - Atmel AT91SAM7S64 (ARM) Prototype Board SAM7-P64 (59.95 USD) (http://microcontrollershop.com/product_info.php?products_id=1198)
PROPOX - EVBsam7s (http://www.propox.com/products/t_134.html)


ПРОГРАММАТОР.HW
SAM-BA - встроеный в кристалл загрузчик.


ПРОГРАММАТОР.SW (http://www.at91.com/Pages/products/microcontroller/AT91SAM/AT91SAM7S/at91sam7s.html#flash2)
SAM-BA Windows Application flashing through USB or COM-port (http://www.at91.com/tools/software/sam_ba/Install%20SAM-BA.exe)
SAM-PROG Multi-Flashing solution through USB (http://www.at91.com/tools/software/samp_prog/Install%20sam_prog.exe)

Ветка AT91SAM7S Boot Assistant (SAM-BA) на форуме www.at91.com ENG (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?t=674)
Description of the SAM-BA USB Bootloader Protocol for AT91SAM7S Chip (http://www.varsanofiev.com/inside/at91_sam_ba.htm)


TOOLS.JTAG
(LPT) Wiggler - простейший адаптер (http://projects.caxapa.ru/index.html?ID=9) .
... если вдруг схема Wiggler показалась сложной (http://forum.ixbt.com/topic.cgi?id=48:5248:236#236) .
... Маленькая доработка Wiggler (http://www.atmel.ru/FAQ/FAQ.htm#n6) . И его "признает" IAR EWARM.
... H-JTAG (http://hjtag.blogspot.com/) программный RDI-агент для Wiggler. И, теоретически, с Wiggler сможет работать любая IDE.
... [upd] Парочка хороших новостей про H-JTAG.
Во-первых, автор теперь обзавёлся "специально обученым" сайтом (http://www.hjtag.com) , где на данный момент выложена версия 0.4.3, в которой чего-то там наисправлялось, как раз по части Атмеловских камней. Ещё порадовало, что теперь поддерживается цепочка ( JTAG chain ). Проверил лично, в цепочке висели SAM7S и Altera MAX-II, всё работает.
Во-вторых, теперь в комплект входит ещё и flasher, так что можно не только отлаживаться, но и программировать "дядюшку SAM-а".

(LPT) Универсальный кабель для внутрисхемн. программирования (EPM3032) (http://members.caxapa.ru/megajohn/iv/programmator/12_p56-59.pdf) .
(USB) SEGGER - J-Link (http://www.segger.com/jlink.html)
(USB) AMONTEC - JTAGkey (http://www.amontec.com/jtagkey.shtml)
(USB) JETlink (http://www.rusar.net/jetlink.htm)


СРЕДСТВА РАЗРАБОТКИ
IAR - IAR Embedded Workbench for ARM (http://www.iar.com/p4082/p4082_eng.php)
Есть две бесплатные ознакомительные версии. Одна с ограничением на размер кода в 32кБ (http://supp.iar.com/Download/SW/?item=EWARM-KS32) (размер ver. 4.31a: 106МБ). Вторая с ограничением по времени на 30 дней (http://supp.iar.com/Download/SW/?item=EWARM-EVAL) (размер ver. 4.31a: 94МБ). Ходят слухи, что именно эту, вторую, версию ломают некоторые негодяи и она работает у них немного дольше. Но наверняка это только слухи.
Судя по отзывам в инете не самый оптимальный компиллер. Но есть большой плюс для тех, кто привык к этой среде работая с AVR. На сайте Атмела примеры в основном заточены под эту среду.

KEIL - ARM Development Tools (http://www.keil.com/dd/chip/3815.htm)
Имеется ознакомительная версия (https://www.keil.com/demo/eval/arm.htm) , само собой с ограничениями (http://www.keil.com/demo/limits.asp) .
Пока толком не пощупал, но там есть не только отличный симулятор (говорят он на сегодня лучший), но и логический анализатор. Круто.

ROWLEY ASSOCIATES - CrossWorks for ARM (http://www.rowley.co.uk/crossworks/Downloads.htm)
Большое достоинство этой среды в том, что к ней без особого труда подключается простейший JTAG.LPT адаптер, известный под названием wiggler. У меня всё сразу заработало.

WinARM is a collection of GNU and other tools to develop software for the ARM-family (http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index.html#winarm)


ОПЕРАЦИОННАЯ СИСТЕМА
www.freertos.org

SEGGER - embOS (http://www.segger.com/embos_general.html)
Можно бесплатно скачать ознакомительную версию (http://www.segger.com/emboscpus.html#trialversion) , которая содержит следующие ограничения:
- ограничено максимальное количество задач: 3
- не разрешается её использование в готовом устройстве
- не обеспечивается поддержка пользователя

MICRIUM - uCOS (http://www.ucos-ii.com/products/rtos/ucos-ii_view.html)
Вкусно, толсто и дорого. Но посмотреть имхо надо обязательно. Особенно на всё, что ей сопутствует: TCP-IP (http://www.ucos-ii.com/products/tcp-ip/tcp-ip.html) , файловая система (http://www.ucos-ii.com/products/fs/filesystem.html) , GUI, USB ну и так далее. А ещё на неё есть большой, красивый datasheet (http://www.ucos-ii.com/downloads/datasheets/uCOS-II-DataSheet-PDF.pdf) и, по слухам, кучка appnotes (http://www.ucos-ii.com/atmel/index.html) .
По сведениям МИ-6 (http://www.mi6.co.uk) , нелегальные копии, лекарства и исходники этой ОС болтаются по разным ftp.
Вот тут (http://lifeslice.narod.ru/) человек взялся переводить книжку по uCOS. RUS

Какие вообще операционные системы есть на белом свете... (http://www.onesmartclick.com/rtos/rtos.html)


ARM-РЕСУРСЫ
Ссылка на стандартные библиотеки для AT91 (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=986#986)
Application notes на сайте производителя (http://www.atmel.com/dyn/products/app_notes.asp?family_id=605)
Welcome to the ARM microcontroller Wiki! (http://www.open-research.org.uk/ARMuC/)

MAD: MPEG Audio Decoder ( MP3-декодер для ARM ) (http://www.underbit.com/products/mad/)
ARM MP3/AAC Player (http://www.mikrocontroller.net/articles/ARM_MP3/AAC_Player) Разматывает MP3/AAC самим процессором, без специализированных чипов. Но DAC внешний. Работает с MMC/SD картой. Там же есть ссылка на файловую систему. (http://elm-chan.org/fsw/ff/00index_e.html)
EFSL - файловая система (http://sourceforge.net/projects/efsl/) . Но в контексте этой ветки лучше смотреть тут: Using the Embedded Filesystem Library (EFSL) with ARM-Controllers (http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/efsl_arm/index.html) . Martin THOMAS это вроде как один из соавторов EFSL. Там же можно скачать EFSL с драйверами под SAM7S64.

А ВОТ...
... почему не работает Внешний сброс процессора AT91SAM7S64 (http://www.caxapa.ru/echo/arm.html?id=53568)
... не получается работать с таймерами. Точнее с прерываниями. (http://www.caxapa.ru/echo/arm.html?id=52176)

1. угумс, 16.02.2006 22:05
ну,насколько я понял, для него отладочные средства свои надо, в авр-овскую stk500 (501/502) его уже не всунешь?

Добавление от 16.02.2006 22:06:

http://www.rtcs.ru/news_detail.asp?id=931

2. Tahoe, 16.02.2006 22:26
угумс
Не всунешь.
С другой стороны - а чего там отлаживать? В том смысле, что всё равно лучше printf() отладчика не существует. А среда разработки - всё тот же IAR.


Вот только не пойму, можно ли подключить параллельную внешнюю память? Судя по всему нельзя. Или я плохо смотрел? Разумеется, тупое щёлканье портами не в счёт.

Ещё вопрос, есть ли под них какой-нить Линукс? Уж больно заманчиво, взять стандартное устройство, например WiFi карточку в форм-факторе SD или CF и больше не париться со всякими беспроводными модулями, а использовать готовое массовое устройство с готовыми драйверами. Да тех же GPS или GSM/GPRS сейчас в PCMCIA/CF/MMC форматах как грязи продаётся... Про всякие модемы у прочая я уж молчу.

3. iizerg, 17.02.2006 09:39
насчет освоения - да камни действительно удачные в отношении цена/возможности,
меня например порадовал встроенный дешифратор на ~CS для SPI.
насчет отладки - инструменты действительно свои, но простые и давно известные: jtag, DBGU.
Интересная особенность наличие 2-х ПОЛНЫХ com-портов (т.е. хочешь с GSM модемом поработать или с обычным - пожалуйста).
готовые драйвера под USB - камень сразу видится компом как com-порт.
внешняя память (как озу так и програная флеш) подключается у старших камней.
со слов программеров - для uLinux надо модуль управления памятью (MMU) без него - накак

попутно посоветую посмотреть на камни филипса (lpc) и Sharp - последние мне понравились ценой 10$ при этом имеют встроенный контроллер ЖК (до 1024х768).
насчет граблей при освоении - зачем ходить по своим ?
на Сахаре (www.caxapa.ru) есть сравнительная таблица со многими армами,
форумы:
www.caxapa.ru/echo/arm.html
http://electronix.ru/forum/index.php?s=cef8e5683be70…&showforum=43

4. m16, 17.02.2006 10:06
для начала самое то http://members.caxapa.ru/megajohn/iv/

5. Tahoe, 17.02.2006 10:08
iizerg
внешняя память (как озу так и програная флеш) подключается у старших камней
Меня интересует подключения устройства, отображаемого на внешнюю память, но не суть. В старших камнях это в каких? В AT91SAM7S256 я ничего такого не нашёл. В даташите про PIO контроллер сказано только, что ноги могут быть только либо в GPIO, либо в альтернативных режимах. Альтернативные, это всякие PWMы, ADC и прочая. Про работу с памятью - ни слова. Да и ножек с именами вроде RD/WR я там в упор не вижу.

LPC я смотрел, с полгода назад. Но пришёл к выводу, что по функциональсти они Атмелу всё-таки сливают. Да и народ на тех же телесистемах вроде ругался на них. Про Шарп только слышал, мерси, посмотрю подробнее. Хотя сначала надо с их доступностью выяснить, не самая распространённая контора. К тому же сколько я не имел дела с японцами, всё у них как то не то что бы через зад, но как-то наоборот, с ног на голову в европейском понимании. Ужасно непривычно.

Добавление от 17.02.2006 10:22:

Имхо пара задач в этой теме уже in progress. Во-первых много ещё кто не знает про эти камушки. Точнее только слышал, что есть какие-то загадочные АРМы. А во-вторых есть где ссылками поделиться. Со временем глядишь, может получится "Помогите начать работать с микроконтроллерами. Level 2".

6. угумс, 17.02.2006 10:23
вот кстати в "чип и дип" тут нарыл может кому надо
http://www.chip-dip.ru/shop/article.xtml?id=64796899…d=5&gid=51901

7. Tahoe, 17.02.2006 10:59
угумс
Беня, но ведь это же неспортивно!


Кстати, сходил я по ссылке выше, посмотрел как там народ довольно дружно платку отладочную коллективно сварганил и даже сам немного загорелся. Причём не столько порадовало то, что они деньгами скинулись, сколько то, что саму плату коллективно вылизывали.

8. Chudik, 17.02.2006 11:01
У Шарпа, кстати, самые дешёвые ARM9 evaluation board. Около 100 баксов. Конечно, не так, как было у Зилога на халяву , но зато сразу включённый и работающий. На небольшую компанию вполне можно купить.

9. Tahoe, 17.02.2006 11:09
Chudik
Тут вся муля в том, что имеем корпус QFP64, с встроеным флешом, SRAM-ом и прочими прелестями бытия. В общем тот же АВР, только в 10 раз мощнее, раз в 10 функциональнее ( ну как не умиляться глядя например на UART с аппаратными CTS/RTS сигналами ) и в 1000 раз эффективнее ( например DMA + встроеный USB, АВР в связке с FTDI нервно курит в сторонке ).

10. Chudik, 17.02.2006 11:13
Tahoe
Да я понимаю
Кстати, видел новые чипы FTDI? Они там и кристал и флэшку внутрь засунули и теперь снаружи только те пины, что для работы нужны

11. LazyCamel, 17.02.2006 11:33
цитата:
Tahoe:
Много хорошего есть в этих машинках. И цена вполне разумная ( $6-10 в розницу ), и USB встроеный есть ( причём с возможностью программирования через него, а если учесть, что стоимость какого-нить USB камня FTxxx около $5, то получается примерно та же стоимость, что и обычный AVR с навешеным USB, только намного лучше, т.к. есть DMA ), и ещё много чего вкусного. В общем если кто ещё не видел - "рекомендуется лучшими собаководами".

Не прошло и погода... Я тут эти полгода распинаюсь - никто не верит . Теперь может вдвоем запинаем...

цитата:

Вот только не пойму, можно ли подключить параллельную внешнюю память? Судя по всему нельзя. Или я плохо смотрел? Разумеется, тупое щёлканье портами не в счёт.

Нельзя в 7s по крайней мере. обещают к концу этого года выкатить такой чип.
Тупое щелканье портами - медленное У меня реально больше 3 Мгц не вышло.
Пришлось делать выкидышь на Меге48 и вязаться по SPI.

цитата:

Ещё вопрос, есть ли под них какой-нить Линукс? Уж больно заманчиво, взять стандартное устройство, например WiFi карточку в форм-факторе SD или CF и больше не париться со всякими беспроводными модулями, а использовать готовое массовое устройство с готовыми драйверами. Да тех же GPS или GSM/GPRS сейчас в PCMCIA/CF/MMC форматах как грязи продаётся... Про всякие модемы у прочая я уж молчу.

Линюха нет по причине маловатости памяти Из осей рекомендую FreeRTOS.
код для работы с SD где-то видал. По-моему на электрониксе.

12. Tahoe, 17.02.2006 11:39
Ну вот, я завёлся... Появились некоторые соображения.

1. Если кому АВРа стало не хватать, внимательно смотрим хотя бы заголовок вот этого ( укороченного ) (http://www.atmel.com/dyn/resources/prod_documents/6175s.pdf) даташита. По прочтении решаем, хочется с этим камушком поиграться или нет. Если нравится, качаем полный datasheet на семейство AT91SAM7S (http://www.atmel.com/dyn/resources/prod_documents/doc6175.pdf) . Фокусируемся на представителе этого семейства по имени AT91SAM7S64.

2. Если "хочется", но останавливает отсутствие evaluetion board, то в этой ветке будем воплощать "хотелку" в реальность.

3. Платкой я займусь по-любому, даже если один буду этим заниматься.

4. Ввиду относительной простоты, попробую сделать платку так, что бы любой желающий смог её повторить "на кухне". Утюгом или фоторезистом - не суть. В общем плавно подходим к двусторонней плате.

5. Точно знаю, что на платке будет MMC разъём. Это к вопросу о том, чем она будет отличаться от готовой ( хотя может и есть на свете уже с разъёмом ).

6. Точно знаю, что никаких RS-232 на плате не будет. Будет выведен UART и VCCIO, а там кому как удобно. Можно FT232 подцепить, можно MAX232. А то нонче много развелось нотбуков без RS232, а "терминалить" имхо очень удобно на отдельной машине. В частности на ( стареньком / новеньком ) ноутбуке.

В общем если кто "за" - присоединяйтесь. Хотя я и в одиночестве не пропаду.
Девиз акции или mission goal будут слова "разумно и доступно".
"Произнеся всю эту ахинею, Бенгальский сцепил руки и дважды поклонился, сначала партеру, затем галёрке" (с) Булгаков.

Добавление от 17.02.2006 11:55:

Chudik
новые чипы FTDI? Они там и кристал и флэшку внутрь засунули
Поздно они чухнулись. Я уже не хочу 64 или 564 раза каждый байт из буфера в FTDI записывать, когда можно зарядить DMA - "копай вот отсюда и до обеда".
Вопрос цены - почти за те же деньги я возьму не USB-камень, а процессор с USB.
К тому же в SAMе грамотно сделано, драйвера как я понял не нужны. Т.е. типа как есть mass storage, там сделано ( не помню точно название ) что-то вроде communication device. Т.е. драйвера вообще не нужны.

В общем у FTDI осталась своя ниша - USB-шнурки к мобильникам, ну или вот к платке на ней слеплю USB-UART шнурок. К тому же у FTDI пара конкурентов на этом поприще теперь есть.

Добавление от 17.02.2006 11:59:

LazyCamel
Не прошло и погода... Я тут эти полгода распинаюсь - никто не верит
Не, ну я-то верю. Помнится когда про FTDI новые камни ветка появилась, мы с тобой тогда ещё общий язык нашли. А на камни эти я давно уже глаз положил, с полгода, может больше. Вот сегодня проснулся и понял - пора.

Из осей рекомендую FreeRTOS. код для работы с SD где-то видал.
Не, пока нуегонах. Я про Линукс из других соображений - мол взять карточку и к ней драйвера готовые. Вероятность наличия драйверов под Линукс весьма высока. А с MMC/SD я и сам на Сях справлюсь. То ли дело WiFi цеплять - самому нереально.

Добавление от 17.02.2006 12:02:

LazyCamel
Тогда с ходу ещё вопрос. Там вроде можно как на АВРах подцепить часовой кварц 32768 на специально-обученый таймер, что б RTC замутить. Не пробовал?

И ещё. Есть какие-нить соображения, по предметам первой необходимости на evaluation board?

13. LazyCamel, 17.02.2006 12:25
Там есть методика использования и коррекции специально обученного таймера прямо от штатного RC, насколько я помню.
Из того что точно нужно.
АЦП. Хотябы 4 канала и с шустрыми буферами по входу. как минимум 5V/usec. Желательно кмоповскими.
Ключей несколько штук чтобы можно было что-то типа шаговика прицепить.
дешифратор для SPI обязательно. Ну и ноги для ЖиТага конечно.

А про ось ты зря. она не такая уж тяжелая. глянь на www.freertos.org.
Без нее на армах будет туго как только за уровень "цветомузыкальной мыгалки" выйдешь

14. iizerg, 17.02.2006 12:39
цитата:
Tahoe:
iizerg
внешняя память (как озу так и програная флеш) подключается у старших камней
Меня интересует подключения устройства, отображаемого на внешнюю память, но не суть. В старших камнях это в каких? В AT91SAM7S256 я ничего такого не нашёл. В даташите про PIO контроллер сказано только, что ноги могут быть только либо в GPIO, либо в альтернативных режимах. Альтернативные, это всякие PWMы, ADC и прочая. Про работу с памятью - ни слова. Да и ножек с именами вроде RD/WR я там в упор не вижу.

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

Имхо пара задач в этой теме уже in progress. Во-первых много ещё кто не знает про эти камушки. Точнее только слышал, что есть какие-то загадочные АРМы. А во-вторых есть где ссылками поделиться. Со временем глядишь, может получится "Помогите начать работать с микроконтроллерами. Level 2".

At91sam7sXXX - это младшее семейство. более старшие камни AT91RM9200 и далее... там и внешняя шина, и эзернет, и еще много чего.
насчет макеток - есть проект uRouter - если не ошибаюсь...
http://www.ucrouter.ru/contacts.html
там "макетки " под атмел и шарп.
насчет доступности Шарпа - мы купили штучно без проблем.

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

15. Chudik, 17.02.2006 12:42
Tahoe
Я сейчас заказал пару сэмплов. Не знаю, вышлют ли на домашний адрес, я там сочинил небольшую записульку. Посмотрим, что ответят.

Надеюсь, мини USB разъёмчик ты поставишь на эту платку?

у FTDI осталась своя ниша - USB-шнурки к мобильникам, ну или вот к платке на ней слеплю USB-UART шнурок.
Ещё загрузка FPGA через USB. А то через ByteBlaster вообще тупость.

Добавление от 17.02.2006 12:44:

iizerg
At91sam7sXXX - это младшее семейство
зато там встроенный контроллер USB есть.

16. Tahoe, 17.02.2006 12:46
Да, забыл. Ещё из вкусностей. Аппаратный IrDA модем. Не особо надо, но приятно. А вот то что там ещё и Манчестер аппаратный есть... Вот это сильный ход имхо. Особенно для любителей цеплять беспроводные модули на 433 МГц.

LazyCamel
Там есть методика использования и коррекции специально обученного таймера прямо от штатного RC, насколько я помню.
Я имел ввиду послать камень в глубокий сон, и что бы в это время маложрущий таймер сам по себе тикал. А вот то, как там реализован RTC-таймер я уже оценил. Очень грамотно - зарядил 12-ти битным делителем секундные интервалы, а 20-ти битная часть таймера сама секунды считает, не отвлекая проц от его важных и полезных дел. Красота.

С буферами на АЦП - не вопрос. Вот только зачем там шустрые операционники? Наоборот, там же АЦП 384 KSPS, т.е. полосы в пол-мегагерца должно за глаза хватить. Даже полезнее, пусть себе чуток сигнал затягивают...

дешифратор для SPI обязательно.
Так там эти 4 ноги мультиплексированые? Я-то думал что это только 4 SPI девайса можно повесить. А так аж до 15-ти получается... Мы про одно и тоже? Про ноги _CS?

Без нее на армах будет туго как только за уровень "цветомузыкальной мыгалки" выйдешь
Охотно верю. Но это позже. Сначала надо пару лампочек зажечь.

17. Chudik, 17.02.2006 12:55
Tahoe
Слушай, а если сделать ещё дочернюю платку для apm6270 и сделать разводку для её подключения на разрабатываемую eval board?

18. LazyCamel, 17.02.2006 13:01
Угу...

"– Four chip selects with external decoder allow communication with up to 15
peripherals"

АЦП там, если достаточно 8 бит и 500KSPS выдаст непоморщившись. А минимальный трек-н-холд у АЦП 600ns.

19. Tahoe, 17.02.2006 13:01
iizerg
более старшие камни AT91RM9200 и далее...
А-а-а... Не, эти монстры не катят. Тут-то вся прелесть - в одном ма-аленьком флаконе. А BGA на тыщу ног, это в другой раз.

спишемся по мылу?
Однозначно "нет". Потому что тогда никто ничего не увидит и не узнает. Вот ежели мы девок обсуждать начнём, тогда...


Chudik
Надеюсь, мини USB разъёмчик ты поставишь на эту платку?
Однозначно "да". И скорее всего именно mini-USB.

Ещё загрузка FPGA через USB.
Упс, наступил на больную мазоль. Я до сих пор лаюсь с одним уважаемым мною человеком. Он говорит - ADSP и флеш внешняя, одна на двоих с Acex-ом, а я ему - сольют наши труды к такой-то матери и не поперхнутся. Он мне - давай тогда CPLD прикрутим, а я ему - неэстетично и криво. И повод потом лишние глюки расхлёбывать на пустом месте. Вот так и мучаемся пока - он мне про три команды за такт и тихоходность АРМа, а я ему про встроенную флеш и прочие свои шкурные интересы, типа встроенного USB...

20. iizerg, 17.02.2006 13:12

iizerg
At91sam7sXXX - это младшее семейство
зато там встроенный контроллер USB есть.[/q]

угу, а в старших кроме usb-device еще и usb-host встречается

Tahoe
дешифратор для SPI обязательно.
Так там эти 4 ноги мультиплексированые? Я-то думал что это только 4 SPI девайса можно повесить. А так аж до 15-ти получается... Мы про одно и тоже? Про ноги _CS?

Именно ноги CS, но не 15 а 16 я хочу этим воспользоваться - у меня 5 девайсов на SPI

21. LazyCamel, 17.02.2006 13:13
Кстати, адресок для APM-даташитов подскажите ?

Особенно все связаное с apm1882 интересует.

Tahoe
Ну покажи ему BF-что-то-там. там и USB и ADSP и скорость и бог знает что еще

22. Tahoe, 17.02.2006 13:13
Да, ещё про вкусности. Встроеный стабилзатор для ядра на 1,8 Вольта. Что весьма полезно по тыще причин.

Chudik
Слушай, а если сделать ещё дочернюю платку для apm6270
Да я не против. Только надо сначала посмотреть, что там азиаты предложат. А то может они за информацию о том, как сию железку оживить денег попросят неподъёмных или какую другую пакость подбросят...
К тому же надо ещё посмотреть, насколько она там "в кассу" будет. В общем - доберусь и до этого. Тем паче что не у меня одного нонче задача стоит данные по воздуху гонять.

LazyCamel
Про SPI понятно. Хотя лично я пока не вижу нужды ставить декодер. Т.е. то что это можно - отлично, но сейчас на платке имхо и 4 много будет. Не забываем, что я хочу попытаться развести всё это дело на 2-х слоях. А значит и так мне придётся как ужу на сковородке повертеться.

И ещё вопрос. Я большой противник внешних ресет-генераторов, когда на борту присутствует brownout детектор. Надеюсь за ним никаких явных косяков не замечено?

23. iizerg, 17.02.2006 13:17

Chudik
в текущей версии макетки я пришел к 3-м блокам:
модуль питания и связи (3 кома+УСБ)
Модуль процессора с обвязкой и выходом внешней шины (у него ведь просто 1 слово наружу как порт выведено?).
модуль периферии - вот бы туда разъемы как в pc-104 поставить но никак не могу найти

24. LazyCamel, 17.02.2006 13:18
А какая разница - 4 выводв вывести или вывести и повесить на них декодер. Впрочем - жираф большой, а желающие декодер могут сделать и внешний.

Я вообще не мучался, первую игрушку в лоб развел, на атмеловский пример подглядывая, и использую ее теперь как ево-борду.

Монитор питания мне толком не нужен, но отцы говорят что никого еще не подводил.

А за Вай-Фай они (АРМ) хотят чуть больше полтинника вечнозеленых. Один чип.
Лучше в какой-нибудь ZeeBee целится, ИМХО.

25. iizerg, 17.02.2006 13:24
LazyCamel
так ты не понял, там именно декодер и ставится внешний, а внутри оно конфигурируется с декодером или без

26. Chudik, 17.02.2006 13:25
Tahoe
а я ему - сольют наши труды к такой-то матери и не поперхнутся.
Да, всем хороши ПЛИСы, но если бы в них ещё встроенный шифратор сунули, это была бы сказка.

я хочу попытаться развести всё это дело на 2-х слоях. А значит и так мне придётся как ужу на сковородке повертеться.
Давай так - если будет возможность это сделать в 2х слоях, то почему бы и нет. Но у меня возник глупый вопрос: а нельзя этими CS управлять просто пинами процессора?

Я большой противник внешних ресет-генераторов, когда на борту присутствует brownout детектор. Надеюсь за ним никаких явных косяков не замечено?
Ух рискуешь.... Выведи ресет на внешний разъём, куда при желании можно будет повесить внешнюю маленькую платку. Надеюсь, кнопку ресета поставишь?

27. Tahoe, 17.02.2006 13:26
iizerg
угу, а в старших кроме usb-device еще и usb-host встречается
ЗдОрово. Только пока в данном сегменте задач - оно не особо надо.


LazyCamel
Ты про BlackFin? Если про него, то это обсуждалось. Но отпало, по причинам монстроидальности подходящих камней. Хотя, правда, не совсем отпало.
А ещё я муссировал с ним тему TI C24 и C28 семейства, но там свои заморочки тоже есть.
В идеале бы всё во внутренний флеш затолкать, но у него прошивка для Асекса емнимс килобайт 90, да плюс ещё порцу тоже надо где-то программу хранить. Ну да Бог с ним.

28. Chudik, 17.02.2006 13:28
Народ, а сколько памяти надо для какой-нить RTOS типа VxWorks или чего-то аналогичного? В 64 к этого процессора не влезет?

29. LazyCamel, 17.02.2006 13:31
iizerg

)) шутку понял.

И зачем у меня НСТ154 на плате стоит

Добавление от 17.02.2006 13:42:

цитата:
Chudik:
Народ, а сколько памяти надо для какой-нить RTOS типа VxWorks или чего-то аналогичного? В 64 к этого процессора не влезет?

Насколько я помню там все таки надо ОЗУ побольше. хотябы 256к. Но вообще народ ембеддерский больше в сторону второго Юкоса , он же uCOS-II, ломится почему-то

30. m16, 17.02.2006 13:43
может кому интересно у olimex есть EB SAM7-P64 $60 + пересылка ~$20 . коллега заказывал в киев . ждал две недели.
http://olimex.com/dev/index.html

http://olimex.com/dev/images/sam7-p64.jpg (500x347, 75,0Kb)

31. Tahoe, 17.02.2006 13:46
Chudik
а нельзя этими CS управлять просто пинами процессора?
Вот я именно так и хочу. Т.е. насколько я понимаю у меня будут устройства висеть на адресах 0x1, 0x2, 0x4 и 0x8. Но, опять же логика мне подсказывает, что эти ноги надо использовать не в режиме GPIO, а именно как SPI-ные. Иначе, я думаю, придётся лишние телодвижения делать. А так - зарядил DMA и он по идее должен сам не только блок записать, но и CS соотвествующий дёрнуть.

Надеюсь, кнопку ресета поставишь?
Ну это святое. Только наверное скорее не кнопку, а джампер. Кому надо - вынесет кнопку на проводках, кому лень - отвёрткой ткнёт. А если сгрупирровать получится - то можно будет и с дочерней платки дёрнуть. Так что имхо джампер будет "лучше собаки" (с) Малыш и Карлсон.

LazyCamel
А за Вай-Фай они (АРМ) хотят чуть больше полтинника вечнозеленых. Один чип.
Пусть сначала вообще хоть какие-то доки дадут посмотреть... А то если они даташит не дают спокойно скачать - нуегонах, как говаривал ЗлойАдмин.


P.S. По поводу кол-ва SPI и т.п. Позволю сеье озвучить два постулата.
1. Я много раз накалывался, когда трахался, переделывал что б с запасом на будущее... И потом смотрел, как это будущее так и не настало. Но и наоборот бывало, когда не хватало. В данном случае, как впрочем и всегда, надо не много и не мало, а ровно столько, сколько надо. Имхо надо 4, т.е. с одной стороны просто тупо вывести 4 пина с проца и не городить лишние корпуса. С другой стороны, 1 - это явно мало, когда под боком есть "много вкусной и полезной нефти" .
2. Я внимательно выслушаю аргументы почему надо сделать так, а не эдак. Но конечное решение приму единолично. Причина одна и очевидна - парламент до добра не доводит. В общем у меня сложная хадача - не самодурствовать, но и не поддаваться. Но имхо такой подход единственно правильный. Иначе эта платка вообще никогда не родится.
Надеюсь на понимание.

Добавление от 17.02.2006 13:50:

m16
Всю малину так обломаешь. А если б я оказался с более слабой психикой? У меня б после твоей ссылки, особенно из-за наличия ММС на борту руки бы опустились.
Однако ссылка твоя по-любому полезная будет.

32. Chudik, 17.02.2006 13:54
Согласен насчёт "будущего". Для всего будущего надо просто вывести разъёмы. В лучшем случае так, чтобы на них можно было повесить дочернюю плату.

Кто-нибудь с gcc работал? Хочется иметь MinGW для этого ARM, на страничке http://www.mingw.org/MinGWiki/index.php/mingw%20host…0cross%20compiler говорится, как это сделать, но мне в этом разбираться долго придётся.

33. iizerg, 17.02.2006 14:05
http://www.at91.com/Pages/products/EvaluationBoard/S…m7xek.html#design
може эту взять за основу, только эзернет я бы поставил от Микрочипа - он на SPI сидит.

34. LazyCamel, 17.02.2006 14:15
Chudik
Вот это имеешь в виду ?
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm

35. khach, 17.02.2006 17:28
У Олимеха цены не очень. Попробуйте поляков http://www.propox.com/products/t_53.html.

36. Chudik, 17.02.2006 21:20
LazyCamel
Вот это имеешь в виду ?
цитата:
WinARM has only been tested with Philips LPC2106, Philips LPC2129, Philips LPC2138, Philips LPC2148 and Atmel AT91SAM7S64
Мне нравится ход твоей мысли
Почти. Дело в том, что я в последнее время подсел на Code::Blocks C++ (http://www.codeblocks.org)
Под линуксом он использует gcc, под виндами MinGW. Посему очень хотелось бы иметь поддержку ARM прямо в этом окружении.

Пришёл мне сегодня ответ от атмела: халявы не будет. Хрен с ними - в digikey этот чип стоит 10 баксов, в arrow - 8. Не обеднею.

Добавление от 17.02.2006 21:46:

Tahoe
А так - зарядил DMA и он по идее должен сам не только блок записать, но и CS соотвествующий дёрнуть.
Nah... дёрнул CS, зарядил DMA, получил прерывание, говорящее о том, что сеанс закончился, снял CS. Мелочь.

37. Tahoe, 18.02.2006 00:03
Несколько соображений по плате.

[Питание]

Поскольку цель данной платы побыстрее и попроще начать работать с SAM7, то для простоты хотелось бы обойтись питанием с USB, т.е. не лепить внешний разъём питания, не городить арбитраж на питании, да и защита от переполюсовке тогдап тоже не нужна. Если есть аргумент, почему так не стОит делать - с удовольствием выслушаю.
Текущее решение: питание только от USB.

Стабилизатор на VCC33. Ставлю обычный линейный стаб ( в смысле не импульсный ). Судя по доке макс. ток VCC_IO 150 мА, а ток ядра около 50 мА. За линейный стаб - доступность, дешевизна. Хорошо было бы в поставить что-нить SOT23, но это будет на пределе. Ptotal = ( 150 мА + 50 мА ) * ( VCC_USB - 3,3 Вольта ) = 0,2 А * 1,7 В = 0,34 Вт. Есть какие-нить мысли? Ну кроме очевидных - корпус взять побольше или импульсный поставить.
Текущее решение: корпус помощнее.

38. Chudik, 18.02.2006 04:40
Tahoe
Я бы сделал ещё и внешнее питание. Нельзя быть всегда привязанным к USB.

39. Tahoe, 18.02.2006 05:34
Chudik
Нельзя быть всегда привязанным к USB.
А аргумент есть какой-нить, повесомее?
Плата - отладочная. Т.е. по сути на ней скорее программировать, пробовать. А учитывая, что основной способ прошивания через USB... Да и главная цель этой платки - помочь стартануть. Всё равно потом железку делать.

Мои резоны:
1. У меня была пара отладочных плат с USB. Ни разу не воспользовался внешним питанием.
2. Есть немало evaluation board с питанием только по USB. И ничего, никто не жалуется. Один из всем хорошо известных примеров в этом форуме - PSoC от Сайпрес.
3. Максимум тока, который можно прокачать через проц - 200 мА. Что на практике для USB вполне приемлемо. Но имхо реально даже 100 мА не понадобится. Ну плюс ММС свои 50-70 съест. А платка расширения... 100-200 мА вполне можно ей отдать. А если ей понадобится больше, лучше ей тогда свой разъём питания поставить, а наши 3,3В использовать как VCC_IO.


Посмотрел платку по ссылке выше. Круто там всё кастрировали. Даже буфферный операционник выкинули.
Посмотрел платку от Атмела. Так и не понял, какого рака они запитали аналоговую часть от тех же 3,3В, что и IO. Хотя, конечно, догадываюсь почему.

40. Chudik, 18.02.2006 08:10
Tahoe
Плата - отладочная. Т.е. по сути на ней скорее программировать, пробовать. А учитывая, что основной способ прошивания через USB...
Если вывести все неиспользованные выводы на разьём для дочерней отладочной платки, то можно использовать как макет до того, как сделаешь всё красиво. Хотя при этом можно питание сделать на этой дочке....
Ладно, давай без внешнего.

41. Dismon, 18.02.2006 11:15
Арм это конечно хорошо, но может стоит посмотреть это?

цитата:
Фирма Atmel анонсировала новую 32-разрядную архитектуру AVR32, предназначенную для приложений, требующих высокой производительности процессора, высокой плотности кода, низкого энергопотребления. Архитектура AVR32 - принципиально новое решение от фирмы Atmel, начало разработки которого началось еще в 2001 году и держалось в строжайшем секрете. Первый микроконтроллер с архитектурой AVR32 будет выпущен в апреле с наименованием AP7000.

Ключ архитектуры - это высокопроизводительный 7-уровневый конвейер, с поддержкой DSP-инструкций, наличием команд операций с множественными данными, выполняющий 16- и 32-разрядные инструкции без переключения режимов.

Благодаря новаторским идеям и удачной реализации, ядро AVR32 выполняет общепризнанные тесты консорциума EEMBC (www.eembc.org) на производительность с существенно более высокими оценками по сравнению с архитектурами ARM9 и ARM11.

Более подробную информацию можно получить по следующим адресам:
http://www.atmel.com/AVR32
http://www.eetimes.com/news/latest/showArticle.jhtml…ticleID=177104389
http://www.electronicdesign.com/Articles/Index.cfm?A…ID=11939&pg=1

42. Tahoe, 18.02.2006 16:10
Dismon
Я анонс видел. Главное что бы он не стал как DS-PIC, ни то, ни сё. И потом имхо рано пока, надо что бы с софтом, с железом всё устаканилось. Хотя на первый взгляд камень достойный.

Добавление от 18.02.2006 19:46:

Chudik
Если вывести все неиспользованные выводы на разьём для дочерней отладочной платки
Ну насчёт "все" я пока осторожничаю. Точнее ещё не рассматривал.

43. LazyCamel, 18.02.2006 23:30
Dismon

Пусть они его сначала выппустят, цену и средства разработки озвучать а потом решать будем. Для девайса который якобы должен быть доступен с апреля - у них пока полное отсутсвие документации. Учитавая что Атмел обычно выгладывают ее ~ за год до начала продажи.

44. Chudik, 24.02.2006 13:28
Народ, а какой компилятор и адаптер бум использовать? Похоже, самое распространённое сейчас - Keil. Но их адаптер для USB JTAG ARM стоит минимум $200 Как-то совершенно не хочется столько платить

45. Tahoe, 24.02.2006 19:28
Chudik
Ну после того, как АРМ купили оного Кейла - выбор имхо очевиден. Хотя раньше я слышал, одним из лучших считался некий ГринХилл.

46. Chudik, 24.02.2006 20:58
Tahoe
Насчёт софта я как раз меньше всего беспокоюсь Как насчёт JTAG адаптера?

47. Chudik, 03.03.2006 20:06
Как мне вот эта платка понравилась... http://www.ixbt.com/news/news.php?id=56687
Может и на разрабатываемую платку Альтерку посадить? Соединить через SPI. Можно получить этакий порт экстендер....

48. Tahoe, 05.03.2006 12:48
Chudik
Как мне вот эта платка понравилась...
Мне там вот это понравилось:
Надёжность дополнительно повышается благодаря возможности организации RAID-массива с "горячей" заменой, используя второй слот для SD-карт.


Chudik
Можно получить этакий порт экстендер....
А зачем? Имхо идеология этого камня - "всё что нужно, уже есть на борту". В том смысле, что если уж сильно надо, то можно и порты расширить. Но по-уму - если нужна бОльшая функциональность периферии, лучше взять камень постарше, с шинами выведеными наружу и уже туда вешать ПЛИС.
Имхо достаточно будет просто разъёма. Хотя если ты назовёшь реальный интерфейс, без которого "прожить нельзя" и который отсутствует в этом камне...

49. Chudik, 05.03.2006 22:13
Tahoe
Реального ничего не назову. Просто подумалось, что если делать некий инженерно-учебный инструмент, то хорошо бы иметь "шампунь и кондиционер в одном флаконе"
Хотя... например, можно будет сделать PCI шину. Я тут на курсах по Верилогу накропал чего-то. Завтра посмотрю - будет работать или нет

Добавление от 06.03.2006 02:18:

ещё одно - интерфейс к LCD. Не тот, что можно упралять через I2C, а с параллельной шиной. Или вообще цветной графический дисплей.

50. Tahoe, 06.03.2006 06:37
Chudik
а с параллельной шиной. Или вообще цветной графический дисплей.
Вот в этом-то всё и дело. По здравому размышлению выясняется, что этот "контроллер дисплея" должен находиться на платке с собсно дисплеем.

Насчёт PCI... Как-то крутовато, вот так сразу. К тому же, опять же имхо, в данном камне уже есть интерфейс к ПК - USB. Причём вполне адекватный для этого камня. Как по производительности, так и по функциональности. У меня "первым номером нашей программы" идёт поключение ММС-карточки через SPI и разобраться с USB mass storage. У Атмела есть аппликуха на эту тему, только надо разобраться, что там с исходниками ( "- Что там с сосисками, Чарли? - Пять минут." (с) Lock, stock... ).
Это будет отличная основа для любого девайса. Наш девайс увидится как диск, без всяких драйверов, в любой операционке - красота.

Ну и не забываем, что сейчас наша цель быстро и просто одержать маленькую победу над камнем. А именно, что б он запустился и моргнул лампочками. Если я всё правильно вычитал и нигде не лоханулся, то для этого пока не нужны никакие инструменты, кабели и т.п. Грузиться будем через подключеный по дефолту USB-загрузчик. В доке сказано что это возможно, если используется кварц на 18,432 МГц.

P.S. Я пока рисую довольно медленно. Прежде чем пару проводков кинуть, приходится два часа даташит изучать. За то уже представляю себе, например, как SPI в этом камне работает.

Добавление от 06.03.2006 08:27:

[КОМПИЛЯТОР]
Вот тут: http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=4834#4834 камешек в огород IAR бросили. А именно: The IAR compiler generates highly inefficient ARM code.

51. Chudik, 06.03.2006 10:21
Tahoe
По здравому размышлению выясняется, что этот "контроллер дисплея" должен находиться на платке с собсно дисплеем.
Совсем необязательно. Простейший контроллер дисплея можно забацать на той же ПЛИСке.

Насчёт PCI... Как-то крутовато, вот так сразу.
Да ты знаешь, я тоже так думал. Вроде не так, чтобы очень круто. По крайней мере простейший контроллер для работы с памятью или портами получается вполне нормально.


Ну и не забываем, что сейчас наша цель быстро и просто одержать маленькую победу над камнем. А именно, что б он запустился и моргнул лампочками.
Да я этого не забываю. Но если можно параллельно одержать две маленькие победы, то почему бы и нет Ну я тебя прошу. Хочешь кусок схемы нарисую? Ты в чём рисуешь? У меня есть Оркад (который надо ставить) и PCAD 2004 (уже установленный).

Грузиться будем через подключеный по дефолту USB-загрузчик.
А отлаживать через него можно?

уже представляю себе, например, как SPI в этом камне работает.
Во, через него и бум общаться

52. Tahoe, 06.03.2006 10:49
Chudik
Простейший контроллер дисплея можно забацать на той же ПЛИСке.
Оно конечно можно. Я имел ввиду другое. Заранее неизвестно, какой захочется ЖКИ. Потому имхо разумнее просто стандартный интерфейс, тот же SPI или UART. А уж какой ЖКИ, такой и контроллер к нему. Кстати, у Атмела камни со встроеным ЖКИ контролером.
Я вообще последнее время склоняюсь к мысли, что вместо кнопок и/или ЖКИ разумнее использовать обычный терминал. А уж будет это полноценный ANSY или VT100, либо просто пара кнопок с 2-х строчным дисплеем - дело десятое.

Рисую-то я в Оркаде. Но имхо ты просто идеологией этих камней пока не проникся. Они изначально заточены быть "вещью в себе". А если охота снаружи кучу периферии подцепить, есть другие камни в этой серии: http://www.atmel.com/dyn/products/param_table.asp?fa…amp;Direction=ASC
Вот пример, где подобные камни применяются: http://www.ruforum.net/?s=b7c0c0fd2b857908a9ef361c5f…mp;p=213093&#
Кстати, это к вопросу о дешёвых готовых блютус модулях.

А отлаживать через него можно?
Пока что я понятия не имею.
Вот ветка про SAM-BA: http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?t=674 Она у меня на очереди.
К тому же видимо надо параллельно с компиллером и средой разработки определиться, посмотреть какие там возможности.

53. Chudik, 06.03.2006 11:15
Tahoe
Заранее неизвестно, какой захочется ЖКИ
Вот именно поэтому и полезно иметь ПЛИСку на плате. Есть у ЖКИ стандартный интерфейс - замечательно. Нет, а нужно формировать некий набор сигналов и команд, вот тут-то и ПЛИСка и пойдёт, ибо весь интерфейс засовываешь туда, а обращаешься только черет тот же SPI.

Но имхо ты просто идеологией этих камней пока не проникся. Они изначально заточены быть "вещью в себе".
Да проникся, проникся. Поэтому и согласился с тем, что стоит платку делать именно с ним. Но никогда не знаешь, что тебе потребуется завтра. ПЛИСка поможет не беспокоится об этом. В конце концов, никто не запрещает не распаивать её. И интерфейс SPI выбрал, как наиболее простой вариант для процессора с "all inclusive".

надо параллельно с компиллером и средой разработки определиться, посмотреть какие там возможности.
Насколько я понимаю, основных варианта два: либо gcc (чисто программировоание), либо KAIL, поскольку там есть полная симуляция АРМов со всеми его портами. Не знаю только насчёт USB 2.0. Но с gcc вообще непонятно как отлаживать в железе, а для KAIL внешний девайс USB-JTAG дорогой, собака

54. Tahoe, 06.03.2006 12:11
Chudik
Вот именно поэтому и полезно иметь ПЛИСку на плате.
Плата на два слоя, под доступную "наколенную" технологию...
Подозреваю, что ты хочешь CPLD, что-то вроде EPM3064. С одной стороны, как я понял, у СЭМа есть аж три спецально обученых выхода, с программируемой частотой. Т.е. можно даже тактировать ПЛИС, что есть хорошо ( правда если оно нужно ). С другой стороны, придётся ещё один разъём лепить, что б ПЛИС шить.
Предлагаю это дело на вторую ревизию отложить. Я и так уверен, что где-то облажаюсь. Я ж пока даже в руках этот камень не держал.


либо gcc (чисто программировоание), либо KAIL
Я года два-три назад говорил со знающим человеком. Он упоминал ещё про некий greenhill, как самый-супер-пупер. Хотя может я и путаю что-то. Просто вопросами софта я пока не занимался вообще.

Добавление от 06.03.2006 12:57:

Chudik
Насчёт возможности отладки через USB:
you can use sam-ba for donwloading your code into the at91sam7s256. but there is no possibility for debugging, only memory. (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=4038#4038)

Добавление от 06.03.2006 16:14:

Ну что. Съездил в ТочкуЗапора, купил пару камней.

55. Chudik, 06.03.2006 20:44
Tahoe
Подозреваю, что ты хочешь CPLD, что-то вроде EPM3064.
На самом деле хочется FPGA типа Циклона

Предлагаю это дело на вторую ревизию отложить.
Ок.

два-три назад ....некий greenhill, как самый-супер-пупер. Хотя может я и путаю что-то.
Не путаешь. Но с неделю назад прочитал где-то, что KAIL обошёл Green Hill. Видимо потому, что ARM купил эту компанию.
Вот здесь есть немного о софте и JTAG через принтерный порт. http://www.olimex.com/dev/arm-jtag.html

Съездил в ТочкуЗапора, купил пару камней.
А что, плата уже готова?

56. Tahoe, 07.03.2006 06:04
Chudik
На самом деле хочется FPGA типа Циклона
О, Беня, это совсем другое дело. У меня висит задачка, где как раз нужна будет связка с чем-то вроде Асекс/Циклон. Но там ещё надо наверное с загрузкой ПЛИС из проца поиграться. Вот во второй ревизии и поиграем. Хотя, возможно, туда придётся камушек чуть постарше вкрячить. Ладно, там видно будет.

Видимо потому, что ARM купил эту компанию.
Про эту покупку я тоже упоминал, в начале ветки.

А что, плата уже готова?
Ещё нет. Сделать плату дело 1-2 часов. Спаять ещё быстрее, там же всего полторы детали. А вот трассировка - это время. А с учётом "взятых на себя обязательств" - минимум пара-тройка дней. К тому же, я ещё не определился окончательно с "форм-фактором".
Но не хочется потом ждать две недели, пока камни привезут. В Т.О. на складе было указано "5 шт.". Кстати, ну у вас там в СанХосе и цены... В Москве - 6 баксов в розницу. Хотя есть и 11-12, том же ЧипДипе.
С кварцем на 18,432 уже некрасиво выходит - нашёл только в корпусе HC48U. В идеале найти бы прямоуголник SMD 7х5 или 5х3,2.

57. Chudik, 07.03.2006 07:06
Tahoe
О, Беня, это совсем другое дело.
Я знал, что тебе понравится

во второй ревизии и поиграем.
ок

Кстати, ну у вас там в СанХосе и цены... В Москве - 6 баксов в розницу.
Угу, 8 баксов минимум. Плюс доставка. Мне вот интересно стало, сколько будет стоить переслать наборчик для сборки из Москвы сюда + твои траты на чип и изготовление платы. Не дешевле ли мне будет купить вот эту платку http://microcontrollershop.com/product_info.php?products_id=1198
У них, кстати, используется 12 MHz + PLL

58. Tahoe, 07.03.2006 07:33
Довольно любопытный пост: На примере одной задачи привожу результаты сравнений производительности LPC2106 и AT91SAM7S64 (http://www.caxapa.ru/echo/arm.html?id=32504)

Чувствую, пора ветку в порядок приводить. Пойду править первый пост...

Chudik
Насчёт доставки. Я в штаты слал ( последний раз около года назад ) бандероли, обычной совковой почтой. Причём судя по всему что обычной, что ускоренной - разницы нет, 1-2 недели. Денег стоило последний раз около 300 RUR, то бишь около 10 USD, при весе около 1 кГ.

вот эту платку
На первый взгляд - вполне обычная доска, за разумные деньги.

У них, кстати, используется 12 MHz + PLL
Для того, что бы не париться, т.е. просто воткнуться в USB и шить камень, нужен кварц 18,432 МГц. Если кварц такой, то, как я понимаю, фэктори-загрузчик заработает прям через USB.

59. Chudik, 07.03.2006 10:22
Tahoe
судя по всему что обычной, что ускоренной - разницы нет, 1-2 недели.
Это да. Ускоряется только в случае более-менее регулярных посылок по одним и тем же адресам.

стоило последний раз около 300 RUR, то бишь около 10 USD, при весе около 1 кГ.
Хммм, тогда если не будешь оценивать свою работу слишком высоко и не влом будет послать, то лучше от тебя получить такую


Довольно любопытный пост:
Да, показывает, что атмеловский процессор побыстрее будет.

Ой, слушай, я и не обратил внимание на то, что ты сделал такой классную первую страничку.

60. Tahoe, 07.03.2006 11:04
Chudik
Давай я сначала что-нить путное сделаю. А то мы уже почтовые расходы обсуждаем...

показывает, что атмеловский процессор побыстрее будет.
Только хорошо бы ещё нарыть пяток подобных сравнений. Мне там понравилось, что сравнение не на уровне религии, а с двумя конкретными железками на руках.

А первую страничку, я ж только что сделал. По сути сделал для себя любимого, имхо это лучший способ сделать хорошо.

61. Chudik, 07.03.2006 11:50
Tahoe
Мне там понравилось, что сравнение не на уровне религии, а с двумя конкретными железками на руках.
Угу, однозначно.

Давай я сначала что-нить путное сделаю. А то мы уже почтовые расходы обсуждаем...
Ну мне же надо прикинуть, на что рассчитывать

По сути сделал для себя любимого, имхо это лучший способ сделать хорошо.
Именно так

62. LazyCamel, 07.03.2006 11:54
А смысл ? УСБ нам надо ? Флеш внутренний нужен ? Тогда из всех АРМ7 более менее недорогие м распространеные это SAM7S и LPC214x. Есть еще StM STR712FRx но к распространненым их отнести у меня лично рука не подымается

Скорости Филлипков и САМСов примерно равны и выбор больше религиозный. Лично мне в LPC не понравилось отсутсвие DMA везде кроме USB. Да и сам движок USB вызывает архитектурно ощущение чесания левого уха правой ногой. Но ногами он дрыгать умеет быстрее чем САМс

63. Tahoe, 07.03.2006 12:26
Насчёт платки. На данный момент пришёл вот к чему. Продаётся куча плат, с примерно одинаковой функциональностью, за относительно небольшие деньги. Делать ещё одну такую же смысла не вижу. Пялясь в Оркад и читая по часу доки, прежде чем подключить очередную ножку, пришёл к выводу, что нужно сделать два проекта.

Первый, который в работе сейчас, некая "лайт" версия. Если по простому - кастрированная до нельзя. USB-based, разумеется. Но без всяких буферов на операционниках, без внешних ресет-контроллеров ( кстати, большой вопрос, какой покруче будет, тот что в СЭМе или внешний, имхо в СЭМе поинтереснее ) и т.п. А разъём хочу вывести так, что бы в стандартную макетку втыкать. Думаю это будет удобно.

Второй - из разряда "домашние проекты". Ну неинтересно, просто так дорожки таскать. Что-то вроде MP3-плейера какого-нить будет уместно. Либо ПЛИС подцепить к камню постарше. Как минимум - готовый логический анализатор может получиться. А может и до многострадального осцила доберёмся... Всё, молчу, молчу.

LazyCamel
А ты какой компиллер пользуешь?
Я пока качаю ИАР. Что б для начала разобраться побыстрее.

Чем "джитажишь"?

67. Zman, 07.03.2006 15:16

Tahoe

в первом посте ссылка на "OLIMEX" EB SAM7-P64 (60 USD) - неверная!
сейчас у тебя: http://olimex.com/dev/index.html
должно быть: http://olimex.com/dev/sam7-p64.html

68. Tahoe, 07.03.2006 15:52

Zman
Исправил. Спасибо.

Добавление от 07.03.2006 15:55:

LazyCamel
Да, спасибо. Я уже вроде разобрался с этим. Я просто сначала не понял, откуда они толерантность к 1,4 Вольта взяли.

69. Tahoe, 08.03.2006 11:14
Так, вроде в голове всё устаканилось, касательно форм-фактора платки.

Насчёт USB. Вот это понравилось: ... НЕ слушай болванов, которые заявляют что SAM-BA "неподходящий" для СЕРИЙНОГО программирования. ОН *ИМЕННО* ДЛЯ ЭТОГО И *БЫЛ* РАЗРАБОТАН. (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=4422#4422)
Итак, "пикантные подробности" про SAM-BA.
SAM-BA - встроеный в камень загрузчик, по-нашему, по-бразильски, bootloader. Он записан во флеше. Где его, при наличии кривых рук, можно благополучно убить. Потому копия этого загрузчика есть в ROMе ( ну или это просто кусок флеша, к которому нашим шаловливым ручкам никогда не добраться ). И если мы убили загрузчик, то можем его восстановить, путем нехитрых манипуляций. А именно:
- подтянуть пин TST и пины PA0, PA1, PA2 к "1"
- подать питание
- подождать коло 10 сек.

Итак, SAM-BA жив и здоров. После ресета управление передаётся ему. SAM-BA поддерживает два интерфейса - USB и UART. По умолчанию лезет в USB. Нам это и надо. Но для этого, USB должен функционировать. SAM-BA устанавливает частоты, исходя из кварца 18,432 МГц.
Ещё нужно полтянуть USB_D+ через 1,5 кОма, что бы сигнализировать USB-хосту о подключении устройства к шине. Можно тупо кинуть эти 1,5 кОма на 3,3 Вольта. Либо повесить на ножку порта и включать по мере надобности. Как я понял, в SAM-BA прошита нога PA16. И вот тут я не совсем догоняю. Есть дока, на Атмеловском сайте AT91SAM7S64 USB Certification (http://www.atmel.com/dyn/resources/prod_documents/doc6213.pdf) . В ней сказано, что они отправляли на сертификацию свою оценочную плату AT91SAM7S-EK (http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3784) . В том же документе сказано, что они выкинули из неё ряд компонентов, для уменьшения энергопотребления, в том числе полевик TR2. Это ключ, который подтягивает 1,5 кОма к 3,3 Вольта при подаче питания. Они вместо него кинули перемычку, между стоком и истоком. Тогда получается, что для bus-powered устройства так и надо делать...
Если кто вешал USB pull-up резистор просто на 3,3 В - есть какие-нить побочные эффекты? Ну там какое-нить незасыпание/непросыпание девайса... Где-то видел, описывались проблемы с NEC-овскими хостами, но это же устройство работало нормально на Интеле и VIA. Может это из той же серии?

Добавление от 08.03.2006 13:03:

Вот тут (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=4468#4468) есть такой текст: "благодаря встроеной подтяжке и её поведению после ресета ( активна ), только пин TST нужно удерживать в 1, что бы активировать SAM-BA".

Добавление от 08.03.2006 15:08:

Ещё насчёт запуска SAM-BA. Ссылка на пост перца из Атмел (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?p=2118#2118) :
Как было описано выше, если при ресете ножка TST удерживается в "1", то происходит перезапись SAM-BA из ROM во FLASH. При следующем ресете, если ножка TST оставлена неподключенной ( она внутри камня подтянута через 15 кОм к земле ), происходит запуск SAM-BA. Так будет продолжаться до тех пор, пока мы не зальём свою прошивку в камень. Причём наша прошивка _затрёт_ SAM-BA. И соотвественно при последующих запусках будет исполняться наша прошивка. До тех пор, пока мы не повторим вышеописанную процедуру с восстановлением SAM-BA, путём подтяжки ножки TST к "1".

Добавление от 08.03.2006 15:42:

Ну и на закуску. Работа с SAM-BA без дополнительных телодвижений. Как то: ресетов, замыканий ножек и т.п. Basic Bootloader Solution (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?t=1496)

70. LazyCamel, 09.03.2006 08:35
Дрыгать пулл-апом на USB на мой взгляд имеет смысл только у тебя длительный цикл инициализации девайса, потому как время отведенное на USB handshake составляет около 100 мс.

Убирать этот пулл-апп во время перехода в сон категорически НЕЛЬЗЯ, иначе тебя хот отключит сразу.

71. Tahoe, 09.03.2006 11:06
LazyCamel
Ок. Я как раз так и сделал. В смысле кинул подтяжку на 3,3В.

Добавление от 09.03.2006 11:12:

Я вот сейчас подумал. Смешно немного, но я не столько железкой всё это время занимался, сколько программить отовился. Хотя, наверное, это правильно. Железка получается - проще некуда.

78. Chudik, 09.03.2006 20:17
Tahoe
Тот, кто будет эту платку сам делать, скорее всего и JTAG сам будет лепить.
Возможно. Но тогда и самопальный JTAG адаптер будет совместим с де'юре стандартом JTAG разъёма для остальных ARMов

2. 14-ногий разъём не моё изобретение, т.е. штука стандартная.
Насколько я понял, не для ARM

3. 14-ногий JTAG скорее всего уже есть у многих.
а) Я не уверен, что все они совместимы
б) Если полностью совместимы, то сделать небольшой переходник не слишком большая проблема

4. Длина 20-ти ногового разъёма сопоставима с шириной всей моей платки.
И?
Я вообще, кстати, предложил бы делать в стандарте PC104. Но, видимо, это лучше оставить для второй версии с FPGA на борту.

79. Tahoe, 10.03.2006 13:34
Chudik
Большая двухрядная дура, на картинке справа - это JTAG.

80. m16, 10.03.2006 14:32
Tahoe
я бы 14-ти пиновый заложил.в случае острой небходимости спаял бы переходник 20->14

81. Tahoe, 10.03.2006 15:28
m16
Я вот к тому же склоняюсь. Если посмотреть на всё тот же сахаровский pdf-чик, с виглером, то там вообще только пины 1-10 задействованы.

Вот интересно, почему людям байт-бластера мало. Есть же более-менее стандартная распиновка.

Добавление от 10.03.2006 18:00:

Блин, все мозги свернул. Pinout для JTAG 14-пин. Помогайте...

82. m16, 10.03.2006 18:12
держи http://upload.caxapa.ru/Wiggler.zip

83. Chudik, 10.03.2006 19:10
Угу, только получается 16 пинов. Ни туда, ни сюда.
Я не вижу проблемы. Эта здоровая дура прекрасно встаёт по ширине платы.

84. Tahoe, 10.03.2006 20:47
m16
Это ссылка на то, про что я выше написал. Наверное выразился я криво.
Достаточно ли "стандартен" такой pinout?

Chudik
Угу, только получается 16 пинов.
А ещё два это какие?

85. Chudik, 10.03.2006 20:53
Ну так на схему посмотри. Там задействовано 16 пинов из 20. Половина, естественно, на землю.

86. Tahoe, 10.03.2006 21:08
Chudik
А, ты б сразу сказал, что про 20-pin вариант.

87. Chudik, 10.03.2006 21:42
Tahoe
Аааа...ээээ... в схеме, указанной m16 только 20 пиновый и стоит, вроде... Или я что-то пропустил?

88. LazyCamel, 10.03.2006 22:38
Короче дело так. Для ARM7 достаточно вообще 10 контактов. 2- +питания, 4 - сам JTAG,2 ресета, 1 ресетклок. Земля.
еще 2 - это дебаговые линии - обычно не используются.

Но для тестовой платки я бы тоже использовал 20-пиновый, уложив его с краю. А на продакшене не разводил бы вообще.

89. Tahoe, 11.03.2006 00:10
Chudik
???
По ссылке. Разъём Х1 - на LPT-порт, не рассматриваем. Разъём Х2 - JTAG, 14 пин. Плюс ремарка, мелким текстом: "Для ARM не устанавливаются: R8-R11, ... X2.11-X2.14"

LazyCamel
Это понятно, что 10 хватит. Вопрос в pinout, то бишь в разводке разъёма. Общего стандарта на это дело нет. А так, я бы просто взял распиновку байт-бластера и не парился.

Для продакшн - само собой, нафиг не надо. Но речь сейчас именно о тестовой платке.


Сложность собсно в том, что я пытаюсь развести почти одним слоем. Т.е. второй слой - земля. Что бы повторяемость была. И хотя вижу, что в одном слое точно не получится, есть вариант немного дорожек бросить по второму слою, причём в основном это питание, +3.3В, +1.8В, с тем что бы если кому сложно, мог просто бросить пяток перемычек вместо второго слоя. Всё ж не всякий в домашних условиях сумеет два слоя с дорожками 0,25 и зазорами 0,10-0,15 сделать.

90. Chudik, 11.03.2006 00:26
Tahoe
Может мы с тобой на разные схемы смотрим? Я говорю о той, что приаттачена к "Осваиваем AT91SAM7" или "Для тех, кому ресурсов AVR уже не хватает", #82 (http://forum.ixbt.com/topic.cgi?id=48:5248:82#82)

есть вариант немного дорожек бросить по второму слою, причём в основном это питание, +3.3В, +1.8В
Ну естественно кидай дорожки питания по вторму слою. С точки зрения ( во,вверну сейчас ) signal integrity абсолютно неважно, земля там у тебя или питание.

91. Tahoe, 11.03.2006 09:17
Chudik
Может мы с тобой на разные схемы смотрим?
Про разные. 20-пин - это я уже поставил, с ним вообще никаких вопросов.

Вопрос про разъём поменьше, например как на схеме виглера. Ссылка на неё - см. например чуть выше, пост m16. Или на первой странице, первая же ссылка в JTAG.LPT.

92. m16, 11.03.2006 09:38
Tahoe
вот нашёл (http://upload.caxapa.ru/jtag_arm_connectors.zip)

93. Tahoe, 11.03.2006 09:55
m16
Отлично . А учитывая, что погуглив чуток вчера, я нашёл такой документ (http://www.isystem.com/Services/Download/Document/91/iCard.pdf) , где для АРМа такая же разводка, будем считать что она если не стандартная, то хоть распространённая.

123. Tahoe, 14.03.2006 21:22
Тут и я подтянулся, со своей платкой. Докладываю.

Аккуратно спаял, поставил кварц 18,432 МГц, воткнул в USB и... "Обнаружено неизвестное устройство". Ну да не зря же я тут пару страниц назад про SAM-BA распинался. И про то, как она реанимируется. Вытащил USB-шнур, замкнул джампер RECOVER ( на нём у меня сидит ножка TST ), воткнул шнур в USB, посчитал до десяти . Отключился, снял джампер, воткнулся в USB снова и - вуаля. Обнаружилось "USB Composite Device". Win98 предложила установить драйвер от Мелкософт, что я и сделал. Следом обнаружились два устройства, оба "Composite USB Device". Драйвера к ним в Win98 отсутствуют. Из ранее прочитанного, делаю вывод что одно из них должно быть CDC-устройством ( Communication Device Class ). В общем буду сейчас разбираться дальше.

На всяк случай, вот что сейчас показывает USB-view:

Device Descriptor:
bcdUSB: 0x0110
bDeviceClass: 0x02
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x03EB (Atmel Corporation)
idProduct: 0x6124
bcdDevice: 0x0110
iManufacturer: 0x00
iProduct: 0x00
iSerialNumber: 0x00
bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x02
Open Pipes: 3

Endpoint Descriptor:
bEndpointAddress: 0x83
Transfer Type: Interrupt
wMaxPacketSize: 0x0008 (8)
bInterval: 0xFF

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Control
wMaxPacketSize: 0x0507 (1287)
wInterval: 0x0201
bSyncAddress: 0x40

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Control
wMaxPacketSize: 0x0000 (0)
wInterval: 0x0000
bSyncAddress: 0x07

124. Chudik, 14.03.2006 21:28
Tahoe
Тут и я подтянулся, со своей платкой.


Win98 предложила установить драйвер от Мелкософт, что я и сделал. Следом обнаружились два устройства, оба "Composite USB Device". Драйвера к ним в Win98 отсутствуют.
А чего не ХР? Стыдно уж сегодня на 98 сидеть. Да и драйвера, насколько я понимаю, сейчас только для ХР пишутся.

127. Tahoe, 15.03.2006 02:40
Надо бы дизайн этот выложить куда-нить. Но разбираться пока неохота с вышеобсуждавшимися ресурсами. Так что если кому присипичит, смогу выложить на какой-нить ftp. Ну и фотки чуть позже сделаю.

128. khach, 15.03.2006 03:06
Tahoe
Обнаружилось "USB Composite Device".
Это самба грузанулась- теперь можно свой код заливать.
Подробно все описано на http://www.at91.com/www/phpBB2_mirror/index.php4- форум АТ91. Только он глючит этот форум часто. В ветке про Sam7S все про самбу подробно описано- как создавалась, как загружаеться, драйвера какие. Там же ссылки на альтернативный программатор и протокол.

132. Tahoe, 15.03.2006 03:31
khach

Там же ссылки на альтернативный программатор и протокол.
Если это вот это Ветка AT91SAM7S Boot Assistant (SAM-BA) на форуме www.at91.com ENG (http://www.at91.com/www/phpBB2_mirror/viewtopic.php4?t=674) , то эта софтина под 98-й не хочет устанавливаться. Буду искать альтернативу. Хотя по ссылке, как я подозреваю, собственно и есть один из альтернативных вариантов.

Что мне вроде уже ясно. Все вариации на тему bootloader базируются вот на этом: AT91 In-system Programmer (ISP) (http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3883) .


Chudik
Если, конечно, ты не против.
Если ты в смысле поделиться - я пока вроде только этим и занимаюсь. Иначе - уточни, что имелось ввиду. Потому что если, скажем, в смысле "где хоститься", мне абсолютно всё равно.

139. khach, 15.03.2006 20:07
Почти по теме. Завершился Philips ARM Contest. Проекты-победители выложены в свободный доступ на http://www.jandspromotions.com/philips2005/. Куча интересных исходников под LPC2138.

141. Tahoe, 17.03.2006 00:27
Похоже, на сегодня я дошёл примерно до того же: http://www.telesys.ru/wwwboards/mcontrol/1228/messages/191201.shtml

142. Chudik, 17.03.2006 00:33
Tahoe
Ну а что ты хочешь. Весь application переносится в Индию, ибо это дешевле. А индюки - малые без юмора. Как их научили, так они и пишут.

143. Tahoe, 17.03.2006 00:34
Самое хреновое, что пока я так и не нашёл консольного программатора для SAM-BA. Ну и до кучи выяснил, что sam-prog зашил камень из под Win98.

Вообще ощущения пока не самые хорошие. С глюками пока не сталкивался, ибо ничего ещё не сделал, но вот весь supply не впечатляет. Вообще заточенность по WinXP не радует. Претензий пока нет только к IARу, но я особо на нём ничего и не делал ещё. А вот USB-драйвера, программаторы...

Зашил в камень demo_mass_storage.bin. Вроде всё сначала без проблем. Воткнулся, увиделся диск, подцепились драйвера. Но когда начал копировать файл ( под WinXP ), размером несколько мегабайт ( а размер этого демо-диска чуть больше 25 кБайт ), то скривило этот диск не по-детски. Зависло намертво. Ещё фигня одна. Обычно все виденые мною съёмные диски тоключаются так: клацаешь на нём правой кнопкой мыши и выбираешь "Извлечь". Всё, диск размонтирован, вытаскивай. А тут - ноль эмоций. Ну и через штатный значёк виндовый тоже фингя, ничего не отключается. Я понимаю, что демо, но блин... Я ж не один съёмный флеш- и "не флеш" диск видел, знаю как должно работать.

Добавление от 17.03.2006 00:50:

Хотя... Надо добавить и ложку мёда. В IARе документация, как обычно, на высоте. Вплоть до хтмл-ей, с описанием регистров.

Добавление от 17.03.2006 01:00:

В целом план действий у меня такой. От нового проца нужна не столько скорость или функциональность, сколько нужна некая платформа для проектов. В частности, что бы больше не париться с вопросом "а как данные в комп передавать", а задействовать тот же mass_storage. Пока копался, выяснил, что есть в USB любопытный device class, под названием Device Firmware Upgrade Group: http://www.usb.org/developers/devclass_docs. Возможно обновления прошивок через него где-то уже поддержаны.
В общем, похоже дело и впрямь идёт к использованию ОС. Это куча времени на освоение, так что придётся поискать путёвую. Что бы потом не было мучительно больно...

144. Chudik, 17.03.2006 01:28
Tahoe
От нового проца нужна не столько скорость или функциональность, сколько нужна некая платформа для проектов.
Согласен.

В общем, похоже дело и впрямь идёт к использованию ОС. Это куча времени на освоение, так что придётся поискать путёвую.
М-да, не хотелось, но придётся. Наиболее часто требуется VxWorks.

Ты уже можешь кинуть схемки, разводку платы, фотки на SVN?

145. Tahoe, 17.03.2006 02:04
Chudik
Кроме фоток.

Кинь ещё разок линк, плз. И если можно "попрямее". Насколько это возможно сделать не логинясь.

Добавление от 17.03.2006 02:23:

Зашёл я на http://svn.berlios.de/wsvn/ixbtscope. Теперь бы ещё понять, куда заливать это дело. Насколько я понимаю папка ARM_CPU это для осциловских дел.

147. Tahoe, 17.03.2006 02:53
Выложил (http://sam7s.narod.ru/index.html) пока на народе.

150. Chudik, 17.03.2006 04:56
Tahoe
Лет в 16 я бы может и переварил сходу весь объём новой инфы, включая SVN.
Я CVS осваивал, дай бог, чтобы не соврать, в 39-40, а он существенно противнее И русского описания не было совсем. Так что читай, не отлынивай. Потом спасибо скажешь и будешь удивляться, почему раньше не пользовался.

Добавление от 17.03.2006 12:34:

Tahoe
Осваиваем Version Control (SVN), #20 (http://forum.ixbt.com/topic.cgi?id=48:5343:20#20)

Добавление от 17.03.2006 20:40:

Tahoe
Вообще заточенность по WinXP не радует.
Никуда не деться Win9x уже никем не поддерживается.

похоже дело и впрямь идёт к использованию ОС.
Есть одна проблемка, кстати. использование любой ОС, боюсь, потребует наличия бОльшего количества памяти, чем есть в распоряжении младшего представителя АРМов, в котором all-in-one.

151. Зануда, 19.03.2006 22:19
Chudik
использование любой ОС, боюсь, потребует наличия бОльшего количества памяти, чем есть в распоряжении младшего представителя АРМов

ИМХО вы опять скатываетесь к аналогу полного РС в отдельно взятом устройстве. Тут и RAM и ROM и ОС и интерфейсы наружу... Прям промышленный компьютер получается.
АРМ конечно штука вкусная, ей бы еще быстрой DRAM памяти внутри несколько килобайт - цены бы ей не было...

152. Tahoe, 20.03.2006 01:12
Chudik
Насчёт нехватки памяти под ОС. С одной стороны, даже в самых младших машинках семейства 8 кБ SRAM. В реальности, имхо, внимания в этом семействе заслуживают в основном два камня: S64 и S256, с 16 и 64 кБ SRAM соответственно. Тем паче, что машинки в семействе взаимозаменяемы - почти все в QFP64 и pin2pin совместимы.
С другой стороны, требования embedded OS могут быть весьма скромны. От сотен байт в SRAM и от 1-2 кБайт, которые в 64 или 256 килобайтном флеше просто растворятся.

Зануда
Показательный пример, во что превращаеться программа без RTOS (http://www.telesys.ru/wwwboards/mcontrol/354/messages/169889.shtml)
Конечно, нет смысла городить ОС что бы зажечь 2 светодиода и обслужить 4 кнопки. А вот когда задача побольше... В общем имхо SAM7х уже достаточно серьёзный проц и решать на нём можно достаточно серьёзные задачи.
Согласись, приятно не ковырять USB-протокол и профиль mass storage, а написать почти стандартное OS_fopen().
http://www.ucos-ii.com/products/usb/usb-msd/usb-msd.html

153. Chudik, 20.03.2006 01:32
Зануда
вы опять скатываетесь к аналогу полного РС в отдельно взятом устройстве.
Да нет, сейчас большинство embedded систем на современных мощных процессорах (ARM, DSP) используют RTOS. Причины понятны, они примерно те же, что и переход с ассемблера на С, только на более высоком, системном уровне. Да можно пенять на современных программеров, что им лень написать обработку прерывания от порта, но это жизнь и для того, чтобы держаться на плаву приходится бежать вместе со всеми.

Кстати, стоит ознакомиться: http://www.freertos.org/

154. Tahoe, 20.03.2006 02:01
Кстати, сегодня узнал. Не запомнил, как называется, но есть операционка, которая стоИт практически во всех телефонах начального уровня ( без PDA-функциональности ). Ну там кнопки обслуживать, циферки на табло показывать и т.п.

155. Tahoe, 22.03.2006 23:18
Перепросил. Операционка называется что-то вроде "нуклеос".

Mikle
Вот если бы конвертнуть из ORcada в PCAD было бы просто замечательно (http://forum.ixbt.com/topic.cgi?id=48:5234:38#38)
Если не найдёшь конвертилок, могу попробовать вывести в Гербер. Только я сам лично с ним дел особо никогда не имел, так что если такой формат интересен и готов свои замечания выказать - сделаю.

А бесплатная плата - двухстороння. (За текстолитом с фоторезистом ехать в Зелиноград... бр.. ужос...)
Не понял.
Платку можно сделать на одной стороне. Другую оставить только как землю, плюс бросить несколько перемычек. Я специально трахался, что б на нижней стороне в основном 3,3В ( VCCIO ) было и переходы по-максимуму через ножки джамперов были. Т.е. всё что 1,8 Вольта специально только в верхнем слое разведено. Что бы камень случайно не подпалить. Но при условии, что переходные отверстия на землю запаяны, я же не Хоттабыч.

156. Mikle, 23.03.2006 07:39
Tahoe
Ну там на первом твоем посте список отладочных плат.
Самопальная - http://members.caxapa.ru/megajohn/iv/. Там две стороны.
У меня вообще без перемычек и на одной стороне.
Конвертер я ищу, что-то глухо + парллельно качаю ORCAD.

157. Tahoe, 23.03.2006 07:54
Mikle
Самопальная - http://members.caxapa.ru/megajohn/iv/
А, т.е. заведомо рабочая. Я-то думал, что ты сам рисовал, разводил...
Тогда видимо действительно что-то у тебя с камнем не то.

158. bvn123, 23.03.2006 14:44
Лучше бы разъем USB-mini B5 - наверняка у многих соотв.кабель не снимается с РС (подкл. цифровых фотоаппаратов), и он вроде поудобнее USB-mini-A4 и B4, соотв. кабели более доступны.

159. Mikle, 23.03.2006 16:16
Tahoe
Не это пример.. Я свою сам делал на одной стороне:
Mikle
Там две стороны.
У меня вообще без перемычек и на одной стороне.

Кстати, если не трудно, конвертни в гербер, попробую поиграться, скинь на мыло limbo собака bk.ru без пробелов. Я с ним (гербером) то же не очень.

160. Tahoe, 23.03.2006 17:25
bvn123
Так у меня под USB miniB 5-pin и сделано. Или ты про другую платку?

Mikle
На мыло не скину. Выложу туда же, где и схема, что б было всем доступно.

161. Chudik, 23.03.2006 18:43
Tahoe
Выложу туда же, где и схема
В смысле на SVN, надеюсь?

Добавление от 23.03.2006 18:45:

у меня под USB miniB 5-pin и сделано.
Этот элемент в оркадовской библиотеке есть или ты сам его рисовал?

162. Tahoe, 23.03.2006 21:12
Chudik
Сам рисовал. У меня вообще половина элементов hand-made. По разным причинам. Каких-то просто не было, какие-то пришлось модернизировать, с учётом изготовления печатных плат на коленке.
За референс для "miniB 5-pin" я взял экземпляр из Бурого Медведя (http://www.brownbear.ru/products.php?id_toc=173&id_cur_toc=1&op_toc=0&product_id_products=5447&page_products=1) .

Добавление от 23.03.2006 21:12:

В смысле на SVN, надеюсь?
Злобный ты.

163. Chudik, 23.03.2006 21:16
Tahoe
Сам рисовал.
Пришли мне или выложи на SVN. А то я сейчас рисую схемку для USBJTAG, а mini USB нет


Злобный ты.
Ну а что, на народ что ли выкладывать? Давай уж пользоваться нормальными технологиями разработки проектов. Уверяю тебя, потом сам не будешь понимать, как раньше работал без этого.

164. Tahoe, 23.03.2006 21:35
Chudik
Пришли мне или выложи на SVN.
А ты открой схему в Оркаде. И перетащи нужный элемент куда хошь. Хошь - в свой проект, хошь - в библиотеку. Последнее более правильный путь.

Добавление от 23.03.2006 21:36:

Стоп, торможу. Тебе же footprint нужен... Сейчас посмотрю.

Добавление от 23.03.2006 21:41:

Отправил.

165. Chudik, 23.03.2006 21:42
Ага, спасибо.

166. Tahoe, 23.03.2006 21:43
Насчёт нумерации пинов - в соответствии со спецификацией www.usb.org. Не считая креплений, само собой.

167. iizerg, 24.03.2006 00:08
Вопрос на засыпку:
как к этому Сэму прикрутить клавиатуру ps/2 или мышку?
чтобы было дешево и красиво?

168. Tahoe, 24.03.2006 00:38
iizerg
Наверное так же, как и к AVRу (http://www.atmel.com/dyn/products/app_notes.asp?family_id=607) : AVR313: Interfacing the PCAT Keyboard (http://www.atmel.com/dyn/resources/prod_documents/DOC1235.PDF) . Только исходник (http://www.atmel.com/dyn/resources/prod_documents/AVR313.zip) придётся поправить.

169. iizerg, 24.03.2006 08:42
нет, это все уже давно изучено - дерганье ножками - в большом камне - не очень красивое решение
пока склоняюсь к мысли взять мелкую AVR, и прицепить ее на SPI + IRQ, но может есть решение получше?

170. Tahoe, 24.03.2006 11:23
iizerg
пока склоняюсь к мысли взять мелкую AVR, и прицепить ее
Как-то неспортивно это... При такой периферии в СЭМе имхо это будет кощунство.

Вот погуглил: http://www.computer-engineering.org/ps2protocol
На первый взгляд USART в синхронном режиме ( с клоком ) это оно и есть. Тока с двунаправленностью до конца непонятно.

171. Leka, 24.03.2006 11:31
Вот и двигаемся потихоньку к многоядерным микроконтроллерам

173. Tahoe, 24.03.2006 12:43
Leka
Вот и двигаемся потихоньку к многоядерным микроконтроллерам
Это ещё фигня. Я тут поковырял блютус-донглы, на предмет "заэмбеддить". Дык там вообще кошмар - ARM и DSP в одном флаконе. Вот тебе и контроллер двухядерный...

211. iizerg, 25.03.2006 22:58
Chudik
за ссылку на ARM project (http://www.cl.cam.ac.uk/~fms27/teaching/2003-04/arm-project/index.html) - спасибо, нашел там то что нужно было:
# Electronic Dice in Verilog (easy)
# String sort in ARM assembler (hard)
# Mouse interface in Verilog (easy)
# Reading the mouse from the ARM (hard)

217. Зануда, 27.03.2006 08:53
Chudik:
Я так понимаю, что вы делаете макет для экспериментов, но с прицелом для конкретного проекта. Просто из обсуждения и документов ничего не понятно. Пока почитываю, пытясь понять суть. С сожалением отметил, что Си так и не пошел, поэтому скорее всего эта ветка мимо меня. Программирование - это не в этой жизни. К тому же с такими зубрами мне как то вякать стыдно.

218. Chudik, 27.03.2006 09:16
Зануда
Я так понимаю, что вы делаете макет для экспериментов, но с прицелом для конкретного проекта.
Неправильно понимаешь . Платка, да, для экспериментов. Но проект не конкретный, а любой будущий, поскольку вследствие дешевизны ARMов сейчас их применяют где угодно. Одно из требований практически любого работодателя - работа с этими процессорами.

С сожалением отметил, что Си так и не пошел, поэтому скорее всего эта ветка мимо меня. Программирование - это не в этой жизни.
А ты пробовал? Хоть это и не в тему в данном топике, очень рекомендую: www.codeblocks.com Opensource C/C++ IDE для практически любой системы. Найди любой курс обучения языку С и пробуй. На самом деле всё это не так сложно.
Например. http://www.eskimo.com/~scs/cclass/ , вернее, http://www.eskimo.com/~scs/cclass/notes/top.html и http://www.eskimo.com/~scs/cclass/int/top.html
Единственно, что этот курс основан на классике: Керниган и Ричи. Я учился по существенно более простой и забавной книжице: Уэйт М.,Прата С.,Мартин Д. Язык Си. Руководство для начинающих М Мир 1988г. 512с. Картонный переплет, Обычный формат
Возможно, подойдёт вот эта: http://www.ozon.ru/context/detail/id/107914/?partner=dmvv
Она же
http://computer.bookprice.ru/book-49578.html

219. Tahoe, 27.03.2006 10:12
Зануда
С сожалением отметил, что Си так и не пошел, поэтому скорее всего эта ветка мимо меня.
Вообще не вопрос. Тебе сейчас про Си надо знать только две вещи. Что начинается всё с функции main() и что вообще в Си есть функции. Этого достаточно, что бы ножками на проце подёргать.
Короче, ты "захоти" и начни задавать тупые вопросы.

Насчёт Карнигана и Ричи. У меня это до последнего времени была единственная настольная книга. В прямом смысле - на мониторе лежала, что бы далеко не тянуться. Примерно года три лежала... Это при том, что я давно уже кроме .pdf файлов вообще ничего не признаю.

223. Tahoe, 27.03.2006 11:19
Зануда
Для тебя разница между Си и АСМом сейчас в том, что когда тебе надо завести переменную в АСМе ты должен указать регистр и работать с ним. А в Си ты просто говоришь "переменная i". И тебе абсолютно по-боку, в какой там регистр эта переменная запихнётся. Но ты должен сразу оговорить тип этой переменной. Т.е. синтаксис языка почти человеческий. Ты можешь объявить как int i, long i или char i, в зависимости от того, какой размер переменной тебе нужен. Например "char" это всегда 1 байт, т.е. 8 бит. Ещё ты можешь указать какая это переменная - со знаком или без. Т.е. "signed char i" или "unsigned char i".


Вот с этого и начнём. Заведём переменную и будем ею проверять ножки порта. Т.е. у нас есть порт в АРМе, он 32-х битный. Заведём переменную, размером 32 бита, т.е 4 байта. Знак нам не нужен, т.е. переменная будет беззнаковая ( от 0 до 2^32 ). Пока всякие ARMовские заморочки вроде THUMB не рассматриваем. За референс берём всё-таки IAR-компилятор, как офигительно документированный.
Поскольку размер int равен 32 бита, переменная будет типа int. Поскольку знак нам не нужен, объявим её как беззнаковую, т.е. unsigned. И давая на ней жениться...
код:
main()
{
unsigned int i;

while( 1 )
{
i++;
PORT_OUT = i;
}
}


Продолжать будем?

225. Chudik, 27.03.2006 11:22
Tahoe
Например "char" это всегда 1 байт, т.е. 8 бит.
Уверен?

iizerg
покажите, плс, релиз платы - откуда там взялось 4 слоя?
Нет пока. Я только сегодня начал разводить.

Вопрос ко всем: выкинуть большой USB или оставить?

233. AlexBoy99, 27.03.2006 14:41
Привет всем!
Где можно в Киеве купить AT91SAM7S256?

234. iizerg, 27.03.2006 21:42
я брал в Виакоме, штучно... но минимальный заказ кажется 50 грн.
попутно - у них-же есть одно-двух гейтовая логика серии lvc.

235. Chudik, 31.03.2006 04:18
Постинги, посвящённые дизайну USB JTAG адаптера перемещены в USB JTAG adapter (возможно универсальный) (http://forum.ixbt.com/topic.cgi?id=48:5406)

236. Tahoe, 03.04.2006 07:41
Набросал на макетке Wiggler. Точнее говоря нечто wiggler-образное. Под рукой валялась HC244. Провод удлинняющий LPT у меня аж 3-х метровый. Никаких конденсаторов по питанию, антизвоновых резисторов и прочая. Кроме собсно HC244, перемычек и транзистора BC847 с двумя резисторами - один в базе, другой в коллекторе, на макетке больше нет _ничего_.
Ви таки будете смеяться, но оно работает.

Проверил на:

IAR - ewarm.
Обломс. Демо версия не позволяет получить выходной файл с прошивкой. Т.е. build работает только в симуляторе. Какие он вообще поддерживает JTAG-железки - х.з. Вообще-то есть вроде как две "демо". Одна eval, другая kiсkstart. У меня - ks. Чё ей ещё надо - не знаю. Одна вроде лечится, другая нет. Надо покопать, но как то меня IAR всё больше и больше напрягает своими всё разрастающимися соплями.
Вердикт: пока "ф топпку".

KEIL - uVision3.
В стандартной поставке есть только два мнен..., есть только два драйвера. Один под "родной" для uV3 "ULINK ARM дебьюджерр " стОящий денег и работающий через USB. Другой под стандартизованый компанией ARM и настоятельно рекомендуемый ею же интерфейс для подобных железок - "RDI Intervace Driver". Учитывая, что "третьего дня" компания ARM шатаясь по магазинам прикупила, кроме носок, маек и подтяжек для брюк, ещё и компанию Keil , неудивительно было увидеть здесь подобный драйвер. Среди настроек оного RDI-драйвера замечены были только два пункта: "J-LINK Flash Programmer" und "uVision Flash Programmer". Первое - USB, потому неинтересно, второе... Будем считать что я тупой. Но так и не понял как оно работает. Подозреваю, что нужна dll для моего вигглера. Где такое дают и дают ли вообще, пока не знаю.
Вердикт: пока "ниасилил".

ROWLEY - CrossWorks.
Мягко говоря "своеобразный" интерфейс. Во вторых - довольно нагромождённый. Народ ея где-то хаял, мол скорее старушка-пенсионерка через Кутузовский перейдёт, чем она выполнится программа скомпилённая. Но... Не знаю, мне понравилось. И почему-то мне в ней более-менее всё сразу было понятно. Ну и в текущем контексте - там есть поддержка СеггерВигглер. Просто выбрал, нажал билд-анд-программ - и светодиодики заморгали на моей макетке.
Вердикт: "тема wiggler раскрыта".


Вопрос. Какие есть ещё программаторы через JTAG вообще и JTAG.LPT в частности? Маякните, кто знает, а я первыю страничку обновлю.

237. LazyCamel, 03.04.2006 08:40
Для этих целей отлично подходит вышеупомянутый Х-Джытаг , гражданина с картежной кличкой 21

238. Tahoe, 03.04.2006 09:24
LazyCamel
Оп, я тормоз. Точно.
Сейчас попробую...

Добавление от 03.04.2006 12:24:

Не выходит каменный цветок. Не могу заставить работать HJTAG под KEIL-ом.

Установил HJTAG. JTAG сервер запущен, торчит в трее.
В соответствии с рекомендациями автора (http://hjtag.blogspot.com/2005/08/h-jtag-qa_19.html) подключил HJTAG к KEIL.
Скачал и установил утилиту для пробразования HEX в BIN (http://www.keil.com/download/files/hex2bin.zip) . Подключил её как "Options for target" > "Output" > "Run User Program #1". Помучавшись с форматом аргументов вроде допёр как надо. Заработало.
А вот когда клацаю "Download to Flash Memory"... Сначала KAIL пытался грузить *.elf. Потом я в "Options for target" > "Output" > "Name of Executable" прописал blinky.hex. Теперь получаю:
Load "D:\\work\\programs\\keil\\ARM\\Boards\\Atmel\\AT91SAM7S\\Blinky\\Flash\\blinky.hex"
только ничего никуда не грузится...

239. Tahoe, 04.04.2006 09:51
LazyCamel
IARом (счаз кручу WinARM).
Жытажу вигглером с сахары

Полез я разобраться, что там с IARом ( покрутил CrossWorks - не могу больше, достали меня эти "подвисания" главного окна ). Не получается виглер прикрутить. Пробовал выбрать в опциях дебаггера "Macraigor > Wiggler", "RDI > external > H-JTAG". Пофиг. Как у тебя сделано?

Добавление от 04.04.2006 09:53:

Судя по моим поискам, внятно так никто и не сказал, удалось подружить вигглер с KEIL или нет. Точнее ни одного варианта я пока не нашёл.

243. Vesel'chak U, 05.04.2006 00:39
Tahoe
Вигглер часто виснет? А то мне вчера жаловались. У него правда и какая-то фирменная коробочка USB-JTAG подвисает, но там хоть комп перезагружать не надо.

244. Tahoe, 05.04.2006 01:54
Насчёт IARа, вигглера и ранее написанного мною. Слегка лоханулся я. Не ту версию ИАРа мучал. сейчас вроде запустилось. Поправил первый пост, что б никто не напоролся на эти же грабли.

Vesel'chak U
Я не так много пока наработал с ним, дальше программы моргания светодиодами ещё не ушёл. Но предварительно - сильно зависит от среды. Под CrossWorks вообще ни разу не завис. Сейчас вот мучаю IAR. Сам ИАР себя как-то немного странно ведёт в режиме дебаггера. Но лампочки у меня моргают.

Добавление от 05.04.2006 07:51:

Ковыряю IAR. Не ломаный, нормальный, свежеустановленый. Правда перед этим стоял ИАР кик-старт, но был снесён, а затем проставлен ИАР евалюэйшн.

Что замечено:

1. Иногда "замерзает" после нажатия на "build". В логе на этот момент последняя строчка main.c, видимо это компиллер. На кнопку "stop build" не реагирует. Секунд через *дцать само "оттаивает".

2. Подвесил-таки wiggler-а. Когда отлаживаюсь в RAM - никаких проблем не было, пока ни разу. А вот как только залил во флеш... Камень живёт своей жизнью, спокойно моргает лампочками в полном соответствии с зашитой программой. На попытки достучаться к нему по JTAG-у не реагирует. Снимал питание ( отключая и LPT, разумеется ), "вытряхивал пепельницу" ( закрывал/запускал IAR ) - всё ему пофиг. Моргает себе лампочками. На ресет в этом состоянии камень не реагирует ( см. первый пост этой ветки, секция [А ВОТ...] ). В конце концов отключил питание, навесил джампер на JTAG - лампочки не моргают. Запустил "дебьюджер", потом снял джампер JTAG, снова запустил дебаггер - увиделось. После этого в RAM отлаживается по прежнему нормально. С флешом буду ковыряться, но вроде хоть проблема обозначена ( я надеюсь ).

247. Chudik, 06.04.2006 12:08
at90
USB JTAG adapter (возможно универсальный) (http://forum.ixbt.com/topic.cgi?id=48:5406)
Почитай там последние сообщения.

248. Unicode, 07.04.2006 15:17
Работал ли кто-нибудь с AT91SAM7X?
Я сам в этом деле новичок, помогите кто чем может
Скачал описание на этот МК, там написано что у него есть Ethernet, мне его как раз и надо. Скачал ЕК с AT91.com там на плате еще дофига всяких микросхем, в частности, Ethernet к ней подрубается через DM9161AE. Возможна ли работа с Ethernet напрямую, без лишних микрух?
Как, чем и на чем он вообще программируется? Я так понял, что удобнее всего в IAR (версию не знаю) на сях. Поделитесь пожалуйста полезными ссылками на тему программирования этого контроллера....

249. khach, 07.04.2006 15:47
Unicode
Возможна ли работа с Ethernet напрямую, без лишних микрух?
Нет. Гуглить по термину PHY. Это оно и есть.

Как, чем и на чем он вообще программируется
На Сях . Компиляторов есть много разных- IAR, Keil, GreenHills, GNUшный. При работе с Эзернетом- основной вопрос -найти рабочий IP стек, чтобы он влазил в имеющиеся ресурсы. Обычно это взаимосвязано с выбором ОС, под которой это все будет ходить.

250. LazyCamel, 07.04.2006 15:51
Unicode

Микруха нужна обязательно, необязательно именно такая.

Примеры использования Х-ойвой серии с двумя вариантами IP стека есть в во FreeRTOS - но сам не пробовал.

251. Tahoe, 10.04.2006 18:41
Наверное не скажу ничего нового. Но поковырявшись понемногу с CrossWorks, IAR и KEIL, хочу сказать следующее. Начинать надо, безусловно, с CrossWorks. Скачать, запустить, проверить что свежеспаяный Wiggler работоспособен и снести этот CrossWorks к такой-то матери. Если страшно разбираться с новым процом и охота привычной среды, то можно поставить IAR. Wiggler с ним тоже вяжется и вполне прилично работает. Но, блин, этот KEIL... Он мне все карты спутал. После него мне на IAR даже смотреть не хочется, просто убожество. Определённо - KEIL действительно крут, имхо. Но пока у меня всё по старику Крылову, про "лису и виноград". Никак не могу wiggler с ним заставить работать ( приходится через H-JTAG, не знаю, может есть другой способ, но без всех этих извратов *никсовых ).

В общем, имхо если охота покататься на Феррари, хотя нет, скорее на Ягуаре ( в том смысле, в плане комфорта и дизайна Феррари тут и близко не валялась ), то это KEIL.
Осталось только его подружить с Wiggler-ом. С виду всё "типа" работает, H-JTAG в трее лампочками моргает, а PC стоИт на 0x0. Наверное надо с настройками линкера повозиться.

252. LazyCamel, 10.04.2006 20:26
Tahoe

Безотносительно Виглера

Феррари с Ягуаром даже сравнивать не стоит.

Ферры - это скорость, время, растояние.
Ягуар - расслабленое оттягивание на растояния 50 км и рассказы "да я если захочу, да я могу так , и вообще у меня натурная кожа и 5 литров под капотом "...

253. Tahoe, 10.04.2006 20:59
LazyCamel
и вообще у меня натурная кожа и 5 литров под капотом
Вот именно это мне в KEIL и нравится. Я даже забросил ( думаю временно ) любимый FAR-овский текстовый редактор, ради KEIL-овского скакания по функциям и прочая. Не то, что бы впервые такое увидел, просто как-то всё по-человечески сделано. Во всяком случае на первый взгляд. А ведь я ещё до самого вкусного не добрался, до симулятора периферии. И уж больно охота мне логический анализатор пощупать. Но это попозже, я и так из графика выбился катастрофически.

Да, а wiggler у меня уже работает. Не знаю как дальше будет, но пока дело было не в бобине... Надо было настройки мне внимательнее смотреть, в частности ram.ini.

254. Chudik, 10.04.2006 22:39
ВАУ, Tahoe втянулся в IDE!!!

255. TiN_MGP, 11.04.2006 03:34
Подключил Wiggler через jtag tools 0.5.1 (через cygwin 2.0 под win2003ee) к сабжу, работает, но местами вылетает при связи - JTAG connection error (TDO is 1) - что за бяка?

Кабели не длинные, LPT 1.5метра, к девайсу 10-15см где-то. буфер HC244 DIP

256. Chudik, 11.04.2006 04:40
TiN_MGP
Попробуй сначала под чистой системой, а не через cygwin 2.0 под win2003ee

257. TiN_MGP, 11.04.2006 05:47
Chudik
Пробовал скомпилить сырец под Debian Linux 3.1 Sarge с ядром 2.4.12, ничего не вышло. просто тупо подвисает и все, ждал 2 дня (машина небыстрая, Pentium 166MMX + 128MB SDRAM, сервер)

258. Chudik, 11.04.2006 05:55
TiN_MGP
А попробовать сначала на чисто виндовой машине религия не позволяет?

259. TiN_MGP, 11.04.2006 06:52
Chudik
А разве существует jtag tools под win? можно ссылочку? С удовольствием попробую.

260. Chudik, 11.04.2006 07:01
Тебе нужен JTAG tools сами по себе? Ради искуcства?

261. Tahoe, 11.04.2006 08:15
TiN_MGP
А разве существует jtag tools под win? можно ссылочку? С удовольствием попробую.
Обновил первый пост. См. TOOLS.JTAG.

262. tiasur, 12.04.2006 06:00
В США и Канаде, если кому интересно планируется TI семинар:

TMS470 Microcontroller Seminar 2006 (http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=SEM106003)
http://focus.ti.com/graphics/trng/general/sem106003_tms470mcu.jpg

* Introduction to the TMS470 family of ARM7 based microcontrollers
* Introduction to the high performance Peripheral Modules
* Demostration of the TMDS-FET470R1B1M TMS470 System Kickstart Kit
* Introduction to TMS470 and High Performance Analog System Design tool

263. Chudik, 12.04.2006 06:05
Если работать буду к этому времени и работа будет связана с процессорами, обязательно схожу.

264. Unicode, 12.04.2006 06:51
А зачем нужен этот ЖТЭГ? Какой-то он дорогой.... и вообще, я сейчас напишу как я себе все это дело представляю, а вы меня поправьте пожалуйста если я ошибаюсь
Вот смотрите, покупаю я контроллер sam7x, определился какие интерфейсы мне нужны (а нужны мне, я так думаю, рс232 для того чтоб его программировать и эзернет, ну надо мне эзернет, а всякие там юсб и кэны тока ноги занимать будут, и платку усложнять), потом развожу платку и... а вот теперь я, если честно, не знаю что делать .... вроде туда нужно ось вшить, вроде есть портированая freeRTOS с реализацией TCP/IP, а вот как это сделать имея 232-й интерфейс и дистр оси? Ну а потом уже надо прогу писать .... но до этого мне еще далеко

265. Chudik, 12.04.2006 07:04
Unicode
А зачем нужен этот ЖТЭГ?
Стандартное средство отладки. Вернее, транспорт для отладки. Можно остановить процессор, прочитать его регистры, переменные, записать новые значения, если хочется потестить какие-то специальные случаи....

Ну и загрузчик программы в ОЗУ. Насколько я понимаю, можно кусок кода поменять во время отладки. Обычные средства записывают только во флэшку и требуют рестарта.

266. msnk, 13.04.2006 20:53
khach

Unicode
Возможна ли работа с Ethernet напрямую, без лишних микрух?
Нет. Гуглить по термину PHY. Это оно и есть.


Ради интереса отгуглил... вывалило всякой муры выше криши.

Вообще то у SAM7X наличиствует интерфейс MII/RII т.е. интерфейс связи с MAC контроллером (функции коего этот гаврик, SAM7X, и выполняет). Для работы в среде передачи (линии/кабеле) необходима м/с драйвера физического уровня (например RTL8201), плюс обвязка к ней. А для работы по протоколам TCP/IP существуют специализированные схемы (имс) где эти протоколы уже наворочены, причем энти имс с одной стороны имеют управлящий канал под MCU, а с другой кончаются МАС интерфейсом с выходом на схемы драйверов физического канала. Так шта совсем не обязательно городить огород с осью ...

267. Unicode, 14.04.2006 13:57
Ух ты! Вот это уже интересно..... А то что-то мне кажется с этой операционкой кроме головной боли ничего не будет, гораздо лучше если стек будет аппаратно реализован
Вот накопал микруху W3100A, действительно, с одной стороны PHY с другой MCU. Один вопрос - а что такое MCU? Что-то я гуглил гуглил и ничего толкового не нагуглил %) Смогу я этот непонятный интерфейс сам на свободных ногах реализовать? И еще, в описании к этой микрухе написано что она обеспечивает 4 независимых канала Ethernet. К чему бы это??? По 4-м разным айпишникам можно будет обращаться что ли? Или просто 4 потока может одновременно быть?

268. LazyCamel, 14.04.2006 15:43
Мне тут один человек недавно до пены доказывал что что програмные фаерволлы отстой, зато аппаратные - рулез. В конце концов достал так, что пришлось развинтить "аппаратный фаерволл" D-Link, припаять пару проводов и показать человеку лог загрузки Linux.

269. Tahoe, 14.04.2006 16:12
Так, я в конец одурел.
Тема: прерывания.
Задача: запустить PIT, что бы дёргал прерывание, например, раз в 10 мСек. В прерывании хочу моргнуть светодиодом.
Собственно с самим PIT вроде всё более менее ясно. Может позже появятся вопросы, ибо хочу на чётный/нечётный тик дёргать разные светодиоды. Для этого хочу читать младший бит в PICNT.

Сейчас непонятно, как подружить KEIL с AIC. Пользуюсь билиотечкой-хедером lib_AT91SAM7S64.h Там есть AT91F_AIC_ConfigureIt(), в которой последний аргумент это имя функции ( у меня это system_int() ), которая должна вызываться при прерывании. То ли лыжи не едут, то ли я попасть в неё немогу никак.

код:
  AT91F_AIC_ConfigureIt(  AT91C_BASE_AIC,
AT91C_ID_SYS,
AT91C_AIC_PRIOR_LOWEST,
AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,
system_int );

AT91F_AIC_EnableIt( AT91C_BASE_AIC, AT91C_ID_SYS );

AT91F_PITInit( AT91C_BASE_PITC,
5000, // uSec
MCK );

AT91F_PITEnableInt ( AT91C_BASE_PITC );

270. Mikle, 14.04.2006 18:57
Tahoe
Не ты один такой - я в уарт пытаюсь второй день вьехать.
Ты прерывания все разрешил: на уровне ARM core (в CPSR) и на уровне переферии?
На уровне Advanced Interrupt controller (AIC) ты вроде разрешил...

271. Tahoe, 14.04.2006 19:31
Mikle
Ты прерывания все разрешил: на уровне ARM core (в CPSR) и на уровне переферии?
Хороший, кстати, вопрос...

В принципе, я вроде в меру тупо передирал из "Hello.c". Плюс поглядывал сюда (http://www.caxapa.ru/echo/arm.html?id=40916&1144961830) и сюда (http://www.caxapa.ru/echo/arm.html?id=35617) . Ну и на всяк случай сюда (http://www.caxapa.ru/echo/arm.html?id=42812) . Но видимо перетрудился, чуток. Сам себя съел.
Самое фиговое, что я пока не представляю _прозрачно_, как вся эта бадяга работает. Т.е. начиная от стартапа. Вот, кстати, первый вопрос. Обязательно инитить вектора в стартапе? Думаю нет, за исключением наеврное вектора reset.

Добавление от 14.04.2006 19:32:

Чёрт возьми, от сознания того, что не я один трахаюсь даже легче стало.

272. LazyCamel, 14.04.2006 19:54
Tahoe
Возьми с атмела (или www.at91.com) пример, он так и называется "работа с прерываниями" есть как для ИАРа, так и для Кейла.

273. Mikle, 14.04.2006 20:05
Tahoe
я тоже передираю, но ничерта не работает
В примере в иаре есть такая штука:
// Set up the default interrupts handler vectors
AT91C_BASE_AIC->AIC_SVR[0] = (int) AT91F_Default_FIQ_handler ;
for (i=1;i < 31; i++)
{
AT91C_BASE_AIC->AIC_SVR[i] = (int) AT91F_Default_IRQ_handler ;
}
AT91C_BASE_AIC->AIC_SPU = (int) AT91F_Spurious_handler ;
может поможет...

274. Chudik, 14.04.2006 21:17
Unicode
Один вопрос - а что такое MCU?
Micro Controller Unit Базовое определение для ембеддеров, между прочим

275. Tahoe, 15.04.2006 23:22
Так, вернулся со свежей головой к прерываниям. Первое, что увидел в хелп-е KEIL, так это некоторую разницу в синтаксисе, в зависимости от используемого компилера...
Ремарка. Для тех, кто не в курсе, в KEIL можно выбрать, каким компилером компилить будем: RealView, CARM или GCC.
... Так вот и всплыл довольно фундаментальный вопрос - а какой из них пользовать? Ну, допустим, GCC пока пусть подождёт. А чем RealView от CARM отличается?

Добавление от 15.04.2006 23:25:

Кстати, мне всё больше и больше нравится KEIL-овский хелп, своей основательностью. Да и пользоваться им гораздо удобнее, чем лазить по ИАРовским pdf-кам.

276. Chudik, 16.04.2006 00:20
Tahoe
Так, глядишь, до приятия WinXP дойдёшь
А по теме. Хотелось бы использовать как раз GCC/MinGW

277. Tahoe, 16.04.2006 08:51
Chudik
Хотелось бы использовать как раз GCC/MinGW
Да я не против. Просто хотелось бы сначала посмотреть какой-нить коммерческий компилер.
Прям хоть мультихедеры делай или ищи...

Так, глядишь, до приятия WinXP дойдёшь
А ничего смешного. Уже две недели только под WinXP и сижу. Даже чуток памяти пришлось добавить в машину. А я больше всего на свете не люблю этим заниматься - модернизировать рабочую машину.

278. Chudik, 16.04.2006 09:49
Tahoe
хотелось бы сначала посмотреть какой-нить коммерческий компилер.
А смысл? GCC хорош тем, что он не зависит от системы. Единственно, что он не знает тонкостей оптимизации. Но на это сейчас обращают всё меньше внимания. Во главу угла ставится переносимость.

279. Tahoe, 16.04.2006 10:00
Chudik
Я дел с ним никогда не имел. Но судя по всему там ещё надо всякие cygnus-ы ставить, настраивать наверное надо... Хотя могу ошибаться, конечно.

280. Chudik, 16.04.2006 10:21
Tahoe
Хотя могу ошибаться, конечно.
Можешь
www.codeblocks.org
Вызываемая командная строка, вроде, использует gcc.

281. Tahoe, 17.04.2006 19:55
"Записки сумашедшего"
...
Понедельник, 17-е, около 12:00
Тихо, но яростно ругаясь, метался по интернету, в тупой надежде, что может с каким-нить ГринХиллз или может WinARM будет понятнее. От отчаяния скачал WinARM.
...
Понедельник, 17-е, около 16:00
Решил сходить бросить денег на мобильник и купить кофею, благо тот кончился. На самом деле, главная цель была прогуляться и остудить мозги.
...
Понедельник, 17-е, около 19:00
Смотреть на startup.s уже глазам больно. Решил, наконец выяснить, что же это за АСМ-инструкция такая - "B". Поискал в Кейловском хелпе - оказалась BRANCH. Ну что за ленивые ублюдки! Я третий день мучаюсь этим вопросом, не зная как и где поискать столь длинное и понятное слово.
...
Понедельник, 17-е, около 19:00
Осознав, что "B" это "BRANCH", наконец понял две вещи. Первое - я тупею и это необратимый возрастной процесс. Второе - пример Hello.c, прекрасно запускающийся в RAM-конфигурации, во FLASH-конфигурации вылетает на хэндлер... А вот тут интересно. Если верить окну дизассемблера, то это IRQ_Handler. А если клацнуть по окну sam7s.s ( оно же startup ), то вроде как я попадаю на хэндлер DAbt_Handler, то бишь data abort. Между прочим, строчкой ниже находится пресловутый IRQ_Handler.
...

Добавление от 17.04.2006 20:24:

Что совсем добило сегодня. В конфах много крику было что, мол, через виглер флеш шить не получится. И про KEIL такое писали, и про IAR. Вот сижу и думаю - может собственным глазам не верить?

282. Vesel'chak U, 17.04.2006 23:27
Tahoe
через виглер флеш шить не получится
Получается. Сам видел результат.

283. Tahoe, 17.04.2006 23:44
...
Написал в "Спортлото". (с)
Ненавижу все эти тупые IDE. Дело оказалось в том, что надо создать ini-файл для "дебьюджера", в котором ручками надо прописать значение ProgramCounter-а в 0х0.
Не, я конечно понимаю, ремапы памяти и всё такое, но блин... У меня самого уже стек переполняется от всех этих настроек.

Вот не пойму, любая IDE это же просто надстройка, облегчающая ( теоретически ) жизнь девелоперу. Но почему парни, которые делают эти IDE такого завышенного самомнения о себе. В IARе, например, структура проекта такая, что там исходник ( собственно это самое главное, ради чего всё замутилось ) хрен найдёшь в дебрях папок и прочих сабфолдеров. И так во всём...

P.S.
KEIL uVision хоть и неплох, но всё же имхо чуток кривоват. Пока вроде не фатально, но осадочек есть...

Добавление от 17.04.2006 23:45:

Vesel'chak U
Получается. Сам видел результат.
Я наверное криво выразился - у меня тоже всё получается. Потому и написал, что надо наверное не верить своим глазам.

Добавление от 17.04.2006 23:54:

Самое смешное, что как раз с прошиванием флеша у меня был минимум геморроев. В IAR-е даже уже не помню, видимо вообще проблем не было. А в KEIL есть одна непонятная засада. Т.е. после того, как выбрал встроеный прошивальщик и выбрал из списка пресет для своего проца, при запуске по началу писало, что мол недостаточно места дв RAM для алгоритма прошивальщика. Там почему-то правильно указан адрес RAM-памяти (0x00200000), но по умолчанию стоит что размер этой памяти 0x0000. Неудивительно, что в такой размер не помещается загрузчик.
Пришлось ручками указать размер доступной памяти - 0x4000 для SAM7S64.

284. Helius, 28.04.2006 10:11
Здравствуйте вам, прежде всего Респект всем и Thoe, хор. работа (в смысле плата). Тут я в первые но с тем же желанием "Освоить SAM7S64" Вчера запустил наконецто самбу и макетку - все шьется, зашил MassStorage.bin теперь есть забавная флэшка на 24Кб Теперь к делу, пользуюсь Keilом 2.5а (mVision3v3.3) В настройках проекта можно выбрать компилятор Keil Carm, RealView and GNU, насколько я понял RealView - более продвинутая так как написана самой компанией АРМ, но видимо что то недоустановленно, выдает ошибку "Cannot create file C:\...\ArmAsm", GNU компилятор тоже пишет что не может ни чего создать ... ктонибудь пробывал менять эту опцию?

285. Chudik, 28.04.2006 10:24
Helius
ктонибудь пробывал менять эту опцию?
Поскольку ты новичок на форуме, то прощается, но рекомендую почитать http://forum.ixbt.com/?id=a48#2457055

286. Таное, 28.04.2006 11:17
Helius
ктонибудь пробывал менять эту опцию?
Я именно RV и компилю. Но я порще сделал, после секса, типа твоего. Просто зашёл в папку Keil\RV\... и вот тут уже свои "екзамплы", в т.ч. свой "hello.c".

287. Helius, 04.05.2006 10:53
Может кому пригодится: Keil c компилятором RV по умолчанию генерит hex, причем не INTEL формата. Утилитой HEX2BIN после колдования с ее ключами получить вразумительный bin для работы с SAM-BA не удалось... В папке Keil\BIN\ есть утилита fromelf почитать про которую можно в \Keil\ARM\HLP\RV_link.pdf. Одна из ее функций - конвертировать из *.axf файла (получается после компиляции) в другие форматы... дык вот, если создать *.bat с таким содержимым:
fromelf --bin -o fuckingbin.bin Blinky.axf получаем нормальный bin, который без скандалов шьется самбой по УСБ
Осталось прикрутить утилиту к кейлу так, чтобы после компиляции запускалась...

288. Vesel'chak U, 04.05.2006 16:56
TMS470 кто пользовал? Я, по всей видимости, окончательно решил на него переходить. Отговорите.

289. Таное, 16.05.2006 10:30
Насчёт макс. кол-ва SPI-устройств. Их можно подключить по числу линий NPCS, т.е. только 4 (ЧЕТЫРЕ). Про все мудовые рыдания, мол использовать эти 4 NPCS пина не для выбора конкретного чипа, а выводить на них двоичный код и дальше на дешифратор 4х16, МОЖНО ЗАБЫТЬ. Почему - см. даташит, описание регистров SPI_CSRn ( Chip Select Register "n" ).

P.S.
Вот мне теперь стало очень любопытно. Отзовитесь, хоть один маньяк, кто _реально_ хоть раз вешал в своей железке больше 4-х устройств на одну SPI. Лично мне больше 2-х ни разу не приходилось.

P.P.S.
Не устаю повторять - мля, какая же классная периферия. Если б такая приферия у АВРа была ( ну и хотя бы 16 разрядов и памяти столько же ), я б в жисть с него не слез.
AVR32 пока даже смотреть не хочу. Пусть сначала появятся и устаканятся, тогда будет о чём говорить. Но имхо уже и сейчас поздно - "ARM уже повсюду".

290. LazyCamel, 16.05.2006 13:33
цитата:
Таное:
Насчёт макс. кол-ва SPI-устройств. Их можно подключить по числу линий NPCS, т.е. только 4 (ЧЕТЫРЕ). Про все мудовые рыдания, мол использовать эти 4 NPCS пина не для выбора конкретного чипа, а выводить на них двоичный код и дальше на дешифратор 4х16, МОЖНО ЗАБЫТЬ. Почему - см. даташит, описание регистров SPI_CSRn ( Chip Select Register "n" ).

Странно ты как-то читаешь.
Вроде русским языком написано что SPI_CSRx работают при декодировании четверками.
Т.е. SPI_CSR0 - 0..3, SPI_CSR3 - 12..14
Проблема-то в чем ? Сгрупировать SPI девайсы по параметрам ?

цитата:

AVR32 пока даже смотреть не хочу. Пусть сначала появятся и устаканятся, тогда будет о чём говорить. Но имхо уже и сейчас поздно - "ARM уже повсюду".

AVR32 - это совершенно другое дело. Это скорее уже микрокомпьютер, чем микроконтроллер.

Использовать его как сегодняшний микроконтроллер, это все равно что на ARM926 - цветомузыкальную мигалку.

291. Таное, 16.05.2006 15:26
LazyCamel
Вроде русским языком написано что SPI_CSRx работают при декодировании четверками.
Да, пардон. Я дошёл и до этого, хотел уже поправиться, но тут пришлось убежать... Просто я по регистрам с конца пошёл, по каким-то причинам.

Это скорее уже микрокомпьютер, чем микроконтроллер.
Я пока не могу посмотреть внимательно доку на АВР32, а наспех не хочу. В двух словах, полелись плз, по каким выпуклым признакам ты считаешь его "скорее микрокомпьютером"? Формально имхо можно и SAM7 назвать "почти микрокомпьютером", пусть и натянуто. Это я к тому, что грань довольно тонкая.

292. LazyCamel, 16.05.2006 16:18
По структуре. Полноценный процессорный конвеер с переупорядочением и SIMD инструкциям, чипсетной логикой работы переферии, в том числе и LCD-контроллера.

293. Vesel'chak U, 17.05.2006 16:57
Таное
Отзовитесь, хоть один маньяк, кто _реально_ хоть раз вешал в своей железке больше 4-х устройств на одну SPI.
Я! И не один раз. В одной железке даже пришлось делать внешний пирамидальный дешифратор. Правда потом система упростилась и дешифратор стал обычным, но внешним. 5 АЦП + 6 ЦАП, не считая того, что было не через SPI.

294. Таное, 17.05.2006 17:24
Vesel'chak U
Круто.

295. Таное, 20.05.2006 10:50
Warning.
Наткнулся на небольшой косячок в библиотеке lib_AT91SAM7S64.h, при работе с АЦП.
Для установки режима работы и таймингов АЦП служит регистр ADC_MR ( ADC Mode Register ). В библиотеке lib_AT91SAM7S64 описаны две функции, работающие с этим регистром:

AT91F_ADC_CfgTimings ( pADC, mck_clock, adc_clock, startup_time, sample_and_hold_time )
- даём ей исходные данные, а она просчитывает и прописывает прескейлеры и прочая

AT91F_ADC_CfgModeReg ( pADC, mode )
- тупо прописывает в ADC_MR регистр то, что ей подсунули в переменной mode

Кроме таймингов, в ADC_MR ещё много чего полезного и необходимого устанавливается, так что воспользоваться AT91F_ADC_CfgModeReg() придётся по-любому. Я, как порядочный, сначала вызываю AT91F_ADC_CfgTimings(), а затем AT91F_ADC_CfgModeReg() и... ни хрена не работает. Точнее на выходе АЦП вместо оцифрованых данных одни нули. Хотя в отладчике вижу, что АЦП работает, флаги типа "результат готов" или "не успел вычитать результ" устанавливаются. Посмотрел ADC_MR, а там все прескейлеры в 0, хотя в нижней части регистра прописано всё как я сказал. Ну тут я поменял порядок вызова
AT91F_ADC_CfgTimings()
AT91F_ADC_CfgModeReg()
наоборот и соотвественно теперь прескейлеры прописываются, а флажки внизу нет.

Фигня оказалась вот в этом:
AT91F_ADC_Cfg...()
{
...
pADC->ADC_MR = xxx;
...
}

Если изменить в AT91F_ADC_CfgTimings() на:
pADC->ADC_MR |= xxx;
то всё работает, но при условии что сначала вызываем AT91F_ADC_CfgModeReg(), и только после этого вызовем модифицированную AT91F_ADC_CfgTimings().

Но тогда вопрос - а нафига оно вообще надо? Проще константы определить/посчитать и вместе с флажками подсунуть целиком и один раз в AT91F_ADC_CfgModeReg().


Vesel'chak U
Насчёт Виглера и глюков. Периодически что-то в цепочке подглючивает. Но что именно пока сказать не могу. Выражается в том, что иногда приходится через H-JTAG делать reset target. Но это скорее дела программные, чем железные. В том смысле, что какая бы железка ни была, задача верификации по-любому на совести софта. А тут фигня, я даже не знаю о том, что что-то не так. Приходится самому обнаруживать "подозрительное поведение железки" и ручками ресетить таргет.



Созрел ещё вопрос. Кейл Микровижн штука конечно хорошая, но вся на соплях. Это нормально, что например говоришь ему - запускай main() после загрузки, а он хрен в ответ. Возможно проблема, в моём случае, из-за неродного ему RV-компиллера. Но дык они ж теперь должны быть как сводные братья, раз родитель у них теперь один.
Но имхо количество мелких сопелек весьма приличное.

296. LazyCamel, 20.05.2006 15:02
цитата:
Таное:
Warning.
Наткнулся на небольшой косячок в библиотеке lib_AT91SAM7S64.h, при работе с АЦП.
Для установки режима работы и таймингов АЦП служит регистр ADC_MR ( ADC Mode Register ). В библиотеке lib_AT91SAM7S64 описаны две функции, работающие с этим регистром:

Это не косячок. Это - фича
На самом деле конфигурация таймингов действительно можно не непрямую присваивать, но я как-то с трудом представляю зачем это посреди дороги менять ?

Вижу только одно - для людей которым неохото считать каждый раз:
AT91F_ADC_CfgTimings
AT91F_ADC_GetModeReg
<дополнительные битовые операции>
AT91F_ADC_CfgModeReg

297. Таное, 20.05.2006 17:27
LazyCamel
На самом деле конфигурация таймингов действительно можно не непрямую присваивать, но я как-то с трудом представляю зачем это посреди дороги менять ?
Не, ты не понял. Дело не в "на ходу менять", речь про инициализацию. Запись в ModeRegister таймингов производится оператором присваивания: "=". Т.е. когда AT91F_ADC_CfgTimings прописывает тайминиги, это верхние 24 бита ( маска 0xFFF0 ), в нижние 8 бит записываются "0". Итог: тайминги прописаны, но все нижние биты сброшены. А если затем воспользоваться AT91F_ADC_CfgModeReg, то ситуация повторится с точностью до наоборот - затрутся тайминги, но установятся нижние биты. Т.е. есть единственный способ, пользоваться только AT91F_ADC_CfgModeReg, которой передавать и нижние биты, и тайминги ( посчитаные ручками ). Но тогда AT91F_ADC_CfgTimings просто не нужна.

А смысла делать как ты предложил, я чессговоря не вижу, во всяком случае при инициализации. Зачем делать столько лишних телодвижений? Всё это можно посчитать ещё в #define и просто сделать так: AT91F_ADC_CfgModeReg( ADC_MODE ). Что я, собсно, и сделал.

Добавление от 20.05.2006 17:39:

Кстати, попутно вопрос. Я тут с PDC ковыряюсь. Когда я включаю ПДП, в данном случае для ADC, то указываю "текущий" буфер и "следующий". Когда "текущий" буфер заполнится, установится флаг ENDRX. Т.е. пошёл заполняться "следующий" буфер. Но непонятно, этот "следующий" в момент установки флага ENDRX автоматически становится "текущим"? Т.е. я могу тупо, по флагу ENDRX заряжать новую "следующую" передачу?

298. tiasur, 21.05.2006 08:29
Vesel'chak U
TMS470 кто пользовал? Я, по всей видимости, окончательно решил на него переходить. Отговорите.

Я не так уж что бы "пользовал", скорее еще только попробовал. Сходил на семинар получил плату, JTAG и IAR compiler с примерами. Все нравится и кажется достаточно просто, правда глубоко не вникал. Еще могу сказать что проблемы которые народ тут обсуждает мне не понятны и влезать в них не хочется

299. Chudik, 21.05.2006 10:11
tiasur
получил плату, JTAG и IAR compiler с примерами.
Там нормальный компилер? Без ограничений?

300. tiasur, 21.05.2006 10:31
Chudik
Там нормальный компилер? Без ограничений?
размечтался

Там Kickstart Edition т.е. с ограничениями, как и по размеру так и по библиотекам.
А что ты хочешь за такие деньги? У многих только JTAG за эту сумму купить можно.
Осел нам помежет убрать ограничения. Ну а если на фирму, то пусть они и покупают

301. Chudik, 21.05.2006 11:30
Ну уж и помечтать нельзя....
Как этот семинар? Имеет смысл идти? Ну кроме как получить приличную отладочную платку за 200 баксов?

302. tiasur, 21.05.2006 19:24
Да хороший. Лектор толковый, правда не знаю всегда ли он проводит семинар. Хотя, если вспомнить что к нам он прибыл из Китая, то наверно да, один. Сходи, у нас народу не много было, человек десять. Плату OLIMEX делал . JTAG приличный, IAR-вский.

303. Tahoe, 24.05.2006 01:43
Не знаю что будет дальше, а KEIL меня задолбал. Может просто в связке с RV всё совсем плохо. Плюс ощущение сопливости просто достало. Ушёл я пока обратно, на IAR. Пока, имхо, это меньшее зло. С другой стороны, я не крутил ГринХиловский Мульти. Но уже нет никакого желания тратить время. Да и самого времени уже давно нет.
Чисто по ощущениям, после KEIL-а, как-то приятнее сегодня ковыряться было в IAR-е. Конечно, тоже не идеал, но... Наверное всё это ещё потому, что я окончательно успокоился насчёт всякой фигни, типа "выжимания производительности" и "самых быстрых компиллеров".

304. Tahoe, 26.05.2006 21:35
Всплыла ещё пара тупых вопросов:
1. Зачем нужен REMAP памяти? Если можно на примере из практики.
2. Если оно особо не надо, то что лучше отображать на 0x00000000 - FLASH или RAM?

305. Chudik, 26.05.2006 22:02
Tahoe
Зачем нужен REMAP памяти? Если можно на примере из практики.
Обычно для запуска программ из RAM, а не из флэш памяти. Зачем? Вспомни скорость доступа к флэшке и к ОЗУ. Обычно программа записана во флэш памяти, процессор запускается на малой скорости, переписывает программу в ОЗУ, ремапается, переключается и запускается на более высокую скорость.

Если оно особо не надо, то что лучше отображать на 0x00000000 - FLASH или RAM?
Видимо флэш.

306. Tahoe, 26.05.2006 22:32
Chudik
Обычно для запуска программ из RAM, а не из флэш памяти.
До этого-то допереть мне ума хватило. Но я не понимаю, зачем городить ещё какой-то REMAP, ведь можно просто сделать что-то типа 0x00000000 JMP RAM_BASE.

307. Chudik, 26.05.2006 22:35
Эээ... и так для каждого перехода и вызова каждой функции

308. LazyCamel, 26.05.2006 23:21
И что ? городить СР/М-подобный ОС в микроконтроллере ? Или таблицу релокаций точек входа функций по примеру EXE в масадосе ?

А ремар например очень полезен при отладке. АРМ7 умеет делать аппаратно толе 2 точки останова, остальные софтовые. Представь сколько пришлось бы перезаписывать флешку ставя точки останова. А так - полностью отладил в ОЗУ, а готовую записал во влеш и не меняя не одного битика - все работает.

309. Tahoe, 26.05.2006 23:48
Chudik
LazyCamel
Не понял. Линкер всё упихивает в один сегмент, адресация относительная. Дык в чём проблема вызывать функции не по 0х00001А00, а по 0х00201А00?

Добавление от 26.05.2006 23:51:

Про адресацию выразился я через зад, но имхо вы поняли.

310. Chudik, 27.05.2006 00:34
Tahoe
Линкер всё упихивает в один сегмент, адресация относительная.

А как насчёт векторов прерывания? Тоже относительная адресация?

311. Tahoe, 27.05.2006 00:42
Chudik
А как насчёт векторов прерывания? Тоже относительная адресация?
Про них я помню.
Но ты же не хочешь сказать, что единственая причина - это абсолютные адреса векторов прерывания?

312. Chudik, 27.05.2006 00:47
Думаю, это одна из причин.
Ты уверен, что в скомпилированном, слинкованном и загрженном коде сохраняется относительная адресация вызовов функций?

313. Tahoe, 27.05.2006 01:03
Chudik
Ты уверен, что в скомпилированном, слинкованном и загрженном коде сохраняется относительная адресация вызовов функций?
Нет, разумеется.

Я просто хочу понять, почему сделано именно так, как сделано. Пока не понимаю. Я не вижу никаких проблем, посчитать в линкере смещения для адресов функций. А равно как и для прочих сегментов. Чёрт возьми, да по большому счёту линкер собственно только этим и занимается.

314. Chudik, 27.05.2006 01:13
Tahoe
не вижу никаких проблем, посчитать в линкере смещения для адресов функций.
Да линкер-то это может сделать без проблем. Какой аппарат адресации реализован в самом процессоре?

315. Tahoe, 27.05.2006 01:36
Chudik
Какой аппарат адресации реализован в самом процессоре?
Ты меня в тупик ставишь такими вопросами. "А рондо - это куда?" (с)
Я тупо рассуждаю - в PC загружается адрес. Ему же пофиг должно быть, что в него загрузили - 0х0000 или 0х8000?

316. Chudik, 27.05.2006 01:39
Tahoe
Ему же пофиг должно быть, что в него загрузили - 0х0000 или 0х8000?
Угу, а
call 0x12345
это вызов по адресу 0x12345 или по адресу, который отстоит от текущего адреса на 0х12345 ?

317. Tahoe, 27.05.2006 01:49
Мой скудный разум подсказывает мне, что единственный внятный резон, это когда что-то привязано к абсолютной адресации. Например та же таблица прерываний. Но вообще-то ведь можно было бы её ремапить, а не память.

Добавление от 27.05.2006 01:54:

Chudik
Угу, а call 0x12345 это вызов по адресу 0x12345 или по адресу, который отстоит от текущего адреса на 0х12345 ?
"А мы продаём или покупаем?" (с)

Ну в моём случае, когда без ремапов, это наверное должна быть явная адресация, а не косвенная.

318. Chudik, 27.05.2006 02:43
Tahoe
это наверное должна быть явная адресация, а не косвенная.
В смысле прямая, а не относительная. Ну а теперь представь, ты копируешь всю программу из адреса 0 в 8000, прыгаешь туда, а потом в коде стоит вызов по адресу меньше 8000. Куда программа полезет, догадываешься?

319. Tahoe, 27.05.2006 03:35
Chudik
а потом в коде стоит вызов по адресу меньше 8000
Ну дык тогда я линкеру по ушам настучу, за то что даже варнинга не дал. Он же видит адрес начала программы, видит... Э-э-э... Тогда наверное компиллеру надо по ушам...

320. Chudik, 27.05.2006 03:44
А какие тебе нужны ворнинги? Задай в карте памяти, где у тебя сегмент программы и он тебе сделает те адреса, которые ты хочешь. Только вот проблема, flash loader будет ругаться, поскольку по заданному адресу флэшки не окажется. Кому будем стучать по ушам дальше?

321. Tahoe, 27.05.2006 05:03
Chudik
Кому будем стучать по ушам дальше?

322. Tahoe, 30.05.2006 05:51
Непонятно, это я лажаюсь или IAR-овский линкер чудеса творит?

//CODE_I for __ramfuc
-DRAMSTART=00200000
-DRAMEND=002003FFF
-Z(DATA)CODE_I=RAMSTART-RAMEND

Ну и как тогда такое может быть:
CODE_I 00204408 - 00204553 14C Relative 2
?

Что характерно, объявляю буфер, unsigned short buf[ 8192 ]. Соответственно, памяти не должно хватать. Но линкер даже предупреждения не даёт. А в summary скромно так пишет: DATA: 17 416. Я тихо фигею от такой простоты. Ну либо чего-то не понимаю в устрицах...

Просто сначала я полчаса не мог понять, почему прога глючит при проверке, а только потом заглянул, что там в памяти творится. Но непонятно, ну ведь очевидный косяк - неужели трудно предупреждение выдать, мол "мало места для размещения сегмента".

323. Brain, 04.06.2006 02:22
Привет всем.
Я тут тоже решил заняться ARM.
Спаял платку под AT91SAM7S64 по схеме, предложенной Tahoe'м.
При подключении через USB винда устройство видит, но только как неопознанное.
Никакими манипуляциями с пином TST не удалось добиться загрузки SAM-BA.
Питание через юсб, PLL-цепочка установлена, кварц на 18.432 МГц., разумеется на DPLS подтянут резистор на 1.5 кОм. Казалось бы, всё необходимое на месте...
Поэтому "меня терзают смутные сомнения" ©, что неверно установлена сама микросхема. У неё на корпусе по диагонали находится 2 метки, кто видел, тот поймёт...одна больше, другая меньше.
Так вот...интересует вопрос...какая из них собственно является ключём ?
В то же время 90%, что микросхема вставлена верно, какие ещё могут быть причины того, что самба не хочет записываться как основной загрузчик ?

324. VBKesha, 04.06.2006 13:22
Brain
Ну вообще то винда увидит усб устройство даже если просто D- или D+ подтянута через 1.5 кОм причём именно как неопознанное. Так может чип просто не стартует.

325. Brain, 04.06.2006 13:31
А как определить, стартует ли чип ?
Вот у меня, например, между ножками 1 и 2 микросхемы собранного устройства сопротивление в сотни ом, это нормально ?
Между ними ведь как раз питание подаётся...
Только что посмотрел, VDDOUT=1.8 В., VDDCORE=1.65 В.,т.е. встроенный в микруху стабилизатор работает нормально, а сам-ба так и не грузится...

326. Angelo, 04.06.2006 21:38
читаю читаю ветку, интересные камушки, понравились, но как понимаю народного отладчика, клона аналогичного PIC-> ICD2 ; AVR-> JTAG ICE так и не будет????? или тут как то другим способом отлаживается?? Варианты отправки данных в порт не вариант, брейк пойнты нужны…..

327. Tahoe, 05.06.2006 00:16
Brain
Так вот...интересует вопрос...какая из них собственно является ключём ?
Забей на метки. Смотри по скошеному углу - не ошибёшься.

Angelo
Дык wiggler и есть самый что ни на есть "народный отладчик". LPT-порт, 244-й буффер и ты в деле.

328. RWolf, 05.06.2006 10:16
да уж, без отладчика осваивать ARM - гиблое дело... :/

329. Vesel'chak U, 05.06.2006 17:00
Мне тут сообщили, что Филипс наладил своё производство - теперь камни (LPC) не горят.

330. Mikle, 05.06.2006 17:22
Brain
Емкости на кварце какие?

331. Tahoe, 05.06.2006 17:43
Vesel'chak U
Имхо Пхилипс не прочухал самое главное - идеологию. Т.е. например в Атмеле DMA практически на ВСЮ периферию, это уже не просто DMA, это часть идеологии. Я сейчас отправляю буфер в два щелчка - "&буфер" и "размер_буфера" и занимаюсь своими делами. Аналогично, заряжаю АЦП на приём n-отсчётов в буфер и получаю прерывание, когда все отсчёты в буфере. Ну и как мне после такого смотреть на Пхилипс? Тормозным АРМ-ом частые прерывания обслуживать?

332. Brain, 05.06.2006 23:16
Mikle, 10 пФ

333. Mikle, 06.06.2006 12:54
Brain
Да, нормально, - 10 пф. У меня нормально работал когда трогал пальцем кварц. Посмотри потребление тока, при записи самбы в флэш идет небольшое, но заметное увелучение потребления. Если самба пишется тогда неправильный монтаж, почти однозначно...

334. Angelo, 08.06.2006 20:22
Поскольку на первой странице этих сылочек нет, думаю я не повторяюсь, самое время их туда добавить! инфо весьма полезное...
http://www.gaw.ru/html.cgi/txt/doc/micros/arm/arh_7dtmi/index.htm
http://projects.org.ua/project/arm/AT91SAM7S256_HOWTO.html

335. Brain, 08.06.2006 21:04
Всё, купил отладочную плату от Олимекса, сижу играюсь.
Камушек просто супер, даже операционку на него с первой попытки удалось поставить.

336. Tahoe, 25.06.2006 07:59
Ну что, запустил я ucos на SAMS64. Вопрос "зачем нужна в проекте операционка" у меня больше не возникает. Видимо дорос до проектов таких размеров.
Кстати, сразу вспомнил тему осцилографа. Имхо без операционки там вообще ловить нечего.

Тем, кто решит осваивать операционку. Даже если не удастся стянуть ucos, как минимум качайте книжку. Там всё в меру понятно и в меру сжато расписано.


Angelo
Насчёт первой ссылки - вставлю. Хотя, ТочОп вроде пока говорят что это "бета-версия" перевода.
А вторая у меня вроде загрузилась, но в Опере пустая страница.

Brain
Ты не скромничай, говори что за ось.

337. Dmitrij-Ekb, 27.06.2006 15:05
может,мне ктонить подскажет?взяли плату с ат91сам7х256,проект написал,залил,не работает,аналогичный проект на S64 завел практически с полоборота.

338. Tahoe, 27.06.2006 15:36
Dmitrij-Ekb
Сильно подозреваю, что на поставленый таким макаром вопрос точно никто не ответит.

339. Dmitrij-Ekb, 27.06.2006 15:39
Tahoe
могу кинуть исходник,если посмотришь и подскажешь где что буду очень благодарен!

340. Tahoe, 27.06.2006 16:19
Dmitrij-Ekb
Не, так не выйдет. Во-первых мозгами больше придётся шевелить тебе. Во-вторых я не настолько владею предметом, могу максимум подсказать если уже наступал на грабли. И в-третьих, что главное, как только мы уйдём в приватную беседу, это станет недоступно другим.
К тому же, я сейчас сам точно так же трахаюсь. Запускаю пяток тасков - всё работает. Как разрешаю прерывание от АЦП-ПДП, так куда-то всё улетает. А причин может быть тонна, это не АВР, тут пока с одним AIC-ом разобрался чуть импотентом не стал. Так что у меня тоже пока секс полным ходом.
Да и ты как-то излишне лаконичен, с АРМом такой фокус не прокатит.
Для начала посмотри, в каком режиме твой проц встаёт раком, если вообще встаёт. Например в data abort или может просто в каком-нить irq в loop-е висит...

341. Dmitrij-Ekb, 27.06.2006 16:30
Tahoe
смысл программы простой,с порта принять байт,вернуть его назад,в зависимиости оттого какой байт-сделать действие(вкл\выкл светодиод).при включении должен моргнуть всеми диодами,но не моргает,трабл то весь в том что на S64 работает,а на х256 нет,хотя вроде всё откорректировал...
насчет АВР ты прав,был бы ещё тут эмулятор чтобы всё по шагам смотреть(я сам чисто по аврстудио ассемблер учил,нормально въехал в него,много чего наваял )или может где есть описалово пошагового построения проекта?так бы сам с ним сексом маялся,без групповухи
вобщем ща исходник запостю,ткните носом в ошибки

Добавление от 27.06.2006 16:36:

#include "Board.h"


#define BUTTON_SAMPLING 1700
#define BL_OFF(pio) ((pio) & SW1)
#define BR_OFF(pio) ((pio) & SW2)
#define BU_OFF(pio) ((pio) & SW3)
#define BD_OFF(pio) ((pio) & SW4)

#define BL_ON(pio) (!BL_OFF(pio))
#define BR_ON(pio) (!BR_OFF(pio))
#define BU_ON(pio) (!BU_OFF(pio))
#define BD_ON(pio) (!BD_OFF(pio))
#define SPEED (MCKKHz)
#define USART_BAUD_RATE 9600
#define USART_INTERRUPT_LEVEL 6
unsigned int LedSpeed = SPEED ;
unsigned int pioStatus;
//static char buff_rx[100];
//static char buff_rx1[100];
char str[7]={'P','r','i','v','e','t','\0'};
char Datain[10]={0x00,0x01,0x07,0x03,0x41,0xE2};
char Dataout[2];
int met = 0;
int tm = 5;

void wait ( int tim )
{
unsigned int time;

for(time = 0; time < LedSpeed*tim; time++);

}

void Usart_c_irq_handler(void)
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED4);
Dataout[0]=AT91C_BASE_US0->US_RHR;
Dataout[1]='\0';
AT91F_US_ResetTx(AT91C_BASE_US0);
AT91F_US_ResetRx(AT91C_BASE_US0);
AT91C_BASE_US0->US_RCR = 100;
AT91C_BASE_US0->US_RTOR = 10;
AT91C_BASE_US0->US_CSR=0;
AT91C_BASE_AIC->AIC_EOICR=1;
AT91C_BASE_AIC->AIC_ICCR=0;
if (Dataout[0]=='1') {
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
};
if (Dataout[0]=='2') {
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED2);
};
if (Dataout[0]=='3') {
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED3);
};
if (Dataout[0]=='4') {
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED4);
};
if (Dataout[0]=='a') {
met=1;

};
if (Dataout[0]=='p') {
tm++;
if (tm==50) tm=40;
};
if (Dataout[0]=='o') {
tm--;
if (tm==0) tm=1;
};
if (Dataout[0]=='n') {
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED_MASK);
met=0;
};

int i=0;
while(Dataout[i] != '\0') {
while (!AT91F_US_TxReady(AT91C_BASE_US0));
AT91F_US_PutChar(AT91C_BASE_US0, Dataout[i++]);
}

}


void CnfUS ( void)
{AT91F_PIO_CfgPeriph(
AT91C_BASE_PIOA,
((unsigned int) AT91C_PA0_RXD0 ) |
((unsigned int) AT91C_PA1_TXD0 ) ,
0 );
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<<AT91C_ID_US0 ) ;
AT91F_US_Configure(AT91C_BASE_US0,MCK , AT91C_US_ASYNC_MODE , USART_BAUD_RATE , 0);
AT91C_BASE_US0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN ;
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_US0, USART_INTERRUPT_LEVEL, AT91C_AIC_PRIOR_LOWEST, Usart_c_irq_handler);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);
AT91C_BASE_US0->US_RCR = 100;
AT91C_BASE_US0->US_RTOR = 10;
AT91C_BASE_US0->US_RTOR = 10;
AT91F_US_EnableIt(AT91C_BASE_US0,AT91C_US_RXBUFF | AT91C_US_TIMEOUT );


}

main (void)
{
*AT91C_RTTC_RTMR = BUTTON_SAMPLING;

//конфигурируем кнопки и светодиоды, порты
AT91F_PIOA_CfgPMC();
AT91F_PIO_CfgInput(AT91C_BASE_PIOA, (SW1|SW2|SW3|SW4));
AT91F_PIOB_CfgPMC();
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, LED_MASK);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED_MASK);
wait(200);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED_MASK);
wait(400);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED_MASK);
wait(200);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED_MASK);

//232
CnfUS ();

while(1)
{
if (met==1) {
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED_MASK);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
wait(tm);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED1);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED2);
wait(tm);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED2);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED3);
wait(tm);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED3);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED4);
wait(tm);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED4);
}
pioStatus = *AT91C_PIOA_PDSR;
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED4);
//левая кнопка
if (BL_ON(pioStatus)) {
int i=0;
while(str[i] != '\0') {
while (!AT91F_US_TxReady(AT91C_BASE_US0));
AT91F_US_PutChar(AT91C_BASE_US0, str[i++]);

}

}
//вторая кнопка
if (BR_ON(pioStatus)) {
tm++;
if (tm==50) tm=40;
}

//третья кнопка
if (BU_ON(pioStatus)) {
tm--;
if (tm==0) tm=1;
}

if (BD_ON(pioStatus)) {


}
}

}
ПыСы. кнопки пока не трогаю,главное чтобы при включении хотябы диодами моргнул

342. Tahoe, 27.06.2006 17:46
Dmitrij-Ekb
С исходником ты имхо погорячился. Там ещё до исходника - г*вна самовар. Начиная со cstartup-ов, конфигурации линкера ( включая секс с ремапом ), да дофига ещё всего. Короче исходник - дело последнее и самое простое. Разберись сначала аккуратно с самим процом, затем со средой разработки. Пару недель убьёшь по-любому.
Кстати, рекомендую посмотреть как в мюкосе стартапы и прерывания сделаны. Мне показалось, оно там понятнее.
А ещё лучше - найди готовый проект-пример под свой конкретный камень. Уверяю, даже с готовым проектом не всё просто будет. Но там хоть стартапы, настройки готовые будут.
P.S.
А ни фига ж себе, сколько всего ты в прерывании нагородил. Имхо так писать - себе дороже потом выйдет.

P.P.S.
Тут есть тэг "code" "/code". В будущем не стесняйся, пользуйся.

343. Dmitrij-Ekb, 27.06.2006 17:53
Tahoe
ок,буду учить ,тока начальство поставило сжатые сроки и ещё хочет меня на дсп посадить там ваще лес тёмный.... а если ассемблер юзать,может проще получится?
а ты про CoDeSys слышал???я его тоже учу,с одним из процов за день разобрался и с веб-странички научился ногами дрыгать там есть поддержка АРМов может в нем стоит писать?
лана,пойду читать,смотреть,искать!удачи в борьбе с железом,спасибо за быстрые ответы

344. Tahoe, 27.06.2006 18:03
Dmitrij-Ekb
тока начальство поставило сжатые сроки
А прежде чем ставить сроки, начальство поинтересовалось сложностью проблемы и реальными сроками?

а если ассемблер юзать,может проще получится?
Прикалываешься?

Насчёт ногами дрыгать - дело нехитрое. Я вот пол задачи сделал, тасков насоздавал, всё так красиво было... Пока не обломался. Когда разобрался в чём дело, пришлось практически заново всё переделывать.
Сейчас вот прежде чем строчку кода написать - бывает час-два читаю/думаю. И это нормально. Даже вывел формулу. Если больше половины времени пишешь - ты кодер, если больше половины времени думаешь над задачей - ты программер.

Удачи.

345. Chudik, 27.06.2006 18:17
Dmitrij-Ekb
Парочка замечаний:
1. Если приводишь свой код, то оформляй его кодом. Специально для этого есть тег, чтобы смотрелось нормально.

2. Не понял всей глубины смысла следующих двух строк
#define SPEED (MCKKHz)
unsigned int LedSpeed = SPEED ;

3. Также не понял зачем писать так:
char str[7]={'P','r','i','v','e','t','\0'};
Если гораздо проще написать:
char *str = "Privet";

346. Tahoe, 27.06.2006 18:37
Chudik
#define SPEED (MCKKHz)
Ну это типа в <board.h> есть пара стандартных дефайнов:
#define MCK 48000000
#define MCKKHz ( MCK / 1000 )

Это ИАРовские извраты. Там много ещё чего есть чуднОго.

347. Chudik, 27.06.2006 18:48
А, понял

348. RWolf, 28.06.2006 09:45
да какие там извраты, IAR спокойно принимает строку const char str[] = "Privet";
вот через указатель - это изврат в некотором роде так как выделять лишнюю переменную-указатель на константу в рассматриваемом случае нет надобности.

349. Tahoe, 28.06.2006 10:54
RWolf
Про изврат это MCKKHz и SPEED.

Да и вообще, всё наспех сделано, недодуманно. Начиная с того, что всё в кучу свалено в том же <board.h>, продолжая тем, что работают с PLL, но при этом ручками!!! указывают MCK, а заканчивая просто морем ошибок-описок в комментах и описаниях. Типа вместо toggle написано toggel и т.п.

Если побрюзжать, то ещё библиотека lib_AT91SAM7S64.h вещь весьма полезная, но уже достала. Например AT91F_PDC_ReceiveFrame() приводит к char*, а мне с АЦП нужны 10-ти битные сэмплы, то бишь short*. Пока не копался, но имхо это имеет непосредственное влияние на поведение PDC-контроллера, так что пока просто ручками заряжаю регистры.
Нет функций для конфигурации TCx.
Да даже различия в именах функций тоже раздражает. Например разрешить прерывание суть одно и то же, только называются AT91F_SPI_EnableIt() и AT91F_DBGU_InterruptEnable().

Всё, побрюзжал.

350. Chudik, 28.06.2006 11:01
RWolf
IAR спокойно принимает строку const char str[] = "Privet";
вот через указатель - это изврат в некотором роде

Ээээ... а какая разница

const char str[] = "Privet";
или
const char *str= "Privet";


Не говоря уж о том, что в исходной программе const не было.

351. RWolf, 28.06.2006 11:41
цитата:
Chudik:
RWolf
IAR спокойно принимает строку const char str[] = "Privet";
вот через указатель - это изврат в некотором роде

Ээээ... а какая разница

const char str[] = "Privet";
или
const char *str= "Privet";


Не говоря уж о том, что в исходной программе const не было.
Я не утверждаю, что в исходной программе всё в порядке, фраза касалась мнимых извратов IAR.
Разница такая.
const char str[] = "Privet"; - строка располагается в сегменте констант;
const char *str= "Privet"; - строка располагается в сегменте констант, резервируется место в памяти под указатель, при старте программы в него записывается адрес строки.

Добавление от 28.06.2006 12:01:

Tahoe
заголовочные файлы для SAM7S - это да, тот еще праздник, и примеры проектов тоже; с собственно компилятором проблем не возникало. С примерами от 4.20 помучился, пока осваивал чип; настройки проекта приходилось подбирать экспериментально. Впрочем в IAR исправляются; в 4.30 уже вполне приличные examples для SAM.

352. Chudik, 28.06.2006 17:52
RWolf
Разница такая.
Да, согласен, не додумал.

353. Dmitrij-Ekb, 29.06.2006 12:55
Tahoe
начальству пофиг.....учи и всё!

354. Dmitrij-Ekb, 03.07.2006 10:56
пока разбирался,заметил такую вещь,когда связь с самбой есть кварц генерит(но не всегда),а залью свою прогу,всё по нулям....может гдето чтото не доинициализировано?

355. Tahoe, 03.07.2006 14:36
Dmitrij-Ekb
может гдето чтото не доинициализировано?
Может. Например PLL.

356. Dmitrij-Ekb, 04.07.2006 09:52
блин,даже родные примеры плату не оживляют.. (((
code
AT91C_BASE_PMC->PMC_PLLR = AT91C_CKGR_USBDIV_1 | AT91C_CKGR_OUT_0 | AT91C_CKGR_PLLCOUNT |
(AT91C_CKGR_MUL & (72 << 16)) | (AT91C_CKGR_DIV & 14);
// Wait for PLL stabilization
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
// Wait until the master clock is established for the case we already turn on the PLL
while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
/code
вот это относится к ПЛЛ,может тут косяк?

357. Tahoe, 04.07.2006 10:09
Dmitrij-Ekb
вот это относится к ПЛЛ,может тут косяк?
Да, это относится к PLL. Вроде косяков не видно.

Разбирайся с памятью, линкером, ремапами... Разбираться лучше неспеша, основательно и обязательно "вдумчиво".

358. Dmitrij-Ekb, 04.07.2006 12:46
Tahoe
добрые мужики сказали,что это именно из-за ремапа и тпх(короче с памятью косяк)гдето видели еррату на это дело....поищу выложу ссылку.....

359. [BAT], 04.07.2006 13:04
Добрые люди, подскажите, можно ли залить флеш релизной программой из IAR через Wiggler? Или для этого надо обязательно исполоьзовать загрузку через USB ? Сейчас пробую разбираться на плате SAM7-H64 от olimex на примере мигающего светодиода. Вариант с отладкой в ОЗУ запускается и работает, попытки поменять ремап на флеш или загрузить прогу во флешь не увенчались успехом

360. Tahoe, 04.07.2006 13:48
Dmitrij-Ekb
добрые мужики сказали,что это именно из-за ремапа
Это весьма вероятная, но всего лишь _одна из возможных_ причин.

Как говорится, на ерраты надейся, а сам не плошай. Все ерраты находятся в конце даташита.


[BAT]
можно ли залить флеш релизной программой из IAR через Wiggler?
Можно. Я только так и делаю.

Вариант с отладкой в ОЗУ запускается и работает, попытки поменять ремап на флеш или загрузить прогу во флешь не увенчались успехом

Почему может не программироваться FLASH SAM7S (RAM debug нормально)? (http://www.caxapa.ru/echo/arm.html?id=49087&1152006534)

361. Dmitrij-Ekb, 13.07.2006 08:53
блин.....тишина....

362. [BAT], 17.07.2006 14:09
кто-нибудь использовал для коммуникации с девайсом стандартный драйвер usbser.sys? Взял за основу пример от IAR и попробовал сделать петлю. Первый обмен проходит нормально, второй затыкается на пересылке от девайса к PC Прочитал на форуме атмеловском, что некоторые с таким сталкивались (в частности упоминается проблема при использование совместно с Windows XP), но причины и решения не указано Может кто знает в чем заковыка ?

Проверил на 2000м, там такой проблемы нет.

363. Jony, 19.07.2006 07:18
Доброго времени суток. Собрал макетку на AT91SAM7S64, хочу залить пробную прошивку demo_mass_storage.bin. Если у кого есть поделитесь, буду очень признателен. ICQ 33864800,
mail Lichouzov@mail.ru

364. Tahoe, 19.07.2006 07:44
Jony
http://www.atmel.com/dyn/resources/prod_documents/at…_mass_storage.zip

365. Dmitrij-Ekb, 20.07.2006 10:41
samх256.....это ведро ожило после смены самбы с 1,7 на 2,0 )
а ларчик просто открывался(с)

366. Tahoe, 29.07.2006 07:36
Уфф! Атмеловский MassStorage переколочен под MMC/SD и запущен. Аминь.
Насчёт просто "портировать" можно особо не обольщаться. Придётся залезть поглубже, ибо весь ихний масссторадж заточен под работу с встроеным флешем. И заточен довольно "конкретно". Придётся ещё почитать про RBC, но там совсем немнжко и вполне внятно. В SCSI лезть особо не потребуется. Да и мозги там можно свихнуть, если с наскоку попытаться разобраться.
Пока скорость всего лишь около 20кБайт/сек. Примерно ясно почему - "будем искать" (с).

LazyCamel
Насчёт твоего недовольства поллингом. Имхо всё там правильно сделано. Ты рассматривай с точки зрения работы в операционке, как задачи с низким приоритетом. А теперь сам посуди - а как ещё сделать? Лишний раз дрочить прерывания, да ещё на АРМе, да ещё под операционкой... Не-е, имхо они всё грамотно сделали. Как выделилось время задаче - она сама глянет.

Добавление от 29.07.2006 07:46:

Да, ещё. Кто полезет ковыряться с USB. ОБЯЗАТЕЛЬНО задействовать USB pull-up резистор через PIO-ногу, иначе проще пойти в сортире повеситься, чем отлаживаться. Я на своей платке просто кинул соплю. Причём рекомендую не просто резистор на ногу повесить, а именно через ключ, как в Атмеловской evalboard. У меня под рукой не было p-канальника в SOT-23, поставил PNP биполярник ( BC858 ). Зачем это надо. Затем, что после ресета ноги сконфигурированы на вход, но с подтяжкой. Т.е. на них торчит "1". Если просто завести 1,5К, то при ресете подтянется ( неизвестное USB-устройство обнаружится виндой ), потом сбросится, потом снова мы его подтягиваем. так что во избежание этого онанизма ставить ключ.

Добавление от 29.07.2006 07:48:

Ну и ещё что б с SAMBA совместимость оставалась.

367. Dead_star, 30.07.2006 21:14
Tahoe
Ну и ещё что б с SAMBA совместимость оставалась.
Без этой подтяжки SAM-BA совсем не работает ?
Что-то я упустил где это в документации написано, завтра хотел плату в изготовление отдавать...

368. Tahoe, 30.07.2006 23:49
Dead_star
Я немного выразился неправильно, точнее недосказал. Ключ я повесил на PIOA16, т.е. на ту же ногу, которую SAMBA использует. Только это имелось ввиду, ничего более.

369. Dmitrij-Ekb, 31.07.2006 08:50
блин!!!на http://electronix.ru/ форумы хакнули!!!всё что было там по ARM потерли,щас народ бъётся над восстановлением и поиском уродов что залезли .....выражаю сочуствие

370. Tahoe, 31.07.2006 08:56
Dmitrij-Ekb
Да, я ещё вчера видел сообщение на телесисе. Урода-малолетку они вроде вычислили. Другой вопрос, что вроде нет никого в Калиниграде, кто б мог по репе настучать ублюдку. А жаль.

371. Dmitrij-Ekb, 31.07.2006 09:11
to Tahoe : нужно с параллельного АЦП принять информацию,какую функцию использовать AT91F_PIO_GetInput или PIO_PDSR? использую PIOB ноги с 0 до 7(sam7x256)

372. Tahoe, 31.07.2006 09:48
Dmitrij-Ekb
#define ADC_DATA_MASK 0x000000FF
adc_data = AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;

Добавление от 31.07.2006 09:54:

Либо, если ноги всегда будут 0-7, то можно и:
char adc_data;
adc_data = AT91F_PIO_GetInput( AT91C_BASE_PIOB );

373. Dmitrij-Ekb, 31.07.2006 10:27
Tahoe
пасибо

374. Dmitrij-Ekb, 03.08.2006 15:42
to Tahoe
может подскажешь,где в иаре в дебаггере установить галки чтобы программа выходила на void Usart_c_irq_handler(void). использую US0,

375. Tahoe, 03.08.2006 17:01
Dmitrij-Ekb
Не совсем понял вопрос. А если просто внутри Usart_c_irq_handler(void) - дабл-клик - не работает? Не ставится крестик или ИАР ругается?
Просто я не помню, приходилось ли мне в прерывании останавливаться или нет. Это единственный потенциально тонкий момент. В смысле, что ты хочешь в __irq функции остановиться.

376. Dmitrij-Ekb, 04.08.2006 08:48
Tahoe
опишу полностью
есть программа,она контролирует нажатие кнопок(тут бесконечный цикл) и прием информации с РС232 по прерыванию.запускаю дебаг.открываю окно с регистрами . в какой регистр что надо написать чтобы прошло прерывание о завершении приема байта из РС232???вот в АВР студио для меги128 я в регистре UCSRA ставлю галку на RXC(записываю значение в UDR какое надо) и у меня начинается обработка прерывания в зависимости от принятого байта.хочу также в иар или это невозможно?

377. Tahoe, 04.08.2006 10:40
Dmitrij-Ekb
запускаю дебаг.открываю окно с регистрами . в какой регистр что надо написать
Если я правильно понял тебя, то ответ мой будет такой. Бросай свои "визуальные" замашки. Здесь вот так просто одним битиком в регистре разрешения прерываний не отделаешься. Тут стоит целый контроллер прерываний, он же AIC. Плюс к этому, сам процессор, в отличии от АВР, выполняет некие действия при прерывании.

В принципе, довольно внятно всё разрисовано в примерах. Посмотри, например, ИАРовский AT91SAM7S-Interrupt.
И раз ты полез в прерывания, внимательно изучи даташит в части AIC. Мне, что б осознать как он работает, понадобилось 2-3 дня. И то, когда касается вложенности прерываний, я снова лезу доку читать. Да ещё остались некоторые непонятки с edge/level. Точнее периодически вылазят.

Отнесись предельно серьёзно к AIC. Вторым, по-геморройности, будет USB, остальная периферия по-большому счёту не сложная. Но сначала с AIC разберись. Иначе он тебе ещё много крови попьёт.

Добавление от 04.08.2006 10:46:

Да, ещё. Тонкий момент, при переходе с АВР. Надо вбить себе в голову, что у ARM есть всего ОДНО прерывание, которое IRQ. На самом деле чуть больше, включая FIQ и ещё внутренние. Но пока забей на них на всех. Просто осознай, что прерывание у тебя только ОДНО. Называется оно IRQ. Как с ним разберёшься, разберёшься и с FIQ.

378. Dmitrij-Ekb, 04.08.2006 11:01
спасибо буду читать и учить...а на русском этого описалова нету случаем?????

379. Tahoe, 04.08.2006 14:31
Dmitrij-Ekb
а на русском этого описалова нету случаем?????
Всё, что попадается мне на глаза и имхо заслуживает внимания, я выкладываю здесь (http://forum.ixbt.com/topic.cgi?id=48:5248:0#0) . Стараюсь в ссылках указывать RUS или ENG.

380. Dmitrij-Ekb, 04.08.2006 15:11
то Tahoe подскажи плиз вот тут
if (Dataout[0]=='i') {//start
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1); в этом месте ещё работает(диод мигает)
wait(10);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED1);

for (im=0; im<=1025 ;im=im+1){
/*òóò èäåò ïðèåì ìàññèâà èç ïîðòà Â0-7 â ïàìÿòü,äëÿ äàëüíåéøåé îáðàáîòêè */
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, 22);
wait(5);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 22);
DDRData[im]=AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;
sumMas+=DDRData1[im];/*òóò íàøëè ñóììó âñåõ ýëåìåíòîâ*/
sumHalf=sumMas/2;/*à òóò ïîëóñóììó*/
}

AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1); а тут уже не работает(не мигает диод)
wait(10);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED1);

381. Tahoe, 04.08.2006 18:45
Dmitrij-Ekb
А ты уверен, что первый раз он у тебя именно внутри if(){} мигает?
Поставь breakpoint на второй строчке:
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1); в этом месте ещё
И убедись, что ты вообще входишь в этот if(){}.

Либо так. Сделай третью строчку wait(10) неодинаковой с предпоследней. Например одну из них сделай wait(100), вторую оставь wait(10).

P.S.
Вместо im=im+1 пиши просто im++.

P.P.S.
Избегай комментов на русском языке. Лучше лишний раз на lingvo.ru залезь. И в английском попрактикуешься, и геморроев в будущем избежишь. Как мелких, типа того что постом выше, так и крупных.

P.P.P.S.
Вот так никогда не пиши:
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, 22);
Что такое "22" ты уже и сам через неделю не вспомнишь. Объяви что-то типа:
#define ADC_EN_PIN ( 1 << 22 )
Кстати, не тут ли ещё один косячок? Ты ж поди хочешь одним пином щёлкнуть? А если несколькими сразу, то тем паче через #define объявляй.

382. Chudik, 04.08.2006 19:08
Dmitrij-Ekb
Небольшой совет. При написании фрагмента программы в форуме используй тег [code ] - иконка с решёткой над окном ответа. Этот тег сохраняет всё форматирование текста программы, проще разбираться.

383. Dmitrij-Ekb, 07.08.2006 09:51
цитата:
Tahoe:
А ты уверен, что первый раз он у тебя именно внутри if(){} мигает?
да,именно внутри if мигает,далее делает цикл for (im=0; im<=1025 ;im++){...},но в нем ничего не происходит и выйдя из цикла for не мигает,при этом программа дальше выполняется(реагирует на РС232 и выполняет другие команды)
PS вместо 22 назвал LED(диод на этой ноге висит мигать должен)
то Chudik как это написать??? так или нет [code] тут идёт текст [code] ??

384. Tahoe, 07.08.2006 09:59
Dmitrij-Ekb
вместо 22 назвал LED
Ты не стесняйся, define показывай.
Например неизвестно, у тебя сейчас
#define LED1 ( 1 << 22 )
или
#define LED1 22

Добавление от 07.08.2006 10:01:

как это написать???
Когда будешь писать ответ, чуть выше посмотри. Символ #.

385. Leka, 07.08.2006 10:08
Dmitrij-Ekb
...тут идет текст [/code]

386. Dmitrij-Ekb, 07.08.2006 12:26
#define LED1 ( 1 << 22 )
так и написано

387. Tahoe, 07.08.2006 13:14
Dmitrij-Ekb
Ок. Теперь ещё проверь по тексту, где настраиваешь PIO на выход. Там, часом, сопли не остались, в лице "22". Переправляй на LED1.
Хотя... Если AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 22); в этом месте ещё работает(диод мигает).
А как он у тебя вообще до этого мигал? Это с "22"-то? 22 Это ж в бинаре 10110b. Прям "мирАкл" (искаж.англ. miracle - чудо ) какой-то.

388. Dmitrij-Ekb, 07.08.2006 13:38
то Tahoe
текст изначально написан был правильно(и сейчас когда мигаешь всеми диодами всё идет нормально),но
до начала цикла диод мигнул,в цикле он тоже должен мигать,но не мигает и после цикла он не мигает
код:
if (Dataout[0]=='i') {//start
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED2);
wait(100);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, LED1);

тут оно работает
код:
 for (im=0; im<=1025 ;im++){ 
AT91F_PIO_SetOutput(AT91C_BASE_PIOB,LED1 );
wait(5);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
DDRData[im]=AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;
sumMas+=DDRData1[im];
sumHalf=sumMas/2;
}

а в цикле уже не мигает и выйдя из этого цикла я снова дергаю ногами,но без результатно,хотя выйдя из обработки по этому условию и войдя в прерывание с другим условием всё работает(не подвисает он)

389. Tahoe, 07.08.2006 13:47
Dmitrij-Ekb
Покажи свой wait(). Хоть дело и не в нём.

390. Dmitrij-Ekb, 07.08.2006 13:50
код:
void wait ( int tim )
{
unsigned int time;

for(time = 0; time < portSpeed*tim; time++);

}


вот он
а может дело во вложенности??? при такой глубине он просто перестает работать с портом???или гдето чтото сбивает

Добавление от 07.08.2006 14:44:

блин......люстру выключили и я увидел что эта фигня еле еле видимо мигает при свете нифига не видно было мерцание...... как говорится сам дурак )

391. Tahoe, 07.08.2006 16:09
Dmitrij-Ekb
Поправь ещё. Вместо
unsigned int time;
объяви как
volatile unsigned int time;

Если не знаешь, что такое volatile и зачем оно надо, глянь, например, у Кернигана и Ричи. Оно же K&R.

392. Chudik, 07.08.2006 19:25
Tahoe
Поправь ещё. Вместо
unsigned int time;
объяви как
volatile unsigned int time;

В данном случае ни к чему. Переменная стековая и никто другой к ней не обращается. Volatile имеет смысл делать только если переменная глобальная и меняется процедурой вне видимости, например, функцией из библиотеки или прерыванием.

393. khach, 07.08.2006 20:27
цитата:
Dmitrij-Ekb:
код:

AT91F_PIO_SetOutput(AT91C_BASE_PIOB,LED1 );
wait(5);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);


Ну и кто так делает мигание? С задержкой в 5 миллисекунд? Конечно ничего невидно глазом. Обычно лучше инвертировать состояние светодиода в каждом цикле.

394. Dmitrij-Ekb, 08.08.2006 08:26
цитата:
khach
видно мигание яркость меняется

395. Dismon, 08.08.2006 10:12
Tahoe, Chudik

Ребят, ну чего вы в самом деле - вроде опытные электронщики-программисты... Видно же, что исходя из кода

код:

for (im=0; im<=1025 ;im++){
AT91F_PIO_SetOutput(AT91C_BASE_PIOB,LED1 );
wait(5);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
DDRData[im]=AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;
sumMas+=DDRData1[im];
sumHalf=sumMas/2;
}


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

DDRData[im]=AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;
sumMas+=DDRData1[im];
sumHalf=sumMas/2;

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

Dmitrij-Ekb

Надо так:

код:

for (im=0; im<=1025 ;im++)
{
AT91F_PIO_SetOutput(AT91C_BASE_PIOB,LED1 );
wait(5);
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, LED1);
wait(5);
DDRData[im]=AT91F_PIO_GetInput( AT91C_BASE_PIOB ) & ADC_DATA_MASK;
sumMas+=DDRData1[im];
sumHalf=sumMas/2;
}


Либо, как и советовал khach, в цикле инвертировать состояние светодиода - один проход цикла светодиод горит, второй - не горит.

396. Chudik, 08.08.2006 10:25
Dismon
Ребят, ну чего вы в самом деле - вроде опытные электронщики-программисты...
Да я код вообще не анализировал

397. Dismon, 08.08.2006 10:28
Dmitrij-Ekb

Еще небольшой совет: писать операторы сравнения типа

if (переменная == константа)

на С надо внимательно, дабы случайно не сделать вместо сравнения присваивание. А чтоб забить на внимательность, нада приучить себя писать

if (константа == переменная)

Chudik Совсем не анализировал? Даже какая переменная стековая, а какая нет? Впрочем, это не имеет отношения к теме, как и мои слова про ребят. Так что на всяк случай (вдруг кого задело), прощения прошу ...

398. Dmitrij-Ekb, 08.08.2006 10:43
Dismon- ну с этим я уже разобрался )))

а как в дебаггере можно посмотреть время выполнения кода?(которое делается на самом проце уже)

399. Chudik, 08.08.2006 10:58
Dismon
Даже какая переменная стековая, а какая нет?
Так для этого анализа никакого не надо

как и мои слова про ребят.
Да нормально, не тушуйся

400. Tahoe, 08.08.2006 13:31
Chudik
В данном случае ни к чему. Переменная стековая и никто другой к ней не обращается.
Я из других соображений. В один прекрасный день поставит оптимизацию на максимум и компиллер выкинет из этого "проверенного и рабочего кода" кусок "бесполезного", с точки зрения компиллера, кода.

Добавление от 08.08.2006 13:33:

Dmitrij-Ekb
а как в дебаггере можно посмотреть время выполнения кода?
Это дело профилировщика, а не дебаггера.

Добавление от 08.08.2006 13:34:

Dismon
А чего нам обижаться, если сами в пол-глаза смотрели.

401. Dmitrij-Ekb, 08.08.2006 13:55
цитата:
Tahoe
Это дело профилировщика, а не дебаггера.
и где его искать???

402. Furcube, 08.08.2006 17:24

Я не уверен, что этот вопрос стоит задавать в этой ветке, но тем не менее.

С армами до этого не имел ничего общего, и испытаваю трудности в линковке проектов в IAR
т.е. хочу понять, как слинковать бинарь, чтобы его можно было залить самбой в флэш или срам, да ещё и чтобы оно там работало.

ну или киньтесь ссылкой.

403. Taftaf, 09.08.2006 13:47

Фактически вам надо вызвать xlink.exe подавая ему несколько параметров
в опциях командной строки.

Пример :
xlink.exe -FRAW-BINARY -f lnkarm.xcl -o result.bin

В данном случае :

-FRAW-BINARY - указывает линкеру создавать результирующий файл в формате
пригодном для прямой заливки в микроконтроллер.

-f lnkarm.xcl - указывает линкеру читать настройки из файла с именем lnkarm.xcl.

-o result.bin - указывает линкеру результирующий файл назвать result.bin.

Файл lnkarm.xcl поставляется с компилятором.
Его формат подробно рассматривается в документации поставляемой с компилятором.

Однако если некоторые переменные в lnkarm.xcl изменить следующим образом :

-DROMSTART=0
-DROMEND=1FFFF

-Z(CODE)INTVEC=00-3F

-DRAMSTART=200000
-DRAMEND=207FFF

-D_CSTACK_SIZE=200
-D_IRQ_STACK_SIZE=100
-D_HEAP_SIZE=0

то на выходе получите файл годный (по адресам кода и ОЗУ)
для прошивки в AT91SAM7S128.

К тому же следует в начало этого файла добавить список линкуемых библиотек
и ваших обьектных файлов, нечто вроде :

C:\ARM-IAR\arm\lib\dl4tpainl8n.r79
init.r79
Main.r79
keyboard.r79
...

И обязательно добавить строку :

-s __program_start

которая укажет линкеру точку входа (в данном случае находится в библиотеке
dl4tpainl8n.r79 - поставляется с компилятором) в программу.

404. mamochka, 18.08.2006 21:12
а в efo.ru AT91SAM7S128 стоит в розницу 7 баксов как и ATmega128-16 и оба со склада. Вот такая вот марква.

405. Chudik, 18.08.2006 21:18
mamochka
Пора новый курс создавать. По ARMам.
Я, кстати, серьёзно.

406. mamochka, 18.08.2006 21:35
Мне самому нужно его освоить, материалов много. Жаль для него нет таких симуляторов как для AVR - или я их не знаю просто? PROTEUS ARM7 поддерживает но LPC только базовые. Может в версии 7 появится.

Добавление от 18.08.2006 21:40:

Так как я не работаю с электроникой профессионально, то мне нужно найти какой то проект для себя - поделку чтоб с ним поковырятся. Все же с АВР я много налабал и могу о них говорить понимая что говорю.

407. Chudik, 18.08.2006 22:13
mamochka
Жаль для него нет таких симуляторов как для AVR

или я их не знаю просто?
Именно. Почитай "Осваиваем AT91SAM7" или "Для тех, кому ресурсов AVR уже не хватает", #0 (http://forum.ixbt.com/topic.cgi?id=48:5248:0#0)

408. vikont-s, 19.08.2006 13:43
Вопрос для Tahoe
В начале темы Вы выложили ссылку на http://svn.berlios.de/svnroot/repos/ixbtscope/trunk/
там есть USB JTAG схема и плата но вот в чем вопрос работает ли эта плата сразу или нужно еще прошивать EPM7032 и что прошивать и как? а так же что должно быть в конфигурационной флешке 93C56
какие программы умеют работать с данной платой?

Вобщем одни вопросы

409. Tahoe, 19.08.2006 13:58
vikont-s
работает ли эта плата сразу
Она вообще не работает. Параллельно была пара веток, в которых мы попыжились немного на предмет сделать USB-JTAG, но дело заглохло. Если интересно, см.:
USB JTAG adapter (возможно универсальный) (http://forum.ixbt.com/topic.cgi?id=48:5406)
JTAGи всякие нужны, JTAGи всякие важны (http://forum.ixbt.com/topic.cgi?id=48:5562)

410. mamochka, 19.08.2006 15:29
Chudik
mamochka
Жаль для него нет таких симуляторов как для AVR - или я их не знаю просто?

Именно. Почитай "Осваиваем AT91SAM7" или "Для тех, кому ресурсов AVR уже не хватает", #0


у меня ключевое словы было ТАКИХ. я говорил там про VMLAB PROTEUS т.е. с такими возможностями. Пусть хоть как у VMLAB.

с KEIL я работал для 8051 - у них логический анализатор не родной а "чей-то" DLL запустить я его не смог, на телесистемах спрашивал чтоже ни кто не пользовал. Зато Keil стыкуется с PROTEUS без проблем через протеусовский dll.

====

Здесь есть кто-то кто запустил логический анализатор KEIL для ARM ? Расскажите как это сделать, так как на сайте написано не получается (я пробовал только для 8051 на мювижен-2).

Добавление от 19.08.2006 15:34:

====
я открыл щас топик "для печати" и поискал слово "симуля" - говорили только про "нормальный" у Keil нотак и не попробовали.

411. Tahoe, 19.08.2006 16:47
mamochka
Ты различай "симулятор" и "логический анализатор". Проблема большинства симуляторов в том, что они не симулируют периферию. А собственно симуляторы есть имхо в каждой IDE, хоть в IAR, хоть в KEIL.

412. mamochka, 19.08.2006 16:56
Tahoe
mamochka
Ты различай "симулятор" и "логический анализатор".


я разлтичаю. просто я был не правильно понят в начале и из-за этого пошел разговор. я же сказал что такого как VMLAB или PROTEUS для SAM-ов не видел.

413. Tahoe, 19.08.2006 17:04
mamochka
Я вот об этом: говорили только про "нормальный" у Keil нотак и не попробовали. Там, собсно, пробовать нечего. Все просто пользуются, по мере надобности. Потому и не говорят - не о чем особо говорить.

414. mamochka, 19.08.2006 17:20
вы можете какой нибудь проект в архиве прицепить для SAM на Keil мювижен3 чтоб в нем лог анализатор работал ? пусть там светодиодом мигает или меанд выводит или ШИМ какой-то - это не важно.

Добавление от 19.08.2006 17:33:

========
Вот качаю эвалюшен.

KEIL ARM Evaluation Software
RealView Microcontroller Development Kit Version 3.02a
MDK302A.EXE (55,977K)
Thursday, July 27, 2006

http://www.keil.com/kdl/pyddiio2j6a06khwwme3p10acq/f…/eval/mdk302a.exe


To install the GNU development tools...
Download and run GCCARM331.EXE
GCCARM331.EXE (20,905K)
Monday, October 11, 2004

http://www.keil.com/kdl/pyddiio2j6a06khwl6x3p1z9cq/f…val/gccARM331.exe

===
теперь лекарство просить придется ...


===
а ведь есть и знакомый по AVR ICC для ARM. ImageCraft.com

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

Добавление от 19.08.2006 17:37:

===
и CDROM KEIL заказал, на прошлом была куча Апноутов и доки за все про все.

415. Tahoe, 19.08.2006 18:44
mamochka
в нем мастер начального кода имеется.
К сожалению, большинство виденых мною мастеров ничего, кроме иллюзии простоты не давали. Все эти мастера хороши, пока всё работает. А как только случился затык, ты заплатишь за эту иллюзию НА ПОРЯДОК большим временем.
Речь о рабочем проекте, разумеется. Для "ознакомиться по-быстрому" вполне достаточно мастеров, симуляторов и прочая.
И поверь нА слово, если в АВРе всё это ещё канало, то в АРМе рога обламываешь себе быстро и болезненно.

Я не против симуляторов, как таковых. Я только "за". Например я двумя руками за то, что бы поставить на PC мюкос и отлаживать в нём задачи. А потом переносить отлаженые куски в ARM. Да и то, осторожно. Для случая, когда над проектом работает больше одного человека имхо альтернативы подобному подходу нет.
Но по-любому, с железом надо быть на "ты", чего не даст тебе ни один симулятор.

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

P.S.
И забудь про всякие поделки, типа ИмэджКрафта. Тут в Кейле с ИАРом столько глюков, что на год вперёд хватит.

416. mamochka, 19.08.2006 18:59
Tahoe
по-любому, с железом надо быть на "ты", чего не даст тебе ни один симулятор.

Согласен на 100% - но не за 2 недели же ... Почему я в курсе рекомендую симулятор ? чтоб человек не покупая ни чего мог попробывать и увидеть - да я могу это, вот рботает МК вот я взял что-то поменял перекомпилировал и тоже работает.

Многие не покупают (если их работа не обязывает) какие то детали да АРМы потому что боятся "вдруг ни чего не получится".

у меня уж год лежат 4 шт LPC2138 полученые бесплатно с контеста журнала "сикъюит села" - там и проектов куча опубликовано, да нет чего то что мне хотелось бы сделать.
Разве что зрение для робота.

======
вот еще хранилище документации по ARM
http://upload.caxapa.ru/mcu/arm/

======

Tahoe? у вас нет проекта простейшего чтоб лог. анализатор работал ?
я KEIL скачал и уже ставлю.

417. Tahoe, 19.08.2006 19:23
mamochka
я KEIL скачал и уже ставлю.
Дык вот и смотри там примеры. Они ж для того и сделаны.

418. mamochka, 19.08.2006 19:54
я знаю что надо смотреть примеры, и написал что в мювижен2 примера с лог. не было. А в этом в 3 есть и открывается при запуске первым.

Т.е. KEIL считает этот инструмент полезным, раз пример на 1-е место поставил, так не ужели у них не хватает ресурсов сделать хотябы как SCOPE в VMLAB.

419. Chudik, 19.08.2006 19:57
vikont-s
Насколько я понимаю пока Tahoe использует Wiggler и встроенный загрузчик, работающий через собственный USB.
Если есть желание, то можно продолжить с JTAGи всякие нужны, JTAGи всякие важны (http://forum.ixbt.com/topic.cgi?id=48:5562) Там основная часть внутренностей (универсальный коммутатор интерфейсов) написана и отлажена путём сравнения в тестбенче с прошивкой прототипа - реально работающего девайса. Для пущей универсальности там надо ещё прошить запись управления коммутации всего на едином разъёме. Но при этом ещё надо развести плату.
Ну, а получив этот инструмент, можно будет вернуться и к варианту с USB.

420. Tahoe, 19.08.2006 23:11
Chudik
Насколько я понимаю пока Tahoe использует Wiggler и встроенный загрузчик, работающий через собственный USB.
Угу. Причём только первое ( wiggler ).
Восторги по поводу встроеного загрузчика уже прошли. Ну есть - и хорошо.

mamochka
Т.е. KEIL считает этот инструмент полезным, раз пример на 1-е место поставил
Имхо скорее Кейлу надо "выпендриться", что б хоть чем-то выделяться в ряду множества подобных продуктов. Это касательно причин. Безотносительно качества самого лог.анализатора ( что б понятно было - я сейчас не говорю что он плохой или хороший, я только о причинах, да и то имхо ).

421. Strijar, 21.08.2006 15:00
Добрый день!

Кто нибудь использует GNU (именно под Linux) для AT91SAM7S64? JTAG использую Wiggler. Раньше не работал с микроконтролерами - юниксоид, програмист. Проблема в том что gdbserver запустился, пример из jtag_gdbserver загружается и запускается. Но работает как то странно - регистры (кроме pc) не меняются, переменые тоже... Куда копнуть? Может есть какая то "волшебная комбинация" комманд в arm-elf-gdb?

Плату делали наши электронщики.

422. LazyCamel, 21.08.2006 15:18
Смотри http://openocd.berlios.de/web/

423. KAN35, 21.08.2006 17:08
Tahoe
Сейчас занялся перекодированием со внутреннего флэша на MMC/SD тот же самый атмельский исходник. Это будет слишком нагло если я попрошу поделиться наработкой.....

426. Strijar, 21.08.2006 18:30
цитата:
LazyCamel:
Смотри http://openocd.berlios.de/web/

А может где-то можно взять одним архивом? У меня SVN через прокси не работает

427. Kos1yan, 22.08.2006 13:43
Добрый день , такой вопрос в первых шагах по ARM920T (at91rm9200).
1.Как инициализировать ARM для работы с портами ввода/вывода ? (например помигать светодиодом). Нужно ли отключать другую переферию (например АЦП, УАРТ и т.д как в контроллерах) ?
2. Где выбирается конкретный порт PIOA.. PIOD ? В документаци идет описание регистров PIO_PER, PIO_PDR, PIO_OER , но как выбирать конкретную букву порта , для которых будет распространятся действие этих регистров.

Был бы благодарен за готовый пример с коментариями для мерцания светодиодика под IAR или CodeWarriorи v1.2. (мой ящик kos985@mail.ru и ася 273314392)

428. RWolf, 22.08.2006 17:47
Kos1yan
на сайте IAR доступны примерные проекты для любых поддерживаемых контроллеров, в них всё это есть.

429. Kos1yan, 22.08.2006 17:51
Да-да я там был , но в симуляторе работает , на железе нет
вот собственно подредактированный код с сайта : (мигаю лампочкой без задержки )
код:

#include "AT91RM9200.h"
#define LED_USER ( 0x1<<18 )




int main()
{
/* general preparations */
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF ; /* reset the aic, disable all interrupts */
AT91C_BASE_AIC->AIC_ICCR = 0xFFFFFFFF ; /* clear all interrupts */
AT91C_BASE_AIC->AIC_EOICR = 0 ; /* unstack one level */
AT91C_BASE_PMC->PMC_PCER |= ( 1UL<<AT91C_ID_PIOB ) ; /* enable piob */
AT91C_BASE_PMC->PMC_PCER |= ( 1UL<<AT91C_ID_TC2 ) ; /* enable tc2 */
AT91C_BASE_AIC->AIC_ICCR |= ( 1UL<<AT91C_ID_TC2 ) ; /* clear pio interrupt */
AT91C_BASE_AIC->AIC_IECR |= ( 1UL<<AT91C_ID_TC2 ) ; /* enable pio interrupt */
/* prepare output */
AT91C_BASE_PIOC->PIO_PER |= ( LED_USER ) ; /* pio enable for LED */
AT91C_BASE_PIOC->PIO_OER |= ( LED_USER ) ; /* LED are output */
/* enable global interrupts */
// __enable_interrupt( ) ;
/* init blinking */
// AT91C_BASE_TC2->TC_RA = AT91C_BASE_TC2->TC_CV + TIME ;
// AT91C_BASE_TC2->TC_IER |= AT91C_TC_CPAS ; /* enable RA compare int */
for( ; ; )
{
AT91C_BASE_PIOC->PIO_CODR |= ( LED_USER ) ;
AT91C_BASE_PIOC->PIO_SODR |= ( LED_USER ) ;
}
}



Вообще как в IAR создавать бинарник (сейчас поступаю след образом -- создаю hex , с помошью Keil-овской утилиты hex2bin перегоняю в bin)

Где я ошибаюсь ?

430. mamochka, 22.08.2006 18:23
у вас KEIL установлен ? если да то скомпильте пример мигания светодиодом и зашейте. если работает то идите вверх по цепочке к вашему IAR.

431. Kos1yan, 22.08.2006 20:16
Не работает. Keil кстати болеет (MDK302A.EXE ), есть ли лекарство на него.
Keil генерит hex в 3 раза больше чем IAR 4.11a.
Вообще есть ли программы подобные SAM-BA для ARM920T ?

432. Маэстро, 29.08.2006 18:13
Кто-нибудь пользовал такие кварцы?...
http://foto.ixbt.com/?id=photo:18938
http://foto.ixbt.com/?id=photo:18937
Продавались как SMD0705, маркировка на крышке "FT 18.432", но никакой инфы по ним нет...
Смущают результаты "прозвонки" (макета для проверки пока нет )...
Если на первой фотографии принять "скошенный" вывод за "1" и считать "по часовой стрелке"
код:
3 4
2 1

#1 + #3: Quartz?
#2 + #4: GND? (звонятся накоротко)...

433. Tahoe, 29.08.2006 23:03
Маэстро
Должно быть что-то, типа такого: http://www.smd.ru/katalog/kwarcewye/index.khtml

434. Маэстро, 30.08.2006 05:33
Tahoe
Нашел сайт фирмы производителя ( ??? )... Fronter Electronics Co., Ltd (http://www.chinafronter.com/Index.asp)
Буквенная маркировка "FT" совпадает, но "шрифт" другой...
Возникло очередное сомнение... "Доктор, что я купил?..."(c)
Продавали как Quartz Crystal Resonator (pdf, ~200kB) (http://www.chinafronter.com/pdf/smd7050(seam).pdf) , а "геометрия" выводов похожа на Voltage Controlled Crystal Oscilator (pdf, ~200kB) (http://www.chinafronter.com/pdf/fvo13.pdf) А тестер "утверждает": "#2,#4 is connected with metal cap of top"... Т.е. резонатор...

435. Tahoe, 30.08.2006 05:57
Маэстро
а "геометрия" выводов похожа на Voltage Controlled Crystal Oscilator (pdf, ~200kB)
Не смущайся особо. Считай что это стандартный корпус, в котором много чего ещё делают. Вот например: http://www.smd.ru/katalog/kwarcewye1/index.khtml
Ты мучаешься, мол, плату разводить, а на макете не опробовано? Так что ли?

Да, чуть опять не забыл. Колись, где и почём покупал. В столь чУдном корпусе ( 7х5 ) и на столь близкую сердцу каждого SAMовода, частоту.

Добавление от 30.08.2006 06:08:

Что б снять сомнения, подпаяй пару проводков, да воткни куда-нить, вместо HC-49. Всего делов-то.

436. Маэстро, 30.08.2006 10:10
Tahoe
Колись, где и почём покупал.
А чего колоться-то... В МСК один магазин с нужным названием на Бужениновке... Я и не знал, что это "дифицит"...

437. Tutor, 30.08.2006 13:49
Разместили полный перевод на русский язык описание AT91SAM7Sxxx
www.gaw.ru

438. Sergey_G., 11.09.2006 18:07
Добавлено в полезные ссылки:

Название: Микроконтроллеры АРМ7. Вводный курс
Автор: Тревор Мартин
Издательство: Додека
Год: 2006
Страниц: 241
Формат: DJVU
Размер: 12Мб
Качество: очень хорошее
Язык: Русский
Ссылка: http://rapidshare.de/files/21169490/buh.rar.html

Для всех кто хочет научиться программить АРМ7 с нуля.

Добавление от 11.09.2006 18:08:

Книга по Phillips LPC, но есть много общей информации

439. Chudik, 11.09.2006 20:19
Tutor

кинь эту ссылочку Список полезных ссылок, хорошо?

440. sw1972, 14.09.2006 21:33
Насколько Keil делает код лучше, чем GCC, применительно к архитектуре ARM?

441. Leka, 14.09.2006 22:06
sw1972
Насколько ... делает код лучше, чем ...
Вообще-то некорректный вопрос, имхо, правильнее говорить о различии стилей для получения "лучшего" кода.

442. zerg32, 14.09.2006 23:16
купил плату от Olimex http://www.olimex.com/dev/sam7-p64.html с AT91SAM7S64, спаял Wiggler.

Нужно сделать GPS и 1-Wire логгер с записью на SD card и доступом к компу по USB (как mass storage).

Устройство должно снимать координаты с GPS и температуру и влажность с 1-Wire и записывать в текстовый\бинарный файл на карте памяти. Нужно ли для такого использовать какуюнибудь ОС или проще можно и так обойтись?

Посоветуйте какой компилятор, OS и библиотеку для работы с FAT использовать.
Компилятор мне понравился Keil
В качестве библиотеки для FAT склоняюсь к EFSL.

Опыта работы с арм нет, немного имел дело с авр.

443. Tahoe, 15.09.2006 06:24
sw1972
Насколько Keil делает код лучше, чем GCC, применительно к архитектуре ARM?
Keil это только оболочка. Там внутри - три компиллера, на выбор, включая GCC.


zerg32
Я бы делал под ОС. Саму ОС для себя выбрал - uCOS. Кроме всего прочего, она отлично задокументирована, разберёшься за недельку-другую. Даже если выберешь другую, имхо книжку Лаброша читать обязательно, прежде чем вообще лезть в операционки.
Вот от этой печки плясал бы я.

444. Sergey_G., 16.09.2006 19:05
У меня такой вопрос. С какой максимальной скростью AT91SAM7S64 может брать данные из внутреннего АЦП и заполнять ими внуреннее ОЗУ? Предполагается, что АЦП разогнан до нужной частоты и его скорость работы не является ограничением.

445. Tahoe, 16.09.2006 22:06
Sergey_G.
Либо я не понял вопроса, либо ты не в курсе, что там есть DMA.

446. Sergey_G., 16.09.2006 23:51
В даташите написано, что ДМА относится только к "Serial peripherals". Хотя в описании АЦП упоминается какие-то
• ENDRX: End of Receive Buffer Interrupt Disable
• RXBUFF: Receive Buffer Full Interrupt Disable
Выходит, что ДМА работает с АЦП?

447. Tahoe, 17.09.2006 02:18
Sergey_G.
Выходит, что ДМА работает с АЦП?
Конечно работает. Кстати, я без DMA АЦП в СЭМе и не использовал пока, ни разу.

Посмотри внимательно описание работы PDC в даташите. Он работает абсолютно единообразно с любой доступной периферией, АЦП не исключение.

448. Sergey_G., 17.09.2006 10:14
А с внешним АЦП ДМА умеет работать?

449. Tahoe, 17.09.2006 10:48
Sergey_G.
А с внешним АЦП ДМА умеет работать?
А что это за интерфейс такой, "внешнее АЦП"? Если имеется ввиду просто ногами дрыгать, то не умеет. А если АЦП с
последовательным интерфейсом, то и на SPI, и на SSC работает.

Открывай даташит, стр.4, "Block Diagram". Смотри маленькие прямоугольнички, с надписью PDC.

450. zerg32, 30.09.2006 14:35
Появилось несколько вопросов по данному процессору:
1. Как я понял если размер кода превышает 8кб (> половины RAM sam7s64) то отладка из RAM становится невозможна ? Keil ругается на то что "*** ERROR L107: ADDRESS SPACE OVERFLOW". Не проще ли тогда на время разработки взять sam7s256 и отлаживать на нем, а потом просто пересобрать проект для заливки в флеш и залить например в sam7s64 ?
2. Можно ли зашивать флеш с помошью Wiggler и H-JTAG из под Keil ? у меня Keil ругается "*** RDI: System-Reset is not supported !". Версия H-JTAG последняя V0.3.1. Или нужно прикручивать например OpenOCD для зашивки и H-JTAG для отладки ?

451. DASM, 30.09.2006 23:03
zerg32
а Keil патченный ?

452. zerg32, 30.09.2006 23:16
DASM да патченный

В итоге прикрутил OpenOCD для прошивки, а H-JTAG для отладки.
Но возникла новая проблема : при работе из флеш программа вылетает на DAbt_Handler когда вызываешь printf. Из Ram все работает нормально. putchar и _getkey переопределены чтобы читать и писать в USART0. Просто putchar работает.

Пытался сделать как написано тут http://www.keil.com/support/docs/3080.htm ARM: HOW TO ANALYZE A DATA ABORT EXCEPTION но там ерунда какая-то в тех адресах где должна быть команда которая вызвала этот exception.

453. DASM, 01.10.2006 03:12
zerg32
фреймовый стек достаточного размера ?
По поводу 8 килобайт - Вы через скаттер файл задаете размеры сегментов, или в окне настроек проекта ? Там правильные размеры выставлены ? И еще уточнить хочу - Вы в среде Keil используете родной С компилятор от Keil или интегрированный теперь уж туда C/C++ компилятор от RealView ?

454. zerg32, 01.10.2006 03:28
Компилятор Keil CARM

Размер задавал через окно настроек проекта.

Что такое скаттер файл и фреймовый стек ?

Настройки стека из SAM7S.s вот
код:

UND_Stack_Size EQU 0x00000004
SVC_Stack_Size EQU 0x00000004
ABT_Stack_Size EQU 0x00000004
FIQ_Stack_Size EQU 0x00000004
IRQ_Stack_Size EQU 0x00000080
USR_Stack_Size EQU 0x00000400

AREA STACK, DATA, READWRITE, ALIGN=2
DS (USR_Stack_Size+3)&~3 ; Stack for User/System Mode
DS (SVC_Stack_Size+3)&~3 ; Stack for Supervisor Mode
DS (IRQ_Stack_Size+3)&~3 ; Stack for Interrupt Mode
DS (FIQ_Stack_Size+3)&~3 ; Stack for Fast Interrupt Mode
DS (ABT_Stack_Size+3)&~3 ; Stack for Abort Mode
DS (UND_Stack_Size+3)&~3 ; Stack for Undefined Mode



Как я понимаю они одинаковые для ram и flash конфигураций .

455. DASM, 01.10.2006 03:38
самое простое - протрассируйте printf пошагово - до этого аборта. Мог бы помочь более подробно, но под рукой только плата на LPC2148

456. zerg32, 01.10.2006 03:49
увеличил стек до USR_Stack_Size EQU 0x00000800 - заработало. буду разбираться зачем понадобился такой большой стек.

DASM
Спасибо

457. DASM, 01.10.2006 03:57
zerg32
забегайте к нам в дружественный форум http://electronix.ru/forum/index.php?showforum=43

458. Zman, 12.10.2006 14:15
Tahoe и другие

тут на горизонте засветилась новая разработка, вот думаю под нее освоить эту машинку (уже заказал дев.борду на всякий случай)

но есть большие сомнения насчет оперативки. Специфика задач такова, что надо много памяти, но при этом обработки данных немного. Что-то типа 0.5-1MIPS, но 1Mb SRAM. То есть справится даже авр/пик, но как память подрубать ?

Внешней шины для памяти в арм7 - нету , придётся либо
1) смотреть на большие камни типа арм9, либо малоизвестные платформы, что мне очень не нравится...
2) городить SRAM контроллер с последовательным интерфейсом (требования от 256кб и выше, при этом опциональное расширение лучше всего, т.е 256 всегда и пустые сокеты для 512,768,1024 ). Нет ли такого готового ?

так вот вопрос по второму пункту - кто делал такое, примерно как в двух словах, и самое главное: какой получается access time с учетом дополнительной схемы ?


Chudik, FPGA/CPLD просьба не предлагать, религия не позволяет
Tahoe, отдельное спасибо за "раскрытие темы арм7"

459. SpaceMan69, 12.10.2006 15:11
цитата:
Zman:
Внешней шины для памяти в арм7 - нету
Ну почемуже нету например LPC2880,LPC2888 http://www.standardics.nxp.com/products/lpc2000/all/~LPC2880/#LPC2880 имеет на борту даже контроллер SDRAM.

460. Chudik, 12.10.2006 18:00
Zman
на горизонте засветилась новая разработка
Примерное направление деятельности разработки?

FPGA/CPLD просьба не предлагать, религия не позволяет
Да лааадно...

К этой теме 13.10.2006 01:28 mChudik подклеил сообщения из темы "Вопросы знатокам ПЛИС\FPGA, Альтеры, Xilinx и прочего, с чего начать?" (автор: Зануда)

462. Tahoe, 12.10.2006 19:50
Zman
Внешней шины для памяти в арм7 - нету
У Атмела оно зовётся EBI - External Bus Interface. Что характерно, это не просто внешняя шина, а готовый интерфейс, который ты конфигуришь под SDRAM, Flash и т.д. Подробнее перечень интерфесов смотри в доке на конкретный камень.
Камни с EBI смотри тут: http://www.atmel.com/dyn/products/devices.asp?family_id=605#1524

Но если время ждёт, то ожидается вот такое: AT91SAM7SE512/256/32 (http://www.atmel.com/dyn/general/advanced_search_results.asp?device=1&tools=1&faqs=1&datasheets=1&appNotes=1&userGuides=1&software=1&press=1&articles=1&flyers=1&checkAll=1&checkAllReference=1&target=at91sam7se)

DASM
Лично я не против других АРМов, но в контексте данной ветки, остальные камни имхо в пролёте.
В том смысле, что с одной стороны переползать с АВРа людям легче в рамках Атмела, а с другой стороны, Атмел сделал более чем достойные камни. В плане периферии тот же Пхилипс имхо в пролёте. А чем ещё могут отличаються камни с одинаковым ядром?
Добавь сюда ещё вопрос "доставабельности", что для многих немаловажно.

463. Zman, 13.10.2006 05:55
SpaceMan69
сорри, имелись ввиду конкретно AT91SAM7Sxxx

Chudik
Примерное направление деятельности разработки?
это большая тема для отдельного топика, как раз хотелось с народом посоветоваться
вот соберусь с силами и расскажу на днях

Tahoe
про EBI видел, но нашел её только в арм9
спасибо, почитаю...

464. Chudik, 13.10.2006 06:45
Zman
большая тема для отдельного топика, как раз хотелось с народом посоветоваться
вот соберусь с силами и расскажу на днях

Давай. Тогда и посмотрим, на чём лучше всё это делать.

465. arkamax, 13.10.2006 16:33
Привет SAMоводам Есть одна задачка, требующая реализации на камне USB host, работающего по протоколу PTP (он сделан поверх mass storage). Кто-нибудь видел реализацию подобных вещей под SAM7? Хотя бы тот же mass storage USB host... РТР уж придется самому тогда навернуть. Если это будет что-то написанное под одну из RTOS, работающих на этом САМе - то же хорошо. Все думал покопать в сторону AT90USB1287, но когда увидел функциональность САМа, тут же закрались сомнения

Заранее спасибо!

466. Zman, 14.10.2006 12:59
arkamax

посмотри тут (http://vinculum.com/prd_vdip1.html)
и потом тут (http://vinculum.com/prd_vnc1l.html)

467. khach, 14.10.2006 13:22
цитата:
SpaceMan69:
цитата:
Zman:
Внешней шины для памяти в арм7 - нету
Ну почемуже нету например LPC2880,LPC2888 http://www.standardics.nxp.com/products/lpc2000/all/~LPC2880/#LPC2880 имеет на борту даже контроллер SDRAM.
Чип хороший, только что с ним делать? Корпус БГА-0.5, библиотек на USB так и невыложили. Короче, три месяца лежат микросхемы мертвым грузом . Лучше уж дождаться LPC2378 или LPC24хх.

468. arkamax, 14.10.2006 13:27
Zman

Интересная вещь... вот только там реализация mass storage сделана в своей собственной прошивке - не уверен, что удастся навесить что-либо сверху. Кроме того, хотелось бы реализовать все на одном чипе.

469. Toni_Montana, 19.10.2006 11:34
Подскажите пожалуйста, что такое Sam-BA boot, и можно ли програмировать контроллер исключительно с помощью одного USB кабеля, другими словами какой самы простой способ программирования контроллера AT91SAM7S64

470. SAA, 19.10.2006 11:53
Именно так USB шнуром и больше ничего, потому что SAM-ba!

471. Toni_Montana, 19.10.2006 12:14
А где найти схему для подключения?

472. CrazyElk, 19.10.2006 13:02
Toni_Montana Подключения ЧЕГО?

ПРи программировании через Sam-BA boot
0. Качаем и устанавливаем с сайта Atmela писишную часть (интерфейсная часть с кнопочками посылающаф и читающая по USB)
1. вынимаем снимаем все питания в том числе и поступающее по USB (Выдергиваем все проводочки если на Dev борде). Замыкаем указанные в инструкции перемычки (ножки и т.д.) и включаем питание не менее чем на 10 секунд (а лутше больше). Выключаем питание. ПО стартовому адресу в кристалле прошился Sam-BA boot и теперь при подключении ОБЫЧНЫМ USB A-B Кристалл опознается как Sam-BA boot устройство (если конечно писишную часть установил)
2. Используя установленного на PC клиентскую часть Sam-BA boot-а прошиваеш свою программу в кристалл. ( приэтом возможно заказывая стирание самого Sam-BA boot-а )/ GHjdthzti tckb [jxti xnj pfuhepbkjcm
3. Жмеш кнопочку reset (На dev борде) код Sam-BA boot стирая себя переносит принятую программу куда требукется и передает управление ей. Sam-BA boot теперь недоступен и если сам не писал кода взаимодействия с USB то оно недоступно - но работает твоя программа . Чтобы залить по новой возвращаемся к шагу 1.

Вот и все

WBR CrazyElk

473. Toni_Montana, 19.10.2006 13:07
Спасибо за инструкцию
Что подразумевается под dev бордом?

Добавление от 19.10.2006 13:09:

Как подключить USB кабель к контроллеру для программирования? к каким ножкам? Нужны ли преобразователи сигнала?

474. Tahoe, 19.10.2006 16:34
Toni_Montana
Что подразумевается под dev бордом?
Development Board. То бишь "тестовая платка".

Как подключить USB кабель к контроллеру для программирования? к каким ножкам? Нужны ли преобразователи сигнала?
Ты не понял. Представь себе обычный COM-порт, который ты используешь в своём устройстве. Только дополнительно, через него ещё можно прошивать контроллер. То же самое с USB. Просто штатно включаешь и всё. А дальше по инструкции, в доках всё есть.

475. Toni_Montana, 20.10.2006 05:37
Спасибо! Буду разбираться

476. Toni_Montana, 28.10.2006 13:49
На одном из сайтов написано, что микроконтроллер поддерживает смарт-карты?
О каких смарт картах идет речь? Ктонибуть занимался данным вопросом?

477. Zman, 02.11.2006 23:03
Toni_Montana
судя по описанию - интерфейс для SD/MMC

Tahoe
пришла дев.борда, samba работает, мигает диодами, mass storage прошивается

глупый вопрос - что за расширение .a79 ?
по виду обычный .hex
чем конвертить в .bin чтобы напрямую посылать в самбу ?

478. Xylene, 03.11.2006 13:53
Zman
один из отладочных форматов для CSPY . Генерируйте сразу bin через generate extra output - там ставьте raw binary и расширение bin
SAM_BA пользовать не ркомендую - примерно каждый 20-ый чип её не шьется, используйте SAM-PROG

479. Zman, 04.11.2006 16:15
Xylene
примеры с сайта даны как исходники+проект и как готовый бинарник.
когда прошиваешь этот бинарник - она работает
в IAR поставил вывод raw-binary, компилит файл другого размера и он не работает

samba пока работает нормально, 20 чипов у меня нету
а что за интерфейс там в sam-prog ? надо выводить какие-то дополнительные сигналы для подтверждения прошивания, не очень понятно...

480. Tahoe, 04.11.2006 16:26
Zman
Есть небольшая путаница. Название "SAM-BA" одновременно использовано в двух смыслах. Во-первых, это собственно загрузчик, который вшит в камень. А ещё есть внешние программы, позволяющие с помощью этого загрузчика прошивать чип. Эти проги называются SAM-BA и SAM-PROG. Соответственно, Xylene имел ввиду программу SAM-BA. А интерфейс обе эти проги используют один и тот же.

Добавление от 04.11.2006 16:28:

А прогу действительно, лучше использовать SAM-PROG.

481. Zman, 04.11.2006 16:38
Tahoe
понятно, что физический интерфейс один и тот же

просто когда я запускаю приложение (самбу), там все понятно - коннект, открыть файл, прописать в чип

а когда поставил и запустил "сам-прог", то не понял как им пользоваться
там в меню есть выбор типа "подтвержение прошивки" и список - PA1 PA2 итд
я так понял что это дополнительные ноги какие-то

если честно, у меня времени не было разбираться , запустил - увидел, что непонятно и бросил...

482. Xylene, 04.11.2006 18:24
Zman
а flash release конфигурация выбрана ?

483. Persona, 12.11.2006 21:42
Интересно тут у Вас! Уже купил AT91SAM7X256 (16.8$) для старта так сказать с ARM-ейской наукой. Для киевлян скажу, что ARM-ы можно скупать в ИМРАДЕ. 2 дня и камешек у Вас. Прочитав все выше сказанное взялся за свой вариант тестовой PCB для AT91SAM7..
У меня вопрос к авторам этой темы: Вы довольны своим результатом работы с AT91??

484. Tahoe, 12.11.2006 23:00
Persona
У меня вопрос к авторам этой темы: Вы довольны своим результатом работы с AT91??
В каком смысле? Не пожалели ли, что связались с этим камнем? За себя скажу - не пожалел.

485. OlegNat, 14.11.2006 13:02
Помогите, пожалуйста, разобраться с ethernet на dev борде от olimex. Имеется онный с процесором at91sam7x256, чип физического уровня - ksz8721bl (тоже что и ks8721bl). Плата разработчика поставляется с примером в котором ethernet не задействован. Попробовал я забросить готовые демо примеры оси FreeRTOS. С USB как виртуальным com портом работать удаётся, LCD экранчиком управляю, ещё некоторые мелочи из готовых примером сумел собрать и запустить, а вот с ethernet'ом не пошло. Пробовал я записать пример с FreeRTOS где реализован веб-сервер на IwIP реализации TCP/IP стека, но связи нет и лампочки разъёма сети на плате не моргают. В нете решения найти не смог. В чём может быть проблема?
Микросхема физического уровня (по описанию производителя) соответстувет какому-то стандарту и поэтому должна работать со стандартным интерфейсом со стороны проца. Возможно разница в инициализации (програмной или апаратной). Может кто уже сталкивался с этой проблемой и знает решение.

И ещё вопрос - при отсутсвии инициализации должен ли как-то разъём сети подавать признаки жизни (светодиодиками как-то поморгать)?

Начал понемного копаться в коде (пока бросил лишь первый взгляд) - вроде бы код примера настроен на использование в качестве микросхемы физ.уровня DM9161. Может кто подскажет как нужно переработать код (или где можно найти в нете пример), чтобы запустить всё же работу ks8721bl?

Буду благодарен за любую помощь.

486. 0xFE, 17.11.2006 10:18
Здравствуйте!
Внимательно ознакомился с сообщениями по теме AT91SAM7S64.
Вопрос знатокам данного камня : Допустим, я вешаю на SSC аудиокодак и надеюсь подцепить PDC . Теоретически , какую максимальную частоту дискретизации я могу получить? Либо так : с какой частотой я могу снимать отчёты с
внешнего АЦП с учётом того, что модуль SSC работает с контроллером прямого доступа к памяти? Скоростными характеристиками АЦП и последующей обработкой данных можно принебречь.
Буду признателен.

488. [BAT], 24.11.2006 15:15
Народ, кто-нибудь реализовывал на сабже запись и чтение MMC/SD по SPI с использованием PDC ? Столкнулся с проблемой, что без использования PDC частота синхронизации по SPI может быть максимальной для SD и ММС (25 и 20 соответственно), точнее с учетом дилителя чуть поменьше. Но если обмен больших масивов идет с использованием PDC, то все пашет только на меньшей скорости, иначе идут ошибочные данные.
Это так и должно быть или я что-то не так делаю? Без PDC тормознуто получается.
PS: На PDC есть какие-нибудь ограничения по скорости ?

489. Chudik, 28.11.2006 18:09
Tahoe
В своих поисках и работе с этим чипом не находил драйвера для работы с SD флешками? Желательно с использованием FAT и работой с файлами?
О, судя по предыдущему постингу работа с SD интересует не только меня

Добавление от 28.11.2006 18:12:

Во, что-то такого типа http://www.smxinfo.com/rtos/fileio/smxfs.htm, но opensource....
----------------
Хммм... http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_p…sl_arm/index.html
Если у кого времечко будет - гляньте, а?

490. Tahoe, 29.11.2006 01:41
Chudik
Драйвер MMC/SD я сам написал, там ничего особенного нет. А вот с FAT куча проблем. Точнее не только с FAT.
Из "не только c FAT" главная проблема в том, что ты скорее всего захочешь обеспечить одновременный доступ к SD и своего приложения, и какого-нить mass-storage. Т.е. надо аккуратно расшарить ресурсы. Причём под ресурсами имеется ввиду как просто SD ( например одновременно писать файл и читать/удалять другой, это забота FS, но это потенциально источник глюков ), так и например SPI, если кроме карточки на нём что-то ещё висит. В случае с SAM-ом, учитывая его заточенность SPI для поддержки нескольких устройств на SPI, ситуация реальная.
Ну и с самим FAT геморрои. Проблема в том, что согласно рекомендациям M$, выбор собсно файловой системы - FAT12, FAT16, FAT32 - зависит не от тебя, а от размера твоей SD. Т.е. если у тебя SD только для внутреннего пользования, в смысле что у тебя нет mass-storage и Windows не будет форматировать карточку, то можно "отскочить". Взять одну из готовых библиотек и не париться.
Ну и сама FAT памяти хочет немерянно, если нужна скорость.

Если тебе для конторы, то имхо один из лучших вариантов, купить в исходниках всё дело за 3 килобакса с копейкой у Микриума. Это у них по-минимуму, под single product лицензию. Можно найти и скачать старую версию, уже потыреную, но там много чего нет и не совсем так сделано.

Во всех виденых мною открытых/доступных реализациях FAT есть засады ( а какой я нудный становлюсь, если мне что-то надо, ты знаешь ). EFSL я смотрел, когда-то. В ней, емнимс, нет записи в FAT32. Т.е. покатит лишь для какого-нить самодельного МП3-плейера. Ну либо для девайса в себе, без mass-storage.

Добавление от 29.11.2006 01:46:

Есть много причин, почему не надо использовать FAT на SD. Но есть одна большая, которая всё перевешивает - нативная поддержка в Windows.
Идеальный вариант, имхо, это использовать каку-нить JFFS2. Если б соблюдалось одно ма-аленькое условие - наличие драйвера JFFS2 в Windows. Но увы...

В общем, ключевой вопрос - mass-storage используется в девайсе?

491. Chudik, 29.11.2006 01:54
Нет, mass-storage не используется. На SD пишется компом некая инфо, втыкается в девайс, девайс читает инфу, записывает туда другую. Т.е., грубо говоря, дискетка с разделённым во времени доступом. Поэтому нужна файловая система. Запись на девайсе в реальном времени, но скорость небольшая, порядка 20 байт в сек.

Это не для конторы. Есть намётка одного проекта вне моей компании.

492. Tahoe, 29.11.2006 05:57
Chudik
Тогда ограничиваешься FAT16 и в бой. Можно EFSL, можно Микриумовскую старую. Но у тебя обычно вопрос легальности стоИт, тогда видимо EFSL.
Атмел, дятлы. Тот mass-storage, который я переколачивал. Там тоже есть файловая система, кроме mass-storage. По всем докам заявлена FAT32. В реальности - хрен.

493. Chudik, 29.11.2006 06:42
Tahoe
Тогда ограничиваешься FAT16 и в бой.
А какое там ограничение в объёме для FAT16? Не напомнишь?

Ага, сейчас глянул - 2ГБ на раздел. Нормально, вполне можно использовать.

494. Firestarter, 03.12.2006 07:56
Помогите пожалуйста, Wiggler не работает...
При попытке перейти в отладку в CrossWork, во-первых, неправильно определяет ID кристалла (AT91SAM7S64) - определяет ID, как 0x3f0f0f0f, во-вторых, при верификации считывает одни 0xffffffff, и выдает ошибку Verify failed. В чем ошибка???
Схема прилагается.

495. Tahoe, 03.12.2006 09:29
Firestarter
А так делал: http://www.atmel.ru/FAQ/FAQ.htm#n6 ?

Добавление от 03.12.2006 09:32:

Chudik
Кстати, про EFSL. Про нет записи в FAT32 это я всё-таки не то вспомнил. Записывает она. Там не было поддержки длинных имён.

496. Chudik, 03.12.2006 10:13
Tahoe
Там не было поддержки длинных имён.
Ну, это не должно быть сильной проблемой, насколько я понимаю. Во-первых, можно обойтись, во-вторых, структуру длинных имён можно найти и дописать поддержку.

497. OlegNat, 04.12.2006 12:18
Потихоньку разбираюсь с AT91SAM7X256 и пока что скорее проц меня, нежели я его . Хотя локальные успехи всё-таки имеют место быть. Пишу используя RowleyCrossWorks. Сейчас столкнулся с такими двумя проблемами - может кто сможет что-то и посоветовать.

1. Собственно вопрос - может ли ядро процесора работать на частотах 96 или 192 МГц при условии использования USB?
По даташиту вроде бы можна. То-есть PLL ставиться на частоту 96 или 192, с него через прескалер с коэфициентом 1 эта же частота идёт на процесор и на MCK, а USB через собственный делитель делит частоту PLL к 48. И должно работать, так как по даташиту блок USB нуждается в двух частотах 48 для работы 12-ти мегагерцовой части и MCK (любой частоты) для работы остальной части. Но это в теории. На практике я этого добиться не смог. А именно:
Мучаю пример LwIP для кросворкса из пакета FreeRTOS. В примере реализован виртуальный ком порт через юсб. В начальных установках проца выбраны для PLL коэфициенты 5 для делителя и 25 для умножителя, что приводит к частоте 96 МГц (плюс-минус заданный процент точности), в прескалере установлен делитель 2, в юсб - тоже 2. В результате частота ядра равна 48. Винда видит виртуальный порт и нормально с ним работает.
Но когда я ставлю делитель прескалера в 1, то-есть частоту ядра и MCK повышаю до 96 (оставляя при этом частоту USB 48), винда перестаёт видеть виртуальный порт. Выходит что при использовании USB частота ядра должна быть равна частоте USB - 48, или может я какую-то ещё настройку пропустил?

2. И ещё одна проблема - не могу добавить в этом же примере прерывания от timer/counter'а. Сам таймер я запустил - он выводит меандр на TIOA, а прерывание по спаду не происходит. В чём может быть проблема, что я мог упустить? Контролер прерываний должен бы быть сконфигурирован нормально, так как USB часть построена на прерываниях и работает. Вот что дописываю я:
код:

int main( void )
{
prvSetupHardware();
InitMemory();
InitDACsSPI();
/* Create the demo USB CDC task. */
xTaskCreate( vUSBCDCTask, ( signed portCHAR * ) "USB", mainUSB_TASK_STACK, NULL, mainUSB_PRIORITY, NULL );

InitDACsTimer();// Инициализация таймера

vTaskStartScheduler();
return 0;
}
/*------------------------------------------------------------*/
void InitDACsTimer(void)
{
AT91C_BASE_PIOB->PIO_PDR = BIT23;
AT91C_BASE_PIOB->PIO_ASR = BIT23;//Вывод меандра на TIOA
AT91C_BASE_TC0->TC_CMR=AT91C_TC_CLKS_TIMER_DIV1_CLOCK|AT91C_TC_EEVT_XC0|AT91C_TC_WAVESEL_UP_AUTO|AT91C_TC_WAVE|AT91C_TC_ACPA_SET|AT91C_TC_ACPC_CLEAR;
AT91F_AIC_ConfigureIt( AT91C_ID_TC0, DACsTIMER_PRIORITY, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, ( void (*)( void ) ) vTimer_ISR );
AT91C_BASE_TC0->TC_IER=AT91C_TC_CPCS;//разрешение прерывания по сравнению с RC
AT91C_BASE_TC0->TC_RA=15000;
AT91C_BASE_TC0->TC_RC=30000;
AT91C_BASE_TC0->TC_CCR=AT91C_TC_CLKEN|AT91C_TC_SWTRG;
AT91C_BASE_TC0->TC_CCR=AT91C_TC_CLKEN;//запуск таймера
}
/*-----------------------------------------------------------*/
void vTimer_ISR( void )//А это, собственно обработчик, но сюда оно, похоже, ниразу не зашло
{
tempBuff[0]=testX[CurrentPosition]|XCS0;
tempBuff[1]=testY[CurrentPosition]|YCS0;
tempBuff[2]=(ColR[CurrentPosition]<<4)|DACAnPDCS3;
tempBuff[3]=(ColG[CurrentPosition]<<4)|DACBnPDCS3;
tempBuff[4]=(ColB[CurrentPosition]<<4)|DACCnPDCS3;
tempBuff[5]=(Intens[CurrentPosition]<<4)|DACDnPDnLDACCS3;
AT91C_BASE_SPI1->SPI_TPR=(unsigned int)tempBuff;
AT91C_BASE_SPI1->SPI_TCR=6;
CurrentPosition++;
if (CurrentPosition>ArrayPointsNumb-1)
{
CurrentPosition=0;
}
AT91C_BASE_AIC->AIC_EOICR = 0;
}

498. OlegNat, 05.12.2006 11:31
Прерывание мне наконец удалось запустить выправив свои ошибки. Оказалось надо было ещё считывать регистр статуса таймера, а потом (когда прерывание уже начало прерывать) ещё и добавить сохранение контекста, чтобы FreeRTOS нормально работала:
код:
void vTimer_ISR( void )
{unsigned int temp;
portENTER_SWITCHING_ISR();
portCHAR cTaskWokenByPost = pdFALSE;
//AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_TC0);
temp=AT91C_BASE_TC0->TC_SR;
//......
AT91C_BASE_AIC->AIC_EOICR = 0;
portEXIT_SWITCHING_ISR( cTaskWokenByPost );
}


А вот вопрос с возможностью запустить ядро процесора на частоте 96 или 192 МГц и при этом работать с USB остался. Никто не пробовал такое делать?

И ещё попутно такой вопрос:
Мне важно, чтобы прерывания от таймера не прерывались другими прерываниями, в том числе и прерываниями FreeRTOS. Какие могут быть последствия, если я прерыванию тиков FreeRTOS дам приоритет ниже, нежели моему прерыванию?

499. Tahoe, 05.12.2006 12:12
OlegNat
А вот вопрос с возможностью запустить ядро процесора на частоте 96 или 192 МГц и при этом работать с USB остался. Никто не пробовал такое делать?
Я не пойму, а зачем тебе разгонять процессор надо? Как думаешь, проц с заявленой скоростью "up to 55 MHz" себя на 192 МГц нормально будет чувствовать?

500. OlegNat, 05.12.2006 12:22
Ну почему же до 55?
Я запускал его и на 96 и на 192 - нормально работает, быстрее выбрасывает байты в SPI быстрее сбрасывает, при большой частоте таймера успевает обработать ещё и вывод на LCD. Вот только на высших частотах мне не удалось запустить USB.
А чтобы обойти 55 МГц при выборке команд из флеша при обработке прерывания таймером я перебрасываю этот кусок кода в SRAM.

501. Tahoe, 05.12.2006 12:31
OlegNat
Ну почему же до 55?
Потому что так заявил производитель: In industrial temperature, worse case conditions the maximum clock frequency is 55MHz. (http://www.atmel.com/dyn/products/product_card.asp?part_id=3755)
А ты часом не путаешь частоту работы ядра с частотой работы периферии?

502. OlegNat, 05.12.2006 13:28
Да вроде бы нет. Я ориентируюсь на даташит - там 55 МГц стоит для наихудших условий (питание 1,65В и температура 85 градусов цельсия). У меня явно условия будут получше.
А согласно диаграмы распределения частоты в разделе Power Management Controler частота с PLL (которая может подниматься до 200 Мгц) поступает после прескалера на периферию (MCK) и на ядро (PCK)

503. Tahoe, 05.12.2006 13:59
OlegNat
Так в чём вопрос? Запускал ли кто на 96/192 МГц ядро или PLL? PLL я запускал на 192 МГц. Даже цепочку не пересчитывал, вроде работало всё устойчиво. А ядро разгонять - смысл? Всё равно в конечный девайс оверклок не заложишь.

504. OlegNat, 05.12.2006 15:43
Вопрос в том будет ли при этом работать USB?
Я сам запускал PLL на 96 и 192 (без пересчёта цепочки) и всё работало, но при этом USB у меня не хотело работать, хотя я ему ставил соответсвующий делитель.
Например. PLL работает на частоте 96 Мгц. Прескалер стоит 1, то-есть MCK (частота периферии) и PCК (частота процесора) тоже работает на 96 МГц. Для 12 мегагерцовой части USB у меня стоит делитель 2, то-есть получается 48 МГц. USB не работает. Возможно я что-то забыл или не так поставил, или не там посмотрел, но если я ставлю прескалер 2, то-есть MCK и PCK становиться 48 Мгц, то USB начинает работать.
Так вот почему не работает USB при прескалере равном 1? Ведь даташиту эта ситуация вроде-бы соответсвует.

Добавление от 05.12.2006 16:01:

Похоже я оказался неправ - MCK не должно быть больше 55 согласно даташиту (хотя в целом там немного непонятно написано). Интересно только почему процесор всё таки работал, когда я ему ставил 192 МГц.

Остаётся тогда вопрос по поводу возможности поставить своему прерыванию приоритет выше прерывания FreeRTOS.

505. Chudik, 13.12.2006 03:54
Zman
А причём здесь это? Нужна реализация mass storage, поверх которого сажается PTP. Причём здесь чип от FTDI?

506. arkamax, 13.12.2006 07:29
Chudik
Zman

Спасибо парни - я уже решил вопрос Был взят USB AVR и на нем врукопашную реализован PTP. Работает на ура.

507. Chudik, 14.12.2006 07:11
arkamax
Я перенёс последние постинги в Реализация PTP на основе Atmel USBKey (http://forum.ixbt.com/topic.cgi?id=48:6304)

508. Firestarter, 15.12.2006 08:56
Ну что же, готов поделиться с вами достижениями в области работы с контроллером...
Первый контроллер я каким то образом испортил (УСБ явно не работает, либо САМ-БА не хочет загружаться)
Второй контроллер заработал. Загрузилась САМ-БА, определилось новое устройство "atm6124.sys Atmel AT91XXXX Test Board"...Вобщем, сразу не то, о чем писал Tahoe в начале. Далее, поставил САМ-БА 1.2, запустил, нажал USB-connection - бумс, фиг вам, девайс отсутствует...
Ага...я забыл поставить драйвера...Где же их найти-то? (у меня кстати Виндоус ХЫР сервис пак 2)
Ну что ж...Подключился к интернету, выбрал автоматическую установку...Бац, вроде бы установилось...Проверил - вытащил кабель из USB, снова засунул - нормально, появилась родимая!!! - стрелочка зеленая в системном трее... тут же пусканул САМ-БУ (программу всмысле). Зашил бинарник AT91SAM7S64demo_fs_ms1_6.bin (ссылку на эти бинарники нашел где-то выше по ветке). Отлично, высунул, засунул, 24.5 КБ свободно. потом поморгали светиками. все вроде бы нормально. Спасибо данной ветке

Виглер...Делал по всякому...И даже как Tahoe - без резисторов, напрямую через HC244, питал от платы, 3.3 вольта. Первый контроллер (который не отвечает по USB) - через H-JTAG server (версия 0.4.1) отвечает, chip ID - опять же 0х3f0f0f0f...Да что же это такое!!!
С помощью прилагающегося H-Flasher'а флешка не прошивается...Ошибки. Осциллом пощупал - фигня какая-то...
Не отключая сервер H-JTAG, подключил другой контроллер...Вуаля! Прошивается....Но с ошибками...Размер кода более 700 байт может прошить, а может не прошить...Зато бинарники размером до 500 байт железно - зашиваются. Пишет, мол, "зашито и проверено". Зато сервер не видит его Chip ID...он вообще его не видит...То есть ребята, чтобы прошить второй контроллер, я должен был вставить первый, запустить H-JTAG, законнектиться, вытащить контроллер, засунуть другой, запустить H-Flasher, и затем прошивать его!!!
А зачем мне Вигглер? Не для прошивки же!!! Мне он нужен для отладки! Ну тут уже через CrossWorks естессно он не коннектится...Отсутствует устройство! - вот и все, что я добился вчера от него...............

509. Tahoe, 15.12.2006 09:23
Firestarter
вот и все, что я добился вчера от него
Всё равно, уже не мало. Я ж тоже не за один день разобрался.

510. msnk, 15.12.2006 20:49
OlegNat
Имеется онный с процесором at91sam7x256, чип физического уровня - ksz8721bl (тоже что и ks8721bl)...
Это (ks8721bl) чип от Micrel и что касаемо ФИЗИЧЕСКОГО уровня сопряжения с MAC процессором по MII/RMI то тут все ОК и соответсвует СТАНДАРТУ. А вот инициализиция внутренних регистров этого PHY отличается от аналогичной процедуры для PHY типа DM9161 который стоит на оригинальной (Atmel'овской плате AT91SAM7X{XC}EK). Собсно и сама FreeRTOS взятая Вами написана для оригинального борда (на это есть указание как на сайте самой ОСи, так и в исходниках этой ОСи!).

Так что не надо удивляться, почему у Вас не работает эта часть схемы на ЭТОМ ПО.

Может кто подскажет как нужно переработать код (или где можно найти в нете пример), чтобы запустить всё же работу ks8721bl?
Подскажет: сайт Micrel'а. и исходник FreeRTOS.

511. Firestarter, 18.12.2006 09:27
Tahoe
Интересна одна вещь...На Электрониксе один человек посоветовал настроить LPT в BIOS на режим Normal. У тебя тоже так? Или Вигглер у тебя работает нормально независимо от режима LPT???

512. Tahoe, 18.12.2006 09:47
Firestarter
У меня LPT как один раз был настроен под AVReal , так и работает. ЕМНИМС это EPP 1.9. Может и ECP, но точно не Normal. Но это мой, конкретный случай. Хорошо бы узнать резоны "человека с electronix".

513. OlegNat, 19.12.2006 11:47
цитата (msnk):
Подскажет: сайт Micrel'а. [Image] и исходник FreeRTOS.

Собственно говоря они и помогли . Посидел почитал документацию, код и заработало.

514. Zman, 19.12.2006 18:31

Chudik
так в чипе как раз mass storage и реализован, готовый... может не совсем то, что челу было надо, но мне показалось всё равно будет полезным

515. msnk, 19.12.2006 18:55
OlegNat
Собственно говоря они и помогли...

516. umixamaximu, 27.12.2006 18:35
Народ, спаял платку мегаджоновскую и h-JTAG, ну е мое, а жтаговский сервер выдает ошибку, так как почемуто код устройства 0xDB6DB6DA, который он определяет мою sam7s256 неизвестен. Осцилом глядел, все импульсы проходят, мож там какие-то настройки нужны, лпт или вигглера?

517. Tahoe, 27.12.2006 19:26
umixamaximu
Судя по повторяющемуся паттерну 0xDB6, глянь внимательно все провода связаные с JTAG. Возможно где-то перекручены пара проводов или что-то в таком духе.

518. Algorithm, 12.01.2007 13:22
Господа, помогите начинающему. Нужно подключить ЖКИ к AT91SAM7S... Пишу диплом. Для его инициализации необходимо выдерживать разную задержку между командами. Вопрос как это сделать на С? Может у кто уже сталкивался с такой задачей, любая информация мне будет полезна.

519. InsolentS, 12.01.2007 15:07
Algorithm
задержка на Си:
for(unsigned int i=0;i<1000;i++)asm("NOP");

там не обязательно 1000, любое число, в зависимости от ситуации. Если нужна задержка > 65535, то вместо int нужен long. Если используется WDT, то вместо NOP лучше поставить комманду сброса WDT.

520. Tahoe, 12.01.2007 18:59
Algorithm
А вот тут смотрел: http://atmel.ru/Spec/LCD.htm ?

521. Chudik, 26.01.2007 06:55
Tahoe
Ты freeRTOS не ставил на свой ARM?

522. Tahoe, 26.01.2007 09:02
Chudik
Ты freeRTOS не ставил на свой ARM?
Нет. Только uCOS.

523. Chudik, 26.01.2007 09:29
Tahoe
uC/OS II ? Или первый? И как оно? Много памяти ест? Ты об этом уже писал? Она мультизадачная? Её можно редактировать/минимизировать путём удаления ненужных функций?

524. Tahoe, 26.01.2007 09:48
Chudik
uC/OS II ?
Да, вплоть до 2.84. На чём пока и гоняю.

И как оно? Много памяти ест? Ты об этом уже писал?
Вроде не писал. Как оно? Мне нравится. Супер-подробная дока. Памяти, я не обращал особо внимания ( шутка ). На ядро - 2-3 кило. Даже можно меньше.
О, насчёт памяти. Есть порт для AVR. Теперь понимаешь, сколько она жрёт?

Она мультизадачная?
Фигасе вопросы. А ты давно видел не мультизадачную операционку?

Её можно редактировать/минимизировать путём удаления ненужных функций?
Ты про ядро? Да, там всё чудесно настраивается через дефайны. От "юзать флаги или не юзать", до "сколько, числом, юзать".
А все прилады надо смотреть отдельно. Но ты глянь один раз, поймёшь как там всё гибко.

Если сильно хочется легальности, то можно зарегиться на www.micrium.com и получить "на поиграться" версию под Винду.

Добавление от 26.01.2007 09:54:

Chudik
Вспомнил, как раз для тебя вариант. ЕМНИМС Лаброш предлагал купить свою книгу и получить исходники. Причём книга имхо стОит того, что бы её даже просто купить. В общем, посмотри на Микриуме.

525. Chudik, 26.01.2007 16:21
Tahoe
Ага, спасибо. Книгу я уже получил в виде pdf. В соседнем форуме подсобили

Чтобы не засорять твою тему, создал новую: OS/RTOS vs. мониторная программа с бесконечным циклом для встроенных процессоров (http://forum.ixbt.com/topic.cgi?id=48:6435)
Загляни. Поскольку ты только что прошёл этот путь, причём по собственной воле, то твой опыт мне особо интересен. Что выиграл, в чём может быть проиграл...

526. [BAT], 08.02.2007 17:33
А кто-нибудь сталкивался с проблемой неработоспособного (глючного) TWI ? На атмеловском форуме вроде пишут? что не всегда пашет, но не пишут надежного решения проблемы (кроме софтверной реализации). У меня же то работает, то не работает(чаще первого). Застревает на статусе 0x08.

527. falrus, 09.02.2007 15:59
Кто нибуть занимался управлением (прёмом - передачей данных) между контроллером и PC по USB? Имеется ввиду во время работы конроллера а не прошивка
подскажите необходимые библиотеки и исходники под C++ (Windows) желательно Builder C++
а то очень не хочется писать драйвер

528. [BAT], 13.02.2007 12:46
falrus
в иаровских примерах (что на сайте атмела) лежит работа с USB. Причем два варианта: или как модем, или через их дрова.

529. umixamaximu, 19.02.2007 15:01
Ох, не выходит у меня цветок каменный с h-jtag. при замкнутом jtagsel выдает код чипа 0х00917CF8, при разомкнутом- 0х3f0f0f00.

530. slog2, 19.02.2007 21:04
Ну и чё. У меня тоже выдаёт ID 0x3F0F0F0F (sam7s128) но при этом работает. Не обращай внимания на этот ID.

531. Tahoe, 19.02.2007 23:20
Да. Правильный ID это 0x3F0F0F0F. Больше того, он будет один и тот же для разных камней. Не помню как там точно, но суть в том, что каждый ID стоит денег.

532. Doraemon, 20.02.2007 01:21
Господа, а нет ли у кого данной книги в электронном виде?

Название: Микроконтроллеры АРМ7. Вводный курс
Автор: Тревор Мартин

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

533. John, 20.02.2007 16:25
Микроконтроллеры ARM7. Семейство LPC2000 компании Philips. Вводный курс
http://all-ebooks.com/index.php?d=24-06-2006&p=14

534. Doraemon, 20.02.2007 17:59
John

там указана таже самая ссылка, которая уже умерла.

535. umixamaximu, 21.02.2007 12:58
Ёлы-палы, у меня h-jtag получает код 0х3f0f0f00, а правка конфига нифига не дает - все ругается unable to find target. Пробовал править файл AT91SAM7S256 в папке FDevice и файл Targetinfo в папке Target - не помогает

536. Handler, 07.03.2007 00:42
Всем привет!!!
Сильно непинайте за ложовые вопросы но читать все ветку сил уже нет да и голова уже мало что понимает а тут ещё и at91.com не пашет!
А надо то мне всего нечего, сделать логический анализатор, я просто тока начинаю работать с МК сделал для начало на атмеге 32 но щас его уже не хватает.
Посему может кто кинет схемку и заодно немного пояснит что мне ещё надо, буду очень благодарен.
Надо платку с подлючением к усб, чтоб можно было прогать через усб, пару светодиодиков для сигнализации и вывод порта под анализатор. И ещё конечно главный вопрос в чем писать?
Понимаю что такой платы нет но может есть что то похожее, а если уж совсем нет то скоко будет стоить в москве плата с необходимыми возможностями!

537. slog2, 07.03.2007 08:05
Handler
А демоплаты для AT91SAM неужели никогда не видел? Всяких полно. И там всё это есть.

538. CrazyElk, 07.03.2007 09:39
Handler именно такая стит мигает светодиодами описана в первом посте этой ветки имеет кодовое имя OLIMEX - EB SAM7-P64 цена 60 USD тоже соотвесвует действительности лично я покупал в терраэлектронике.

Писать в том в чем удобно - мне вот Eclipse удобен по ряду личных причин.

WBR CrazyElk

539. Handler, 07.03.2007 17:45
Ага эту плату я видел, тока засомневался немного, можно ли напремую прогать через усб и не надо ли ещё что то.
Ну мне наверное будет интересней OLIMEX - EB SAM7-P256, так как мне надо больше SRAM, кстати если есть плата то может есть софт под лог анализатор или может кто-то может дать линк сразу на приличный анализатор?
P.S. А почему на платах стоит кварц именно на 18.432, почему не больше?
P.P.S.немного не так выразил вапрос про то где писать? эклипс хорош, а как потом с него в МК записывать , компилятор какой?

540. CrazyElk, 08.03.2007 00:02
Handler Кросс компилятор гнутый (но без цигвина). Если есь Jtag то прямо из Eclipse. (я вот все не обзаведусь выкинуть 600р на готовый Wiggler жалко 100у.е. на USB JTAG тем более а спаять все руки не дойдут - ибо для меня микроконтроллерсво все равно что шахматы отвлечь мысли после рабочего дня. Не профи я и даже не люитель - так баловство)

Так что при наличии JTAG все прм из оболочки и откломпилировать и залить и отладить по шагам (есть ограничения и фичи но все документировано а раз free что вы хотите ) насколько понимаю (но все руки недошли полный цикл провернуть в реальности ).

Подробно как все собрать откуда и какие брать программы см. на сайте атмела в AppNote/Development Tools/ в зипе atmel_tutorial_source есть PDF Using Open Source Tools for AT91SAM7S Cross Development revision 2.pdf расписано до мелочей.

Если JTAG нет SamBA нам поможет. Компилируеш в бинарник из IDE (как настроить make для custom build разберешся думаю). Осталось полученный бинарник залить в кристалл. Скачиваеш его с тогоже сайта атмела устанавливаеш на PC SamBA драйвер и утилиту. Затем и восстанавливаем в кристале намертво прошитый клиент SamBA загрузчика работающего по USB. Для этого: Снять ВСЕ питания и USB в том числе. Замкнуть перемычку на плате. Подать питание не мене чем на 10 секунд. Снять питание и разомкнуть перемычку. Клиент SamBA загрузчика в памяти на нужном месте восстановлен. Осталось подать питание или просто подключить к PC gj USB. На USB шине плата отрапортуется как устроство SamBA Loader драйвер которого у PC есть и после чего она "увидится" в утилите прошивки. Это дает возможность загрузить код програмы по USB указав БУДУЩЕЕ место его дислокации (сперва загрузится не на заданное место ибо там лоудер). Ну а после после нажатия Reset На плате loader переместит загруженный код куда заказанно по пути затирая себя самое.Так что для новой прошивки его опять прейдется восстанаваливать выше описанным шаманством с питанием и перемычками. Все это изложено в руководстве к борде.

WBR CrazyElk

P.S. Коммерческие пакеты говорят дают все тоже самое и больше? а от жадности лецинзиатов всегда лекарство найдется "по слухам". Но у меня по работе Java основной инструмент так что я брал IDE скорее из привычки.

541. umixamaximu, 13.03.2007 14:19
Народ, попробовал я пример кейла usb hid прикрутить к sam7s256 - поменял в опциях проекта таргет и заменил везде хидер at91sam7s64.h на at91sam7s256. залил самбой - нефига, устройство опознается как неизвестное. Где косяки могут быть? Вообще, в самбе для флеши надо менять адрес 0x202000 или нет? Иаровскую мигалку грузил - все ок.

542. Hexxx, 29.03.2007 13:52
цитата:
John:
Микроконтроллеры ARM7. Семейство LPC2000 компании Philips. Вводный курс
http://all-ebooks.com/index.php?d=24-06-2006&p=14


А книжки то на рапидшаре больше нет (

543. Tahoe, 29.03.2007 20:41
umixamaximu
Я Атмеловский вариант под ИАР без проблем запустил, правда CDC. Но там один хрен, есть кор, а дальше сам выбираешь, что прикрутить, CDC, HID или MSD. Я только под свой кварц всё пересчитал, да задефайнил всё корректно. А вот под Мюкосом пока затык вышел. Причём пока не пойму, где фигня.

544. spliner, 29.03.2007 21:00
Hexxx
В Полезных ссылках, на предпоследней странице..
160x234, 27,6Kb
Микроконтроллеры ARM7. Семейство LPC2000 компании Philips. Вводный курс
13.2 мб, djvu (http://slil.ru/23363639)

545. Adsw, 19.04.2007 16:02
А стандартный AVRовский JTAG ICE clone для целей отладки ARM подходит? У меня, например, лежит USBшный вариант, собирать еще один для ARMов как-то глупо выходит...

546. khach, 19.04.2007 17:07
цитата:
Adsw:
А стандартный AVRовский JTAG ICE clone для целей отладки ARM подходит? У меня, например, лежит USBшный вариант, собирать еще один для ARMов как-то глупо выходит...

Нет конечно. Хотя если есть доступ к фунуциям JTAG низкого уровня (дернуть пином, задвинуть данные в определенный регистр jtaga итд) то можно приспособить исходники OpenOCD. Только насколько быстро это будет работать... И про RDI отладку скорее всего забыть (в Кейле и ИАРе). А собирать клон JLINKa действительно смысла нет- для клона надо распотрошить (вычитать прошивку) из оригинала. Так что проще купить, тем более, что этих клонов уже наштамповали...

547. Adsw, 20.04.2007 12:26
khach
С житагом понятно. А как используется отладочный uart? (Увы, толковую информацию по этому поводу найти не могу) Нельзя ли по нему отлаживать без житага?

548. khach, 20.04.2007 12:53
Adsw
А какова цель отладки? Часто сериальника достаточно. Про АТ91 мне конкретно говорить трудно- больше пользуюсь NXP. Отладочный print делается элементарно, print при эксепшене-тоже были примеры. JTAG конечно помагает, когда надо поймать "сбежавшую" программу, поставить брейкпоинты, посмотреть содержимое регистров и стека уже умершей программы, но это не так уж и принципиально, когда есть нормальный симулятор.
Если совсем тяжело с отладкой, а JTAG купить напрягает, то можно попытаться повторить идеологию rom-monitora, который был у Кейла для 51 процов. Почитайте аппликухи по отладке 51 и перенесите соответствующие идеи на АРМ. Но это будет требовать таких знаний архитектуры, что когда оно заработает, отладчик Вам уже будет ненужен.
Что-то подобное rom-monitorу пытались присобачить к eCOS для АРМов. Поройтесь в их репозитории.

549. Adsw, 20.04.2007 15:36
В общем-то цель отладки - отслеживать состояния регистров и периферии "внутри" проца на разных этапах выполнения кода, возможно и для пошаговой отладки (на AVR все это здОрово помогало, когда что-то работало "не так", поэтому плохо представляю себе освоение нового проца без аппаратного отладчика).

Вопрос про отладочный uart возникал в связи с наличием в атмеловском даташите на AT91SAM7S следующих туманных строк:

The Debug Unit provides a single entry point from the processor for access to all the debug
capabilities of Atmel’s ARM-based systems.
The Debug Unit features a two-pin UART that can be used for several debug and trace purposes
and offers an ideal medium for in-situ programming solutions and debug monitor communications.

Т.е. как будто бы можно полноценно отлаживать через uart, имея соответствующий софт на компе.

JTAG я могу и самостоятельно собрать (Wiggler), но это не поможет, так как на компе нет LPT, а полноценных переходников USB-LPT (чтобы можно было любой ногой программно шевелить) не встречал.
Покупной JTAG в принципе устроил бы, если бы он подключался через USB и цена его при этом была адекватна. А так - привык сам собирать все программаторы и отладчики

550. khach, 21.04.2007 15:00
Использование DBGU вкачестве отладчика- древний рудимент. У АРМа был rom-monitor Angel http://www.arm.com/products/DevTools/AngelDebugMonitor.html который вроде бы умел работать через DBGU. Только его клиетнская часть занимала килобайт 40, т.е годилась только для больших АРМов с внешней памятью. http://electronix.ru/forum/index.php?showtopic=18527&hl=angel#. Он просто невлезет в память AT91sam7s64. Если есть желание самому писать ром-монтор, то надо скрестить исходники от eCOS( только там есть более-менее рабочая клиентская часть отладчика) с RDI библиотекой со стороны компа.
А зачем так сложно? Если разберетесь с RDI, то можно прикрутить OpenOCD. Там схема простейшая- все вокруг FT2232C построено. И исходники есть.
Ну и как конечноая точка- http://aly.projektas.lt/Tools/ULink/Ulink.htm. Если микросхему найдете. Фирмвать в отладчик грузится при старте через USB. А прошивка еепрома с vid-pid там есть.

551. Adsw, 04.05.2007 23:52
Смотрю в даташит на AT91SAM7S64 и не могу понять, где указана нормальная распиновка... Например, линии, относящиеся к SPI, или, скажем PWM, не указаны ни на одном рисунке (???) Т.е. это все, разумеется, упоминается в тексте (типа - к SPI относятся MISO, MOSI, TCK и т.п.), но нет указания, на каких выводах располагаются соответствующие фичи (???????)

552. Tahoe, 05.05.2007 03:22
Adsw
но нет указания, на каких выводах располагаются соответствующие фичи
Это просто ты даташит по диагонали читал.
См. карту в пункте "10.4 PIO Controller A Multiplexing". А на каком пине какой PAxx торчит, см. "4. Package and Pinout". Для корпуса QFP64 это "4.2 64-lead LQFP and 64-pad QFN Pinout".

Например, PWM0 ты можешь разрешить на PA0 и/или PA11 и/или PA23. Что соответствует пинам 48, 28 и 15.

Вообще если присмотреться, то Атмел предполагает, что ты распечатаешь "10.4 PIO Controller A Multiplexing" на листе бумаги и прям авторучкой подпишешь где-что соответствует в твоём текущем проекте. Если охота, то можно той же авторучкой слева подписать номера пинов. Что я собсно и сделал.

553. Adsw, 05.05.2007 18:40
Tahoe
Спасибо, нашел, все шикарно 8)

У меня тут еще один глупый вопрос - а зачем в схеме виглера (той, что с www.caxapa.ru) два буфера? Просто интересна логика, которой следовали разработчики, ведь можно было поставить только один буфер 74LCX.

554. Tahoe, 06.05.2007 02:04
Adsw
Просто интересна логика, которой следовали разработчики
Недосуг смотреть/копаться, но возможно 74LCX нетолерантна к 5 Вольт. Ещё, возможно, для согласования TTL-выходов LPT с CMOS-входами буфера. Т.е. что б лишних резисторов-подтяжек не вешать.

Кстати, если пользовать H-JTAG, то можно вообще без всяких Вигглеров обойтись. В том смысле, что если есть уже хоть какая-то железка на LPT, например байт-бластер, то её и пользовать. В H-JTAG можно вручную сконфигурить, на какую ногу какой сигнал завести. У меня сейчас висит PLD-based программатор, в режиме ByteBlaster. Я так и сделал, что бы не перетыкать постоянно. Потому как на плате в цепочке с Атмелом висит Альтера. Очень удобно. Причём Квартус и H-JTAG прекрасно уживаются одновременно.

555. serj_obninsk, 20.05.2007 21:52
Добрый вечер, господа. Есть вопрос: зачем в AT91SAM7S64 нужны специализированные входы IRQ, если прерывание может выставляться по перепаду уровней (или по уровню) на любой ноге порта ввода-вывода?

556. Tahoe, 27.05.2007 04:28
serj_obninsk
Посмотри внимательно описание _ядра_. У АРМ7 есть всего 2 прерывания: "стандартное" и "быстрое". Всё остальное навешано сверху, в т.ч. и pin-change.

557. vasy1979, 28.05.2007 14:18
Помагите пожайлуста!!!! Решил изучить AT91SAM7. И мне нужен пример программы,зажечь светодиод, на ассемблере с комментариями что для чего нужно. Кто нибудь помогите мне!!!!!!!!!!!!!!!!!!!!

558. serj_obninsk, 29.05.2007 13:12
Tahoe
Дык я не ядро имел в виду! У СЭМов можно ловить прерывание по любой ноге PIO (в этом случае оно идёт от PIO), а можно по входам FIQ, IRQ0, IRQ1. В последнем случае эти ноги надо отключить от PIO, и назначить им периферийные функции. И прерывание пойдёт (АФАИР, "талмуда" под рукой нет) непосредственно от АИКа. Я так и не понял, зачем такая избыточность. А про ядро я и так знаю, на линиях ядра nIRQ и nFIQ висит AIC, и непосредственно к этим линиям подцепиться нельзя. Так что, с точки зрения ядра, все прерывания - внешние

Добавление от 29.05.2007 13:40:

Крик души
Вот что ещё очень хочется сказать по поводу at91sam7 - хедеры AT91SAM7Sxx.h и lib_AT91SAM7Sxx.h приводят в дичайшую ярость
Абсолютно невменяемые названия регистров, зачем-то куча дурацких структур, и функции с не менее идиотскими названиями. Ну да ладно, к любым названиям привыкаешь, НО... Но, блин, ёперный театр! Эти названия не имеют ничего общего с мануалом!!! А я хочу глянуть в мануале в регистр, скажем, AIC_IECR, и написать в тексте программы, дословно,

AIC_IECR = PID2
В точности так не получится - придётся давать битовым маскам глобальные имена, и два имени рано или поздно пересекутся. Можно сделать регистры в виде структур с битовыми полями, тогда я запишу так

AIC_IECR.PID2=1


что тоже наглядно. Именно так были описаны регистры у Филипса (LPC210x), и это было во сто крат удобнее.
Не сочтите меня эстетом, или психом Я просто ТРЕБУЮ соответствия 1:1 в названиях регистров, полей, и масок в мануале и в коде! Читаю мануал - пишу код. Читаю код - ищу в мануале имена, без всяких "вокруг да около" и "по мотивам"!!!

Так что, начинаю писать свой хедер, дословно по мануалу. Достало всё!

559. Tahoe, 30.05.2007 03:08
serj_obninsk
Ты просто не разобрался до конца. Есть контроллер прерываний ( AIC ), у него есть кучка разных входных линий, генерящих прерывание, что таймеры, что pin-change. А уж какие из них тебе в конкретном проекте задействовать - дело твоё. Так что я так и не понял, что именно тебя не устраивает. Фактически, AIC это обыкновенный мультиплексор. Точнее даже два, поскольку позволяет лупить как по IRQ, так и по FIQ, в зависимости от того, куда тебе надо. Т.е. ты можешь, допустим, по TC0 и PIT дёргать FIQ, а по остальным дёргать IRQ.

на линиях ядра nIRQ и nFIQ висит AIC, и непосредственно к этим линиям подцепиться нельзя
Навскидку точно не скажу, но ЕМНИМС вроде можно некие ноги PIO запрограммить на проход к FIQ/IRQ. Сам так не делал, не было нужды, но когда разбирался с AIC что-то такое проскакивало.

Абсолютно невменяемые названия регистров
Вполне вменяемые. Да, есть в некоторых названиях расхождения с даташитом, но ничего фатального.

Так что, начинаю писать свой хедер, дословно по мануалу. Достало всё!
Очень не советую это делать. Это тебе не АВР, где можно за 15 мин. всё самому написать. Здесь кол-во стороннего кода существенно больше. Так что если промудохаешься и всё же напишешь, то главные "радости" ждут тебя впереди. Например когда какой-нить USB понадобится.

зачем-то куча дурацких структур
А вот тут - извинись. Структуры более чем "в тему". Имхо это очевидно. Посмотри, например, таймеры TC0-TC2. На кой их каждый раз описывать, когда всё одинаково. Или тот же PDC. Ну а прочие - для единообразия.

Меняй стиль написания. Есть такая штука BSP - Board Support Package. Всё аппаратно-зависимое в bsp.c и должно быть. И никаких AIC_IECR.PID2=1 в исходнике быть не должно. Пиши по-человечески, типа:
код:
void main( void )
{
BSP_SSC_InerruptEnable();
}


Короче, вот пример из одного bsp.c:
код:

/******************************************************************************/
/* SSC */
/******************************************************************************/
void BSP_SSC_Init( const unsigned int TxWordLngthBits,
const unsigned int TxFrameLngthWrds,
const unsigned int RxWordLngthBits,
const unsigned int RxFrameLngthWrds )
{
AT91РS_AIC pAIC = AT91C_BASE_AIC;
AT91РS_PMC pPMC = AT91C_BASE_PMC;
AT91РS_PIO pPIOA = AT91C_BASE_PIOA;
AT91РS_SSC pSSC = AT91C_BASE_SSC;
AT91РS_PDC pPDC = AT91C_BASE_PDC_SSC;


pAIC->AIC_IDCR = 1 << AT91C_ID_SSC; // disable SSC interrupt-line @ AIC
pAIC->AIC_ICCR = 1 << AT91C_ID_SSC; // clear, if interrupt pending @ AIC line
pPMC->PMC_PCER = 1 << AT91C_ID_SSC; // enable SSC clocking
pSSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_RXDIS | AT91C_SSC_TXDIS ; // SSC software reset
pSSC->SSC_CMR = 6; // internal clock divider

pSSC->SSC_TCMR = ( AT91C_SSC_CKS & AT91C_SSC_CKS_DIV ) // clock source
| ( AT91C_SSC_CKO & AT91C_SSC_CKO_DATA_TX )
| ( AT91C_SSC_CKI & ( 0 << 5 ) )
| ( 0 << 6 ) // CKG
| ( AT91C_SSC_START & AT91C_SSC_START_RISE_RF ) // START as soon as a word is written in the SSC_THR Register
| ( AT91C_SSC_STTDLY & ( 1 << 16 ) ) // delay ( in clock's ) between SYNC and data reception
| ( AT91C_SSC_PERIOD & ( 0 << 24 ) );

pSSC->SSC_TFMR = ( AT91C_SSC_DATLEN & ( (TxWordLngthBits-1) << 0 ) ) // affected to DMA ( PDC2 ) settings too
| ( AT91C_SSC_DATDEF & ( 0 << 5 ) )
| ( AT91C_SSC_MSBF & ( 1 << 7 ) )
| ( AT91C_SSC_DATNB & ( (TxFrameLngthWrds-1) << 8 ) )
| ( AT91C_SSC_FSOS & AT91C_SSC_FSOS_NONE )
| ( AT91C_SSC_FSDEN & ( 0 << 23 ) )
| ( AT91C_SSC_FSEDGE & ( 0 << 24 ) );

pSSC->SSC_RCMR = ( AT91C_SSC_CKS & AT91C_SSC_CKS_RK ) // select clock source: RK_pin
| ( AT91C_SSC_CKO & AT91C_SSC_CKO_NONE ) // only affected for RK-output, "Programming the RCMR register to select RK pin (CKS field) and at the same time Continuous Receive Clock (CKO field) can lead to unpredictable results."
| ( AT91C_SSC_CKI & ( 0 << 5 ) ) // The data inputs (Data and Frame Sync signals) are sampled on Receive Clock rising edge. The Frame Sync signal output is shifted out on Receive Clock falling edge.
| ( 0 << 6 ) // Receive Clock Gating Selection
| ( AT91C_SSC_START & AT91C_SSC_START_RISE_RF )
| ( AT91C_SSC_STTDLY & ( 1 << 16 ) ) // delay ( in clock's ) between SYNC and data reception
| ( AT91C_SSC_PERIOD & ( 0 << 24 ) );

pSSC->SSC_RFMR = ( AT91C_SSC_DATLEN & (RxWordLngthBits-1) << 0 ) // affected to DMA ( PDC2 ) settings too
| ( AT91C_SSC_LOOP & ( 0 << 5 ) )
| ( AT91C_SSC_MSBF & ( 0 << 7 ) )
| ( AT91C_SSC_DATNB & (RxFrameLngthWrds-1) << 8 )
| ( AT91C_SSC_FSLEN & ( 0 << 16 ) )
| ( AT91C_SSC_FSOS & AT91C_SSC_FSOS_NONE ) // Receive Frame Sync Output Selection
| ( AT91C_SSC_FSEDGE & ( 0 << 24 ) );


pPDC->PDC_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
pPDC->PDC_TNPR = ( unsigned int ) 0;
pPDC->PDC_TNCR = 0;
pPDC->PDC_RNPR = ( unsigned int ) 0;
pPDC->PDC_RNCR = 0;
pPDC->PDC_TPR = ( unsigned int ) 0;
pPDC->PDC_TCR = 0;
pPDC->PDC_RPR = ( unsigned int ) 0;
pPDC->PDC_RCR = 0;
pPDC->PDC_PTCR = AT91C_PDC_RXTEN; // | AT91C_PDC_TXTEN;

pPIOA->PIO_ODR = BSP_SSC_IN_PIN_MASK; // configure as input
pPIOA->PIO_OER = BSP_SSC_OUT_PIN_MASK; // configure as output
pPIOA->PIO_PPUDR = BSP_SSC_OUT_PIN_MASK | BSP_SSC_IN_PIN_MASK; // disable pull-up resistors
pPIOA->PIO_PDR = BSP_SSC_OUT_PIN_MASK | BSP_SSC_IN_PIN_MASK; // configure as PERIPH
pPIOA->PIO_ASR = BSP_SSC_OUT_PIN_MASK | BSP_SSC_IN_PIN_MASK; // configure as PERIPH_A

pSSC->SSC_CR = AT91C_SSC_RXEN | AT91C_SSC_TXEN; // enable SSC_RX & SSC_TX
}


void BSP_SSC_InerruptInit( void ( * SSC_Handler ) () )
{
AT91РS_AIC pAIC = AT91C_BASE_AIC;
AT91РS_SSC pSSC = AT91C_BASE_SSC;
unsigned int dummy;


pAIC->AIC_IDCR = 1 << AT91C_ID_SSC;

pSSC->SSC_IDR = ( unsigned int ) -1; // disable all interrupts @ SSC
dummy = pSSC->SSC_SR; // clear, if some interrupt's pending
dummy = dummy;

pAIC->AIC_SVR[ AT91C_ID_SSC ] // install interrupt handler
= ( unsigned int ) SSC_Handler; // pointer to handler
pAIC->AIC_SMR[ AT91C_ID_SSC ] // configure interrupt mode
= BSP_IRQ_SSC_TYPE
| BSP_IRQ_SSC_PRIO;

pAIC->AIC_ICCR = 1 << AT91C_ID_SSC;
pAIC->AIC_IECR = 1 << AT91C_ID_SSC; // enable interrupt line @ AIC
}

void BSP_SSC_InerruptEnable( void )
{
AT91C_BASE_SSC->SSC_IER = BSP_SSC_INTERRUPTS; // enable interrupt sources
}

void BSP_SSC_InerruptDisable( void )
{
AT91C_BASE_SSC->SSC_IDR = BSP_SSC_INTERRUPTS; // disable interrupt sources
}


И это лишь несколько функций. Сейчас глянул, даже сам удивился, у меня этот bsp.c почти 50 кило весит. Зато потом - тупо копи-паст, а все настройки в bsp.h.

Я просто ТРЕБУЮ соответствия 1:1 в названиях регистров, полей, и масок в мануале и в коде!
Вот это единственное, с чем я абсолютно согласен. Хотя и не в столь ультимативной форме.

В общем привыкай, это не АВР, не ПИК. Тут один раз полениться или не продумать - себе дороже потом встанет.


P.S.
Ещё ремарка, насчёт написания собственного хидера. Упаришься глюки вылавливать. Я тут нашёл кривость в описании SSC_CKS даже в родном хидере, а родной хидер уже не первую редакцию пережил.

560. serj_obninsk, 30.05.2007 14:51
Tahoe
Да уж, сторонний код - это единственное, что всё-таки удерживает меня от этого поступка. Буду делать наоборот - дополнять мануал. В мануале, на страницах с описаниями регистров, буду впечатывать их названия, а так же названия соответствующих масок и флагов, из "родного" хидера (at91sam7*.h). Впечатывать, естественно, не всем скопом, а по мере использования в своём коде тех или иных регистров. Чтобы потом выполнять поиск (и в коде, и в мануале) по Ctrl-F за секунду, не тратя время на листания, вызванные вольностями в именовании регистров/флагов/масок.

Насчёт bsp - ну дык это само собой, не засорять же регистрами код предметной области

Все присутствующие
Есть ли в дебаггере IAR-а счётчик тактов процессора? Или какой-либо другой способ определить, за сколько тактов исполнился фрагмент кода, или сколько тактов прошло от поступления прерывания до входа в обработчик?

Tahoe
цитата:
Ты просто не разобрался до конца. Есть контроллер прерываний ( AIC ), у него есть кучка разных входных линий, генерящих прерывание, что таймеры, что pin-change. А уж какие из них тебе в конкретном проекте задействовать - дело твоё. Так что я так и не понял, что именно тебя не устраивает. Фактически, AIC это обыкновенный мультиплексор. Точнее даже два, поскольку позволяет лупить как по IRQ, так и по FIQ, в зависимости от того, куда тебе надо. Т.е. ты можешь, допустим, по TC0 и PIT дёргать FIQ, а по остальным дёргать IRQ.
Это-то понятно.
цитата:
Навскидку точно не скажу, но ЕМНИМС вроде можно некие ноги PIO запрограммить на проход к FIQ/IRQ. Сам так не делал, не было нужды, но когда разбирался с AIC что-то такое проскакивало.
1. Можно некоторые ноги PIO (их 3 таких, какие не помню, мануала нет в данный момент) отключить от PIO и привязать непосредственно к AIC. И получать прерывания (2 IRQ, 1 FIQ) от AIC по уровню / перепаду на этих 3-х ногах.

2. Можно получать прерывание от PIO, по любой ноге (по уровню/перепаду).

Так мой вопрос был: зачем нужна возможность (1) при наличии (2)?

О возможности подключения ног непосредственно к nIRQ/nFIQ, в обход AIC: это вправду возможно??? Не встречал в мануале такого.

561. Tahoe, 31.05.2007 00:52
serj_obninsk
зачем нужна возможность (1) при наличии (2)?
Ну как зачем? Допустим имеешь клавиатуру из 10-ти кнопок. Нажатие на любую из 10-ти кнопок сгенерит прерывание. После чего определяешь, какая из кнопок нажата. Очевидно, что на все 10 кнопок прерываний не напасёшься, да и незачем. Т.к. нажатие кнопки событие относительно редкое, т.ч. вполне допустимы "лишние телодвижения".
Другой вариант. Имеешь какой-нить внешний sync, который лупит достаточно часто, да и по сути своей, таких sync-ов вряд ли может быть много. Вот и определяешь для него единоличное прерывание. Зачем в этом случае грузить каждый раз процессор лишней работой? В смысле определять, какая из ног дёрнулась.

Так что пусть клава сама по себе дёргается, а sync сам по себе.

А если просто смущает фраза "отключить от PIO", так в СЭМе всё так сделано. Хошь - PIO, хошь - периферийная функция.


за сколько тактов исполнился фрагмент кода
При правильном подходе к делу, тебе должно быть глубоко пофиг, сколько _в точности_ тактов оно занимает. Если у тебя встают такие вопросы, это либо академический интерес ( заниматься которым лично у меня нет ни времени, ни желания ), либо неверно выбраный процессор, либо неверная постановка задачи. Вот такое моё имхо.

562. kirgizz, 05.06.2007 15:24
Хороший камешек, но уж больно много настроек (регистров). 2 недели вьезжал. Тут писали, с TWI у него проблемы (у меня SAM7X256). Я еще не пробовал, но видел, все стараются обойти трудности и пишут software I2C. У кого есть уже опыт работы с I2C на SAMе???

563. serj_obninsk, 06.06.2007 09:58
kirgizz
Хороший камешек, но уж больно много настроек (регистров). 2 недели вьезжал.
За 2 недели ты, наверное, только в основные регистры въехал.
Или же ты USB, CAN и ETHERNET-регистры изучил за такой ничтожный срок?

Добавление от 06.06.2007 10:04:

Tahoe
При правильном подходе к делу, тебе должно быть глубоко пофиг, сколько _в точности_ тактов оно занимает. Если у тебя встают такие вопросы, это либо академический интерес ( заниматься которым лично у меня нет ни времени, ни желания ), либо неверно выбраный процессор, либо неверная постановка задачи. Вот такое моё имхо.
Хорошо, поставлю вопрос по-другому: как можно измерить относительное время исполнения кода (в процентах) в режимах user, irq, fiq? Профайлинг не предлагать

564. Dmitrij-Ekb, 06.06.2007 13:22
добрый день! у меня тут вопрос возник,
делаю девайс на sam7x256 и дело приближается к разработке п\платы,а вот библиотеки с компонентами я чего то не нашел....мож кто чего подскажет? пикад 2002 стоит..

565. kirgizz, 06.06.2007 18:27
serj_obninsk:
За 2 недели ты, наверное, только в основные регистры въехал.
Или же ты USB, CAN и ETHERNET-регистры изучил за такой ничтожный срок?


Ну нет, конечно. Времени немного для таких функций. Тут бы еще основные функции для своего проекта подогнать. За CAN и USB потом примусь.

566. Tahoe, 07.06.2007 03:19
serj_obninsk
Хорошо, поставлю вопрос по-другому:
Я делаю так. Сначала просто раскидываю всё по-уму. Т.е. если надо быстро реагировать, завожу на FIQ, остальное на IRQ. Спокойно делаю всё без оглядки на время. Ну и по ходу дела поглядываю на ucos-плугин в IAR-е, который показывает мне занятость ресурсов, в процентах.
Там всё довольно просто организовано. Каждый раз, когда в idle task проваливается, крутится счётчик. Чем больше намоталось, тем больше ресурса свободно.
Проблем с таким измерением не замечал. Да к тому же я и не мельчу особо, т.е. везде всякие буферизации, PDC...


Dmitrij-Ekb
А какие там сложности-то? Что за корпус?
Я бы просто сам нарисовал. Если б в Оркаде, то делов на час максимум, включая перерыв на чашку кофе и перекуры.

567. a3r3, 08.06.2007 00:35
kirgizz
Тут писали, с TWI у него проблемы (у меня SAM7X256). Я еще не пробовал, но видел, все стараются обойти трудности и пишут software I2C. У кого есть уже опыт работы с I2C на SAMе???
Достаточно errat'у почитать, чтобы стало немного не по себе. Но, тем не менее, вполне работает.

568. LazyCamel, 08.06.2007 10:58
цитата:
Dmitrij-Ekb:
добрый день! у меня тут вопрос возник,
делаю девайс на sam7x256 и дело приближается к разработке п\платы,а вот библиотеки с компонентами я чего то не нашел....мож кто чего подскажет? пикад 2002 стоит..

www.at91.com.

Там есть и Оркадовские футпринты.

569. timb, 08.06.2007 11:38
Доброе время суток участникам форума. Недавно начал осваивать ARM. На работе сейчас необходимо создать устройство с возможностью перепрограммирования контроллера в составе готового изделия. Программирование, очевидно, будет осуществляться через UART. В связи с этим возникло несколько вопросов. Возможно, что-то подобное уже обсуждалось, но просматривать всё уже нет времени.
1. В даташитах на контроллеры и описаниях отладочных плат написано, что при прошивке через SAM-BA нужен кварц 3-20МГц, а генератор можно, или нужен тока кварц?
2. Очевидно, нужно будет собрать свой программатор.
В отладочных платах Запуск SAM-BA происходит примерно таким образом:
-отключается питание платы
-ставится перемычка соединяющая TST с питанием
-включается питание платы, на выводы TST, PA0-PA2 подается напряжение питания, подождать10 сек
-выключить питание
-убрать перемычку
-включит питание
В даташите написано что для запуска SAM-BA нужно подать 3,3 вольта на TST и PA0-PA2
Собст-но вопрос:
Сработает ли такая последовательность:
-подать 3,3 вольта на TST и PA0-PA2
-RST
-10 сек
- убрать напряжение на TST
- RST
Или нужно будет проделывать весь алгоритм, приведенный выше?

570. a3r3, 08.06.2007 19:28
timb
1. Генератор можно, но учтите, что USB будет работать только с 18.432MHz
2. Нужно проделывать весь алгоритм

571. serj_obninsk, 09.06.2007 02:28
timb
на выводы TST, PA0-PA2
В реальности достаточно только на TST.

a3r3
2. Нужно проделывать весь алгоритм
Или писать собственный флэшезаливатель, не требующий замыкания TST, и, как следствие, разборки изделия.

572. ~Julia~, 18.06.2007 15:30
цитата:
[BAT]:
кто-нибудь использовал для коммуникации с девайсом стандартный драйвер usbser.sys? Взял за основу пример от IAR и попробовал сделать петлю. Первый обмен проходит нормально, второй затыкается на пересылке от девайса к PC Прочитал на форуме атмеловском, что некоторые с таким сталкивались (в частности упоминается проблема при использование совместно с Windows XP), но причины и решения не указано Может кто знает в чем заковыка ?

Проверил на 2000м, там такой проблемы нет.


Вы решили проблему с Windows XP? Подскажите, пожалуйста, как это сделать? У меня такая же проблема - 1-ая посылка в хост нормальная, а следующие не работают. Уже не знаю, что и делать...

573. Tahoe, 19.06.2007 00:21
usbser.sys нормально работает. Правда CDC я лепил из "USB Framework 1.02". Так что имхо "компилятор не виноват".

574. Handler, 20.06.2007 02:35
Здравствуйте, давненько не был на форуме, скажите может кто-нить уже писал логический анализатор на АТ91, а то у меня вот есть Олимексовская плата отладочная и нужен анализатор.

575. SVik, 10.08.2007 13:58
Tahoe

Здравствуйте, я начинающий в АРМ-ах
Вы упоминали на 4-й странице о заливке файла demo_mass_storage.bin
поделитесь, плз, этим бинарником

576. Tahoe, 10.08.2007 15:02
SVik
Я уже точно не помню, но по-моему брать надо тут: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4092
А именно: USB Mass Storage Device Driver Implementation (http://www.atmel.com/dyn/resources/prod_documents/AT91USBFramework-Core1.02+MSD1.0.zip) . Там в bin\AT91SAM7S64\ лежат скомпиленные бинарики.

577. igorkov, 10.08.2007 22:19
Следующая проблема: у ARM ограничение по размещению в памяти слов и двойных слов. Их требуется выравнивать по границе 2 и 4 байта соответственно. В общем как кто боролся с проблемой? Есть просто много кода, написанного на Си для x86, у которого такие ограничения отсутствуют. Там есть приведения типов, после которых грузится по неверному адресу. Пользуюсь компилятором RealView, у него есть опция __packed, как раз для работы с невыровненными переменными и пакованными структурами, но не дело это, скорость серьезно страдает.

Кто как боролся при переносе кода?

И еще, портирую на NXP LPC2000, так эта гадина при неверном адресе не сваливается в Data Abort, а читает значение со сдвигом, в общем грузит не то что должно. Замучался уже отлавливать где ошибки появляются Так делают все ARM-ы или LPC2000 такой неправильный? =)

578. SVik, 11.08.2007 07:17
Tahoe
Спасибо!

Винда увидела целых два диска по 22 килобайта,
токо отформатировать не смогла
Буду разбираться


URL: http://forum.ixbt.com/topic.cgi?id=48:5248
Hosted by uCoz