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

 
 
> прпроблемы с 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
 
Start new topic
Ответов
another_one
сообщение Mar 20 2010, 12:40
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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



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

 


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


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