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

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

|
На С работаю около года. Исключительно на микроконтроллерах. До этого программировал на asm. Прошёл путь PIC, MSK-51, AVR, вот теперь очередь до ARM дошла. Теперь по существу. (*((volatile unsigned long *) 0xFFFFF000)) volatile unsigned long * *((volatile unsigned long *) 0xFFFFF000) Я убрал парные скобки чтоб до звёздочек добраться и где звёздочки находятся? Цитата Это называется приведение типов (cast). Что такое приведение типов я прекрасно знаю. Перечитал главу в K&R (2.7 Преобразование типов.) Вырезки приводить не буду, но звёздочек там не встречал. Что такое cost прочитал впервые. Никогда не пользовался по причине слишком специфичности данной операции. Выражение (unsigned long ) 0xFFFFF000 есть пример cost. Но что делает звезда справа, и что на самом деле volatile обозначает? И зачем для адреса применять тип long(64bit), или в RealViwe long(32bit)? Цитата Знает. В этом состоит суть оптимизации кода при компиляции. Как компилятор может знать заранее значение переменной, на которое указывает указатель? Или мы друг друга не понимаем? Я много раз видел, как и что оптимизирует компилятор (я говорю про оптимизацию по размеру кода). Общие принципы оптимизации по пальцам пересчитать можно. Основная оптимизация это создание массива одинаковых кодовых последовательностей. И прыгание туда и обратно из программы. Далее идёт заранее вычисление выражений, которые можно просчитать до компиляции, в такие выражения не входят переменные, оптимизация сокращения кода, результаты которого одни и теже. Например r0=1; r0=1; Такая ситуация часто встречается при инициализации периферии в которой, в качестве защиты сделана необходимость дважды занести значения в регистр. В таких случаях выключают оптимизацию перед выражением и включают после. Ну и рискованный тип оптимизации, и как правило редко применяющейся, замена блоков кода, который по мнению компилятора выполняет определённый алгоритм, другим, оптимизированным, блоком кода выполняющий тот же алгоритм. Ни один из этих видов оптимизации не должен исказить загрузку по ссылке. Если я не прав приведите пример. Обсудим. Привожупример дизассемблера: LDR PC, Reset_Addr Reset_Addr DCD Reset_Handler Теперь становится понятно. Это особенности инструкции LDR. Она неможет включать в себя число, ну например как в AVR сделано – если идёт загрузка данных, то следующий за инструкцией байт это байт данных. LDR косвенно загружает регистр PC используя метку Reset_Addr, которая указывает на директиву резервирования и инициализации памяти DCD которая заносит число Reset_Handler которое проинициализировано EQU . Во какая цепочка! Самое интересное, что я давно обратил внимание на такое странное кодирование. А выражение (*((volatile unsigned long *) 0xFFFFF000)) это и делает. Но сама запись сбивает с толку. Я бы написал так flash int adr 123, ну или const int adr 123. В данном случае const уместна. Я же говорил в спорах рождается истина  . Цитата Ты лучше тогда почитай любую книжку по С, раз я не могу объяснить... Да читал я книжки по С. Но я не читаю их от корки до корки (как например худ. литературу) по причине другого подхода. Я читаю те главы, которые мне нужны в данный момент. И обсуждаемую книгу я не прочитал. Прочитал главы общей архитектуры, инициализация, UART. Сейчас пишу проект с UART. В принципе написал. Всё работает за исключением некоторых мелочей. По мере появления вопросов читаю новые главы. Сейчас буду осваивать прерывания, ну и читать про них. Буду постепенно наращивать проект, пока не подключу всю периферию. Всем
|
|
|
|
|
Jan 28 2007, 03:22
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Alex_inventor @ Jan 28 2007, 01:46)  (*((volatile unsigned long *) 0xFFFFF000)) Но что делает звезда справа, и что на самом деле volatile обозначает? Дословно *(unsigned long *) 0xFFFFF000 означает "значение типа unsigned long, на которое указывает указатель, содержащий адрес 0xFFFFF000". Или, что тождественно, "значение типа unsigned long, находящееся по адресу 0xFFFFF000". volatile заставляет компилятор при упоминании этого значения каждый раз считывать его заново, а не использовать сохраненное где-то считанное ранее значение. Цитата(Alex_inventor @ Jan 28 2007, 01:46)  Как компилятор может знать заранее значение переменной, на которое указывает указатель? Или мы друг друга не понимаем? Если он это значение недавно прочитал, и сам с тех пор не менял, то вправе предположить, что значение осталось неизменным и использовать сохраненное значение, экономя такты и/или код на повторном обращении к памяти. Цитата(Alex_inventor @ Jan 28 2007, 01:46)  В данном случае const уместна. const была приведена только как пример модификатора объявления переменной. С volatile const никак не связан, они существуют отдельно сами по себе. Цитата(Alex_inventor @ Jan 28 2007, 01:46)  Я читаю те главы, которые мне нужны в данный момент. Ну хотя бы по диагонали остальные просмотреть стоит. Чтобы понять, в каких главах есть что-то для Вас новое и, следовательно, какие главы стоит просмотреть внимательнее. Я, например, сочетаю этот подход с другим - если мне что-то не понятно, читаю дальше. Потом возвращаюсь в начало и читаю снова. После двух прочтений в голове начинает формироваться некоторая картина, которая после трех-четырех приобретает осмысленные формы.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
sonycman Хочу попробовать ARM, подскажите, что для этого нужно? Jan 23 2007, 16:44 defunct Цитата(sonycman @ Jan 23 2007, 16:44) Пок... Jan 23 2007, 17:10 sonycman Цитата(defunct @ Jan 23 2007, 18:10) 1. U... Jan 23 2007, 18:19  zltigo Цитата(sonycman @ Jan 23 2007, 17:19) 1. ... Jan 23 2007, 18:28  defunct Цитата(sonycman @ Jan 23 2007, 18:19) 3. ... Jan 23 2007, 18:30   Andy Great Цитата(defunct @ Jan 23 2007, 18:30) Цита... Jan 23 2007, 23:31    sonycman Цитата(Andy Great @ Jan 24 2007, 00:31) У... Jan 24 2007, 01:18  SpiritDance Цитата(sonycman @ Jan 23 2007, 18:19) 2. ... Jan 23 2007, 18:34 Alex03 Цитата(defunct @ Jan 23 2007, 19:10) 2. J... Jan 24 2007, 08:36  Сергей Борщ Цитата(Alex03 @ Jan 24 2007, 07:36) Цитат... Jan 24 2007, 10:53 SpiritDance отладочные платы olimex на этом контроллере продаю... Jan 23 2007, 17:32 sonycman Насчёт MT-Link понял, спасибо.
Можно взять.
Разве... Jan 23 2007, 18:54 sonycman Что-то я не понял, для LPC2xxx макс. скорость SPI ... Jan 23 2007, 21:00 GetSmart SPI1 (в отличие от SPI0) может работать на 1/2 CPU... Jan 24 2007, 02:12 zltigo Цитата(GetSmart @ Jan 24 2007, 01:12) SPI... Jan 24 2007, 04:23 sonycman Цитата(GetSmart @ Jan 24 2007, 03:12) SPI... Jan 24 2007, 04:32  zltigo Цитата(sonycman @ Jan 24 2007, 03:32) При... Jan 24 2007, 04:50   sonycman Цитата(zltigo @ Jan 24 2007, 05:50) Datas... Jan 24 2007, 12:23    SpiritDance Цитата(sonycman @ Jan 24 2007, 12:23) Но ... Jan 24 2007, 12:34    zltigo Цитата(sonycman @ Jan 24 2007, 11:23) Но ... Jan 24 2007, 12:37 Andreas1 ЦитатаУ меня и IAR с ним работал на "ура... Jan 24 2007, 11:19 Сергей Борщ Цитата(Andreas1 @ Jan 24 2007, 10:19) Цит... Jan 24 2007, 11:26  zltigo Цитата(Сергей Борщ @ Jan 24 2007, 10:26) ... Jan 24 2007, 12:31   sonycman Цитата(zltigo @ Jan 24 2007, 13:31) Не зн... Jan 24 2007, 12:39    zltigo Цитата(sonycman @ Jan 24 2007, 11:39) А в... Jan 24 2007, 12:43   Сергей Борщ Цитата(zltigo @ Jan 24 2007, 11:31) Цитат... Jan 24 2007, 13:42    AlexBoy Запугали человека всякими MT и J-Link-ми.
Вигглер ... Jan 24 2007, 14:15    zltigo Цитата(Сергей Борщ @ Jan 24 2007, 12:42) ... Jan 24 2007, 15:16 boez CrossWorks последний 1.6b3 неплох. Они там многое ... Jan 24 2007, 14:20 Andreas1 ЦитатаТут я выкладывал схему Вигглера, которая у м... Jan 24 2007, 14:32 sonycman Хорошо, всем спасибо за советы.
Решил заказывать в... Jan 24 2007, 17:23 Сергей Борщ Цитата(sonycman @ Jan 24 2007, 16:23) А в... Jan 24 2007, 18:56  sonycman Понятно, значит устарели PLCC...
Цитата(Сергей Бо... Jan 24 2007, 20:10   Сергей Борщ Цитата(sonycman @ Jan 24 2007, 19:10) Зап... Jan 24 2007, 20:20 SpiritDance Кстати если посмотреть на даташит lpc2103 можно на... Jan 24 2007, 19:15 sonycman Народ, помогите, где можно скачать нормальную верс... Jan 24 2007, 23:28 Alex_inventor Цитата(sonycman @ Jan 25 2007, 00:28) Нар... Jan 25 2007, 02:39  DRUID3 Цитата(Alex_inventor @ Jan 25 2007, 01:39... Jan 25 2007, 05:32 Alex_inventor Кстати, есть ещё вопросы к уважаемым участникам фо... Jan 25 2007, 03:32 sonycman 2Alex_inventor
Хорошо, завтра взгляну на диск от к... Jan 25 2007, 04:59 ek74 Цитата(sonycman @ Jan 25 2007, 04:59) Сей... Jan 25 2007, 11:22  sonycman Цитата(ek74 @ Jan 25 2007, 12:22) Т.е. AD... Jan 25 2007, 13:28 Andy Great В каталоге BIN лежит собственно Кейловский компиле... Jan 25 2007, 11:41 Alex_inventor 2Andy Great:
Да вы правы насчёт размещения компил... Jan 25 2007, 13:42 Andrew_Ch 2 Alex_inventor
Подскажите, пожалуйста, ссылку на ... Jan 25 2007, 13:55 Andy Great Цитата(Alex_inventor @ Jan 25 2007, 13:42... Jan 25 2007, 14:38 Alex_inventor 2sonycman:
Огромный за мыло. Jan 25 2007, 13:53 Alex_inventor 2Andrew_Ch:
Ссылка книги http://ihtik.dreamhosters... Jan 25 2007, 14:08 Andrew_Ch 2 Alex_inventor:
Спасибо большое. Не хилый ре... Jan 25 2007, 15:31 sonycman Цитата(Alex_inventor @ Jan 25 2007, 14:53... Jan 25 2007, 16:08 Andrew_Ch 2 sonycman
Тогда моем его, а средство вот ... Jan 25 2007, 16:29 Alex_inventor 2 Andy Great:
Не могли бы вы выложить keil компиля... Jan 25 2007, 16:44 Andy Great Цитата(Alex_inventor @ Jan 25 2007, 16:44... Jan 26 2007, 09:47 Alex_inventor Проверил для какого компилятора написаны примеры п... Jan 25 2007, 17:22 Alex_inventor Подскажите, что это за ошибка:
Build target 'T... Jan 25 2007, 17:41 sonycman Я вот тоже не в понятках пока - разбираюсь со Star... Jan 25 2007, 20:02 Alex_inventor Народ, а как в uVision узнать размер полцчившегося... Jan 25 2007, 23:44 Alex_inventor Hello All.
Изучаю UART в LPC20xx. Есть одна непон... Jan 26 2007, 02:36 Alex_inventor Кто-нибудь пользуется такой софтиной “Embest IDE f... Jan 26 2007, 03:33 IgorKossak Цитата(Alex_inventor @ Jan 26 2007, 02:33... Jan 26 2007, 10:24 sonycman 2Alex_inventor
Там uVision версии 3.50, это просто... Jan 26 2007, 05:23 Dr.Craft В 3,03 уже нету CARMa, был в 3,02. Выкладываю те ф... Jan 26 2007, 12:21 Alex_inventor Скачал Embest Register Editor. Прога так себе… Н... Jan 26 2007, 13:39 Alex_inventor To All
Объясните в чём причина. Вот пример кода... Jan 26 2007, 15:01 sonycman Цитата(Alex_inventor @ Jan 26 2007, 16:01... Jan 26 2007, 15:22 Alex_inventor Запарил уже uVision. Надоело уже переустанавлива... Jan 26 2007, 15:31 Alex_inventor ЦитатаБлин, тяжело изучать ARM по книге, в которой... Jan 26 2007, 15:44 sonycman Цитата(Alex_inventor @ Jan 26 2007, 16:44... Jan 26 2007, 16:04 Alex_inventor Нет экран не прыгает ниже или выше указателя. С эт... Jan 26 2007, 16:20 sonycman Цитата(Alex_inventor @ Jan 26 2007, 17:20... Jan 26 2007, 16:51 Dr.Craft Примерно 100 мБ IAR весит с небольшим. Jan 26 2007, 17:06 sonycman Вот цитата с форума IXBT.com:
ЦитатаНо поковырявши... Jan 26 2007, 17:19 Alex_inventor Про IAR могу поведать следующую историю. Раньше, к... Jan 26 2007, 18:18 sonycman 2Alex_inventor
Понятно, спасибо за разъяснение
Сл... Jan 26 2007, 19:09 Alex_inventor 2sonycman
Кидай мыло, а то я письмо удалил.
Что к... Jan 27 2007, 02:39 sonycman 2Alex_inventor
Моё мыло: sonycman(собачка)mail(тчк... Jan 27 2007, 04:00 Alex_inventor ЦитатаВсё, дочитал я книгу по LPC2000. Неплохая, е... Jan 27 2007, 14:53 sonycman 2Alex_inventor
Спасибо за кряк. Музыка и правда ни... Jan 27 2007, 15:20 Andy Great Все примеры отлично работают, только их надо брать... Jan 27 2007, 17:24 Alex_inventor Я не специалист, но попробую объяснить как я понял... Jan 27 2007, 17:29 Alex_inventor 2Andy Great
Компилятор я качал с keil.com. Он лежи... Jan 27 2007, 17:48 sonycman 2Alex_inventor
Да, я бы тоже был бы рад послушать ... Jan 27 2007, 18:01 zltigo Цитата(sonycman @ Jan 27 2007, 17:01) я б... Jan 27 2007, 18:17  sonycman Цитата(zltigo @ Jan 27 2007, 19:17) Очень... Jan 27 2007, 18:40   zltigo Цитата(sonycman @ Jan 27 2007, 17:40) Ска... Jan 27 2007, 19:11    sonycman Цитата(zltigo @ Jan 27 2007, 20:11) И на ... Jan 27 2007, 19:20 Alex_inventor Кстати, ещё одна ниточка в решение проблемы размещ... Jan 27 2007, 19:57 sonycman Цитата(Alex_inventor @ Jan 27 2007, 20:57... Jan 27 2007, 20:19 Alex_inventor Столкнулся с проблемой. Есть например в проекте дв... Jan 27 2007, 20:40 Alex_inventor 2 sonycman
Спасибо за разъяснение, хотя не совсем ... Jan 27 2007, 20:59 sonycman 2Alex_inventor
Смотри: допустим, мы читаем данные ... Jan 27 2007, 21:06 Alex_inventor 2sonycman
Давай для точности, разберёмся с определ... Jan 27 2007, 22:15 sonycman 2Alex_inventor
Давай
Const - запрешает любые опе... Jan 27 2007, 22:34 Alex_inventor Если быть точным, то EQU-это директива компилятора... Jan 27 2007, 23:55 sonycman 2Alex_inventor
Можно тебя спросить, как давно ты н... Jan 28 2007, 00:19 sonycman 2Alex_inventor
Я пробовал программить только PIC и... Jan 28 2007, 03:37 Alex_inventor 2 Сергей Борщ
ЦитатаНу хотя бы по диагонали осталь... Jan 28 2007, 04:40 Alex_inventor 2sonycman
А у тебя proteus есть? Ты им когда-нибуд... Jan 28 2007, 05:16
3 страниц
1 2 3 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|