Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прыжок с AVR на ARM7
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Зверюга
Господа!
По опыту освоения чего-то нового знаю, стоит показать, что ты чайник и спросить - "А как мне начать" - появятся профи (действительно профи, но с самомнением) и начнется - вот тебе ссылка google.ru, вот тебе матчасть на 600 стр, и не дай бог, ты прочитаешь 599 страниц, даже не суйся сюда со своими вопросами, у нас нет времени помогать учить азбуку, читай форум, десятки раз обсуждалось."
Иногда при этом даются ссылки по теме, но когда их посещаешь - приходишь с одним вопросом, а уходишь с тремя.

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

Прошу внимания. ПРостейшая задача - зажечь и погасить светодиод на atmega8.

Цитата
Наипростейшая программа (CodeVision):
Код
#include <mega8.h>
#include <stdio.h>
#include <delay.h>

void main()
{
DDRA=0xFF;
PORTA=0xFF;
delay_ms(1000);
PORTA=0x00;
}


Наипростейшая схема с одним светодиодом в аттаче.
Схема программатора вот http://avt.tomica.ru/~andr/Page2408/files/...iles/bbaisp.png.
Программа для прошивки Flash вот http://www.ln.com.ua/~real/avreal/bin/avw126r3.zip.



Господа, хочу то же самое, только для какого-нибудь AT91SAM7xxx.
Кому как, а у меня написать сей пост и нарыть в интернете ссылок ушло времени 8 минут.
Надеюсь обойтись без отсылания к 600 страничным мануалам, они у меня уже есть.
aaarrr
Цитата(Зверюга @ Feb 4 2009, 21:02) *
Господа, хочу то же самое, только для какого-нибудь AT91SAM7xxx.

Сейчас в меня кинут тухлым помидором, наверное, но...

Ссылка не на google.ru

По ссылке Вы найдете:
- 2 Quickstart Guide'а, для IAR и GCC
- Инструкцию на кит со схемой оного, из которой можно аккуратно перерисовать цепи тактирования, питания, USB, UART etc.
- Программатор AT91-ISP
- 37Mb дурнейших атмеловских примеров, вполне, впрочем, пригодных для старта
A. Fig Lee
Цитата(Зверюга @ Feb 4 2009, 13:02) *
Господа!
...


токо что прошел етот путь.
Линукс - тулчейн от CodeSorcery, openocd скачал и построил из svn,
использую олимексовский jtag wiggler и их же плату на LPC2148.
Скомпилил пример оттуда же - с олимекса (линк) - "blinky".

Что пришлось править - config file для openocd.
Они только что команды поменяли.
И мейкфайл - прописал тулзы из тулчейна.

Что еще.. А - заливать во флаш можно через тот же openocd,
через
flash write_image erase main.hex
например - main.hex - имя файла для заливки.

ну у меня правда не атмел.

пока только не смог брейкпойнты поставить на флаш из gdb -
говорит - ок, а брейкпойнтов нет.
еще не разобрался.
Зверюга
aaarrr спасибо за ссылки, схему подключения я нашел только самую наикрутейшую - evaluation board. Я плату буду разводить и напаивать компоненты 2 месяца. Схему программатора так и не нашел. Нашел описание ISP Programmera в котором вот это:
Цитата
3.2.1 AT91Boot_SAM7xxx_Send_Flash
These functions make it possible to write X bytes into the internal Flash memory of the
connected target. If some sectors are locked, they are unlocked in order to effectively
program the internal Flash memory.
Available functions are:
! AT91Boot_SAM7S32_Send_Flash (available for SAM7S32 and SAM7S321 parts)
! AT91Boot_SAM7S64_Send_Flash
! AT91Boot_SAM7S128_Send_Flash
! AT91Boot_SAM7S256_Send_Flash
! AT91Boot_SAM7S512_Send_Flash
! AT91Boot_SAM7A3_Send_Flash
! AT91Boot_SAM7X128_Send_Flash (available for SAM7X128 and SAM7XC128
parts)
! AT91Boot_SAM7X256_Send_Flash (available for SAM7X256 and SAM7XC256
parts)
! AT91Boot_SAM7X512_Send_Flash (available for SAM7X512 and SAM7XC512
parts)
! AT91Boot_SAM7SE256_Send_Flash
! AT91Boot_SAM7SE512_Send_Flash
3.2.1.1 Prerequisite Embedded Flash Controller Flash Mode Register (EFC_FMR) must be programmed
correctly prior using one of these functions.
Note: Two Embedded Flash Controllers are embedded in AT91SAM7S512, AT91SAM7X512
and AT91SAM7SE512 parts. Both EFC_FMRx registers must be programmed correctly
prior using one of these functions.
3.2.1.2 Description void AT91Boot_SAM7xxx_Send_Flash(int h_handle, int uOffset, char *bData, int uSize,
int *err_code);
Table 3-14. AT91Boot_SAM7xxx_Send_Flash
Type Name Details
Input Parameters
h_handle
Communication handle returned by AT91Boot_Open
function
uOffset Internal Flash Offset where to write 8-bit value
*bData Pointer to 8-bit data buffer to writ


ну честное слово, оно мне надо на первом этапе?
Я ж первый шаг хочу сделать, я малыш еще, а вы мне брусья предлагаете )))
Тот же самый диалог мог бы получиться, если бы я попросил дать мне материалы по AVR, однако я привел пример первого шага, рассчитываю получить это же для ARM7

Ладно, разобравшись более или менее, задам вопросы поконкретней:

1. Я так понял, что способов запрограммировать ARM7. Что посоветуете, спаять что-нибудь простое, или купить готовый полноценный девайс?

остальные вопросы задам попозже, надо бежать...
Сергей Борщ
Цитата(Зверюга @ Feb 5 2009, 07:51) *
Схему программатора так и не нашел. Нашел описание ISP Programmera
Вот именно поэтому профессионалы и отсылают к мануалам на 600 страниц.
Cyber_RAT
ну шить для начала можно через SAMBA или тот же виглер спаять.
крутейшую плату для мигания можно не делать - возмите с сайта Olimex-а простую - там только питание и сам проц разведен (можете еще rs232 прицепить и USB)
backa
скажу поподробнее про SAMBA - ибо сам тоже разбирался когда-то сам
SAMBA - это встроенный загрузчик (почти как в AVR smile.gif ) - что-бы залить "прошивку" надо просто подключить проц SAMxxx к компу через USB шнурок (до этого должна быть установлена прога с сайта одноименная и "активирован" загрузчик в кристалле) и всё . После прошивки загрузчик более не работает (для восстановления активности надо провести манипуляции с перемычкой на платке с процом - очень не удобно laughing.gif )
Посему лучше юзать Jtag отладчик\программер - для чего надо предусмотреть подключение к процу.
Крайне не рекомендовал юзать Wiggler - мало того что будут возникать вопросы по освоению проца , дык плюс к этотому постоянные глюки с этим "отладчиком"
Рекомендую или сделать самому(прост до безобразия) или купить (около 50$у нас) MT-Link.
прикрепляю оба -Вам выбирать
А вооще у меня порядка 1G подборка док и исходников по ARM
Я брал для примера распайку для макетки сам MT-Link.
Всё фурычит только в путь...
Удачи нам всем в таких начинаниях в такое неспокойное время wink.gif
Зверюга
В архивичке в папке MT-LINK есть схема, программатора, которая включает в себя контроллер ARM7. Это как понять?
Или же это та самая минимальная схема для диода, а обвязка к нему и сеть программатор?

То есть, есля я правильно понял, в AVR достаточно было передернуть Reset и контроллер переходил в режим программирования, после чего сам запускался. Здесь же нужно активировать загрузчик, загрузить прошивку, после чего загрузчик автоматически выключается. Я правильно понял?
Если делать через MT-Link то такого неудобстава не будет?
backa
это схема самого программатора - её же можно смело брать за типовую минимальную схему включения SAM7x64
Вы абсолютно правильно меня поняли :-))
Зверюга
А вот нашел Olimexовскую платку
http://olimex.com/dev/images/ARM/ATMEL/SAM7-Hxxx-sch-C1.gif
Там и JTAG и USB.
Можно напрямую подключать к компу через USB? Тогда будет байда с актвивацией загрузчика.
А если через MT-Link, тогда к разъему JTAG, я правильно понял?

Что-то дорогие эти MTLink. В основном баксов 100 в efind.

Если я сделаю минималку, как вы вышеуказанной OLIMEX плате, разве нельзя будет программировать через USB?

Хитрые манипуляции с перемычкой это оно ?
Цитата
Power down the SAM7S-EK
Close the Jumper JP5 named TST
Power up the SAM7S-EK
Wait 10s
Power down the SAM7S-EK
Remove the Jumper JP5 named TST
Power up the SAM7S-EK



Цитата
быть установлена прога с сайта одноименная


Я качнул с АТМЕЛА прогу SAM-BA - там предлагается COM-порт. А как же USB?
backa
Да для этого я и говорил про MT-Link - через него "шьётся" программа и выполняется отладка....
Тоже самое и в AVR - если Вы знаете их rolleyes.gif
Зверюга
Так же как в AVR - контроллер работает, жмешь в программе кнопку PROGRAM, контроллер ресетится шьется и не вынимая кабеля вновь запускается с зашитой программой, правильно? Больше никакого шаманства?
Так можно только через JTag? Все остальное геморройно? Я правильно понял?

Хорошо, собрал я предложенную Вами MT-LINK, есть фалик firmarmRev5314c.bin.txt - его через USB заливать чтобы контроллер заработал? Я правильно понял?
Какой программой? Повторю - я скачал с АТМЕЛА SAM-BA 2.8 - в нем источник только COM порт.
Есть еще SAM PROG 2.4 - там вообще порт не выбирается.

И почему, когда прошивку льешь через USB шнурок загрузчик перестает работать? В этом есть какой-то глубокий смысл, раз приходится городить JTAG программаторы.
backa
Хитрые манипуляции с перемычкой это оно ? да
Я качнул с АТМЕЛА прогу SAM-BA - там предлагается COM-порт. А как же USB? он появиться когда вы подключите правильно спаянную макетку

при подключении чистого кристалла всё должно определиться и появиться USB в меню - вот через него и лейте - выставите правильно все перемычки(почитайте про них на гав.ру)
и после заливки прошивки получите MT-link
Зверюга
Простите, но не разглядел на схеме MT-LINK, откуда берется напряжение 1.8V для VDDCORE..
Mik174
Цитата(Зверюга @ Feb 5 2009, 12:59) *
Хорошо, собрал я предложенную Вами MT-LINK, есть фалик firmarmRev5314c.bin.txt - его через USB заливать чтобы контроллер заработал? Я правильно понял?
Какой программой? Повторю - я скачал с АТМЕЛА SAM-BA 2.8 - в нем источник только COM порт.
Есть еще SAM PROG 2.4 - там вообще порт не выбирается.

И почему, когда прошивку льешь через USB шнурок загрузчик перестает работать? В этом есть какой-то глубокий смысл, раз приходится городить JTAG программаторы.


Можно и не собирать сам МТ-ЛИНК сначала, но почитать в его описании, как прошить его собственный процессор.
И посмотреть как сделана его схема. Выкинуть из нее все что Вам не нужно, оставив минимум, необходимый для работы и прошивания.
Вкратце принцип такой:
1. поставить перемычку
2. подать питание на процессор - если перемычка поставлена, он подготавливается к тому, что его будут прошивать.
3. снять питание
4. подключить к ПК по схеме как сделано в МТ-ЛИНК
5. подать питание на микроконтрололер - он будет ждать, что программа на ПК начнет заливать в него прошивку.
6. Запустить программу на ПК, указать, что надо прошивать и процесс пошел.
7. Снять питание, отсоединить от ПК
8. Подать питание и радоваться видя работающую программу в МК (если, конечно, там нет ошибок smile.gif )

Я когда собирал себе МТ-ЛИНК, кажется, использовал для прошивки программу AT91-ISP v1.12 http://www.atmel.com/dyn/resources/prod_do...ISP%20v1.12.exe
Как пользоваться читал документ http://www.atmel.com/dyn/resources/prod_do...nts/doc6132.pdf
Подробнее не скажу - я с контроллерами от NXP LPC2148 работал, у них по другому прошивается память.

Кстати, МТ-ЛИНК - очень удобная вещь, особенно для начинающих - это отладчик, с его помощью можно по шагам выполнить программу непосредственно в МК, при этом имея доступ к значениям переменных, видя куда "пошла программа" и т.д.
backa
Обязательно прочитайте про SAM7x64 GAW.ru - иначе вам будет очень многое не понятно
В режиме вопрос/ответ Вы не освоите новый проц - если нет фундаментальных знаний - заморгает светодиод а дальше стена ОТСУТСТВИЯ ЗНАНИЙ - не обижайтесь - но я Вам рекомендую пхотябы пробежаться по переводу дэйт шит-а на используемый проц
а 1.8 берётся от внутреннего стабилизатора проца.....
Зверюга
Да чего мне обижаться, я по пустился в путешествие по ссылкам, нашел дневник чайника, который сам когда-то это дело осваивал, со схемами, прогами и пр. Так что теперь задачи расставлены по своим местам.

И все же повторю вопрос:

Цитата
Через JTAG - контроллер работает, жмешь в программе кнопку PROGRAM, контроллер ресетится шьется и не вынимая кабеля вновь запускается с зашитой программой, правильно? Больше никакого шаманства?



Цитата
а 1.8 берётся от внутреннего стабилизатора проца.....


А зачем тогда выводов VDDCore куча? Благотворительность для периферии?
backa
и больше не какого шаманства
а насчет количества выводов это к атмелу - ну а насчет благотворительности - дык там есть по-моему ограничение по току - тока себя запитывать - если не ошибаюсь - гляньте в описалове - у меня нет под руками
ababkin
esli vse ravno osvaivaesh novoe, uchi Cortex-M3, ne pozhaleesh. Ya potrogal oba SAM7 and STM32, i posle STMa bol'she ne ogliadovalsia

kupi eto za $40 i zalivai cheres RS232
http://futurlec.com/STM32_Development_Board.shtml

(toka beri 64k/512k versiyu and ne 20k/128k)
Glitko
Здравствуйте!Задумал проект в котором нужно по USB пропихивать 10 битные слова с частотой 10МГц.Хочу обмен по USB реализовать с помощью связки CY7C68001-AT91SAM7X256(есть под рукой ),при этом АТ91SAM7X256 будет заниматся только организацией обмена с CY7C68001 и приемом сформированых данных по паралельному интерфейсу от ПЛИСИНЫ.CY7C68001 имеет 16 битный интерфейс.Вопрос:подскажите,кто работал с AT91SAM7........, смогу я на его входах-выходах развить скорость обмена- 10 МГц,если для обмена с CY7C68001 надо три такта?
aaarrr
Цитата(Glitko @ Mar 1 2009, 22:24) *
смогу я на его входах-выходах развить скорость обмена- 10 МГц,если для обмена с CY7C68001 надо три такта?

Однозначно нет. Да и зачем там SAM? Проще подключить ПЛИС непосредственно к CY7C68001 или 68013.
Artem_Petrik
Цитата(aaarrr @ Mar 1 2009, 21:47) *
Однозначно нет. Да и зачем там SAM? Проще подключить ПЛИС непосредственно к CY7C68001 или 68013.

Или наоборот: зачем CY? В SAM есть USB, его и пользовать laughing.gif
aaarrr
10MHz * 10bit = 100Mbit/s
SAM нервно курит в сторонке smile.gif
alekstr
Сам год назад переходил с ATmega на AT91SAM7S. Мегу программировал на WinAVR, а для ARM7 есть очень похожий инструмент WinARM. Для начала работы купили в Аргуссофте модуль AS-sam7S-M, он стоит всего в два раза дороже голого процессора, но на нем уже вся необходимая обвязка и не надо мелкой пайки. Можно ставить в колодку на макетную плату со своей периферией. Программу заливал через USB и SAM-BA. Драйвер на комп ставится при установке SAM-BA, но USB определяется не на чистом процессоре, а только если предварительно его запитать, выполнив предварительные условия (высокий уровень на TST, PA0, PA1, PA2). У меня на макетке стоят тублеры вместо перемычек, вся манипуляция по записи программы занимает не более минуты. При недостатке финансов вполне нормально.
AndOr
Цитата(alekstr @ Mar 11 2009, 11:50) *
Сам год назад переходил с ATmega на AT91SAM7S. Мегу программировал на WinAVR, а для ARM7 есть очень похожий инструмент WinARM.

А не подскажешь в каких студиях для SAM пробовал работать? Може чё порекомендуешь...
alekstr
Цитата(AndOr @ Mar 11 2009, 16:43) *
А не подскажешь в каких студиях для SAM пробовал работать? Може чё порекомендуешь...

SAM7S программирую в WinARM by Martin THOMAS версия 20070505 от http://gandalf.arubi.uni-kl.de/avr_project...0070505_sfx.exe
С демо-версиями платных студий по опыту работы с AVR-ом сразу разбираться не стал, т.к. на полнофункциональную денег слишком много надо, а с кряками свои заморочки. Имхо лучше сразу разбираться с тем, с чем можно работать без ограничений. Тем более что по опыту того же AVR, WinAVR инструмент даже более серьезный, чем например CodeVision.
Когда начинал - за основу взял примерчик из комплекта WinARM, а далее приделывал свою периферию.
defunct
Цитата(backa @ Feb 5 2009, 09:51) *
что-бы залить "прошивку" надо просто подключить проц SAMxxx к компу через USB шнурок (до этого должна быть установлена прога с сайта одноименная и "активирован" загрузчик в кристалле) и всё . После прошивки загрузчик более не работает (для восстановления активности надо провести манипуляции с перемычкой на платке с процом - очень не удобно laughing.gif )

Или просто предусмотреть кнопку подведенную к святой ножке erase smile.gif
Будет удобно - тыц, и никаких манипуляций с перемычками. ;>
aaarrr
Цитата(defunct @ Mar 13 2009, 04:39) *
Будет удобно - тыц, и никаких манипуляций с перемычками. ;>

Да, вот только "тыц" не работает на SAM7S.
defunct
Цитата(aaarrr @ Mar 13 2009, 03:45) *
Да, вот только "тыц" не работает на SAM7S.

Да, SAM7S малость ущербный в этом отношении камень, загрузчик переписывается из ROM во флеш при магической расстановке уровней на четырех пинах!! и только потом стартует...
В других SAM'ах просто мапится ROM на адрес 0.

Тогда лучше начинать с LPC - волшебная кнопка и FlashMagic. smile.gif

Цитата(aaarrr @ Mar 1 2009, 22:57) *
10MHz * 10bit = 100Mbit/s
SAM нервно курит в сторонке smile.gif

А все что через USB не пролазит выдавить через emac. smile.gif

Цитата(Зверюга @ Feb 5 2009, 11:40) *
Я качнул с АТМЕЛА прогу SAM-BA - там предлагается COM-порт. А как же USB?

SAM-BA предложит загрузку по USB когда увидит проц (c кварцем обязательно 18.432Mhz и с активным загрузчиком) подключенный к USB.
aaarrr
Цитата(defunct @ Mar 13 2009, 05:02) *
и только потом стартует...

Если стартует. Со временем перезапись начинает глючить. sad.gif

А вообще лучше написать свой загрузчик, тогда все проблемы с кнопками отпадают.
defunct
Цитата(aaarrr @ Mar 13 2009, 04:11) *
А вообще лучше написать свой загрузчик, тогда все проблемы с кнопками отпадают.

Можно и JTAGом обходиться, но речь ведь о простом старте. Для старта JTAG может быть дорог, дешевый JTAG - он же Wiggler - извращение, а свой загрузчик - сложно.
Остается подобрать относительно простой "неубиваемый" программистом камень с правильным, простым в использовании и надежным загрузчиком. Со своей колокольни к таким могу отнести:
LPC21xx и SAM7Xxxx
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.