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

 
 
 
Closed TopicStart new topic
> настройка 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
Палыч
сообщение Apr 11 2013, 10:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Димитрий @ Apr 10 2013, 14:02) *
мне бы примерно тоже самое вот так написать
BL51 C51L.LIB CODE(0xFC00 - 0xFFFF)
но какой синтаксис и где писать не пойму.

Menu -> Progect-> Options for target -> BL51 Locate
Галку "Use memory layout..." - убрать
В "Code Range" задать: 0xFC00 - 0xFFFF

В "Linker code string" контролировать появление CODE(0xFC00 - 0xFFFF)
Go to the top of the page
 
+Quote Post
Димитрий
сообщение Apr 11 2013, 14:43
Сообщение #3


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

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



Цитата(Палыч @ Apr 11 2013, 14:09) *
....
В "Linker code string" контролировать появление CODE(0xFC00 - 0xFFFF)

строка появилась при коплиятор при линковке весь код пытается
уместить в этот диапазон адресов. а мне нужно только библиотеку C51L.LIB поместиь туда.
Вот в чем проблема. а основной код программы должен остаться на месте т.е. от 0 до 0xFC00
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 11 2013, 16:37
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Посмотрите в map-файле, под каким именем линкер складывает области
Пропишите в скаттере эту область в нужное место
Go to the top of the page
 
+Quote Post
Димитрий
сообщение Apr 12 2013, 05:19
Сообщение #5


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

Группа: Свой
Сообщений: 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 Текстовая версия Сейчас: 24th June 2025 - 18:26
Рейтинг@Mail.ru


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