Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Отладчик ломает чтение по DMA

Вс сен 16, 2018 02:32:06

Всем привет. Читаю данные из SPI флэш через USART с использованием DMA. Один канал DMA пишет 1024 байта во флэш, второй одновременно принимает 1024 байта и сохраняет в буфер. Когда все 1024 байта отправлены и получены DMA передает контроллеру запросы прерываний TX и RX и вызываются их обработчики. Читаю где-то по 100 килобайт за секунду со скоростью 4 млн бод.

Проблема в том, что при запуске прошивки через отладчик через какое-то время возникает ситуация, когда на приеме последний 1024-й байт посылки куда-то теряется и перестает вызываться обработчик RX прерывания. Причем обработчик TX прерывания вызывается стабильно.
Что вижу в отладчике:
1. Счетчик DMA переданных байт равен 0, а прочитанных 1. То есть по DMA передано 1024 байта, а прочитано только 1023. DMA ждет последний байт посылки и так как его нет - нет и прерывания.
2. Флаги ошибок равны 0
3. В регистре чтения USART лежит последний байт посылки (0x89). То есть последний (1024-й) байт посылки похоже таки пришел в контроллер. Но счетчик DMA почему-то не обнулился и как следствие DMA не запросил RX прерывание контроллеру.

Самое интересное: такая истуация возникает только при запуске прошивки через отладчик. Может возникнуть в любой момент: через несколько секунд или позже (но, как правило, работает не больше 20 минут). А когда запускаю девайс без отладчика - все нормально работает по несколько часов (самое долгий тест 16 с чем-то часов).
Я в недоумении. Это косяк в моем коде, косяк в отладчике или косяк контроллера? У кого-нибудь возникали подобные ситуации? В чем может быть проблема?

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 12:10:15

Это косяк в моем коде, косяк в отладчике или косяк контроллера?

Какой контроллер?

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 15:11:48

spaum33, многие флаги чистятся чтением, в том числе и отладчиком...

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 16:16:53

spaum33, многие флаги чистятся чтением, в том числе и отладчиком...

Поясните, пожалуйста, к чему вы клоните.
Если допустить, что флаги ошибок были очищены чтением или отладчиком, то при установке оных DMA в любом случае должен выдать запрос на прерывание RX. Но прерывания как раз таки и нет и обработчик не запускается. А флаги я проверяю именно в обработчике.
Опять же, без отладчика, в таком случае, тоже ведь должен быть сбой.
Тгда получается, отладчик чистит какой-то другой флаг, который, например, инициирует запрос DMA на чтение? Но тогда непонятно почему это просиходит именно на последнем байте

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 17:13:06

Озвучьте сперва чип,IDE и отладчик. А так же как отлаживаете , в каком режиме.

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 18:55:31

Озвучьте сперва чип,IDE и отладчик. А так же как отлаживаете , в каком режиме.

Контроллер: MB96600 Series http://www.cypress.com/file/241411/download
IDE: Softune Workbench
Отлаживаю через эмулятор в цепи MB2100-01-E http://www.fujitsu.com/downloads/CN/fss ... 0-01-E.pdf
Что имеется в виду под режимом отладки?

Re: Отладчик ломает чтение по DMA

Вс сен 16, 2018 19:43:15

Ну здесь помочь ни чем не могу, ибо ни камень ни среда абсолютно не знакомы.
Ответить