Nauka C - co radzicie ?

Rafal schrieb:

#define 0 7 #define 1 0 #define 4 2

jeszcze lepsze

Waldek

Reply to
Waldemar Krzok
Loading thread data ...

Witamy w krainie preprocesora ;)

Jezyk C, zreszta jak wiekszosc innych jezykow wyskiego poziomu, nie wprowadza doatkowych rozszezen ze wzgledu na archtekture. Tak wiec C jest "takie same" na DSP czy x86

DSP TI nie posiada przestrzeni I/O czyli dostep do rejestru wyglada tak samo : #define MY_REG_ADDR (0x12345678)

*(* MY_REG_ADDR) = 0x12345678;

lub opakowanie w funkcje/metode.

Biorac to pod uwage oraz "przemyslenia" zponizszych postow dziwi mnie brak konkluzji pt. Kod nalezy pisac w sposob w miare prosty i czytelny bo :

  1. Autor nie jest jedynym jego uzytkownikiem
  2. Pamiec autora jest zawodna itp.
Reply to
cepu69

cepu69 schrieb:

Konkluzja chyba oczywista i kawanaławizmu nie potrzeba. A jak potrzeba, to się pod tym podpisuję wszystkimi członkami. Bywają coprawda istoty programistyczne, które myślą, że jak program napiszesz czytelnie i dobrze skomentujesz, to po pierwsze będzie wolniej działał, a po drugie siedzisz jako programista na zaminowanym stołku. A to może się akurat obrócić przeciwko takiemu. Taki przypadek: mieliśmy w robocie studenta piszącego pracę dyplomową. Pisał porządne programy, znaczy działały, był szybki etc. Zrobił wszystko na czasie, obronił się na bdb. Po dyplomie nie mogliśmy go przyjąć, bo akurat było cienko z możliwością zapłacenia mu normalnej pensji, więc odszedł i chciał się zwerbować do innej firmy. Pech chciał, że szef nowej firmy to kumpel naszego szefa. No i się zdzwonili, a szef słyszał jak fakuję nad programem studenta. Podszedł, popytał, obejrzał i dał cynk kumplowi. No i były student nie dostał fajnej pracy, choć według aplikacji i CV był na pierwszym miejscu. Szukali jednak ludzi, którzy potrafią pracować w zespole i nic się nie wali jak w trakcie projektu ktoś pójdzie na chorobowe czy urlop.

Waldek

Reply to
Waldemar Krzok

cepu69 pisze:

Raczej nie wszystkie TI DSP. Na przykład takie TMS320VC5416 (które mocno eksploatujemy w niektórych firmowych sprzętach) mają wydzieloną przestrzeń I/O, oddzielną od pamięci danych i oddzielną pamięć programu. Trzeba nieco więcej naspawać w kodzie aby zrobić dostęp I/O.

Ale i tak przecież nikt zdrowo myślący nie będzie w C pisał przetwarzania sygnałów, FFT czy innego Viterbiego. Od tego są funkcje asemblerowe. A język C w przypadku procków DSP dobrze się sprawdza jako "klej" łączący różne kawałki kodu.

Reply to
Adam Dybkowski

pawel pisze:

Zmienne można definiować na początku każdego bloku {}, na przykład:

if (a > 3) { int x; printf ("a = %d", a); x = a + 8;

itd. Co wg mnie nie robi zamieszania w kodzie, a właśnie odciąża główny blok zmiennych deklarowany na początku funkcji.

Reply to
Adam Dybkowski

In the darkest hour on Fri, 05 Jun 2009 22:15:19 +0200, Adam Dybkowski snipped-for-privacy@45wp.pl screamed:

Zawsze można od czasu do czasu tak:

if (a > 3) { printf("a = "%d", a); { int x = a + 8; printf("x = %d", x); } }

Ale po co, skoro mamy od jakiegoś czasu C99...

Reply to
Artur M. Piwko

Artur M. Piwko pisze:

To też bywa czasem czytelniejsze choć nie wygląda już tak "naturalnie". ;)

Powiedz to kompilatorowi dla texasowych DSP'ków, nie mającemu nic wspólnego z gcc.

BTW: W ogóle pisząc dla takich procków, natywnie 16-bitowych (gdzie nawet typ "char" jest 16-bitowy oraz sizeof(int)=1) trzeba od razu myśleć nieco inaczej, niż w aplikacjach dla ARMa czy AVRa. Portowanie normalnie pisanych bibliotek na DSPki 16-bitowe wiąże się z niemałym zamieszaniem. Tak to już jest gdy się używa np. TMS320VC5416 i kompilator C sprzed chyba 10 lat.

Reply to
Adam Dybkowski

In the darkest hour on Sat, 06 Jun 2009 23:18:00 +0200, Adam Dybkowski snipped-for-privacy@45wp.pl screamed:

Kilka razy zastosowałem, chociaż wygląda brzydko. A musiałem być wtedy zgodny z ANSI C.

No tu już trzeba krajać jak materiału staje... ;>

Ciekawe.

Reply to
Artur M. Piwko

Ja bawilem sie na troche innym "poziomie" stad to podejscie. Rodzinna C6000 ma "normalna" 32 bitowa przestrzen adresowa i w ramach ciekawostek dropsa np. mimo wlaczonego cache'a danych 1-poziomu nie trzeba bylo flushwac buforow, na ktorych pracowalo DMA (tak na marginesie tam wszystkie operacje I/O wykonywanem byly przez DMA)

Tak, ale jest to juz wyzsza szkola jazdy. Na poczatek calkowicie wystarczy C szczegolnie, ze TI dostarcza konfigurowalny z poziomu IDE system opweracyjny czasu rzeczywistego i wyprodukowanie wlasnej aplikacji typu "Hello World" jest proste.

Natomiast programowanie w asemblerze procesora sygnalowego nalezy zostawic na pozniej, szczegolnie gdy w gre wchodzi zrownoleglanie instrukcji ( C6000 ma dwie jednostki wykonawcze i moze wykonac chyba do 8 instrukcji jednoczesnie).

Co do pisania w C przetwarzania sygnalow TI dostrcza o ile mnie pamiec nie myli zestaw makr "przyspieszajacych" kod typu rozwijanie petli.

Reply to
cepu69

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.