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

 
 
 
Reply to this topicStart new topic
> размещение в romdata PIC18
skyv
сообщение Nov 8 2011, 07:59
Сообщение #1


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

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Доброго дня.
Есть проект для PIC18, который занимает некоторую часть памяти программ.
В свободной области Flash разместил данные по фиксированному адресу:
#pragma romdata const_table = 0x7d00
const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
#pragma romdata
Я полагал, что кроме моих данных в свободной области больше ничего не будет,
но линкер после моих данных добавил еще свой код. Как избавиться от этого кода в свободной области?
Go to the top of the page
 
+Quote Post
Danis
сообщение Nov 8 2011, 08:06
Сообщение #2


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Каким компилятором пользуетесь?


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
skyv
сообщение Nov 8 2011, 08:36
Сообщение #3


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

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(Danis @ Nov 8 2011, 11:06) *
Каким компилятором пользуетесь?


MPLAB® C18 C COMPILER
Go to the top of the page
 
+Quote Post
smart_pic
сообщение Nov 9 2011, 13:21
Сообщение #4


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

Группа: Участник
Сообщений: 178
Регистрация: 18-12-10
Из: Ставрополь
Пользователь №: 61 708



Цитата(skyv @ Nov 8 2011, 10:59) *
Доброго дня.
Есть проект для PIC18, который занимает некоторую часть памяти программ.
В свободной области Flash разместил данные по фиксированному адресу:
#pragma romdata const_table = 0x7d00
const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
#pragma romdata
Я полагал, что кроме моих данных в свободной области больше ничего не будет,
но линкер после моих данных добавил еще свой код. Как избавиться от этого кода в свободной области?


В зависимости от того какой PIC ( я так полагаю вы еще хотите периодически переписывать эти данные из программы ?) тогда укажите еще одну переменнную размером в зависимости от стираемого блока памяти пика
например
#pragma romdata const_table = 0x7d00
const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const rom char rezerv[1024-10]
#pragma romdata
При том что блок стирания для PIC1897J60 равен 1024
Go to the top of the page
 
+Quote Post
skyv
сообщение Nov 9 2011, 14:46
Сообщение #5


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

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(smart_pic @ Nov 9 2011, 16:21) *
В зависимости от того какой PIC ( я так полагаю вы еще хотите периодически переписывать эти данные из программы ?) тогда укажите еще одну переменнную размером в зависимости от стираемого блока памяти пика
например
#pragma romdata const_table = 0x7d00
const rom char my_const_array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
const rom char rezerv[1024-10]
#pragma romdata
При том что блок стирания для PIC1897J60 равен 1024


Это можно рассматривать как выход из положения. А вопрос все равно остается. Почему
линкер не укладывает программный код непрерывно, начиная с младших адресов?
Почему его стратегия поменялась от моего использования памяти под данные?
Go to the top of the page
 
+Quote Post
smart_pic
сообщение Nov 9 2011, 18:40
Сообщение #6


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

Группа: Участник
Сообщений: 178
Регистрация: 18-12-10
Из: Ставрополь
Пользователь №: 61 708



Цитата(skyv @ Nov 9 2011, 17:46) *
Это можно рассматривать как выход из положения. А вопрос все равно остается. Почему
линкер не укладывает программный код непрерывно, начиная с младших адресов?
Почему его стратегия поменялась от моего использования памяти под данные?


А это уже к разработчикам компиля. В принципе хорошо не оставлять компилю места засунуть свой нос туда куда не надо, иначе вылезут глюки типа вашего.
Go to the top of the page
 
+Quote Post
skyv
сообщение Nov 10 2011, 10:55
Сообщение #7


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

Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606



Цитата(smart_pic @ Nov 9 2011, 21:40) *
......иначе вылезут глюки типа вашего.


Вы не поняли о чем шел разговор.
Go to the top of the page
 
+Quote Post
smart_pic
сообщение Nov 10 2011, 15:25
Сообщение #8


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

Группа: Участник
Сообщений: 178
Регистрация: 18-12-10
Из: Ставрополь
Пользователь №: 61 708



Цитата(skyv @ Nov 10 2011, 13:55) *
Вы не поняли о чем шел разговор.

Если вы никоим образом не используете память - то зачем смотреть , что компиль натворил.
А если эта память зарезервирована под что-то - тогда не давайте компилю лезть куда не надо.
конкретно в вашем случае: какая вам разница где компиль разместил куски кода? Как он посчитал это оптимальным - так и сделал.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:30
Рейтинг@Mail.ru


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