Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компилятор Keil uVision2 для семейств С8051
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
bychkov_vladimir
Добрый день.
Начинаю работать с контроллерами С8051Fxxx и сейчас пытаюсь собрать для них средства разработчика.
как известно , что все средства Silabs распространяються бесплатно и доступны для скачивания.
но недавно встретил такую вещь как :
Компилятор Keil uVision2, включаемый в комплект поставки SiLabs IDE, имеет ограничение по объему генерируемого hex-кода (до 2кБ).

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

Спасибо !
TBI
Цитата(bychkov_vladimir @ Jun 22 2007, 17:49) *
подскажите действительно ли это так и как с этим бороться.


Да это действительно так. Можно использовать бесплатный компилятор для 51 семейства, а затем HEX файл загружать в контроллер через Silabs IDE или Programmer. Второй вариант, купить полный Keil uVision. Третий вариант, достать полный Keil uVision.
uriy
могу выслать лекарстов для Keil uVision 3 v8.08. Если нужно - прошу писать в PM
SALOME
Цитата(bychkov_vladimir @ Jun 22 2007, 20:49) *
Добрый день.
Компилятор Keil uVision2, включаемый в комплект поставки SiLabs IDE

Спасибо !

С Keil uVision2 вас ждет еще одно разочарование. Он не работает с нормальной математикой. Может кто подскажет как подключить функции с float?
uriy
На форуме встречал ключ к Keil ссылка была на сайт telesys.ru. Помнится там с ключом был txt с описанием как подклчить float
SALOME
Цитата(urasinov @ Jun 25 2007, 02:04) *
ссылка была на сайт telesys.ru.

На телесис искать полезную информацию, все равно как гайку 2мм в ведре б/у метизов... Хотя может есть, неизвестная мне метода...
tag
Цитата(SALOME @ Jun 23 2007, 11:18) *
С Keil uVision2 вас ждет еще одно разочарование. Он не работает с нормальной математикой. Может кто подскажет как подключить функции с float?


...это кажется одно из ограничений демо-версии (как и ограниченный размер кода), надо просто найти полную версию.
-JonnS-
По моему мнению лучше скачать с сайта производителя Keil uVision 3 v8.08 eval и вылечить сотв. образом. См. сайт сахара поиском слово "клизма". Тогда будет и "float". Потом можно интегрировать компильатор в "родной IDE" силабса.
kolobok0
Цитата(bychkov_vladimir @ Jun 22 2007, 17:49) *
...Компилятор Keil uVision2, включаемый в комплект поставки SiLabs IDE, имеет ограничение по объему генерируемого hex-кода...


ышо данный компилятор иногда лажается в сгенерённом коде пропускает (очень редко, на больших проектах) строчки...за тройкой - пока не замечено...

удачи Вам
(круглый)
ISD
Есть Keil uVision2 (по-моему лицензионная). float - без проблем, установлены dll под jtag.
Весит 28М. Переносится без установки. Отладчик и компилятор произвели приятное впечатление.
Могу поделиться.
777777
Цитата(ISD @ Jul 31 2007, 19:23) *
float - без проблем, установлены dll под jtag.
Весит 28М. Переносится без установки. Отладчик и компилятор произвели приятное впечатление. Могу поделиться.


Если не считать абсолютно уродского редактора, то у него только одна существенная проблема - переменные int и long он располагает в порядке big-endian.
Kirill Frolov
Цитата(bychkov_vladimir @ Jun 22 2007, 17:49) *
подскажите действительно ли это так и как с этим бороться.


Разумеется так. Халявы нахаляву не бывает!

Как бороться:

1. Мучаться так.

2. Купить полноценную версию.

3. Мучаться с SDCC.

4. Мучаться с другими компиляторами.
В частности, возможно имеет смысл мучаться с продукцией фирмы HiTech software.

5. Украсть...


Цитата(SALOME @ Jun 23 2007, 11:18) *
С Keil uVision2 вас ждет еще одно разочарование. Он не работает с нормальной математикой. Может кто подскажет как подключить функции с float?


У меня работает. "Что я делаю не так?" ©

Нет, разумеется он работает с float и только с float. С double не работает,
о чём честно указано в документации.

Если уж совсем не работает, то можно посоветовать использовать сторонние IEEE 754 библиотеки...



Цитата(777777 @ Aug 3 2007, 10:07) *
Если не считать абсолютно уродского редактора,


Почему я использую Vim.

Цитата
то у него только одна существенная проблема - переменные int и long он располагает в порядке big-endian.


Проблема когда они лежат в абсолютно уродском intel-формате. Аргументирую.
При ошибках с неверным приведением типов, если int лежит в motorola формате,
программа получает неверное значение и валится сразу. Если число лежит в
intel-формате -- ошибка будет обнаруживаться долго и мучительно, будет масса
случайных непонятных сбоев и друих чудес.
777777
Цитата(Kirill Frolov @ Aug 7 2007, 03:15) *
Проблема когда они лежат в абсолютно уродском intel-формате. Аргументирую. При ошибках с неверным приведением типов, если int лежит в motorola формате, программа получает неверное значение и валится сразу. Если число лежит в intel-формате -- ошибка будет обнаруживаться долго и мучительно, будет масса случайных непонятных сбоев и друих чудес.


Во-первых, intel-формат (если ты таковым называешь little-endian) гораздо более естественен и логичен для компьютера.
А во-вторых, нельзя ли пояснить аргументацию, желательно на конкретных примерах?
Snaky
Цитата(Kirill Frolov @ Aug 7 2007, 05:15) *
Нет, разумеется он работает с float и только с float. С double не работает, о чём честно указано в документации.

Для Keil и float и double и даже long double это просто одно и тоже - они не различаются ни порядком ни точностью (в чем можно убедиться просмотрев [...\Keil\C51\INC\FLOAT.H]). А демо-версия действительно помимо ограничения на размер кода (2 кб) не дает работать с числами с плавающей точкой.
ISD
Цитата(777777 @ Aug 3 2007, 09:07) *
Если не считать абсолютно уродского редактора, то у него только одна существенная проблема - переменные int и long он располагает в порядке big-endian.


Редактор - субъективная вещь. Работа компилятора понимается легко, ему не надо для переменных volatile прописывать на 9-м уровне оптимизации, и приведение типов он понимает лучше, чем ИАР (ИМХО). А то что не так, как ИАР байты складирует - не проблема.
777777
Цитата(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 неэффективно для вычислений, т.к. байты суммируются или вычитаются начиная с младшего - то я вообще не понимаю зачем они приняли такой порядок в этом компиляторе.
silc
что есть ИАР?

IAR http://www.iar.com/
---
У кого есть правильные иар или кеил, пожалуйста скинте на dc.dc@маил.ру, разбив письмо до 5 мегов.
ISD
Цитата(777777 @ Aug 9 2007, 08:34) *
Приведение типов надо понимать не лучше или хуже, а по стандарту. А что, кто-то понимает их по-другому?


В ИАР (под АВР) в строках с несколькими мат операциями надо четко приводить операнды к типу результата, иначе компилятор может неожиданный код сгенерить. В кеиле такое требуется, если уж очень запутанная формула считается. По поводу редактора - пользуйтесь любым другим, если родной не нравится. Недостатки у всех ИДЕ имеются, в кейле, например не более 4 точек останова в дебаггере, пока в watch переменную запишешь - мышка повесится, массив указателей на функции надо отдельно линкеру объяснять, и еще можно перечислять. ИМХО ИДЕ должны быть спроектированы так, чтобы при написании несложного проекта мин времени уходило на изучение доки, а если решил плотно работать - пожалуста, изучай, настраивай....
По поводу складирования байтов- по интерфейсам обычно MSB вперед идет, так вот в кейле byte=*((byte*)&word) даст MSB. а в little-endian - LSB.
ЗЫ. Я не претендую на категоричность своего мнения, так как не считаю себя абсолютным спецом как в кейле так и в ИАР. smile.gif
777777
Цитата(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) *
массив указателей на функции надо отдельно линкеру объяснять

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

А что же тогда считается словом для компилятора?
Мне казалось во всех виндовых приложениях по Ctrl+стрелка происходит переход до ближайшего пробела, то бишь, что для меня то же самое - к началу слова. А слово в моем понимании в любом текстовом редакторе это набор непробельных символов.
ISD
Цитата(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 скинул на ящик.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.