реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> W3150, W5100 и многопоточная программа, Ответ суппорта, может кому-нибудь пригодится.
Сергей Борщ
сообщение Jan 13 2009, 09:51
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Заинтересовал вопрос - можно ли между чтением байтов двухбайтного регистра (Sx_RX_RD, например) прочитать другой двухбайтный регистр. Для однопоточной системы это не актуально - в прерываниях читаются только однобайтные регистры статуса. Для многопоточной программы это означает - нужно ли обрамлять критической секцией каждое чтение двухбайтного регистра. В доке этот момент не отражен.  Ответ суппорта:



Цитата
Цитата
  Can I, for example, read high byte of S0_RX_RD from one program thread, after that from second thread read high byte of S1_RX_RD, low byte of S1_RX_RD, and finally from first thread read low byte of S0_RX_RD or they have single shadow register for low byte and has to be read in strict sequence?
Dear Sir,
No, the read operation can't be interleaved.
Regards,
Так что будьте внимательны: там лежат грабли. Нужна критическая секция.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 09:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016