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

 
 
 
Reply to this topicStart new topic
> прпроблемы с HI-TECH C PRO 9.63PL2 и MPLAB IDE v8.40, фрагментированная организация программы в памяти
another_one
сообщение Mar 19 2010, 18:19
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Здравствуйте, нужна поддержка в следующей проблеме:

Задействую
Memory Summary:
Program space used 4B06h ( 19206) of 8000h bytes ( 58.6%)
Data space used C4h ( HEX File Usage Map

микроконтролера PIC18F258.

Также начиная с 7908H записываю константы(около 200).

Начились проблемы с кодом в процессе отладки когда линкер разместил код в 2-х областях(в последней назодятся константы)

т.е код разбит следующим образом:
первая область:
0000H-3FFC
вторая:
72BE-7DBC
Вектор прерывания использую тот который по умолчанию(высокий приоритет) по адерсу 000008H.


Т.к константы накладываются с кодом программа глючит(
Не пойму зачем такое разделение и как от него избавится, в коде стока нопов не ставил.


Заранее благодарен


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
DL36
сообщение Mar 20 2010, 09:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Используйте СТД, ПРО пока недоделанная версия.
Go to the top of the page
 
+Quote Post
evc
сообщение Mar 20 2010, 11:08
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Цитата(another_one @ Mar 19 2010, 21:19) *
...Также начиная с 7908H записываю константы(около 200)...


Как именно это делаете?

Недавно умудрился занять 98% памяти у 18F4550. Были и константы - массив 550. Ничего не накладывалось.
Для 18 серии, пользуюсь только Pro версиями от HI-TECH.


--------------------
УЭР
Go to the top of the page
 
+Quote Post
another_one
сообщение Mar 20 2010, 12:40
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо большое за поддержку.

Попробую поставить std, запись во flash делаю след образом:
Код
void RTF()
{unsigned char u;
unsigned int offset;
unsigned char * addip=0, * addip2=0;
    /* flash initiate */
    SRAM_pointer = (unsigned char *)RAM_pnt;
    addip2 = (unsigned char *)(RAM_pnt-2);
    addip = (unsigned char *)(RAM_pnt-1);
    *addip2 = 0x55;
    flash_write(addip2,1,(unsigned char *)(FLASH_pnt-16));
    *addip = mes;
    flash_write(addip,1,(unsigned char *)(FLASH_pnt-8)); // base flag
    switch(curt)
    {
        case 0x01:
        SRAM_pointer += 0;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+0);
        break;
        case 0x02:
        SRAM_pointer += 21;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+21);
        break;
        case 0x03:
        SRAM_pointer += 42;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+42);
        break;
        case 0x04:
        SRAM_pointer += 63;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+63);
        break;
        case 0x05:    
        SRAM_pointer += 84;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+84);
        break;
        case 0x06:
        SRAM_pointer += 105;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+105);
        break;
        case 0x07:
        SRAM_pointer += 126;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+126);
        break;    
        case 0x08:
        SRAM_pointer += 147;
        flash_write(SRAM_pointer,21,(unsigned char *)FLASH_pnt+147);
        break;
        default:
        break;
    }
    SRAM_pointer = (unsigned char *)RAM_pnt;
}

Цитата
Используйте СТД, ПРО пока недоделанная версия.

Не подскажите где тиснуть(в личку)?

Заранее благодарен


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
evc
сообщение Mar 20 2010, 13:21
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



А я до сих пор думал, что константы это такие, которые не меняются в процессе исполнения программы...
А чем Вас eeprom не устраивает?
По вопросу "где тиснуть", посмотрите в этой ветке.


--------------------
УЭР
Go to the top of the page
 
+Quote Post
another_one
сообщение Mar 20 2010, 17:18
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо за поддержку.

Константами обозвал данные которые записываю один раз при конфигурировании.

А Ипром не стал использовать вследствии меньшего количества циклов записи/чтения по сравнению со Флэш.

Скачал STD на 45 дней, но к сожалению он не хочит ничего компилить -
Error [593] C:\Program Files\HI-TECH Software\PICC-18\STD\9.51\lib\pic86l-c.lib(sbsr0.obj); 0. can't find 0x4904 words (0x4904 withtotal) for psect "text" in segment "CODE"

Сообщение отредактировал another_one - Mar 20 2010, 17:20


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
another_one
сообщение Mar 21 2010, 05:53
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



кажется я нашел решение изначальной проблемы:
http://kazus.ru/forums/showthread.php?t=6315


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
DL36
сообщение Mar 21 2010, 07:27
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(evc @ Mar 20 2010, 14:08) *
Для 18 серии, пользуюсь только Pro версиями от HI-TECH.

Новых проектов под 18е нет, а те что сделаны под стд с jacOs не собираются.
Надо думать через год полтора будет приличный компилятор.
Go to the top of the page
 
+Quote Post

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

 


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


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