Здравствуйте. Простая программа на Си (любая). Получаю для АТ89С2051 ошибку error L107: address space overflow. Устранить ошибку и получить нех-файл можно, если взять контроллер с бОльшим объемом памяти. При этом код программы размещается с адреса 0х800 , а по нулевому адресу стоит переход на 0х800. Далее до 0х800 пусто. Даже для программы размером несколько байт нех-файл создается размером 3 кБ.
Подскажите, как настроить проект в Keil, чтобы генерируемый код размещался с начала памяти?
Последний раз редактировалось Nijka Пт мар 29, 2024 10:15:26, всего редактировалось 1 раз.
Си для АТ89С2051?... Там и ассемблера вполне хватит. Ежли уж Си, то почитаем настройки как IDE, так и компилятора насчет минимального комплекта *. h файлов описания ресурсов МК.
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.
Цитата:
Программы начинаются со смещения 0x0800. Программы, созданные с помощью оценочного программного обеспечения, не могут быть запрограммированы в однокристальные устройства с объемом встроенного ПЗУ менее 2 Кбайт.
Искренне благодарен. Ссылка недоступна, но из текста все понятно. Помимо заявленного ограничения по размеру кода, Evaluation edition "сдвигает" код в памяти на 2кБ. Это недоразумение можно исправить известным способом. Такие подозрения были, но вводил в заблуждение старинный код на ассемблере, который компилятор почему-то располагал в памяти как и надо, с 0х0000. Вдобавок еще Proteus работал с 3-килобайтным hex-файлом для АТ89С2051, нисколько не смущаясь. Еще раз спасибо, друг!
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения