Перейти к содержанию
    

Вразумите по SAM7S

Долгое время работал с АТ90 и Atmega AVR, но вот пришел день, когда появилась необходимость ставить ARM. В проекте есть ЖКИ 320х240 с тач-панелью и кусок автоматики. Если делать на меге, то придется ставить 2 проца - один на ЖКИ, один на автоматику и вот я решил поставить SAM7S256, но... Начитавшись всяких описаний и форумов увидел что не все так сказочно. Много новых, непонятных для моего мозга наворотов, типа ремапа, регистров, которые туда-сюда между режимами бродят и прочего бутора. Использовать планировал компилятор IAR, но загрузив пару примеров не смог провести для себя параллель между Atmega и ARM-ом. Мозг пытается найти привычные вещи, а что-то их нету. Я бы эту тему не поднимал, если бы не сжатые сроки для проекта - до января нужно чтобы он хоть как-то начал жить, и всю обвеску, кроме проца, уже наваял, готовлюсь плату развести, а с самим процем в ступоре. И Мегу ставить не хочется, потому что для ЖКИ не смогу ничего путнего в неё впихнуть и не знаю сколько мне понадобится для освоения SAM7S256. Короче в голове полная каша. Не могу понять что нужно делать, а что не нужно чтобы все это сразу заработало, как на меге, т.е. создал проект, подключил заголовичники, создал пару функций и чтобы это сразу завелось. Куда что ремапить нужно или не нужно и т.д. Может кто из уважаемых форумчан растолкует мне чего я не могу понять в ARM-е, хотя бы для того чтобы определится ставить этот проц или забить на все и ставить две меги с внешней памятью и т.д, потому что не реально за 1 месяц заставить ARM как-то работать? Буду очень признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно я подзабыл, но разве IAR сам не цепляет к проекту стартапный код. Где уже есть раскладка векторов, выделение стека, ремап и прочие стартовые вещи.

А девелоперу надо только написать пару функций.

По крайней мере я так начинал, правда на lpc2106.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По собственному опыту скажу.

В принципе для не сверх сложной задачи, можно стартонуть и без ремапов и т.п. непонятных вещей.

 

За месяц можно вполне толково разобраться в нужной переферии для ваянии несложных проектов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну нужно будет работать с АЦП, с таймером, SPI и порт 32-х битный как-то поделить на всех. ЖКИ блин 8-и битный. В АРМе можно с 8-и битными данными работать или нет. Какой режим использовать лучше на старте, АРМ или Тумб? Можно это все запускать без JTAG? А еще у меня самая первая версия SAM7S256 из партии 58818С с багами во флеш, еще где-то. Куплен давно и только сейчас может найтись ему применение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в арме главное мышление на 32 бита перевести =) остальное приложится.. режим арм или тумб пофик какой, для сишного кода оно не так важно, с 8-ми битными данными работать так же как всегда, без житага работать можно, есть такая замечательная вещь, как samba - загрузчик по юсб и компорту. но житаг советую купить, с ним намного проще

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну с 32-х битными регистрами понятно, и с переменными такой же длины а вот с переменными меньшей длины чето не очень пока. Или компилятор допускает использование переменных короче чем разрядность проца? И с портом получается придется работать по маске. В АВРке разрядность портов и данных совпадала и можно было целиком пихать все в порт, а тут получается по маске вытер, по маске записал. Еще не понятно что за прикол с выполнением функций из SRAM? Я привык что все во флеш компилится и оттуда же выполняется, а тут на каждом шагу стереотипы ломают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверно я ретроград.

 

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

 

Постулат №1. Вашему заказчику (т.е. тому, кто платит Вам деньги), на сколько я понял из вашего сообщения, без разницы на чем будет построен девайс -- на АРМе-ли, на АВРке-ли. Ему нужен конечный результат. Заказчик платит за конечный результат.

 

Постулат № 2. Ваша цель -- заработать деньги. Ну так и зарабатывайте! Ничто Вам не мешает.

 

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

 

Что АВР-ки, что АРМ-ы -- стоят сейчас копейки, соизмерьте их стоимость со стоимостью своего рабочего часа. А времени, как я понял, у Вас -- месяц. Ну и на чем вы сэкономите? На паре микросхем? Помните, старые туфли ноги не трут, а Вам предстоит ответственный забег за деньгами. Что Вы выберите?

 

Если Вам не важен результат, на деньги Вы не повязаны, тогда смело выбирайте АРМ. Освоите новый камень.

 

И еще. Не надо смотреть на мир АРМов глазами АВР/i51/i8080/i86. Это абсолютно другой мир. Разница между мирами даже не в разрядности и тактовой частоте, а совсем в друом. Пока Вы сами не поработаете с той и с другой архитектурой, пока не познаете ту и другую философию, Вы не будете в состоянии сделать правильный выбор.

 

Искренне желаю удачи Вам!

Изменено пользователем zhevak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, доходчивая мотивация. Тут как раз вариант №4: важен рельтат и время, но на деньги я не завязан. Хотя больше меня привлекает вариант с установкой 2-х АВР-ок, но тогда, думаю, придется забыть про нормальный GUI-евый интерфейс, а хотелось бы заложится на него, если не сразу написать, то в перспективе чтобы мощи хватило. Вот и мучаюсь с выбором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при использовании переменных меньшей длины отдельно - каждая будет занимать 32 бита, в виде структур можно задать упаковку (в иаре смотреть #pragma pack) разрядность портов и данных тут тоже совпадает =)) с PIO в сам7 работать кстати удобно, надо только привыкнуть.. и еще.. арм НЕ НОГОДРЫГАЛКА =) на работу с периферией нужно много тактов, поэтому там куча аппаратных наворотов типа DMA. насчет выполнения команд из рамы.. в арме адресное пространство в отличие от авров ОДНО и ЛИНЕЙНО, поэтому процу вобще пофик откуда выполнять команды и откуда брать данные. для запуска функций из рам их сначала надо туда скопировать из флеши, для этого есть в иаре __ramfunc - копирует в рам код стартапа, ну или ручками копировать.. код из рамы выполняется БЫСТРЕЙ, чем из флеш. и еще преимущество.. код из рамы может выполняться во время стирания/записи флеши, удобно для загрузчиков

 

p.s. за меся КАК-ТО работать сам7 заставить можно, но написать с нуля целевую программу нереально

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... не реально за 1 месяц заставить ARM как-то работать?

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

Я в свое время ровно за два выходных дня начал, отпортировал минимальные начальные вещи со 186 на ARM и получил стартовый результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будь я на Вашем месте, я бы все-таки выбрал реализацию на том, что знаешь хорошо. И вот почему.
Категорически не согласен. Если человек имеет достаточно опыта, чтобы реализовать описанный проект хотя бы на меге - освоение ARMа на уровне, достаточном для написания того же займет пару дней - неделю. Надо только не лениться читать документацию. А возможности системы на ARMе будут гораздо выше. Плюс человек получит мощный инструмент в своем арсенале. Пока не нужен загрузчик - не нужно заморачиваться о всяких ремапах, стартапах - в библиотеках компилятора уже все сделано.

Про переменные меньшей, чем 32 бита длины: Во-первых система команд поддерживает работу с 8- и 16-битными данными. В С просто объявляете uint8_t, uint16_t, uint32_t или unsigned char, unsigned short, unsigned long и получаете данные нужной длины. По запись байта в порт - у портов SAM7 есть набор регистров OWER, OWDR, OWSR, в которых вы можете указать, какие именно биты будут писаться в порт при записи в ODSR. Вы можете указать необходимые 8 бит и писаться в порт будут именно они.

Резюме - не так страшен черт.

 

при использовании переменных меньшей длины отдельно - каждая будет занимать 32 бита,
Где вы такое вычитали? Каждая переменная будет занимать столько места, каков ее размер. Другое дело, что начальные адреса переменных выравниваются - 4-байтных на 4 байта, 2-байтных на 2 байта. Поэтому long, char, char, short и long, char, short, char займут 8 и 9 байт, а не 16 как следует из вашего утверждения.

 

С остальным соглаcен.

p.s. за меся КАК-ТО работать сам7 заставить можно, но написать с нуля целевую программу нереально
Задача формулировалась несколько иначе - "до января нужно чтобы он хоть как-то начал жить", а это, на мой взгляд, вполне реально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где вы такое вычитали? Каждая переменная будет занимать столько места, каков ее размер. Другое дело, что начальные адреса переменных выравниваются - 4-байтных на 4 байта, 2-байтных на 2 байта. Поэтому long, char, char, short и long, char, short, char займут 8 и 9 байт, а не 16 как следует из вашего утверждения.

 

звиняюсь, фигню сказал.. хотел про упаковку структур сказать, но что-то не то вышло =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Убедили, всем большое спасибо. Закладываю АРМ...

Изменено пользователем MSprut

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...