Bitove polia v C

Ales Povalac alpov na alpov.net
Středa Duben 4 22:26:21 CEST 2012


Jen pro zajimavost, dival jste se na disassemblovany listing kodu? Ja
si na tomhle nabil hubu, GCC 4.5.1 melo z naseho pohledu kriticky bug,
ze obcas pri zapnute optimalizaci ignorovalo volatile v header souboru
procesoru a chovalo se mi to presne takto. Po aktualizaci vse OK.
Stravil jsem nad tim loni asi dva tydny.

Ales Povalac


2012/4/4 Stano <stano.hw na gmail.com>:
> Co sa tyka periferii celkom ma "potesil" tento bug:
> Zapisem do DR (data registra SPI periferie) a nasledne citam SR (status
> register). A program sa spraval ako keby iadne vysielanie neprebiehalo,
> vobec nepockal. Stacilo vlozit maly delay a uz citanie SR vratilo korektne
> hodnoty.
> Moj osobny dohad ze je to sposobene prave tym ze periferia je na inej
> "zbernici" a teda chvilku trva kym sa po zapise zmenia data a teda to co som
> cital boli este data z periferie este predtym nez zacala vysielat. Tiez by
> ma zaujimal nazor skusenejsich ako sa podobnym problemom dobuducna raz a
> navzdy vyvarovat.
>
> Petr Labaj  wrote / napísal(a):
>
>> Odpovidam trochu se zpozdenim, byl jsem chvili mimo civilizaci.
>>
>> Prave, ze ten bin-banding je vlastnosti jadra, nikoli tech prilepku
>> od konkretnich vyrobcu. Proto bych tady takovou docela zasadni
>> zradu necekal.
>>
>> U sbernice, jedouci na nizsi frekvenci (coz je dneska u novych
>> rychlych modelu myslim skoro pravidlo) by k tomu mohlo dojit.
>> Ale u GPIO, primo povesene na sbernici AHB mi to fakt hlava nebere.
>> Predpokladam, ze "sbernice" zde neni jen to, co si pod timhle
>> pojmem predstavujeme pri pripojeni externi pameti k CPU, ale
>> ze to ma i dalsi ridici signaly, ktere umoznuji interpretovat data
>> na te sbernici odlisne (prave treba jako ten set/reset bitu).
>>
>> Kdyby se to stalo mne, tak bych aspon 10x zkontroloval, jestli
>> to nemohlo vzniknout nejakym vzorkovacim zkreslenim osciloskopu
>> nebo log. analyzatoru.
>>
>> Ale verim Vam, urcite jste to poradne zkontroloval. Proto jsem psal,
>> ze je dobre, ze jste se o podobnem problemu zminil.
>>
>> PL
>>
>> ****************************
>>
>> From: "Jan Waclawek" <konfera na efton.sk>
>> To: "HW-news" <hw-list na list.hw.cz>
>> Sent: Wednesday, April 04, 2012 6:52 PM
>> Subject: Re: Bitove polia v C
>>
>>
>> Ja sa musim opakovat: to je kvoli tomu, ze je to SoC.
>>
>> To jadro ma pevne dane rozhranie a tym je zbernica AHB; to je presne ako u
>> "konvencnych" procesorov. Pre procesor cokolvek za tou zbernicou je cierna
>> skrinka. Jedina cesta, ako sa tam da menit bit, je read-modify-write.
>> Normalne sa to robi ciste softwarovo, ale ten medzikus naviac je pomerne
>> jednoduchy a zrejme sa tym uspokoja niektori nespokojenci, najma ak boli
>> zvyknuti na "skutocne" bitove operacie u dospelych mikrokontrolerov (ano,
>> '51).
>>
>> To, ze sa da implementovat nulovanie/nastavenie bitu priamo na periferii,
>> to je zase uplne ina vec; to ma ten LPC17xx tiez (a to sa uz sprava tak ako
>> by clovek ocakaval, aj z hladiska casovania - aj ked asi ani na to nie je
>> explicitne nikde uvedena zaruka, aspon som nic take neobjavil, naopak - vid
>> v dalsom).
>>
>> Este pre tych co chcu skumat hlbsie a neboja sa toho bordelu ktory sa tam
>> schovava (a nevadi im ze su tie "dokumenty" systematicky generovane v
>> konzistencii silne rozriedenych s***iek), skuste si v tom manuali k LPC17xx
>> prestudovat kapitolu o MPU a o jednotlivych typoch pamati (Normal, Device,
>> Strongly ordered/Shareable atd.), a dajte si to do suvislosti s tym, kde su
>> tie GPIO namapovene...
>>
>> Ja viem, toto vsetko je pre 99.9% uzivatelov irelevantne pretoze nikdy ten
>> jednocip nepouziju v nejakej medznej situacii, a ja len zbytocne rypem...
>> ;-)
>>
>> wek
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list