KEIL C pro C51 - konstanty

Tomáš Pípal dargos@seznam.cz
Neděle Duben 6 03:08:36 CEST 2008


Nemel by byt.
Jenom jsem nastinoval mozny problem, behem zapisu muze dojit k vypadku 
napajeni nebo k nejakemu ruseni a data programu by se mohla znicit.
Pote by bylo potreba mcu znovu preprogramovat. Z tohodle duvodu maji tu 
ochranu posledni stranky, aby se chybou programu nemohl prepsat 
bootloader, ktery se obvykle dava prave do posledni stranky
Pokud se spatne zapisou konstanty je mozne je snadno znovu preposlat do 
mcu ale s opravou programu to nepujde tak snadno.

Va_Sm napsal(a):
> Ale ulozeni konstant mimo spolecnou stranku(programu a konstant) problem 
> neni?
>
> Tomáš Pípal napsal(a):
>   
>> Z hlediska bezpecnosti programu bych se radsi vyhnul kombinovani 
>> konstant a kodu v jedne strance, celkem snadno by mohlo dojit k 
>> poskozeni programu, behem zapisovani novych konstant.
>>
>> pyrin napsal(a):
>>   
>>     
>>> Pak bych si asi u Silabse vyhradil jednu stránku na takovéto proměnné a cpal 
>>> bych tam vše. To jest nadeklaroval bych to na XRAM a tam si to vše připravil 
>>> a potom najednou zapsal do FLASH. Samozřejmě absolutně. Pokud bych dělal 
>>> změnu, tak bych si celou stránku nacpal opět do XRAM a provedl změnu a 
>>> zazálohoval do FLASH. Z té FLASH bych to třeba každou sekundu kopíroval do 
>>> XRAM a ve výpočtech pracoval jen s XRAM.
>>> pyrin
>>>
>>> ----- Original Message ----- 
>>> From: "Va_Sm" <spiritusII@seznam.cz>
>>> To: "HW-news" <hw-list@list.hw.cz>
>>> Sent: Saturday, April 05, 2008 1:13 PM
>>> Subject: Re: KEIL C pro C51 - konstanty
>>>
>>>
>>> Obavam se, ze pouzivany C8951F340 nedisponuje zadnou interni eeprom
>>> (pripojeni nejake ext, i2c pameti, jiz neprichazi v uvahu). Myslim tedy,
>>> ze se ulozeni konstant do kodove casti nevyhnu.
>>> V. Smidl
>>> pyrin napsal(a):
>>>   
>>>     
>>>       
>>>> Ale dát kalibrační konstanty a sériové číslo do code asi není 
>>>> nejšťastnější
>>>> ? Tedy pokud děláte JEDEN kus. Pokud jich je tisíc, tak to řešíme tak, že 
>>>> to
>>>> cpeme do EEPROM. Lépěji se to pak kalibruje a hlavně i sériové číslo a
>>>> identifikaci mohu měnit kdykoliv potřebuju. Samozřejmostí je, že to vše je
>>>> na absolutních adresách, aby se mi to pokaždý nenalinkovalo jinam. Tedy
>>>> takto to používám u 89C51ED2. MImochodem, znáte někdo nějakou zajímavou 
>>>> cenu
>>>> na AT89C51ED2-SLSUM ? (na 1000ks).
>>>> pyrin
>>>>
>>>> ----- Original Message ----- 
>>>> From: "Va_Sm" <spiritusII@seznam.cz>
>>>> To: "HW-news" <hw-list@list.hw.cz>
>>>> Sent: Saturday, April 05, 2008 9:04 AM
>>>> Subject: Re: KEIL C pro C51 - konstanty
>>>>
>>>>
>>>> Ano resim podobny problem. Mam nekolik kalibracnich konstant, parametry
>>>> zarizeni a text(seriova cisla). Tento seznam by mel byt uveden v h
>>>> souboru. Prave sem myslel, ze by bylo dobre tyto konstanty zadefinovat
>>>> na konkretni mista do kodoveho segmentu, kde by mohla byt pozdeji
>>>> programove menena (prikazy po ser. lince).
>>>>    Pravdepodobne to vyresim definici promennych nekam do RAM a pak kus
>>>> teto oblasti v RAM nakopiruji do kodove flash, odkud je podu cist
>>>> popripade modifiovat.
>>>>
>>>> V. Smidl
>>>> Milan napsal(a):
>>>>
>>>>     
>>>>       
>>>>         
>>>>> Tak to som niekedy riesil /cislo verzie/ a nie moc uspesne.
>>>>> Asi jedina cesta je umiestnit konstantu v samostatnej zdrojovke a 
>>>>> linkeru
>>>>> definovat umiestnenie celeho bloku:
>>>>>
>>>>> Priklad v subore *.lin:
>>>>> BankArea(0x8000,0xFFFF) Rtx51Tiny REGFILE (.\Pult_LCD.ORC)
>>>>> NOOVERLAY
>>>>> RAMSIZE(256)
>>>>> CODE
>>>>> (
>>>>>  0X1100-0X7FFF,
>>>>>  ?CO?LANGUAGE(0x6000),
>>>>>  ?CO*MENUMACH(0x7800)
>>>>> )
>>>>> BANK3
>>>>> (
>>>>>  ?CO?TEXTS(0x8000),
>>>>>  ?PR*LANGUAGE
>>>>> )
>>>>> XDATA
>>>>> (
>>>>>  0X0000-0X1FFF,
>>>>>  ?RTX?TASK_STACK_XRAM?S(0x0000)
>>>>> )
>>>>>
>>>>> Milan
>>>>>
>>>>>
>>>>> ----- Original Message ----- 
>>>>> From: "Va_Sm" <spiritusII@seznam.cz>
>>>>> To: "konference" <hw-list@list.hw.cz>
>>>>> Sent: Thursday, April 03, 2008 11:26 PM
>>>>> Subject: KEIL C pro C51 - konstanty
>>>>>
>>>>>
>>>>> Zdravim,
>>>>> potrebval bych poradit, jakym zpusobem zapsat v C komplatoru Keil
>>>>> nasleduji vec.Je mozne deklarovat konstantu na konkretni misto v kodove
>>>>> pameti? Neco jako: code const  int =  0x1234, ale aby hodnota 0x1234
>>>>> byla ulozena na konkretni adresu napr. 4000h.
>>>>>
>>>>>
>>>>>         
>>>>>           
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>   




Další informace o konferenci Hw-list