|
|
  |
Хочу попробовать ARM, подскажите, что для этого нужно?, Какой проц выбрать, отлад. платку и какой софт? |
|
|
|
Jan 27 2007, 04:00
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
2Alex_inventor Моё мыло: sonycman(собачка)mail(тчк)ru Да-а, ты прямо писатель  Наверное, час пост писал? А вообще интересно почитать, конечно. Надо-же, ты столько софта перелопатил. Я пробовал только PCAD начиная с 2000 до 2006 (как ты) и OrCAD10. Остановился на Пикаде. Хотя и Оркад тоже хорош. Но Пикад показался удобнее. Не знаю, почему тебе он кажется неудобным. Создать новый элемент - минутное дело. Что паттерн, что символ. Оркад в этом смысле похуже. Насчёт Sprint Layout - не думал, что его хоть как-то можно поставить рядом с огромными кадами  Это всё имхо  Тут, наверное, дело привычки. Я начинал именно с Пикада, а ты - со Спринта. Старый друг лучше новых двух  Такой вот оффтопчик небольшой  Всё, дочитал я книгу по LPC2000. Неплохая, если не считать, что большинство примеров не будет работать под Кейлом (если только GCC ставить?). Последняя глава по Микровижн как раз идёт  Завтра начну изучать мануал по SAM7, плата с которым скоро должна приехать  А пока сложилось впечатление, что LPC2000 и AT91SAM7 достойны один другого. Вот если бы взять всё лучшее из каждого и соединить - был бы идеальный ARM микроконтроллер начального уровня...
Сообщение отредактировал sonycman - Jan 27 2007, 04:03
|
|
|
|
|
Jan 27 2007, 14:53
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Цитата Всё, дочитал я книгу по LPC2000. Неплохая, если не считать, что большинство примеров не будет работать под Кейлом (если только GCC ставить?). Необольщайся. Я скачал этот GCC. Ни один пример не работает. Везде примерно такая ошибка  : Build target 'Flash' compiling main.c... arm-uclibc-gcc: cannot specify -o with -c or -S and multiple compilations assembling Startup.s... Assembler messages: Error: Error: can't open Files\Keil\ARM\INC\Philips\ for reading Files\Keil\ARM\INC\Philips\: No error Target not created И самое не приятное что непонятно из-за чего.  Но есть в этом и один, но большой плюс. Приходится построчно копировать исходники, компилировать, искать ошибки, искать ответы на непонятки, и как следствие неплохое самообучение. Правда силу воли надо иметь. Нудно иногда бывает. Насчёт среды, если ты работаешь в PCAD и он тебя не напрягает, значит, эта среда для тебя. Значит, она предоставляет тебе все ресурсы, в которых у тебя возникает потребность. Не больше, не меньше. И это правильно. У меня был случай, когда я зашёл к другу (геймеру), я заметил, что у него winamp был с футуристическим скином. Причём в крайне выраженной форме  . Пикассо отдыхает! Я с трудом нашёл кнопку для настройки скина, на ощупь  , и поставил стандартный. Каково же было моё удивление, когда мой друг с криками “не трогай птичку!!! ” набросился на меня  . Дааа… дело привычки! Спор какая среда лучше, напоминает софистику. На изначально ошибочных условиях делаются все остальные выводы. Я на это смотрю иначе. Если есть среда A,B,C. Средой A пользуюсь я. Средой B ты. А среда С устраивает нас обоих, то эта среда лучшая из этих трёх. Т.е. среда С предоставляет все нам необходимые сервисы. Напоследок хочу выразить моё мнение по поводу Layout. Почему все её так кичатся? Каких то 1,4м против сотен мегабайт проффесиональных CAD, не наш уровень  ! Однако если сравнить одинаковые сервисы c тем же PCAD, то имхо, в первом они гораздо удобнее. Надо сравнивать по аналогичным сервисам, тогда оценка будет более, менее объективной. Понятно, что в PCAD намного больше сервисов, которых в LayOut просто нет. Но этот одинаковый фундамент у PCAD, повторяюсь имхо, хуже. Вот почему мне он не понравился. С другими средами та же история. Кстати uVision идут по правильному пути. Пути максимальной настройки среды. У всех разные стереотипы. И вижн постарался их не ломать. Думаю, среды в которых будет такой подход, будут обречены на популярность (о как выразился!). Письмо с кряком высылаю. Лови!  Всем
|
|
|
|
|
Jan 27 2007, 15:20
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
2Alex_inventor Спасибо за кряк. Музыка и правда ничего. Люблю я мызыку  Сейчас вот меня интересует вопрос отладки. Везде пишут, что отладчики загружают программу в RAM, а не во флеш. Ну это понятно - можно много точек останова поставить. Но вот как-же может работать программа в памяти, когда она предназначена для выполнения во флешке? Там же при инициализации выделяется и очищается место в RAM под стёк и переменные. А тут по этому месту сама программа будет. Она же затрёт сама себя! Вот это мне не понятно. Другое дело, если проект изначально готовить для размещения в оперативе - стёк и переменные отодвинуть на другой конец памяти, и программу тогда можно перекидывать на начало RAM.
Сообщение отредактировал sonycman - Jan 27 2007, 15:21
|
|
|
|
|
Jan 27 2007, 17:29
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Я не специалист, но попробую объяснить как я понял. Во-первых, само ядро – микропроцессор – “фоннеймовская” архитектура. Т.е. шина данных и адреса одна. Проца не интересует, что есть flash или ram. Он инкрементирует PC и по адресу берёт команду, а что это Flash, Ram, или что другое его не касается. Это уже проблемы железа. Если в команде есть адрес данных то он по этой же шине запрашивает данные, а куда его этот адрес приведёт в Ram, Flash или в “тьму тараканью”, уже не его проблемы. Это проблемы компилятора и кодера(в некоторых случаях). Поэтому и существуют такие вектора как Undef_Addr, PAbt_Addr, DAbt_Addr. Для выполнения программы в RAM необходимо согласовать адреса стеков, и переменных. В принципе это делает компилятор. Ты только резервируешь переменные, а компилятор сам их распределяет. Для того чтоб компилятор разместил функцию в RAM в Keil компиляторе есть директива __ram. В RealViwe не помню (или не знаю). Вообще ram, как правило, маленькая и много туда не поместится. При загрузке в проц, тоже надо делать специальные телодвижения. Слышал что, напрямую не получится, надо писать свой загрузчик. (может я не прав). Я никогда не делал подобную процедуру. У меня даже нет физического камня. Эксперименты пока в Proteus делаю. По этому всё вышесказанное чистые умозаключения. Буду рад тоже выслушать мнения специалиста по данному вопросу.
|
|
|
|
|
Jan 27 2007, 17:48
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
2Andy Great Компилятор я качал с keil.com. Он лежит на одной странице, где и сам uVision. Файл является установщиком (gccARM331.exe). Я ничего не настраивал, он сам установил себя в папку с:\ Cygnus и ещё некоторые манипуляции с реестром, по-моему, проделал. На диске есть готовые проекты. В каждом проекте в настройках указан GCC. Так вот, если я нажимаю компиляцию, то выскакивает ошибка. Проекты необходимы только для использования при прочтении книги, и всё! В чём причина разбирается, не хочу (осваиваю RealViwe). Повторяюсь, это не отдельные файлы, а целые проекты, с настройками компилятора и т.д. По этому всё сразу должно заработать. Сей факт пусть остаётся на совести автора. P.S. В некоторых проектах настолько очевидные ошибки, что становится понятно, что автор их никогда и не компилировал. Например использование putchar(), а #include<stdio.h> и в помине нету.
|
|
|
|
|
Jan 27 2007, 18:01
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
2Alex_inventor Да, я бы тоже был бы рад послушать спецов, только они последнее время все пропали куда-то. Мы с тобой одни остались  Спасибо за помощь. Я это всё понимаю. Просто на IXBT почитал, что небольшие программки (типа как примеры в книге) можно загрузить прямо в рам (для отладки). Да, наверное, для этого надо задать в компиляторе или линкере соответствующие адреса для стёка и переменных, чтобы они на программу не наложились... Но как это сделать? RV компилятор даже не имеет возможности задать стартовый блок памяти как RAM. Только FLASH. Так что непонятного ещё много... Насчёт записи программы в проц - из той-же книги - через утилиту Philips LPC2000 Flash Utility. Всё просто, как мне показалось. А у SAM7 другой загрузчик - SAM-BA. Я тоже пока чисто теоретизирую. Только не в Протеусе, а в симуляторе Кейла упражняюсь. Вещь кстати зверская - возможностей куча. По компилятору - я даже браться за GCC не буду. Есть ведь RV - один из лучших, вроде. Только освоить надо. RV сильно отличается от CARMа и, наверное, от GCC. Примеры для него есть в папке Микровижн: C:\Program Files\Keil\ARM\RV30\Examples\ Цитата(Alex_inventor @ Jan 27 2007, 18:48)  P.S. В некоторых проектах настолько очевидные ошибки, что становится понятно, что автор их никогда и не компилировал. Например использование putchar(), а #include<stdio.h> и в помине нету. Это возможно потому, что putchar() там у автора своя, и ей не нужна стандартная библиотека.
Сообщение отредактировал sonycman - Jan 27 2007, 18:08
|
|
|
|
|
Jan 27 2007, 18:17
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sonycman @ Jan 27 2007, 17:01)  я бы тоже был бы рад послушать спецов, только они последнее время все пропали куда-то. Очень хорошо варитесь в "собственном соку"  сами задаете, сами ищите, сами отвечаете... Это нормальный и правильный этап освоения нового. Когда вопросы станут с более неочевидными ответами и схлынет их критическая масса, думаю и помощь подоспеет.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 27 2007, 18:40
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(zltigo @ Jan 27 2007, 19:17)  Очень хорошо варитесь в "собственном соку"  сами задаете, сами ищите, сами отвечаете... Это нормальный и правильный этап освоения нового. Когда вопросы станут с более неочевидными ответами и схлынет их критическая масса, думаю и помощь подоспеет. Слава богу, мы не одни !  Скажите пожалуйста, MT-LINK будет работать с Keil uVision RealView ? Вроде должен через RDI драйвер? Если да, то я, наверное, закажу его на терраэлектронике...
|
|
|
|
|
Jan 27 2007, 19:20
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(zltigo @ Jan 27 2007, 20:11)  И на этот  вопрос несколько раз на этом форуме ответ был - через RDI - будет. Ответы на вопросы где взять RDI к MT-Link и как его зарегистрировать - тоже найдете на этом форуме  Это хорошо  Почти всё нашёл, кроме одного - нигде нет кряка для RDI. Почему-то все ссылки на него на Сахаре нерабочие. А в "своих" я пока не состою...  Если не трудно, отправте, плиз, на мой ящик этот rdikeygen - sonycman(собака)mail(тчк)ru Заранее спасибо
|
|
|
|
|
Jan 27 2007, 19:57
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Кстати, ещё одна ниточка в решение проблемы размещения в RAM. В файле определении регистров, в моём случае lpc210x.h, есть следующие строки: /* Vectored Interrupt Controller (VIC) */ #define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000)) #define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004)) #define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008)) #define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C)) #define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010)) #define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014)) #define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018)) * * * Т.е. объявляются переменные-адреса. Volatile-по некоторым данным переменная находящиеся в энергозависимой памяти (т.е. RAM). Кто ни будь объяснит что это за синтаксис такой? И за чем его в данном случае применять. Есть предположение что это нужно компилятору для переразмещении адресов в случае разных типов памяти, RAM, FlASH, EXT RAM?
|
|
|
|
|
Jan 27 2007, 20:19
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Alex_inventor @ Jan 27 2007, 20:57)  Есть предположение что это нужно компилятору для переразмещении адресов в случае разных типов памяти, RAM, FlASH, EXT RAM? Не совсем. Volatile чем-то похож на Const. Вот что я вычитал из своего нового справочника по C++: Квалификатор volatile сообщает компилятору, что значение переменной может изменяться неявно. Например, адрес глобальной переменной можно передать таймеру операционной системы и использовать его для отсчёта реального времени. В этом случае содержимое переменной изменяется без явного выполнения какого-либо оператора присваивания. Это очень важно, поскольку большинство компиляторов языка С/С++ автоматически оптимизируют некоторые выражения, считая, что значения переменных не изменяются, если они не указаны в левой части оператора присваивания и т.д. То есть к флешке и к оперативе эти адреса не имеют никакого отношения. Это адреса регистров периферии, и volatile стоит, видимо, для того, чтобы компилятор не наделал ошибок при оптимизации кода.
|
|
|
|
|
Jan 27 2007, 20:40
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Столкнулся с проблемой. Есть например в проекте два файла (one.c , two.c). В one.c присоединяю файл определений lpc2xxx.h и two.c. Так вот во время компиляции определения файла lpc2xxx.h не видны в файле two.c. C функциями та же проблема. Когда работал с AVR, проблемы не было. Надо было только порядок подключаемых файлов соблюсти. Т.е. если в файле используется какая то функция другого файла, то тот другой файл должен быть присоединен раньше. Компилятор (RealViwe)
|
|
|
|
|
Jan 27 2007, 20:59
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
2 sonycman Спасибо за разъяснение, хотя не совсем понятно. Нет, этo: [/quote] , для того, чтобы компилятор не наделал ошибок при оптимизации кода. [/quote] мне понятно. Но я не могу понять где компилятор может напортачить. Const и в Африке const. Конечно, если написать x=2+3, то компилятор соптимизирует в x=5. Но если мы напишем adr+5, и компилятор соптимизирует, ведь это не будет являться ошибкой. Похоже это фичи С++. Я знаю только С. Пока писал осенило! Только обратил внимание, что это типичное объявление #define, причём здесь переменная? Созрел вопрос к нашим гуру: А почему в определениях адресов регистров используется такой экзотический способ, а не банальное #define? Или этот вопрос не достоин Вас? Ну тогда извините
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|