27.4. Работа УАПП (UART)
Модуль внутрисхемной отладки работает как универсальный асинхронный приемопередатчик, и поддерживает работу только c 8-битными пакетами данных (с учетом бита четности). Передача данных осуществляется без синхронизации, внешней линии синхронизации модуль не имеет.
Приемопередатчик модуля внутрисхемной отладки состоит из независимо работающих приемника и передатчика, и общего генератора тактовой частоты передачи данных. Блокировка по времени приемника и временная защита передатчика отсутствуют. По всем остальным реализованным функциям приемопередатчик модуля внутрисхемной отладки полностью совместим стандартным.
27.4.1 Генератор тактовой частоты передачи данных
Обеспечивает синхронизацию передачи данных как для приемника, так и для передатчика УАПП модуля внутрисхемной отладки.
Синхронизирующий сигнал передачи данных образуется из сигнала главной синхронизации (Master clock/MCK) делением на 16 и на значение CD (Clock Divider - делитель тактовой частоты), записанное в регистр DBGU_BRGR. Если значение DBGU_BRGR установлено в 0, то синхросигнал передачи данных не генерируется и УАПП модуля внутрисхемной отладки неактивен.
Максимально возможная скорость передачи данных равна значению частоты основного синхронизирующего импульса, деленному на 16. Минимально возможная скорость передачи данных равна значению главной тактовой частоты, деленному на (16х65536).
Рис. 27-3. Генератор тактовой частоты передачи данных
27.4.2 Приемник
27.4.2. Перезагрузка приемника, разрешение и запрещение работы
После перезагрузки устройства приемник модуля внутрисхемной отладки отключен, таким образом, перед использованием его работу необходимо разрешить. Работа приемника разрешается записью 1 в бит RXEN регистра DBGU_CR. При этом приемник немедленно начинает опрос состояния линии и ожидает приход старт-бита.
Приемник может быть отключен программно записью 1 в бит RXDIS регистра DBGU_CR. В случае, если прием не ведется и приемник ожидает приход старт-бита, останов работы происходит немедленно. В том же случае, если старт-бит уже распознан и прием данных начат, реальное прекращение работы приемника произойдет только при завершении приема пакета, то есть при получении стоп-бита.
Помимо этого, приемник может быть перезагружен программно, путем записи 1 в бит RSTRX регистра DBGU_CR. В этом случае, независимо от текущего состояния приемника и типа производимой операции, произойдет немедленная перезагрузка. Если запись в RSTRX произошла в процессе приема данных, эти данные будут утеряны.
27.4.2.2 Определение старт-бита и прием данных
Модуль внутрисхемной отладки осуществляет передачу только в асинхронном режиме, что влияет только на работу приемника. Приемник модуля определяет начало передачи данных, производя постоянный опрос состояния линии. Опрос линии производится 16 раз на каждый такт передачи данных. Низкий уровень DRXD в течение более чем 7 тактов опроса приемника определяется как достоверный старт-бит. Если уровень линии был низким в течение 7 циклов опроса или менее, такой старт-бит определяется как недостоверный и игнорируется, а определение старт бита продолжается.
В случае приема достоверного старт-бита, приемник определяет значение состояния линии DRXD по определенной теоретически середине каждого принимаемого бита. Длительность каждого бита принимается условно равной 16 тактам работы приемника (1 период тактового генератора), прием осуществляется на 8 такте (или 1/2 периода тактового генератора). Таким образом, прием первого бита информации производится через 24 такта (или 1.5 периода) тактового генератора приема данных, после того как был определен срез старт-бита.
Рис. 27-4. Определение старт-бита
Рис. 27-5. Прием пакета данных
27.4.2.3 Готовность приемника
После того как пакет полностью принят, он передается в регистр DBGU_RHR. При этом устанавливается в 1 бит состояния приемника RXRDY в регистре состояния DBGU_SR. Бит RXRDY автоматически сбрасывается при чтении RHR_DBGU (регистр хранения приемника).
Рис. 27-6. Готовность приемника
27.4.2.4 Переполнение приемника
Если значение регистра DBGU_RHR с момента завершения предыдущей передачи не было считано программно (или контроллером ПДП периферийных модулей - PDC), бит RXRDY тем не менее устанавливается, прием нового пакета производится, но при этом производится установка бита OVRE в регистре статуса DBGU_SR. Очистка OVRE производится при записи 1 в бит RSTSTA контрольного регистра DBGU_SR, которая производится программно.
Рис. 27-7. Переполнение приемника
27.4.2.5 Ошибка четности
Каждый раз при получении пакета приемник определяет в соответствии со значением PARЕ в регистре DBGU_MR четность полученного пакета данных. Затем результат сравнивается с полученным в пакете битом четности. Если рассчитанный и полученный биты отличаются, одновременно устанавливаются бит ошибки четности PARE и бит RXDRY в регистре DBGU_SR. Очистка бита четности происходит при записи 1 в бит RSTSTA (перезагрузка состояния) в регистре DBGU_CR. Если прием нового пакета начинается до записи команды перезагрузки, значение бита PARE остается в 1.
Рис. 27-8. Ошибка четности
27.4.2.6 Ошибка структуры пакета
Прием пакета начинается с приема старт-бита, приемник опрашивает линию, определяя состояние каждого бита данных в пакете. Во время опроса линии при ожидании приема стоп - бита состояние линии должно определиться как 1, если же состояние линии будет определено как 0, то структура пакета считается ошибочной (Frame error). При этом одновременно с установкой бита RXRDY устанавливается бит FRAME в регистре DBGU_SR. Бит FRAME остается установленным в 1 пока не производится запись 1 в бит RSTSTA регистра DBGU_CR.
Рис. 27-9. Ошибка структуры пакета
27.4.3 Передатчик
27.4.3.1 Перезагрузка, разрешение и запрещение работы передатчика
После перезагрузки контроллера работа передатчика модуля внутрисхемной отладки по умолчанию запрещена. Работа передатчика разрешается записью 1 в бит TXEN регистра DBGU_CR. После этой команды передатчик ожидает приход данных в регистр DBGU_THR, и при их поступлении начинает незамедлительно вести передачу.
Работа передатчика может быть запрещена программно в любой момент времени путем записи 1 в бит TXDIS регистра DBGU_CR. Если передача в этот момент не ведется, передатчик будет запрещен немедленно. Если же в этот момент обрабатывается какой-то пакет данных, то есть пакет или поступил в регистр сдвига передатчика (уже выдается), или находится в регистре хранения передатчика, то есть только принят передатчиком на выдачу, то передатчик будет запрещен только после полного завершения передачи пакета.
Перезагрузка передатчика может быть произведена программно записью 1 в бит RSTTX регистра DBGU_CR. При этом работа передатчика будет прекращена немедленно, независимо от того, велась при этом передача данных или нет.
27.4.3.2 Формат пакета передаваемых данных
Модуль внутрисхемной отладки передает данные на вывод DTXT со скоростью, определяемой тактовой частотой передачи данных. Формат передачи на линию данных, находящимися в регистре сдвига передатчика определяется установками регистра установки режима работы передатчика (THR_MR). Передается один старт бит, имеющий уровень 0, затем 8 бит данных, последовательно от младшего значащего к старшему, один дополнительный бит четности, и стоп-бит, имеющий уровень 1. Биты пакета данных последовательно сдвигаются и выдаются по линии DTXD. Значение поля PARЕ в регистре режима работы передатчика DBGU_MR определяет, будет ли в пакете бит четности. Если передача бита разрешена, устанавливается счет суммы бит данных на четность или на нечетность, или передача фиксированных 1 или 0.
Рис. 27-10. Передача пакета
27.4.3.3 Управление передатчиком
При разрешении работы передатчика в регистре состояния передатчика DBGU_SR устанавливается бит TXRDY (Transmitter Ready-передатчик готов). Передача начинается при записи данных в регистр хранения передатчика DBGU_THR, которая производится программно, и последующей передачи пакета в сдвиговый регистр передатчика.
Уровень TXRDY поддерживается высоким до тех пор, пока в DBGU_THR не будет записан второй пакет. Как только выдача первого пакета по линии DTXD будет завершена, и второй пакет будет передан в пустой сдвиговый регистр, TXRDY снова принимает высокий уровень.
Таким образом, TXRDY устанавливается в 1 при пустом, готовом к приему пакета регистре хранения передатчика.
В случае если и регистр хранения (DBGU_THR), и сдвиговый регистр пустые, то есть все пакеты, записанные в регистр хранения, уже обработаны, дополнительно к установке TXRDR производится установка бита TXEMPTY. Установка бита TXEMPTY производится непосредственно после выдачи последнего стоп-бита.
Рис. 27-11. Управление передатчиком
27.4.4 Контроллер ПДП периферийных модулей (PDC)
Передатчик и приемник УАПП модуля внутрисхемной отладки обычно подключены к каналу контроллера ПДП периферийных модулей (PDC).
Каналы контроллера ПДП программируются через регистры, доступные через пользовательский интерфейс модуля внутрисхемной отладки по адресам со сдвигом 0х100. Биты состояния отражаются в регистре состояния DBGU_SR и могут вызвать прерывание.
Установка бита RXRDY запускает передачу данных приемника по каналу контроллера ПДП. Она осуществляется путем чтения поступающих данных из регистра DBGU_RHR. Установка бита TXRDY запускает передачу данных приемника по каналу контроллера ПДП. Это выражается в записи выдаваемых данных в регистр DBGU_THR.
27.4.5 Тестовые режимы
Модуль внутрисхемной отладки может работать в одном из трех тестовых режимов. Выбор режима осуществляется изменением бита CHMODE в регистре управления режимом работы DBGU_MR.
В режиме автоматического эхо-контроля производится побитная обратная передача переданной информации. Бит, полученный по линии DRXD, отсылается обратно по линии DTXD. Передатчик работает как обычно, но на состояние линии DTXD влияния не оказывает.
В режиме внутреннего зацикливания принимаются переданные пакеты. Линии DRXD и DTXD не используются, вход приемника и выход передатчика объединяются внутри устройства. Состояние вывода DRXD значения не имеет, уровень на выводе DTXD поддерживается высоким, как в состоянии простоя.
В режиме внешнего зацикливания приемник и передатчик запрещены и на состояние линий не влияют. Линия DRXD соединяется с линией DTXD, производится побитная обратная передача.
Рис. 27-12. Тестовые режимы
27.4.6 Работа канала отладки
Модуль внутрисхемной отладки обрабатывает сигналы COMMRX и COMMTX, приходящие из отладочного канала связи процессора ARM и выдаваемые встроенным внутрисхемным эмулятором (ICE).
Канал отладки имеет два регистра, которые доступны через ICE Breaker на стороне JTAG и через сопроцессор 0 на стороне процессора ARM.
Для чтения и записи в отладочный канал применяются следующие команды:
MRC p14, 0, Rd, cl, c0, 0
Эта команда возвращает значение регистра чтения канала отладки в Rd:
MCR p14, 0, Rd, cl, c0, 0
Эта команда записывает значение регистра Rd в регистр записи канала отладки.
Биты COMMRX и COMMTX показывают, что, соответственно, регистр чтения, записанный отладчиком, еще не прочитан процессором, и регистр записи, уже записанный процессором, не прочитанный отладчиком. Эти биты заведены на два старших бита регистра состояния контроллера DBGU_SR, и могут вызывать прерывание. Эта особенность позволяет осуществлять отладочную связь под управлением прерываний между работающим в системе отладочным монитором и отладчиком.
27.4.7 Идентификатор микросхемы
Модуль внутрисхемной отладки имеет два идентификационных регистра, DBGU_CIDR (регистр-идентификатор) и DBGU_EXID (расширенный регистр-идентификатор). Эти регистры не доступны для изменения и доступны только для чтения.
- EXT - показывает, используется ли расширенный регистр-идентификатор
- NVPTYP и NVPSIZ показывает тип и объем встроенной энергонезависимой памяти
- ARCH описывает набор встроенной периферии
- SRAMSIZ показывает объем статической ОЗУ
- EPROC показывает тип процессора
- VERSION показывает версию процессора
Содержимое второго регистра зависит от версии устройства, и его чтение покажет 0 в том случае, если значение бита EXT нулевое.
27.4.1 Предотвращение доступа по ICE
Модуль внутрисхемной отладки дает возможность блокировать доступ к системе через интерфейс ICE процессора ARM. Эта особенность реализуется через регистр DBGU_FNR, который обеспечивает возможность устанавливать и удерживать (зажать) сигнал NTRST ICE интерфейса.
В обычных устройствах бит FNTRST установлен в 0 и не влияет на доступ ICE.
Запись 1 запретит любые действия TAP (Test Action Port) контроллера.
Эта особенность будет наиболее полезна при использовании заказных ПЗУ, так как дает разработчику возможность полностью закрыть любой доступ к коду.
|