|
ADSP-2181 EzKIT, Трудное начало... |
|
|
|
Nov 26 2007, 15:57
|
Местный
  
Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765

|
Цитата(InvisibleFed @ Nov 26 2007, 13:05)  Ух... Прочитал докуму про настройку порта... Чтоб он сгнил этот проц! Такой гемор моему поколению не нужен! =) Я пользуюсь сейчас Visual DSP 3.5. Более страшие версии поддерживают этот проц, и стоит ли их ставить? Более старшие его не держат....
|
|
|
|
|
Dec 9 2007, 22:39
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Цитата Вот посмотрите может поможет. Не стоит рассчитывать что там все верно сделано, проект был написан когда я еще был студентом в железе ничего не проверялось. Правильно ли я понял что в версии 3.5 VisualDSP при обявлении модулей используется .section, а в старом VisualDSP - .MODULE?
|
|
|
|
|
Dec 10 2007, 16:48
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Смотря что вы понимаете под модулем. Ключевое слово .section служит для размещения кода в определенном участке памяти. Память расшивается в файле *.ldf, вот кусок из моего примера Код MEMORY { seg_inttab { TYPE(PM RAM) START(0x00000) END(0x0002f) WIDTH(24) } seg_code { TYPE(PM RAM) START(0x00030) END(0x02fff) WIDTH(24) } seg_pmda { TYPE(PM RAM) START(0x03000) END(0x03fff) WIDTH(24) }
seg_data1 { TYPE(DM RAM) START(0x00000) END(0x00fff) WIDTH(16) } seg_data2 { TYPE(DM RAM) START(0x01000) END(0x01fff) WIDTH(16) } // seg_heap { TYPE(DM RAM) START(0x02000) END(0x02fff) WIDTH(16) } // seg_stack { TYPE(DM RAM) START(0x03000) END(0x03fdf) WIDTH(16) } } Ниже в этом же файле этим сегментам сопоставляются символьные имена: interrupts, program, data1, data2, pm_da. Дальше в программе пишем .section/dm означает что следующий дальше код будет размещен в памяти данных в сегменте data1, в данном случае это переменные. Код .section/dm data1; .var/circ Xn[1]={0x1234}; //Эти отсчеты должны быть отличны от нулЯ при старте .var/circ Yn[1]={0x1234}; // .var A=0x1D1B; //коэффициент в формате 4.12 равен 1,81912dec .var sigma=0x1333; //коэффициент в формате 4.12 равен 1,2dec Дальше начинается программа. Соответсвенно размещяем ее в памяти программ, в сегменте program Код .section/pm program;
CosSinGenerate: ax1=dm(Xn); ay1=dm(Yn); mx0=dm(A); my0=ay1; А для чего используется ключевое слово .MODULE честно говоря я даже не помню, в моем примере оно используется в файле sin.dsp. Да и не забудье что не следует использовать букву "я" в коментариях, если уж очень хочется русские коментарии, используйте букву "Я" (большую). Может быть вам нужна русскоязычная литература по этому процессору? у меня вроде есть чем поделиться, могу поискать.
|
|
|
|
|
Dec 10 2007, 22:07
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Про секции кода, данных я понял, пасибо. Интересовало именно нафиг нужно .MODULE. Пошарися в нете и нашел безответный пост на одном из форумов, в котором говорится, что мол .MODULE - это только для старых VisualDSP (до 3.5), а в новых все тупо распинывается по секциям. Цитата Да и не забудье что не следует использовать букву "я" в коментариях, если уж очень хочется русские коментарии, используйте букву "Я" (большую). А это почему? =) Цитата Может быть вам нужна русскоязычная литература по этому процессору? у меня вроде есть чем поделиться, могу поискать. У меня есть официальный перевод архитектуры на всю серию (многостраничный pdf) и перевод доки по ассемблеру (не полный, правда). Да и с английским проблем не много. Просто инфы кипа, толку от нее порой мало (потому как часто она тупо без примеров использования (это что касается кода), и без Ваших исходников и еще нескольких добрых людей с форума, разобраться не сразу получается даже в простом. Но если есть полезная инфа - прошу.
|
|
|
|
|
Dec 11 2007, 11:36
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Цитата Смотря что вы понимаете под модулем. Ключевое слово .section служит для размещения кода в определенном участке памяти. Память расшивается в файле *.ldf... Это VisualDSP сам делает? А то я вот пишу вроде правильно, в модуле экспортируемые функции (метки) пишу с .global (ну не сами функции, а только их название - сами функции описаны ниже в этом же файле). Потом в файле main.asm (главном) пишу .extern имя_метки. Ну и вызываю в программе. В результате, на каждую экспортируемую функцию: Код [Warning ea1121] ".\218x UART\UartParity\21xxUart.dsp":404 UartRx: -g assembly with global function without ending label. Use 'UartRx.end' or 'UartRx.END' to mark the ending boundary of the function for debugging information for automated statistical profiling of assembly functions. Как применять эти Имя_функции.END не знаю - попытался просто в конце написать - ошибка синтаксическая. А в конце концов еще и error: Код [Error li1021] The following symbols referenced in processor 'p0' could not be resolved: '_main' referenced from '218x_hdr.doj' Если не пишу в главный файл .extern для всех используемых функций - варнингов нет, только тот же error. В main.asm подключаю #include "def2181.h". Где собака зарыта? Могу выложить проектик, если есть возможность помочь.
|
|
|
|
|
Apr 4 2008, 11:15
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210

|
Привет InvisibleFed! на счёт вызова функций: каждая вызываемая функция должна выглядеть примерно так #define N 64 .section/pm bitrev; .extern inputreal, inplacereal; .global start_bitrev; start_bitrev: <-начало M0=0x0100; L0=0; I0=inplacereal; // для 64 М0=0х0100 // для 8 М0=0х0800 M4=1; L4=0; I4=inputreal; CNTR=N; ENA BIT_REV; DO brev UNTIL CE; AY1=DM(I4,M4); brev: DM(I0,M0)=AY1; DIS BIT_REV; RTS; start_bitrev.end: <-конец visualDSP сначала тоже ругался что нет start_bitrev.end, потом просто дописал и всё прошло. проверь правильность объявления сегментов в памяти. или выложи кусок кода, может что и увижу  Теперь мой вопрос. С visualDSP я совладал там прога работает, достал макетку ADSP 2181 сижу и думаю как перелить из visualDSP в железку мою прогу???
--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете. Альберт Эйнштейн
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|