Здравствуйте. Простая программа на Си (любая). Получаю для АТ89С2051 ошибку error L107: address space overflow.
Устранить ошибку и получить нех-файл можно, если взять контроллер с бОльшим объемом памяти. При этом код программы размещается с адреса 0х800 , а по нулевому адресу стоит переход на 0х800. Далее до 0х800 пусто. Даже для программы размером несколько байт нех-файл создается размером 3 кБ.
Подскажите, как настроить проект в Keil, чтобы генерируемый код размещался с начала памяти?
Keil создает hex с адреса 0х800 (Си, АТ89С2051) [ Решено! ]
Keil создает hex с адреса 0х800 (Си, АТ89С2051) [ Решено! ]
Последний раз редактировалось Nijka Пт мар 29, 2024 10:15:26, всего редактировалось 1 раз.
- Реклама
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051)
Си для АТ89С2051?...
Там и ассемблера вполне хватит.
Ежли уж Си, то почитаем настройки как IDE, так и компилятора насчет минимального комплекта *. h файлов описания ресурсов МК.

Там и ассемблера вполне хватит.
Ежли уж Си, то почитаем настройки как IDE, так и компилятора насчет минимального комплекта *. h файлов описания ресурсов МК.
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051)
[uquote="BOB51",url="/forum/viewtopic.php?p=4561046#p4561046"]... почитаем настройки как IDE, так и компилятора насчет минимального комплекта *. h файлов описания ресурсов МК.[/uquote]
Спасибо за быстрый отклик. Судя по Вашему ответу, причину моей проблемы Вы знаете. Был бы признателен за ссылку или более конкретную информацию.
Спасибо за быстрый отклик. Судя по Вашему ответу, причину моей проблемы Вы знаете. Был бы признателен за ссылку или более конкретную информацию.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1906
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051)
Keil -> development development tools without a current product license run as a Lite/Evaluation edition and have the following restrictions.
C51 Evaluation Tools
...
Programs start at offset 0x0800. Programs generated with the evaluation software may not be programmed into single-chip devices with less than 2 Kbytes of on-chip ROM.
https://www2.keil.com/limitsПрограммы начинаются со смещения 0x0800. Программы, созданные с помощью оценочного программного обеспечения, не могут быть запрограммированы в однокристальные устройства с объемом встроенного ПЗУ менее 2 Кбайт.
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051)
[uquote="veso74",url="/forum/viewtopic.php?p=4561125#p4561125"]https://www2.keil.com/limits[/uquote]
Искренне благодарен. Ссылка недоступна, но из текста все понятно.
Помимо заявленного ограничения по размеру кода, Evaluation edition "сдвигает" код в памяти на 2кБ. Это недоразумение можно исправить известным способом. Такие подозрения были, но вводил в заблуждение старинный код на ассемблере, который компилятор почему-то располагал в памяти как и надо, с 0х0000. Вдобавок еще Proteus работал с 3-килобайтным hex-файлом для АТ89С2051, нисколько не смущаясь.
Еще раз спасибо, друг!
Искренне благодарен. Ссылка недоступна, но из текста все понятно.
Помимо заявленного ограничения по размеру кода, Evaluation edition "сдвигает" код в памяти на 2кБ. Это недоразумение можно исправить известным способом. Такие подозрения были, но вводил в заблуждение старинный код на ассемблере, который компилятор почему-то располагал в памяти как и надо, с 0х0000. Вдобавок еще Proteus работал с 3-килобайтным hex-файлом для АТ89С2051, нисколько не смущаясь.
Еще раз спасибо, друг!
- Реклама
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051) [ Решено
Как вариант альтернативы кейлу относительно MCS51
https://sunduk.radiokot.ru/view/?id=1690871999
и SDCC
https://sunduk.radiokot.ru/view/?id=1690872411
Относительно ассемблера можно и атмелевским c51asm пользоваться - отличная штука.

https://sunduk.radiokot.ru/view/?id=1690871999
и SDCC
https://sunduk.radiokot.ru/view/?id=1690872411
Относительно ассемблера можно и атмелевским c51asm пользоваться - отличная штука.
Re: Keil создает hex с адреса 0х800 (Си, АТ89С2051) [ Решено
Крякнутый или зарегестрированный Keil создает hex с адреса 0х000


