Търсене | (Default) Light mobile MoLight NoCSS Urban Sunrise Wasp | Регистрация Вход
Теми | Категории | |
Теми Отговор
0 1 2 3 4
palavrovМайтапех се. По пиринцип рядко репортвам проблеми защото в повечето случаи мога да ги оправя сам. Особенно като е работа за някой клиент тогава фикса който правя е негова собственост и задължение да опън сорсва. Сега ще опитам да се спазаря със следващия ми клиент да опън сорснем едни неща за Zephyr RTOS, че ми е писнало да ги оправям за всеки едни и същи. А то е и гнусно хардуерно недомислие още от 80-те. Един от първите серийни портове е интелския 8250 - не съм го ровил ама подозирам, че от него тръгват нещата. Няколко години по ксъно се появява версия с два серийни порта която май е вкарана в първите PC-XT където логично са кръстили порта 8250*2 = 16450 (знам, знам, математиката не излиза с - 50) и след него се е появил и 16550. Та тези чипове могат да работят с полиране и прекъсване. Ама не знам по какава причина като полираш т.е. четеш статус регистъра (за да видиш дали ФИФО буфера за предаване има място да пратиш още символи или пък се е приело нещо) се нулират и битовете за заявка на прекъсване - подозирам, че това е направено защото при всяко прекъсване първата работа е да прочетеш статуса и така са се изхитрили да се каже на контролера, че прекъсването вече се обработва и трябва да прекрати заявката. На теория всичко е 6 ама на практика ако ги омесиш двата режима на работа става много весело. Пуснал си си някаква комуникация с прекъсвания и през това време друга която полира. И тази която полира абсолютно непредсказуемо понякога сваля флага за прекъсване преди то да е обработено. В резултат се блокира нишката която си комуникира с прекъсвания щото нали тоя хардуер е железен и изпитан с годините никой не си прави труда да слага таймаути и да обработва грешки при комуникация. А нишката която блокира пък си е включила някакъв семафор за да не я притесняват други нишки които също искат да комуникират (ама не е същия семафор като за полиране - и те там е бъга) - и така една по една блокират останалите комуникационни нишки и железото забива юнашки. И това нещо няма дебъгване защото точно дебъг логовете се комуникират в забитата нишка А по ред причини не можеш да пуснеш дебъгер - хардуера яко защитен, че е за платежен терминал ... цирк.
Майтапех се. По пиринцип рядко репортвам проблеми защото в повечето случаи мога да ги оправя сам. Особенно като е работа за някой клиент тогава фикса който правя е негова собственост и задължение да опън сорсва.
Сега ще опитам да се спазаря със следващия ми клиент да опън сорснем едни неща за Zephyr RTOS, че ми е писнало да ги оправям за всеки едни и същи. А то е и гнусно хардуерно недомислие още от 80-те. Един от първите серийни портове е интелския 8250 - не съм го ровил ама подозирам, че от него тръгват нещата. Няколко години по ксъно се появява версия с два серийни порта която май е вкарана в първите PC-XT където логично са кръстили порта 8250*2 = 16450 (знам, знам, математиката не излиза с - 50) и след него се е появил и 16550. Та тези чипове могат да работят с полиране и прекъсване. Ама не знам по какава причина като полираш т.е. четеш статус регистъра (за да видиш дали ФИФО буфера за предаване има място да пратиш още символи или пък се е приело нещо) се нулират и битовете за заявка на прекъсване - подозирам, че това е направено защото при всяко прекъсване първата работа е да прочетеш статуса и така са се изхитрили да се каже на контролера, че прекъсването вече се обработва и трябва да прекрати заявката. На теория всичко е 6 ама на практика ако ги омесиш двата режима на работа става много весело. Пуснал си си някаква комуникация с прекъсвания и през това време друга която полира. И тази която полира абсолютно непредсказуемо понякога сваля флага за прекъсване преди то да е обработено. В резултат се блокира нишката която си комуникира с прекъсвания щото нали тоя хардуер е железен и изпитан с годините никой не си прави труда да слага таймаути и да обработва грешки при комуникация. А нишката която блокира пък си е включила някакъв семафор за да не я притесняват други нишки които също искат да комуникират (ама не е същия семафор като за полиране - и те там е бъга) - и така една по една блокират останалите комуникационни нишки и железото забива юнашки. И това нещо няма дебъгване защото точно дебъг логовете се комуникират в забитата нишка А по ред причини не можеш да пуснеш дебъгер - хардуера яко защитен, че е за платежен терминал ... цирк.