| Автор |
Съобщение |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 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 |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: чек сума на програмната памет на PIC24
__builtin_tblrdl() __builtin_tblrdh()
TBLRDL, TBLRDH
_________________ main[-1u]={1};
|
| Чет Окт 12, 2023 2:33 pm |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 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 |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: чек сума на програмната памет на PIC24
с указател можеш да прочетеш само първите 32к от флаша иначе tblpage сочи старшия word от адреса
_________________ main[-1u]={1};
|
| Чет Окт 12, 2023 2:51 pm |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 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 |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: чек сума на програмната памет на PIC24
_________________ main[-1u]={1};
|
| Чет Окт 12, 2023 3:26 pm |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
 Re: чек сума на програмната памет на PIC24
TheWizard моля те погледни в предния ми пост. Правилно ли съм рабрал ?
|
| Чет Окт 12, 2023 3:33 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: чек сума на програмната памет на PIC24
в момента нямам XC16 да симулирам - пиша по памет
_________________ main[-1u]={1};
|
| Чет Окт 12, 2023 3:41 pm |
|
 |
|
Edesign
Ранг: Форумен бог
Регистриран на: Сря Авг 31, 2005 1:57 pm Мнения: 1103
|
 Re: чек сума на програмната памет на PIC24
Да така е проверих на симлуатора. Само че трябва да е addrOffset+=2 Благодаря TheWizard
|
| Чет Окт 12, 2023 3:44 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
 Re: чек сума на програмната памет на PIC24
Така съм го бил направил за PIC16:
|
| Сря Окт 18, 2023 8:00 pm |
|
|