Отговори на тема  [ 10 мнения ] 
чек сума на програмната памет на PIC24 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение чек сума на програмната памет на PIC24
Здравейте,

Накой може ли да подхвърли сламка как да направя четене на байт по байт (word ) и просто да ги сумирам. Така да проверявам дали програмната памет е бъгната. Сумата ще се съхранява външно от проца.

За PIC18 съм го правил но за P24 няма прагма и т.н......

#pragma romdata PROG_END
const unsigned int ROM_END = 0x55AA;
#pragma romdata
//
#pragma romdata PROG_Start
const unsigned int ROM_BEGIN = 0x55AA;
#pragma romdata

ROMPtr=&ROM_BEGIN; //Clear ROM pointer
ROMSum=0; //Clear ROM sum accumulator
do
{ROMSum+=*ROMPtr; //Accumulate ROM sum
ROMPtr=ROMPtr+1;}
while(ROMPtr!=&ROM_END); //If end of ROM area


Чет Окт 12, 2023 2:08 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: чек сума на програмната памет на PIC24
__builtin_tblrdl()
__builtin_tblrdh()

TBLRDL, TBLRDH

_________________
main[-1u]={1};


Чет Окт 12, 2023 2:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение Re: чек сума на програмната памет на PIC24
Да видях
__builtin_tblrdl

Issues the tblrdl.w instruction to read a word from Flash or EEDATA
memory. You must set up the TBLPAG to point to the appropriate page.
To do this, you may make use of __builtin_tbloffset()
and__builtin_tblpage().
Please refer to the data sheet or “dsPIC30F Family Reference Manual”
(DS70046) for complete details regarding reading and writing program
Flash.

Обаче не мога да схвана офсета и tblpage -> на мен ми трябва prog_start / prog_end


Чет Окт 12, 2023 2:42 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: чек сума на програмната памет на PIC24
с указател можеш да прочетеш само първите 32к от флаша
иначе tblpage сочи старшия word от адреса

_________________
main[-1u]={1};


Чет Окт 12, 2023 2:51 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение Re: чек сума на програмната памет на PIC24
TBLPAG=0;
addrOffset = (0x200);

do
{
ROMSum=ROMSum+__builtin_tblrdl(addrOffset); // contains lower word data from 24 bits word
if (addrOffset==0xFFFF) {TBLPAG=1;addrOffset=0;}else{addrOffset++;}

}while((addrOffset<0x57F0)||(TBLPAG==0));

Това ли е което трябва да направя за да чета флаша 0x200 до 0x157f0
Става въпрос за PIC24FJ128GA006


Последна промяна Edesign на Чет Окт 12, 2023 3:36 pm, променена общо 3 пъти



Чет Окт 12, 2023 3:20 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: чек сума на програмната памет на PIC24
https://microchipdeveloper.com/local--f ... xample.svg

_________________
main[-1u]={1};


Чет Окт 12, 2023 3:26 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение Re: чек сума на програмната памет на PIC24
TheWizard моля те погледни в предния ми пост. Правилно ли съм рабрал ?


Чет Окт 12, 2023 3:33 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: чек сума на програмната памет на PIC24
в момента нямам XC16 да симулирам - пиша по памет

_________________
main[-1u]={1};


Чет Окт 12, 2023 3:41 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Авг 31, 2005 1:57 pm
Мнения: 1103
Мнение Re: чек сума на програмната памет на PIC24
Да така е проверих на симлуатора. Само че трябва да е addrOffset+=2
Благодаря TheWizard


Чет Окт 12, 2023 3:44 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение Re: чек сума на програмната памет на PIC24
Така съм го бил направил за PIC16:

Код:
u32 bcc32_flash()
{
  u8 fw[128];
  u8 x, y, z;
  u32 addr = 0;
 
  union
    {
      u16 bcc[2];
      u32 fw;
    } bcc32;
   
  bcc32.fw = 0xFFFFFFFF;
 
  for(z = 0; z < 2; z++)
    {
      for(x = 0; x < 32; x++)
        {
          for(y = 0; y < sizeof(fw); y++)
            {
              addr += y;
              fw[y] = FLASH_Read(addr);
            }
          bcc32.bcc[z] = crc16_zvo(fw, sizeof(fw), bcc32.bcc[z]);
        }
  }

  return bcc32.fw;
}


Сря Окт 18, 2023 8:00 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 10 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни