Ñïåöêóðñ «Ñèñòåìíîå ïðîãðàììèðîâàíèå»
Ëåêöèÿ 1. 28.09.2021



Çàêîí÷èëà ìåõ-ìàò â 1985 ã., ïîñëå àñïèðàíòóðû ñ 1988 ðàáîòàþ íà ìåõ-ìàòå.

Ðàçðàáîòêà ïðîãðàììíîãî îáåñïå÷åíèÿ äëÿ ó÷åáíîãî ïðîöåññà íà ìåõ-ìàòå.

Ëàáîðàòîðèÿ âû÷èñëèòåëüíûõ ìåòîäîâ. Ëþäè ïðèåçæàëè çà ïðîãðàììíûì îáåñïå÷åíèåì (òåêñòîâûé ðåäàêòîð, …).

Àññåìáëåð — îñíîâíîé ÿçûê ïðîãðàììèðîâàíèÿ â ËÂÌ.

Òåêñòîâûé ðåäàêòîð äëÿ ðàáîòû â äèñïëåéíîì êëàññå íà 30 òåðìèíàëîâ. Îáëàñòü êîäà — ðàçäåëÿåìàÿ, îáëàñòü äàííûõ ó êàæäîãî ïîëüçîâàòåëÿ — ñâîÿ.

Ñ ïîÿâëåíèåì ÿçûêà Ñ (1988) ïðîãðàììèðîâàíèå íà ìåõ-ìàòå ñòàëî áîëåå ïðèêëàäíûì.


Ñ 2000-2005Resonext (startup). Ðàçðàáîòêà ÷èïà WiFi.  2003 RF Micro Devices – ïðèîáðåëè ñòàðòàï, â 2005 — çàêðûëè áèçíåñ.

 2005 — Cadence Design Systems. Îíè âëàäåëè ïðîãðàììîé nc-sim (Network Card Simulator) è óñòðîéñòâîì FPGA Palladium. Âñå áûâøèå êîëëåãè hardware engineers – î÷åíü îäîáðÿëè. Íî â Ìîñêâå — òîëüêî ïðèêëàäíîå ïðîãðàììèðîâàíèå.

Cadence Design Systems – DFM (Design For Manufacturing) – ïðîãðàììíîå îáåñïå÷åíèå äëÿ ïðîèçâîäñòâà ýëåêòðîííûõ ìèêðîñõåì. Íàïðèìåð, Physical Verification (íàïðèìåð, íàêàïëèâàíèå ñòàòè÷åñêîãî ýëåêòðè÷åñòâà, íåò ëè íåíóæíûõ êîíòàêòîâ). Âû÷èñëèòåëüíàÿ ãåîìåòðèÿ è ïðîãðàììèðîâàíèå.

Ñòàëà ñêó÷àòü ïî ïðîöåññîðó ARM (àðõèòåêòóðà RISC).

2005 — íà÷àëîñü ÷òåíèå ñïåöêóðñà «Ñèñòåìíîå ïðîãðàììèðîâàíèå».

Óñòðîéñòâî Evaluation Board ñ ïðîöåññîðîì ARM. 4 êíîïêè è 4 ëàìïî÷êè (GPIO äåâàéñû).

 óñëîâèÿõ ïàíäåìèè — êàê ðàáîòàòü ñ Evaluation Board? Âîçìîæíî, âèäåîêàìåðà + äîñòóï ê êîìïüþòåðó, ê êîòîðîìó ïîäêëþ÷åíà Evaluation Board.

 2007 ïåðåøëà â Intel (ñèìóëÿòîðû æåëåçà). Hardware simulation (ïîõîæå íà hard work simulation).

 2014 — âîçîáíîâèëñÿ ñïåöêóðñ. Wandboard, Raspberry, Access Points (ðîóòåð).

2017-2021 — ñïåöêóðñ íå ÷èòàëñÿ.


Îïûò ñèñòåìíîãî ïðîãðàììèðîâàíèÿ.


Ñàìàÿ èíòåðåñíàÿ çàäà÷à: ïðîøèâêà ó WiFi êàðòî÷êè, C++ è Àññåìáëåð (îáðàáîò÷èê áûñòðîãî ïðåðûâàíèÿ). (Ïðåðûâàíèÿ — íàïðèìåð, Float point exception, Segmentation fault).

Áûñòðîå ïðåðûâàíèå (FIQ) â WiFi – âîçíèêíîâåíèå âûçîâà FIQ çàïðîãðàììèðîâàíî â ïðîøèâêå, êîãäà ïîëó÷àåì ñåòåâîé ïàêåò, ïîëó÷åíèå êîòîðîãî íàäî ïîäòâåðäèòü. Îòâåòíûé ïàêåò (ACKnowledge) íàäî ïîñëàòü ÷åðåç 16 ìèêðîñåêóíä ïîñëå êîíöà ïîëó÷åííîãî ïàêåòà. Çà ýòî âðåìÿ íàäî:
1. Ðàñøèôðîâàòü ïàêåò è óçíàòü àäðåñ îòïðàâèòåëÿ è ïîëó÷àòåëÿ, îïðåäåëèâ, àññîöèèðîâàíû ëè ìû ñ îòïðàâèòåëåì, à òàêæå, ÷òî ïîëó÷àòåëü — ýòî ìû.

2. Ïîäãîòîâèòü îòâåòíûé ïàêåò ACK ñ àäðåñîì îòïðàâèòåëÿ (íàøèì) è àäðåñîì ïîëó÷àòåëÿ (îò êîãî áûë ïàêåò).

3. Âêëþ÷èòü ïåðåäàò÷èê. Îí ðàçîãðåâàåòñÿ 2 ìèêðîñåêóíäû.

4. ×àñòü âðåìåíè ïîòåðÿëàñü íà ïðèåìíèêå.


Íà ïóíêòû 1 è 2 îñòàâàëîñü 2 ìèêðîñåêóíäû.

Ñêîëüêî èíñòðóêöèé ARM ìîæíî âûïîëíèòü çà ýòî âðåìÿ? ×àñòîòà ìåíüøå 1 GHz (480 MHz).

(ARC – ïðîöåññîð, ïîõîæèé íà ARM, íî äåøåâëå).

Ýôôåêòèâíûé êîä. Ïðîâåðêà òîãî, ÷òî óêëàäûâàåìñÿ â 2 ìèêðîñåêóíäû.


Çàäà÷à áûëà: ðîóòåð ïåðåçàãðóæàëñÿ 2-3 ðàçà â ñóòêè. Ýòî îçíà÷àåò, ÷òî ïðîøèâêà çàâèñàëà.

Çàâèñàíèå ïðèêëàäíîé ïðîãðàììû — ìîæåò ïåðåçàïóñòèòü ïîëüçîâàòåëü.

Çàâèñàíèå ñèñòåìíîé ïðîãðàììû - áîëüøàÿ íåïðèÿòíîñòü. Êàê áîðîòüñÿ? Ñïåöèàëüíûé òàéìåð â æåëåçå, íàçûâàåòñÿ watchdog, åñëè îí ñðàáàòûâàåò — âûçûâàåòñÿ ïðåðûâàíèå, îáðàáîò÷èê êîòîðîãî ïåðåçàãðóæàåò óñòðîéñòâî. Ýòîò òàéìåð ïîñòîÿííî âçâîäèòñÿ (êàê áóäèëüíèê), ÷òîáû îí íå óñïåë äîòèêàòü è ïåðåçàãðóçèòü äåâàéñ. Åñëè ïðîøèâêà çàâèñëà, òî òàéìåð îíà îíà áîëüøå íå âçâîäèò, îí äîòèêèâàåò äî 0 è âûçûâàåò ïåðåçàãðóçêó óñòðîéñòâà.

Âûäåëèëà íåñêîëüêî ñîáûòèé (íå áîëüøå 8 èëè 16), áóôåð èç 8 èëè 16 áàéòîâ, âî âðåìÿ êàæäîãî èç ñîáûòèé çàïèñûâàëà â êîëüöåâóþ î÷åðåäü áóôåðà êîä ýòîãî ñîáûòèÿ. Ïðè ñðàáàòûâàíèè áûñòðîãî ïðåðûâàíèÿ, âûçâàííîãî watchdog’îì, îáðàáîò÷èê ïðåðûâàíèÿ ïåðâûì âûâîäèë ñîäåðæèìîå ýòîãî áóôåðà íàðóæó.

Çàòåì ñîáûòèÿ äåòàëèçèðóþòñÿ. Çà 5 èòåðàöèé îïðåäåëèëîñü, ãäå áûëà îøèáêà.


Äðàéâåðà äëÿ WiFi êàðòî÷êè. Windows – îòëàä÷èê SoftIce. Èíîãäà íåëüçÿ áûëî èñïîëüçîâàòü îòëàä÷èê. Òîãäà èñïîëüçîâàëñÿ âûâîä â ïîðòû ââîäà/âûâîäà (RS-232 – 9 ïèíîâ).

Ïðîáëåìà ñ äðàéâåðîì — âñå âèñíåò. Ïðè ðàáîòå óñòðîéñòâà (äåâàéñà) îíî ìîæåò ãåíåðèðîâàòü ïðåðûâàíèÿ. Ðàçíûõ ïðåðûâàíèé — ìàëî (16 èëè 32), ìåíüøå, ÷åì óñòðîéñòâ. Âûõîä — äåëèòü ïðåðûâàíèÿ ìåæäó íåñêîëüêèìè óñòðîéñòâàìè. ÎÑ ïðè âîçíèêíîâåíèè ïðåðûâàíèÿ ñ îïðåäåëåííûì íîìåðîì îïðåäåëÿåò, êàêèå óñòðîéñòâà ïîäïèñàíû íà ïðåðûâàíèå ñ ýòèì íîìåðîì. Çàòåì ÎÑ â öèêëå âûçûâàåò êàæäûé èç ýòèõ äðàéâåðîâ, ÷òîáû îí ðàçîáðàëñÿ ñ ýòèì ïðåðûâàíèåì. Åñëè äðàéâåð ïîíèìàåò, ÷òî ýòî åãî ïðåðûâàíèå (âûçâàíî åãî äåâàéñîì), òî îí îáðàáàòûâàåò ýòî ïðåðûâàíèå, à çàòåì ñáðàñûâàåò (aknowledge) – äåëàåò åãî íåàêòèâíûì, ÷òî ÎÑ ïåðåñòàëà îïðàøèâàòü äðàéâåðà. Åñëè â äðàéâåðå îøèáêà è îí íå ñáðàñûâàåò ïðåðûâàíèå, òî îíî îñòàåòñÿ àêòèâíûì íàâå÷íî è ÎÑ áåñêîíå÷íî îïðàøèâàåò äðàéâåðà. Çàâèñàíèå!

 Èíòåëå ÿ ñèìóëèðîâàëà æåëåçî.


Çà÷åì ñèìóëèðîâàòü æåëåçî? ×òîáû òåñòèðîâàòü ïðîãðàììíîå îáåñïå÷åíèå, ðàçðàáàòûâàåìîå ïàðàëëåëüíî ñ ðàçðàáîòêîé æåëåçà, êîãäà æåëåçî åùå íå ãîòîâî.

Çà÷åì ðàçðàáàòûâàòü ÏÎ â ïàðàëëåëü? Äëÿ ñîêðàùåíèÿ ñðîêîâ âûõîäà íà ðûíîê.

Èäåàëüíî — êîãäà ðàçðàáîòêà æåëåçà è ÏÎ çàêàí÷èâàåòñÿ îäíîâðåìåííî.

 Èíòåëå — ñèìóëÿòîð SoftSDV, èñïîëüçîâàëñÿ íå òîëüêî äëÿ òåñòèðîâàíèÿ ÁÈÎÑà è äðàéâåðîâ, íî òàêæå — äëÿ òåñòèðîâàíèÿ ïðîãðàìì, âåðèôèöèðóþùèõ æåëåçî.