реклама на сайте
подробности

 
 
> настройка BL51 keil uvision4 для 8051, необходимо поместить библиотеку C51L.LIB в нужную область памяти
Димитрий
сообщение Apr 10 2013, 10:02
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 184
Регистрация: 21-03-06
Из: Нижний Новгород
Пользователь №: 15 435



сосбтвенно проблема возникла как всегда когда требется сделать ботлоадер
свои функции я указал линкеру чтобы он положил в нужную облать так
CODE

CODE( 0X0000-0XFBFF,
?CO?CE41a01_CE (0xC00),
?PR?_RENEWSTART?RENEW_STATIC(0xFC00),
?PR?RD_AT25_RNW?RENEW_STATIC,
?PR?MEMCPY_RX_RNW?RENEW_STATIC,
?PR?READ_STATUS_RNW?RENEW_STATIC,
?PR?ENABLE_FLASH_WRITE?RENEW_STATIC,
?PR?DISABLE_FLASH_WRITE?RENEW_STATIC
)
XDATA( 0X0500-0X10FF )
PDATA( 0x200 )

но функции эти обращаются к библиотечным
типа
?С??C?IILDX
?C?LLDXDATA
и т.д.
которые расположены в библиотеке
C51L.LIB

Собственно вопрос в том как мне объяснить линкеру чтобы
он либу C51L.LIB положил в самы верх памяти по тому месту что я ему скажу?

Нашел у кейла вот такое
http://www.keil.com/support/man/docs/bl51/bl51_code.htm
из ихнего примера
BL51 MYPROG.OBJ CODE(0 - 0x3FFF, 0x8000 - 0xFFFF)
мне бы примерно тоже самое вот так написать
BL51 C51L.LIB CODE(0xFC00 - 0xFFFF)
но какой синтаксис и где писать не пойму.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Димитрий
сообщение Apr 12 2013, 05:19
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 184
Регистрация: 21-03-06
Из: Нижний Новгород
Пользователь №: 15 435



здравствуйте.

вот версия моего IDE
http://gyazo.com/32a5fa87385796b9ef4cb6194093bafb

прикрепил тестовый проект максимально приближенный к реальному. разница тольк
в том что этот проект занимает 1к кода мой занимает 53к кода

смотрю м51 файл
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE FC00H 0027H UNIT ?PR?RENEWSTART?RENEW_STATIC

здесь все ок лежит там где и должна лежать как и указано в файле линкера linker.lin
а вот где лежат библиотечные функции из библиотеке C51L.LIB
* * * * * * * C O D E M E M O R Y * * * * * * *
------- MODULE ?C?ILDIX
C:008FH PUBLIC ?C?ILDIX
------- ENDMOD ?C?ILDIX

мне нужно чтобы линкер положил их например так
------- MODULE ?C?ILDIX
C:FE00H PUBLIC ?C?ILDIX
------- ENDMOD ?C?ILDIX

требуется чтобы при этом все остальные функции проекта (в данном случае main) должны лежать там ниже 0xFC00

как выполнить этого требования до сих пор не нашел, тех поддержка молчит...



написал
данный вопрос,
начал расматривать предметно что в м51
наткнулся на ?C?LIB_CODE
поместил его в линкере

Код
PRINT(".\out\lst\test.m51") RAMSIZE(256)
CODE( 0X0000-0XFBFF,
      ?CO?CE41a01_CE (0xC00),
      ?PR?RENEWSTART?RENEW_STATIC(0xFC00),
      ?C?LIB_CODE
)
XDATA( 0X0500-0X10FF )
PDATA( 0x200 )


и о чудо произвошло, библеотека тутже встала на свое законное мето.

Прикрепленные файлы
Прикрепленный файл  bootloader.zip ( 13.21 килобайт ) Кол-во скачиваний: 41
 
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 15:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016