Ru-Board.club
← Вернуться в раздел «Программы»

» Keil uVision

Автор: eugene7
Дата сообщения: 16.07.2007 13:16

Цитата:
Это тоже вариант, конечно. Только в "больших" Си есть возможность написания кусков асм в си-файлах. Вот это по-настоящему удобно - можно писать быстро, оптимально и оперативно менять код.


Так и в Keil это можно, только несколько замороченно. Посмотри #pragma ASM, ENDASM. Просто я считаю, что это может вызвать больше проблем, чем предыдущий способ. Ты должен сам заботиться о сохранении регистров, а потом не забывать восстанавливать их. А в предыдущем способе это делает компилятор. И, вообще, хоть сколько-нибудь сложную функциональность лучше выносить в отдельную функцию.
Автор: PapaKarlo
Дата сообщения: 04.05.2007 19:41
ddddF

Цитата:
вроде бы нет пока темы о сравнении (выборе) языков программирования для ма-а-а-леньких процессоров, может стоит создать ее?
И, кстати, о выборе сред программирования тоже

Создавать стоит, если есть, так сказать, затравка: было бы неплохо, чтобы создающий написал что-нибудь достаточно информативное по этому поводу. ИМХО.
Автор: ufosoft
Дата сообщения: 20.07.2007 10:20
к вопросу про BITS TO ROUND FLOAT COMPARE, какое значение подразумевается при default?
Автор: ufosoft
Дата сообщения: 18.05.2007 07:10
кеил 7.10 нормально,а 7.50 выдает следущее

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C?COPYP2
MODULE: dc2_v_ed2.obj (DC2_V_ED2)

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: ?C?COPYP2
MODULE: dc2_v_ed2.obj (DC2_V_ED2)
ADDRESS: 8B14H

Program Size: data=19.1 xdata=1557 code=43747
LINK/LOCATE RUN COMPLETE. 2 WARNING(S), 0 ERROR(S)

как избавится
Автор: eugene7
Дата сообщения: 23.07.2007 10:29

Цитата:
к вопросу про BITS TO ROUND FLOAT COMPARE, какое значение подразумевается при default?

Вот из справки для версии 7.50:
Determines the number of bits rounded before a floating-point compare is executed. The default value of 3 specifies that the three least significant bits of a float value are rounded before the floating-point compare is executed.

Автор: PapaKarlo
Дата сообщения: 18.05.2007 10:20
ufosoft
Посмотри по листингу для DC2_V_ED2, использование какой функции генерирует вызов CCOPYP2. Вообще-то упоминание такого символа присутствует во всех библиотеках C51xx.lib, так что с большой вероятностью недоразумение где-то у тебя.
Автор: vetvetvet
Дата сообщения: 24.12.2007 09:30
А можно код, компиленый этим, декомпилить обратно, использую готовые библиотеки в комплекте, для получения исходного кода?

чтобы внося изменения- опять этим компилить и получать рабочий код?
Автор: PapaKarlo
Дата сообщения: 29.05.2007 18:33

ufosoft

Цитата:
7.10 нормально,а 7.50 выдает следущее

Нашел ли причину? Может быть интересным для других.
Автор: Evgeny972
Дата сообщения: 24.12.2007 10:36
vetvetvet
А ясней можно?

Цитата:
А можно код, компиленый этим, декомпилить обратно
- можно все.
Автор: ufosoft
Дата сообщения: 27.06.2007 10:52
данную строку нашел в *.obj очевидно подпрограмма библиотеки к которой нет обращения или 7.50 кривой (нет такой п\п)?

Добавлено:
нашел в *.M51 ссылку C:\KEIL\C51\LIB\C51S.LIB (?C?COPYP2)
после замены из 7.10 файла C51S.LIB ошибки изчезли !!!???
Автор: vetvetvet
Дата сообщения: 24.12.2007 11:11
Evgeny972

есть робочая прошивка для процессора 51, ее декомпильнуть в исходный си код, подправить кое-что и опять скомпилировать кейлом в робочую прошивку для заливки в аппарат
Автор: Evgeny972
Дата сообщения: 27.06.2007 14:13
ufosoft
Это у них не в первой. Исправляют один баг, плодят другие.
Автор: Evgeny972
Дата сообщения: 24.12.2007 12:05
vetvetvet
Цитата:
ее декомпильнуть в исходный си код
Ну такого я еще не видел.
Что можно - "декомпильнуть" в ассемблерный вид.

Автор: ufosoft
Дата сообщения: 28.06.2007 15:02
Где найти нормальную (полную) версию , а не ***аlfa? я так понял на сайте кейла все алфа были только урезанные (библиотека 710 больше чем 750а).

Добавлено:
Вопрос по кейл что такое BITS TO ROUND FLOAT COMPARE (в свойствах проекта), на что и как влияет?
Автор: CNIISM
Дата сообщения: 30.12.2007 09:21
Пишу программы на 166 микроконтроллер. Столкнулся с проблемой. При отладке программы симулятор в встроенный в Keil работает, а при попытке использовать аппаратный отладчик (работает через COM порт и тоже встроен в Keil) терплю неудачу. Причем он бывает что в некоторых случаях он работает нормально, но стоит изменить код программы и перекомпилировать все сразу ломается......
Кто-нибудь знает как справится с этой проблеиой? Может какие-нибудь опции надо установить или еще что-нибудь сделать.
Автор: Evgeny972
Дата сообщения: 28.06.2007 17:17
ufosoft
То что размер библиотеки меньше, не значит что она урезаная.
версии с а в конце - исправленные версии без а.

Цитата:
что такое BITS TO ROUND FLOAT COMPARE

Ну батенька: обозначает, до какой резолюции округляются числа с плавающей запятой при сравнении - меньше резолюция, сравнение быстее, но точночть меньше:
к примеру: есть два числа 1.011 и 1.019 (вместо бит говорим о цифрах после запятой)
если зададим 1: 1.011 ->1.0 и 1.019 -> 1.0 - два числа равны
если зададим 2: 1.011 ->1.01 и 1.019 -> 1.02 - второе больше


Автор: PapaKarlo
Дата сообщения: 01.06.2008 23:06
Ответ на это сообщение от NameDyst.

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

А пока - к Вам просьба: предоставьте листинг компиляции приведенного Вами фрагмента программы:
Код: bdata struct fd { unsigned a: 1;
unsigned b: 1;
unsigned c: 1;
unsigned d: 1;
unsigned e: 1;
unsigned f: 1;
unsigned g: 1;
unsigned h: 1; }

union { unsigned char ch; struct fd bb: } uu;

uu.ch=0xFF;
uu.bb.a=0;
uu.bb.b=0;
printf(" \n uu.ch= %X ", uu.ch);
Автор: eugene7
Дата сообщения: 11.07.2007 18:59
А кто сравнивал качество компиляции кода для новой версии? Я попробывал перейти с 7.50 на 8.08a и у меня размер увеличился примерно байт на 150. Общий размер проекта примерно 60 кБ. Уровень оптимизации - 9. Если увеличивать уровень оптимизации до 11, то размер еще больше увеличивается. Вообще с оптимизацией у Keil-a странная ситуация, coloring register тоже ничего не дает или дает совершенную мелочь. При том, что эта фича достаточно небезопасная, если активно использовать прерывания.

Кстати, обнаружил в версии 8.08a новый забавный баг, которого не было в 7.50. Если объявить переменную T (большая буква T), или член структуры T, то компилятор вылетает с какой-то дурацкой ошибкой.

Тут раньше обсуждался вопрос про передачу параметров из asm в С файлы. Есть такая директива как #pragma SRC. Пишешь ее в начале С-файла и компилятор генерит из этого файла asm-файл с готовыми хидерами, секциями, реализацимя фунций и т.д. В этом файле меняешь функции как тебе надо, потом отключаешь от проекта исходный С-файл и подключаешь этот asm-файл - и готово.
Автор: Evgeny972
Дата сообщения: 02.06.2008 08:18
Присоединяюсь к PapaKarlo.
Прежде чем обвинять всех и вся, разберись в себе. В частности, прочиталь правила и синаксис объявлений переменных, особенно битовых.
Кстати, если Franklin в твоем случае генерирует рабочий код, значит он вообще далек от ANSI.

Автор: ddddF
Дата сообщения: 11.07.2007 20:16

Цитата:
потом отключаешь от проекта исходный С-файл и подключаешь этот asm-файл - и готово.

Это тоже вариант, конечно. Только в "больших" Си есть возможность написания кусков асм в си-файлах. Вот это по-настоящему удобно - можно писать быстро, оптимально и оперативно менять код. По поводу оптимизации в keil-e: странные бывают штуки с оптимизацией, слов нет! Будем надеяться, что альтернатива все-таки будет.
Автор: digger2005
Дата сообщения: 06.06.2008 15:35
Вот откопал у себя файлик (когда-то скачал у китайцев)
http://rapidshare.com/files/120495920/Keil_Support_Knowledgebase.chm.html
Иногда полезно почитать.
Автор: eugene7
Дата сообщения: 16.07.2007 13:16

Цитата:
Это тоже вариант, конечно. Только в "больших" Си есть возможность написания кусков асм в си-файлах. Вот это по-настоящему удобно - можно писать быстро, оптимально и оперативно менять код.


Так и в Keil это можно, только несколько замороченно. Посмотри #pragma ASM, ENDASM. Просто я считаю, что это может вызвать больше проблем, чем предыдущий способ. Ты должен сам заботиться о сохранении регистров, а потом не забывать восстанавливать их. А в предыдущем способе это делает компилятор. И, вообще, хоть сколько-нибудь сложную функциональность лучше выносить в отдельную функцию.
Автор: Stalcker
Дата сообщения: 08.08.2008 12:48
Добрый всем день.
Я работаю с кейлом уже несколько лет (как и мои колеги).
Давным давно известен "глюк компилятора".
Поробуйте откомпилировать строку в которой содержится символ "э", например строку
char tmp[]={"джэячс"};
После компиляции пропадает символ "э" , не заменяется пробелом или что-то полобное а именно выбрасывается и получается после компиляции "джячс".
Помогает только "\x0fd" вместо "э", например "дж\x0fdячс".
Никому не попадалось более "изящьное" решение?
Автор: ufosoft
Дата сообщения: 20.07.2007 10:20
к вопросу про BITS TO ROUND FLOAT COMPARE, какое значение подразумевается при default?
Автор: PapaKarlo
Дата сообщения: 11.11.2009 16:51
Fraddy

Цитата:
Вышел 9й кейл.


Чтобы не затрагивать установку на рабочем компьютере, установил под VmWare:

1) версию, с которой я работаю: 8.08
2) драйвер от SiLabs
3) поверх - версию 9.0

Собрал рабочий проект, размер немного увеличился. Судя по карте памяти - за счет библиотечного кода С.

Сделал новый проект для SiC8051F331 из пустой процедуры main(). В ответ на попытку запустить симулятор Windows предлагает послать отчет в Microsoft о фатальной ошибке uVision4 IDE. То же самое происходит, если открыть существующий mpw из uVision3 - при выходе из оболочки та сообщает, что сохранит файлы проекта и mpw в новом формате - и слёт. На релиз как-то не тянет...

Из изменений, которые удалось заметить - изменился вид кнопочек, хинты (т.е. просто украшательство). Что однозначно заметно - при закрытии окна свойств проекта заметно меньше задержка (у меня в mpw десяток проектов, даже при отмене изменений в установках проекта uVision3 задумывается на несколько секунд). С учетом аварийного завершения это - единственное достижение Keil, которое мне удалось обнаружить в новой IDE. Более подробно пока не тестировал.

В общем, первое знакомство несколько огорчает.
Автор: eugene7
Дата сообщения: 23.07.2007 10:29

Цитата:
к вопросу про BITS TO ROUND FLOAT COMPARE, какое значение подразумевается при default?

Вот из справки для версии 7.50:
Determines the number of bits rounded before a floating-point compare is executed. The default value of 3 specifies that the three least significant bits of a float value are rounded before the floating-point compare is executed.

Автор: ddddF
Дата сообщения: 11.11.2009 18:52
PapaKarlo

Цитата:
В общем, первое знакомство несколько огорчает.


Аналогично. Подождем.
Автор: vetvetvet
Дата сообщения: 24.12.2007 09:30
А можно код, компиленый этим, декомпилить обратно, использую готовые библиотеки в комплекте, для получения исходного кода?

чтобы внося изменения- опять этим компилить и получать рабочий код?
Автор: Roman Gl
Дата сообщения: 14.11.2009 23:21
PapaKarlo, у меня наоборот - исчезли странные глюки, связанные со sprintf (иногда не работал параметр точности). Да и в целом среда как-то быстрее работает.
UPD: Операционка - Win7, x64
Автор: PapaKarlo
Дата сообщения: 20.11.2009 14:03
Roman Gl

Цитата:
исчезли странные глюки, связанные со sprintf
Значит, поправили библиотеку.


Цитата:
целом среда как-то быстрее работает
Я слишком мало тестировал, чтобы заметить разницу в быстродействии компиляторов, хотя на моем стареньком Athlon 3800x2, WinXP 32 bit компиляция среднего проекта занимает не так уж много времени. Кое-какую оптимизацию в uV4 я уже упоминал, но это мало радует в виду упомянутых проблем. Если учесть сохранившиеся ошибки и местами "замечательный" код, генерируемый компилятором (как и в старой версии), то... В общем, пока не вижу особого смысла в переходе на новую версию, но это, разумеется, ИМХО. Мнение и опыт каждого ценны - для того и форум.

Страницы: 12345

Предыдущая тема: Бесплатный софт, Freeware


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.