Перейти к содержанию
    

но в IVPD адрес прописал.

какой? "ResetVector"?

 

я пробовал ставить точку остановки в векторе, и он на нее не попадает..

а куда попадает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да reset vector:(в дисасемблере нашел адрес метки и прописал его.)

IVPD=0x2000, а перескакивает по адресу 0x4b327..и зацикливается там.

 

вот еще ошибку выводит....

C55xx: Can't Single Step Target Program: (Error -1141 @ 0x0) Device is not responding to the request. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.0.747.0)

Изменено пользователем firegum

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все кто пишет про то что студенты тупые, ленивые, им фиолетово, начхать на учебу и тд вы не справедливы. меня аж коробит от такого и не могу не написать гневный пост! сами вы давно начинали? может тут все такие умные сидят что они на раз дсп процессор выучили? но расскажу историю по порядку!

 

пишу т к я закончил в прошлом году этот же универ что и автор темы. более того эту же специальность. И микропроцессоры это далеко не профильный предмет на нем. автор писал что митода написана для другого процессора - для Мультикора от Элвиса. мы их прогали но виртуально т к физически их было всего 1 штука где то в шкафу(подарил кто то). тоже на них учили уарт дма и дсп. норм тк документация норм и на русском.

 

Автору повезло меньше - то ли опять кто то подарил кафедре платы TI то ли что - короче штук 5-8 надыбали. А уж что подарили то и используют. хотя теже аврки купить 300 рэ. и конечно камень сложный и так просто не разобраться тем более что документация имхо говно какое то. то ли дело на AVR или stm32.

 

"плохо читали доки" - конечно плохо. ее уметь надо читать. тыкать в документацию бесполезно. ее уже читали и ничего не поняли. лучше всего самый простой пример. пример любого прерывания а уж адаптировать его на уарт сумеют.

 

"Проблема отсутствия опыта, решается накоплением опыта" Серьезно? давно в универе учились? это в ПТУ нехер делать. а в нашем универе не так свободного времени. ! тем более без платы ты ничего не можешь сделать ! а она в универе есстественно.

 

 

"человек с э... ограниченными возможностями"? а вы простите гений и тоже начали сразу с дсп? не судите по себе не все такие. есть и обычные люди, которым о ужас эти микроконтроллеры даже не интересны могут быть (я этого не знаю)...

 

"проконсультироваться с преподавателем"? да они сами первый раз этот камень видят, как они могут помочь? они знают в теории как работает уарт и все. в теории...

 

"Начинающим задания программировать DSP-процессоры не дают" три раза ха. У НАС дают (((

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да reset vector:(в дисасемблере нашел адрес метки и прописал его.)

IVPD=0x2000, а перескакивает по адресу 0x4b327..и зацикливается там.

 

в IVPD/IVPH заносят не вектор, а адрес таблицы векторов, в которой уже первый вектор - резетный, остальные от остальных прерываниий. Да и по резет вектору оно перейдет только по команде ассемблера "reset", оно вам нужно? А по физическому резету все равно IVPD тоже переинициализируется на FFFF.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в IVPD/IVPH заносят не вектор, а адрес таблицы векторов, в которой уже первый вектор - резетный, остальные от остальных прерываниий.

ну сейчас я сделал по другому..выделил секцию памяти для вектора(прописал его туда), и прописал адрес начала этой секции в IVPD.

 

Да и по резет вектору оно перейдет только по команде ассемблера "reset", оно вам нужно? А по физическому резету все равно IVPD тоже переинициализируется на FFFF.

что значит "физический ресет"?.

Да и по резет вектору оно перейдет только по команде ассемблера "reset", оно вам нужно?

почему?.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что значит "физический ресет"?.

почему?.

 

"физический" - инициированный уровнем сигнала RESET на пине процессора. "софтверный" - по инструкции "reset". Так вот - тот, что по пину резет - он перезагрузит IVPD на FFFF. Тот, который софтверный - сомневаюсь, что вы его используете. Поэтому я и не вижу смысла вообще иметь какой то осмысленный reset vector. Заполняйте только то поле таблицы векторов, которое нужно для обслуживания нужного Вам прерывания. Когда заносите начальный адрес таблицы веткоров в IVPD, не забывайте, что нужно заносить туда БАЙТОВЫЙ (а не словесный, используемый для доступа к данным) адрес, сдвинутый на 8 разпрядов вправо, и иметь таблицу, выровненную физически в памяти на 256 байт.

Это все надо проверить в листинге и в карте загрузки, все ли правильно заносится и располагается.

 

почему? Вопрос скорее риторический... Потому что так разработчики ядра сделали.

 

PS

 

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

               .sect   ".vectors"

               			;SINT IER/IMR Description  
vecs:		.ivec	begin, USE_RETA	; 00  00 0001 Reset
	.ivec	iret1		; 01  01 0002 NMI
	.ivec	iret1		; 02  02 0004 Ext. #0
	.ivec	iret1		; 03  03 0008 Ext. #2
	.ivec	timer_int	; 04  04 0010 Timer #0
	.ivec	iret1		; 05  05 0020 MCBSP #0 RX
	.ivec	iret1		; 06  06 0040 MCBSP #1 RX
	.ivec	iret1		; 07  07 0080 MCBSP #1 TX
	.ivec	iret1		; 08  08 0100 USB
	.ivec	dmac1_int	; 09  09 0200 DMAC #1
	.ivec	iret1		; 10  10 0400 HPI
	.ivec	iret1		; 11  11 0800 Ext #3, WDT
	.ivec	uart_int	; 12  12 1000 UART
	.ivec	iret1		; 13  13 2000 --- reserved ---
	.ivec	iret1		; 14  14 4000 DMAC #4
	.ivec	iret1		; 15  15 8000 DMAC #5
	.ivec	iret1		; 16  00 0001 Ext #1
	.ivec	iret1		; 17  01 0002 MCBSP #0 TX
	.ivec	dmac0_int	; 18  02 0004 DMAC #0
	.ivec	iret1		; 19  03 0008 Ext #4, RTC
	.ivec	dmac2_int	; 20  04 0010 DMAC #2
	.ivec	iret1		; 21  05 0020 DMAC #3
	.ivec	iret1		; 22  06 0040 Timer #1
	.ivec	i2c_int		; 23  07 0080 I2C
	.ivec	iret1		; 24  08 0100 Bus access error
	.ivec	iret1		; 25  09 0200 Data log int
	.ivec	iret1		; 26  10 0400 RTOS int
	.ivec	iret1		; 27  11 0800 SINT 27
	.ivec	iret1		; 28  12 1000 SINT 28
	.ivec	iret1		; 29  13 2000 SINT 29
	.ivec	iret1		; 30  14 4000 SINT 30
	.ivec	iret1		; 31  15 8000 SINT 31

 

При этом я реально использую команду "reset" при инициализации, поэтому в таблице имеется осмысленный вектор резета (на символ "begin"). А использую я это с целью сменить режим работы стека на двухуказательный SP/SSP (USE_RETA), так как это переключение делается ТОЛЬКО по команде софтверного резета.

 

инициализация:

	amov	#3FFFh,xsp
	amov	#3EFFh,xssp

	rpt	#20
	nop

	mov	#vecs>>8,mmap(@IVPD)
	mov	#vecs>>8,mmap(@IVPH)

	rpt	#20
	nop      

; Сброс процесора и перевод его в режим с сдвоенным стеком 
; и быстрым возвратом из подпрограмм

	reset           

	nop      
	nop      
	nop      
	nop      
	nop      
	nop      
	nop      
	nop      

halt:		b	halt


begin:	

; Инициализация стека

	amov	#usrstack+STACKSIZE-2,xsp
	amov	#sysstack+STACKSIZE-2,xssp
......
......
......

 

P.P.S.

Если проект на чистом С, то соотв. никакой инициализации не надо, ее делает C runtime, а таблица векторов не требует наличия в ней осмысленного резет-вектора, и указания режима стека (USE_RETA и т.п.), а только нужные вектора для работы с внешними устройствами. Однако таблица векторов должна быть описана на ассемблере директивами ".ivec" в любом случае, желательно оформить ее отдельным файлом. Тут, так сказать, я пас, у меня не было еще проектов под 55хх на чистом С, в основном все на чистом ассемблере, изредка с вкраплениями С-кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"проконсультироваться с преподавателем"? да они сами первый раз этот камень видят, как они могут помочь? они знают в теории как работает уарт и все. в теории...

а зачем нужен препод, который не может объяснить? если проблема у всего потока - это к декану. если проблема у одного одаренного - то стоит задуматься

"плохо читали доки" - конечно плохо. ее уметь надо читать. тыкать в документацию бесполезно. ее уже читали и ничего не поняли. лучше всего самый простой пример. пример любого прерывания а уж адаптировать его на уарт сумеют.

а чему учат в ВУЗе? - пользоваться литературой.

firegum, заработало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

bav, почти).

SM, спасибо, я в IVPD записывал без сдвига)..вот он и убегал хз куда)..пару раз норм сработал, вошел в процедуры обработки, но сейчас перестал вообще регистрировать прерывания(флаг в IIR не подымается)

может что то не так делаю.

clearreg();
UART_FCR=0x1;// включил режим FIFO
UART_IER=0x07;// Открыл прерывания от UART
IER0=0x40;// открыл глобальные прерывания от UART
IER1=0x0;
UART_LCR=0x03;//указываю длину передаваемой последовательности битов
UART_MCR=0x10;//режим отладки(петли)
initmac();//тоже глобальное открытие прерываний в регистре CPU ST1_55.INTM
UART_FCR=0x7;//обнулил приемник и передатчик

Изменено пользователем firegum

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пару раз норм сработал, вошел в процедуры обработки, но сейчас перестал вообще регистрировать прерывания(флаг в IIR не подымается)

 

Ну тут придется сообразить, что менялось между тем, как срабатывал, и как перестал. А также (для проверки недоинициализации чего либо) попробовать сделать сброс питанием перед очередным экспериментом.

 

Еще, возможно, если Вы усугубляете весь процесс отладкой под эмулятором в реалтайм режиме, то, возможно, надо еще DBIER разрешать, а не только IER.

 

Еще, вдогонку - процедура прерывания оформлена правильно? Возврат из нее командой процессора reti ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще, вдогонку - процедура прерывания оформлена правильно? Возврат из нее командой процессора reti ?

да

 

 

 

как то на рандом срабатывает иногда..понять ничего не могу)..в DBIER разрешил прерывание уарта, перешел в оработчик, потом ничего существенного не менял, и он перестал переходить).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день уважаемые участники форума, есть вопрос по поводу процессора указанного в заголовке темы, поэтому прошу простить мне ап старой темы.

В документации указана поддержка USB 2.0 High-Speed (25—480 Мбит/с согласно вики), какой скорости передачи удавалось достичь на практике?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...