реклама на сайте
подробности

 
 
> Компилятор Keil uVision2 для семейств С8051, Компилятор Keil uVision2
bychkov_vladimir
сообщение Jun 22 2007, 13:49
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 1-06-05
Из: Подольск
Пользователь №: 5 629



Добрый день.
Начинаю работать с контроллерами С8051Fxxx и сейчас пытаюсь собрать для них средства разработчика.
как известно , что все средства Silabs распространяються бесплатно и доступны для скачивания.
но недавно встретил такую вещь как :
Компилятор Keil uVision2, включаемый в комплект поставки SiLabs IDE, имеет ограничение по объему генерируемого hex-кода (до 2кБ).

подскажите действительно ли это так и как с этим бороться.

Спасибо !
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 20)
777777
сообщение Aug 9 2007, 05:34
Сообщение #16


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(ISD @ Aug 8 2007, 20:04) *
Редактор - субъективная вещь.

Вообще-то не очень, есть вещи вполне объективные. Если ты редактируешь два файла (например, .c и .h) то переключаться между ними по Ctrl+Tab не получится - он перебирает все открытые окна. Если ты нажимаешь Ctrl+F то в окне появляется слово, на котором стоит курсор. Может это и удобно в отдельных стучаях, но в нормальных редакторах оно выделено - на тот случай если я собрался искать другое слово - когда я начну его набирать, старое сразу удалится. А здесь мне нало сначала его удалить долбя кнопку Del, а потом ввести новое. Нет нормального auto indent'а - все, что он умеет это поставить курсор в позицию, на которой начинается предыдущая строка. Нормальные редакторы понимают, что если я напечатал новую скобку { то следующая строка должна быть с отступом. Счетчик в строке состояния показывает не номер позиции, а номер символа, поэтому табуляция считается за один символ. Добавление и удаление файлов лучше бы сделать в контекстном меню окна Project Workspace, а не запускать для этого отдельное окно - впрочем, это уже не сам редактор а IDE.

Цитата(ISD @ Aug 8 2007, 20:04) *
приведение типов он понимает лучше,

Приведение типов надо понимать не лучше или хуже, а по стандарту. А что, кто-то понимает их по-другому?

Цитата(ISD @ Aug 8 2007, 20:04) *
чем ИАР

что есть ИАР?

Цитата(ISD @ Aug 8 2007, 20:04) *
А то что не так, как ИАР байты складирует - не проблема.

Байты складировать компилятор должен так, как принято в данной аппаратной платформе. Я, конечно, понимаю, что это 8-разрядный процессор, но и он иногда работает с 16-разрядными словами - например, кладет в стек адрес возврата - так он это делает в порядке little-endian. А если учесть, что big-endian неэффективно для вычислений, т.к. байты суммируются или вычитаются начиная с младшего - то я вообще не понимаю зачем они приняли такой порядок в этом компиляторе.
Go to the top of the page
 
+Quote Post
silc
сообщение Aug 10 2007, 14:47
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 27-06-07
Пользователь №: 28 748



что есть ИАР?

IAR http://www.iar.com/
---
У кого есть правильные иар или кеил, пожалуйста скинте на dc.dc@маил.ру, разбив письмо до 5 мегов.
Go to the top of the page
 
+Quote Post
ISD
сообщение Aug 11 2007, 18:11
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320



Цитата(777777 @ Aug 9 2007, 08:34) *
Приведение типов надо понимать не лучше или хуже, а по стандарту. А что, кто-то понимает их по-другому?


В ИАР (под АВР) в строках с несколькими мат операциями надо четко приводить операнды к типу результата, иначе компилятор может неожиданный код сгенерить. В кеиле такое требуется, если уж очень запутанная формула считается. По поводу редактора - пользуйтесь любым другим, если родной не нравится. Недостатки у всех ИДЕ имеются, в кейле, например не более 4 точек останова в дебаггере, пока в watch переменную запишешь - мышка повесится, массив указателей на функции надо отдельно линкеру объяснять, и еще можно перечислять. ИМХО ИДЕ должны быть спроектированы так, чтобы при написании несложного проекта мин времени уходило на изучение доки, а если решил плотно работать - пожалуста, изучай, настраивай....
По поводу складирования байтов- по интерфейсам обычно MSB вперед идет, так вот в кейле byte=*((byte*)&word) даст MSB. а в little-endian - LSB.
ЗЫ. Я не претендую на категоричность своего мнения, так как не считаю себя абсолютным спецом как в кейле так и в ИАР. smile.gif
Go to the top of the page
 
+Quote Post
777777
сообщение Aug 12 2007, 09:51
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(ISD @ Aug 11 2007, 22:11) *
В ИАР (под АВР) в строках с несколькими мат операциями надо четко приводить операнды к типу результата, иначе компилятор может неожиданный код сгенерить. В кеиле такое требуется, если уж очень запутанная формула считается.

Значит в кейле такое тоже случается? И что значит приводить - писать char x = (char)<выражение>? А нельзя ли пример когда он генерит лажу? А то я как-то привык ему верить, может зря? smile.gif

Цитата(ISD @ Aug 11 2007, 22:11) *
По поводу редактора - пользуйтесь любым другим, если родной не нравится.

А что, в кейле можно в IDE прикрутить сторонний редактор? Кстати, еще одна бага, которая меня постоянно раздражает в его редакторе - по Ctrl+стрелка он переходит не на слово, а до ближайшего пробела. То есть словом он считает не то, что является словом для компилятора, а набол любых непробельных символов.

Цитата(ISD @ Aug 11 2007, 22:11) *
Недостатки у всех ИДЕ имеются, в кейле, например не более 4 точек останова в дебаггере,

Разве? Может это в триальной версии?

Цитата(ISD @ Aug 11 2007, 22:11) *
пока в watch переменную запишешь - мышка повесится,

Это да... maniac.gif

Цитата(ISD @ Aug 11 2007, 22:11) *
массив указателей на функции надо отдельно линкеру объяснять

Ну, справедлявости ради надо сказать что они и так оверлеят локальные переменные обычных функций, чтобы компилятор догадался откуда будет вызываться функция по указателю, он должен быть ну очень умным.
Go to the top of the page
 
+Quote Post
uriy
сообщение Aug 12 2007, 18:41
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
по Ctrl+стрелка он переходит не на слово, а до ближайшего пробела. То есть словом он считает не то, что является словом для компилятора, а набол любых непробельных символов.

А что же тогда считается словом для компилятора?
Мне казалось во всех виндовых приложениях по Ctrl+стрелка происходит переход до ближайшего пробела, то бишь, что для меня то же самое - к началу слова. А слово в моем понимании в любом текстовом редакторе это набор непробельных символов.
Go to the top of the page
 
+Quote Post
ISD
сообщение Aug 13 2007, 10:53
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 13-02-07
Пользователь №: 25 320



Цитата(777777 @ Aug 12 2007, 12:51) *
Значит в кейле такое тоже случается? И что значит приводить - писать char x = (char)<выражение>? А нельзя ли пример когда он генерит лажу? А то я как-то привык ему верить, может зря? smile.gif


Конкретного примера не приведу - лень копаться в прошлых исходниках, например,
word=(word)((lword)((lword)(word1)*(lword)(word2))/word3), если опустить приведение операндов к lword, может неверный результат случиться. На Keil по-моему пройдет, но если 5 операций в строке, то точно свалится. Так что лучше не лениться smile.gif

2silc - Keil скинул на ящик.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 23:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016