Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 8 текст программы JTAG UART. S






 

/****************************************************************

* Программа выполняет следующее:

* 1. отправляет символьную строку из текстовой строки в JTAG UART

* 2. считывает данные из JTAG UART

* 3. отправляет считанные данные обратно в JTAG UART

********************************************************************/

 

.text

.global _start

_start:

 

 

movia sp, 0x07FFFFFC /* Определяем адрес вершины стека */

 

movia r6, 0x10001000

 

 

movia r8, TEXT_STRING /* адрес текстовой строки в r8 */

LOOP:

ldb r5, 0(r8) /* из текстовой строки в r5*/

call PUT_JTAG /* вызываем процедуру, которая помещает символ в JTAG */

 

addi r8, r8, 1

 

br LOOP /* переходим на вывод очередного символа */

 

GET_JTAG:

ldwio r4, 0(r6) /*читаем регистр управления JTAG UART*/

andi r8, r4, 0x8000 /*проверяем есть ли новые данные*/

beq r8, r0, GET_JTAG /*если данных нет, то ожидаем их появления*/

andi r5, r4, 0x00ff /*получаем данные*/

 

call PUT_JTAG /*отправляем символ обратно в JTAG UART*/

call GET_JTAG

 

.end

 

/********************************************************************

* Подпрограмма, которая выводит символы в JTAG UART

* r5 = выводимый символ

* r6 = JTAG UART базовый адрес

********************************************************************/

 

.global PUT_JTAG

PUT_JTAG:

 

/* сохраняем используемые регистры */

 

subi sp, sp, 4 /* резервирум место в стеке*/

stw r4, 0(sp) /* сохраняем r4 в стеке */

 

ldwio r4, 4(r6) /* читаем регистр управления JTAG UART */

andhi r4, r4, 0xffff /* проверяем есть ли место для записи в буфере UART */

beq r4, r0, KONEC /* если места нет, то переполнение буфера */

stwio r5, 0(r6) /* отправляем символ в UART */

 

OVERFLOW:

 

/* восстанавливаем содержимое r4 */

 

ldw r4, 0(sp)

addi sp, sp, 4

 

ret

 

/******************************************************************/

 

.data

 

TEXT_STRING:

.asciz " \nJTAG UART example code\n"

 

.end

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.