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

 
 
> PIC24F реальный размер const во флеше.
YAM
сообщение Feb 14 2008, 17:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Имеем PIC24F, MPLAB + C30
Я правильно понял, что
массив из const char mass[10]; реально займет 15 байт флэша,
массив из const int mass[10]; реально займет 30 байт флэша,
массив из const long mass[10]; реально займет 60 байт флэша?
Т.е. реально теряем один из трёх байт при упаковке констант?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Diz
сообщение Feb 15 2008, 10:40
Сообщение #2


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

Группа: Участник
Сообщений: 84
Регистрация: 1-08-06
Пользователь №: 19 250



Да, насчет упаковки просто байтового массива я был неправ - в любом случае располагается
по двум младшим байтам.

Попадание в __AddressError будет, скажем, вот на таком примере (вместо rs232_tx
подставить нужную функцию по вкусу) :

Код
    typedef struct
    {
        uint a  __attribute__ ((packed));
        uchar b[3] __attribute__ ((packed));
        uint c[4] __attribute__ ((packed));
    } example_struct_t;

    const example_struct_t exStruct = { 1, {2, 3, 4}, {6, 7, 8, 9} };

    const uint * cPtr;

    cPtr = exStruct.c;

    for ( uint i= 0; i< 4; i++)
    {
        rs232_tx_hex_uint( *cPtr++);
    }

//

14579                      .section    .const,psv
14580                         .align    2
14581                     _exStruct.3984:
14582 0000 01 00               .word    1
14583 0002 02                  .byte 2
14584 0003 03                  .byte 3
14585 0004 04                  .byte 4
14586 0005 06 00               .word    6
14587 0007 07 00               .word    7
14588 0009 08 00               .word    8
14589 000b 09 00               .word    9

//

14638 000008  58 00 20         mov    #_exStruct.3984+5,w8
14639 00000a  D9 00 20         mov    #_exStruct.3984+13,w9
14640                  .L2:
14660 00000c  38 00 78         mov    [w8++],w0
14661 00000e  00 00 07         rcall    ___rs232_tx_hex_uint
14663 000010  89 0F 54         sub    w8,w9,[w15]
14664                      .set ___BP___,75
14665 000012  00 00 3A         bra    nz,.L2


Сообщение отредактировал Diz - Feb 15 2008, 10:42
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- YAM   PIC24F реальный размер const во флеше.   Feb 14 2008, 17:21
- - Alex B._   Цитата(YAM @ Feb 14 2008, 20:21) Т.е. реа...   Feb 14 2008, 21:10
- - Diz   Плюс есть некоторые тонкости с упаковкой структур ...   Feb 14 2008, 21:34
|- - Alex B._   Цитата(Diz @ Feb 15 2008, 00:34) Плюс ест...   Feb 15 2008, 08:20
- - YAM   Понятно, спасибо... Судя по всему IAR вообще не за...   Feb 15 2008, 08:06
- - YAM   Не, у вас doo в ОЗУ... Для IAR: <PRE> typede...   Feb 15 2008, 08:54
|- - Alex B._   Цитата(Diz @ Feb 15 2008, 13:40) Попадани...   Feb 15 2008, 11:04
- - Diz   Попутно обнаружился забавный глюк: Кодtypedef str...   Feb 15 2008, 12:15
|- - Alex B._   Цитата(Diz @ Feb 15 2008, 15:15) Попутно ...   Feb 15 2008, 17:13
- - Diz   Должна быть 3.02 - точно смогу сказать в понедельн...   Feb 15 2008, 19:39
- - Diz   Да, 3.02: pic30-coff-gcc.exe (GCC) 4.0.3 (dsPIC30...   Feb 18 2008, 10:38
|- - Alex B._   Цитата(Diz @ Feb 18 2008, 13:38) Да, 3.02...   Feb 18 2008, 20:17
- - Diz   Спасибо за инфу. Недавно в 3.02 попался еще один...   Feb 19 2008, 07:31
|- - Alex B._   Цитата(Diz @ Feb 19 2008, 10:31) Если пол...   Feb 19 2008, 07:42
- - Diz   Воссоздать - убрать весь лишний мусор и оставить б...   Feb 19 2008, 11:18


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

 


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


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