<bgdev />free

Вход Регистрация

Нова версия на редактора.
0

0 1 2 3 4
#90746 (ツ) palavrov
Последно редактирано на 19.05.2023 от palavrov, видяно: 121 пъти.
palavrov

Майтапех се. По пиринцип рядко репортвам проблеми защото в повечето случаи мога да ги оправя сам. Особенно като е работа за някой клиент тогава фикса който правя е негова собственост и задължение да опън сорсва.

Сега ще опитам да се спазаря със следващия ми клиент да опън сорснем едни неща за Zephyr RTOS, че ми е писнало да ги оправям за всеки едни и същи. А то е и гнусно хардуерно недомислие още от 80-те. Един от първите серийни портове е интелския 8250 - не съм го ровил ама подозирам, че от него тръгват нещата. Няколко години по ксъно се появява версия с два серийни порта която май е вкарана в първите PC-XT където логично са кръстили порта 8250*2 = 16450 (знам, знам, математиката не излиза с - 50) и след него се е появил и 16550. Та тези чипове могат да работят с полиране и прекъсване. Ама не знам по какава причина като полираш т.е. четеш статус регистъра (за да видиш дали ФИФО буфера за предаване има място да пратиш още символи или пък се е приело нещо) се нулират и битовете за заявка на прекъсване - подозирам, че това е направено защото при всяко прекъсване първата работа е да прочетеш статуса и така са се изхитрили да се каже на контролера, че прекъсването вече се обработва и трябва да прекрати заявката. На теория всичко е 6 ама на практика ако ги омесиш двата режима на работа става много весело. Пуснал си си някаква комуникация с прекъсвания и през това време друга която полира. И тази която полира абсолютно непредсказуемо понякога сваля флага за прекъсване преди то да е обработено. В резултат се блокира нишката която си комуникира с прекъсвания щото нали тоя хардуер е железен и изпитан с годините никой не си прави труда да слага таймаути и да обработва грешки при комуникация. А нишката която блокира пък си е включила някакъв семафор за да не я притесняват други нишки които също искат да комуникират (ама не е същия семафор като за полиране - и те там е бъга) - и така една по една блокират останалите комуникационни нишки и железото забива юнашки. И това нещо няма дебъгване защото точно дебъг логовете се комуникират в забитата нишка rofl А по ред причини не можеш да пуснеш дебъгер - хардуера яко защитен, че е за платежен терминал ... цирк.

0 1 2 3 4

Нова версия на редактора.
0

AsmBB v3.0 (check-in: a316dab8b98d07d9); SQLite v3.42.0 (check-in: 831d0fb2836b71c9);
©2016..2023 John Found; Licensed under EUPL. Powered by Assembly language Created with Fresh IDE