Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
X86-базируемая платформа. Float-point без сопроцессора.
Отправлено
ДМ
14 июня 2007 г. 14:59
Имеется устройство на безе PC-совместимого микроконтроллера. Интереса ради вскрыл прибор и увидел там чип R8822. В Интернете нашёл на него документацию. Фирма производитель RDC Semiconductor Co. Это устройство программируется на старом добром Turbo C Version 2.01 Copyright © 1987, 1988 Borland Inernational. Линковщик Turbo link Version 2.0 Всё хорошо работало до тех пор, пока на возникла нужда работать с числами с плавающей точкой. Линковщик выдаёт ругань. Порылся в Интернете и нашёл информацию, что причина в том, что нет сопроцессора. Много лет назад в таких случаях использовали специальную библиотеку EMU.LIB. Однако мне так не удалось найти эту библиотеку. Шансы найти такую библиотеку именно для этого линкера ещё меньше. Более того, эта библиотека ещё вероятно, сожрёт не мало памяти. В моём устройстве, по современным меркам, её и так очень мало, всего лишь 64к. Есть ещё запасной вариант – написать свою функцию умножения и сложения чисел с плавающей точкой. Если у кого-нибудь есть исходники на Си, то не откажите в любезности.
Спасибо!
Составить ответ
|
Вернуться на конференцию
Ответы
Только что запусти Turbo C 2.0. Options => Compiler => Code Generation => Floating point => здесь варианты: None, Emulation и 8087/80287
—
Mik174
(14.06.2007 21:27:58
85.140.53.92
,
пустое
)
Ответ: И как это сделать, если он запускается с командной строки?
—
ДМ
(14.06.2007 22:16:20
85.172.24.23
,
пустое
)
Если программа работает с ПЗУ, то эмулировать нельзя - там код самомодифицируемый.
—
Vladimir Ljaschko
(14.06.2007 15:32:7
194.158.204.49
,
пустое
)
откуда информация?
—
koyodza
(14.06.2007 15:36:11
195.214.197.203
, 46 байт)
От одного дотошного немца (+)
—
Vladimir Ljaschko
(14.06.2007 15:42:49
194.158.204.49
, 308 байт)
Подтверждаю. Хотя возможно, что самомодификация включается только при наличии сопроцессора.
—
vmp
(14.06.2007 16:19:39
87.245.155.196
, 286 байт)
Очевидно вызывается прерывание по ошибке сопроцессора и BIOS корректно обрабатывает? (-)
—
misyachniy
(14.06.2007 16:14:5
212.90.165.14
,
пустое
)
либа есть, но думаю что прблема не в ней.
—
?
(14.06.2007 15:22:5
85.195.119.14
,
пустое
,
ссылка
)
fixed point math
—
++
(14.06.2007 15:20:3
212.45.31.226
,
пустое
,
ссылка
)
Прекрасно программируйте в BC 3.1 Там можно галку влепить, чтобы плавучка реализовывалась через эмуляцию. Впрочем я думаю в в вашем Turbo такие установки есть.
—
Elektronik
(14.06.2007 15:17:33
194.85.99.225
,
пустое
)
Ответ: Где бы его ещё скачать - этот BC 3.1
—
ДМ
(14.06.2007 16:54:46
62.183.7.10
,
пустое
)
У меня есть. Пожал в архив - получилось 3,5 метра. Интересует?
—
maik-vs
(14.06.2007 17:37:48
83.239.75.133
,
пустое
)
Ответ: Ещё как интересует! Закиньте, пожалуйста на какой-нибудь файл хостинг. например на тот же slil.ru Спасибо!
—
ДМ
(14.06.2007 22:05:8
85.172.24.23
, 95 байт)
да, точно в ТС 2.0 такое было. Вечером дома посмотрю, если не забуду
—
koyodza
(14.06.2007 15:21:47
195.214.197.203
, 37 байт)
Ответ: В паке компилятора я нашёл библиотеку emu.lib
—
ДМ
(14.06.2007 16:48:1
62.183.7.10
, 315 байт)
Ответ: Есть у него ключ -f * Floating point emulator. Несколько смущает символ *. Чтобы это значило?
—
ДМ
(14.06.2007 15:54:7
85.172.25.204
, 64 байт)
Ответ: Мне обязательно нужно, чтобы в итоге получился *.com файл.
—
ДМ
(14.06.2007 15:45:13
85.172.25.204
, 287 байт)
Если что, у меня есть утилита для EXE
—
Vladimir Ljaschko
(14.06.2007 15:59:56
194.158.204.49
,
пустое
)
Ответ: А что это за утилита? В мою железяку загружается файл с расширением *.ap
—
ДМ
(14.06.2007 16:06:47
85.172.25.204
,
пустое
)
Она сегменты памяти нужные подставляет, ну и создает бин. Я сразу ЕПРОМ программировал, с форматом загрузки не попаду.
—
Vladimir Ljaschko
(14.06.2007 16:12:28
194.158.204.49
,
пустое
)
Ответ:
—
koyodza
(14.06.2007 15:54:31
195.214.197.203
, 45 байт)
Во всяком случае в BC31 файл emu.lib есть в каталоге lib
—
Elektronik
(14.06.2007 15:18:48
194.85.99.225
,
пустое
)
имхо не менее 75% случаев применения плавучки можно оправдать только ленью
—
koyodza
(14.06.2007 15:08:27
195.214.197.203
,
пустое
)
Да вообще все прекрасно можно сделать на одноразрядных процессорах, могущих выполнять И и НЕ:-) ПЗ же намного удобнее, как только чут-чуть арифметики появляется. Кому нужна лишняя морока на целых числах?
—
-=ВН=-
(14.06.2007 15:36:48
217.23.20.86
,
пустое
)
мне попадались кадры, которые цикл for на плавучке мутили
—
koyodza
(14.06.2007 15:52:52
195.214.197.203
, 161 байт)
Дык ничего особо криминального нет даже в этом:-) Только бы компилятор не ругался на флоат перемнные цикла и программист понимал представление флоат. Второе условие конечно невыполнимо, т.к. в массе программисты понять ничего не способны и должны быть уничтожены. Вот Вам пример целочисленный с 16-ти разрядным интом: for(short i=0;i<=32767;i++) :-))
—
-=ВН=-
(14.06.2007 16:10:8
217.23.20.86
,
пустое
)
Ваш пример легко оптимизируется в for(;;) или в while(TRUE)
—
koyodza
(14.06.2007 16:18:33
195.214.197.203
,
пустое
)
Да что Вы говорите?!:-))) Вообще-то писатель этого примера хотел, чтобы цикл выполнился 32768 раз, а совсем не бесконечно. :-)) И приведен он как пример глупости, встречающейся на таком вот ровном месте . Неоптимизируемой глупости.
—
-=ВН=-
(14.06.2007 17:13:17
193.125.71.140
,
пустое
)
я тоже хочу красный галстук, барабан и щенка бульдога (с) Гоблин
—
koyodza
(14.06.2007 17:21:39
195.214.197.203
,
пустое
)
Ну так и взяли бы давно:-))
—
-=ВН=-
(14.06.2007 17:32:4
193.125.71.140
,
пустое
)
while(1) -- меньше буков.
—
32768
(14.06.2007 17:02:42
193.254.218.177
,
пустое
)
for(;;) еще на одну меньше
—
koyodza
(14.06.2007 17:06:16
195.214.197.203
,
пустое
)
Ответ: Это не лень, а жадность с хитростью. Попытка обмантуть SCADA-систему.
—
ДМ
(14.06.2007 15:25:20
85.172.25.204
, 411 байт)
Не надо экстравагантностей. Обычно гибрид 16 и 32 фиксед дает SNR лучше, чем у флоат32.
—
SM
(14.06.2007 15:30:32
85.21.237.237
,
пустое
)
Ответ: А мне предстоит реализация преобразования float16 во float32 IEEE-754
—
ДМ
(14.06.2007 15:39:29
85.172.25.204
, 173 байт)
И зачем тут какие-то флоат-либы? Там наверняка несколько масок да сдвигов.
—
SM
(14.06.2007 15:43:52
85.21.237.237
,
пустое
)
Ответ: Именно так. И день работы.
—
ДМ
(14.06.2007 16:46:43
62.183.7.10
,
пустое
)
Я бы дал процентов 90. Только hi-end аудио, да сложная математика с научными рассчетами.
—
SM
(14.06.2007 15:10:48
85.21.237.237
,
пустое
)
я вначале написал 90, но потом поправил на 75
—
koyodza
(14.06.2007 15:13:54
195.214.197.203
,
пустое
)
из политкорректности ;=)
—
koyodza
(14.06.2007 15:25:28
195.214.197.203
,
пустое
)
hi end audio это к винилу, на кой там плавучка ? А насчет лени верно подмечено.
—
DASM
(14.06.2007 15:12:26
212.58.192.14
,
пустое
)
Студийная аппаратура нынче не аналоговая.
—
SM
(14.06.2007 15:14:28
85.21.237.237
,
пустое
)
уже лет 20 так точно
—
koyodza
(14.06.2007 15:15:42
195.214.197.203
,
пустое
)
фтопку :-( Надо на концерты ходить живые
—
DASM
(14.06.2007 15:15:12
212.58.192.14
,
пустое
)
разве что в оперу. Или народную песню ;=)
—
koyodza
(14.06.2007 15:17:14
195.214.197.203
, 77 байт)
какая там цифра если без фанеры ? Только ревербераторы.
—
DASM
(14.06.2007 15:17:56
212.58.192.14
,
пустое
)
ревер тоже бывает аналоговый: пружинный или на магнитной ленте ;=Р
—
koyodza
(14.06.2007 15:23:51
195.214.197.203
,
пустое
)
угу, видел пружинный
—
DASM
(14.06.2007 15:26:49
212.58.192.14
,
пустое
)
Где вообще без микрофонов и электроники? Найди такой.
—
SM
(14.06.2007 15:16:30
85.21.237.237
,
пустое
)
Фины которые Loituma, ну та финская песенка которая всем съела моск :) дык там вообще без музыкальных инструментов обошлись :) Правда на записи микрофоны есть. См. внутри с ю-тьюб.
—
rezident
(14.06.2007 16:39:48
195.222.149.11
, 303 байт)
ну если без ревера, то тракт там аналоговый полностью
—
DASM
(14.06.2007 15:17:10
212.58.192.14
,
пустое
)
ну это только в сельских клубах ;=)
—
koyodza
(14.06.2007 15:18:26
195.214.197.203
,
пустое
)
куда уж нам то вас уж. какой-то вшивый СКК в Питере
—
DASM
(14.06.2007 15:19:42
212.58.192.14
,
пустое
)
Там один акустический эхозаградитель чего стоит.
—
SM
(14.06.2007 15:18:4
85.21.237.237
,
пустое
)
куда-то не туда ты ходишь. В небольших залах его не пользуют
—
DASM
(14.06.2007 15:18:53
212.58.192.14
,
пустое
)
Ну хорошо - хотя бы блок эффектов для электрогитары - тоже думаешь, что до сих пор полностью аналоговый?
—
SM
(14.06.2007 15:20:50
85.21.237.237
,
пустое
)
не знаю кого ты слушаешь, у нас пели под живую гитару без всяких блоков и эффектов
—
DASM
(14.06.2007 15:21:41
212.58.192.14
,
пустое
)
И сейчас поют. В поход если в хорошей компании сходить.
—
SM
(14.06.2007 15:23:22
85.21.237.237
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 90:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru