реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> OMAP L138, быстрый старт
torik
сообщение Aug 23 2012, 04:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Всем привет.

Сигнальниками раньше не занимался, больше ПЛИС. Но СИ и еклипс мне знакомы.
Сделал плату, на ней имеется ПЛИС и OMAP L138.
Нужно написать простую программку для проверки работоспособности платы:
- EMIF, подключенный к ПЛИС
- UPP, подключенный к ПЛСИ
- чтение/запись DDR2, подключенной к сигнальнику
- помаргать светодиодиками.

Что-то не могу найти простых толковых примеров, Quick Start или еще чего. Ткните куда-нибудь...

"хело ворлд" в Code Composer Studio v5 получил, т.е. jtag работает, проц запускается.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Aug 23 2012, 07:12
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(torik @ Aug 23 2012, 07:51) *
...Что-то не могу найти простых толковых примеров, Quick Start или еще чего. Ткните куда-нибудь...

Возможно, Вам будут полезны примеры из StarterWare.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 23 2012, 14:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Почитал доку на upp - там гора регистров, может проще под bios драйвера скачать и пойти таким путем?
Про биос есть дока толковая?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 23 2012, 14:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 23 2012, 18:15) *
Почитал доку на upp - там гора регистров

UPP - пожалуй, один из самых простых модулей. Окучить его в минимальном виде можно буквально десятком строк на "C".
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 23 2012, 15:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Дык есть примеры-то?
Да даже проще - я не понимаю как светодиодами через GPIO помаргать. Скачивал какие-то примеры - но они не компилятся.

Начнем с простого GPIO - как настроить на выход и изменять значение?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 23 2012, 15:41
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 23 2012, 19:04) *
Начнем с простого GPIO - как настроить на выход и изменять значение?

1. Включить GPIO в PSC
2. Настроить соответствующий PINMUX
3. Настроить пин на вывод и вывести значение

Примерно так же, как и в любом МК. Только на первый взгляд все кажется монструозным.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 24 2012, 12:34
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
1. Включить GPIO в PSC
2. Настроить соответствующий PINMUX
3. Настроить пин на вывод и вывести значение


Уже становится понятнее. А что такое PSC, есть для вышеперечисленных пунктов подробный порядок действий?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 24 2012, 13:00
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 24 2012, 16:34) *
Уже становится понятнее. А что такое PSC, есть для вышеперечисленных пунктов подробный порядок действий?

PSC - Power and Sleep Controller.

Подробный порядок действий для GPIO:
1. PSC
1.1. Записываем 0x03 (Enable State) в регистр MDCTL3 модуля PSC1 (MDCTL3 @ PSC1 - GPIO, привязки даны в документации на PSC)
1.2. Ставим GO0 в регистре PTCMD модуля PSC1, вызывая тем самым смену состояния
1.3. Дожидаемся сброса бита GOSTAT0 в регистре PTSTAT
2. PINMUX
2.1. Просто выставляем нужное значение в соответствующем поле PINMUX
3. GPIO
3.1. Убеждаемся, что ID модуля читается, т.е. п.1 отработали правильно
3.2. Сбрасываем нужный бит в DIRxx, переводя тем самым пин на выход
3.3. Пишем SET_DATAxx / CLR_DATAxx, наблюдаем изменение состояния пина
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 24 2012, 13:21
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Во, что-то более-менее понятное в StraterWare вижу.
Скомпилил пример. А когда создаю свой проект, где в проекте указать --include path?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 06:25
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Когда ARM ядро запускаю, все нормально. Прога дебажится через SAU-510.
Однако когда создаю проект под DSP ядро, при попытке подключиться дает ошибку:

Код
Error connecting to the target:
(Error -1180 @ 0x0)
Device is held in reset. Take the device out of reset, and retry the operation.
(Emulation package 5.0.747.0)


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

Проверили на отладке - ведет себя также


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 06:57
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



DSP нужно включить со стороны ARM'а - он выключается почти сразу после старта.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 07:41
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Охренеть.

По примерам из StarterWare:
Код
   PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);

И заливаю это в АРМ, все верно?

А как положить это в ПЗУ, хотя бы M25P64, подключенное к сигнальнику? А то не могу же я, не прекратив выполнение программы арма началь отладку дсп...


Но кроме того, вернусь к изначальной теме: мне надо помыргать светодиодом.
На основе StarterWire и рекомендаций aaarrr (я только не понял че там за ID такой), написал прогу и запускаю ее под арм:

Код
#include <stdio.h>

#include "gpio.h"
#include "psc.h"

#include "soc_OMAPL138.h"
#include "lcdkOMAPL138.h"

#include "hw_syscfg0_OMAPL138.h"

#include "hw_types.h"

/*****************************************************************************
**                       MACRO DEFINITION
*****************************************************************************/
/* Pin Multiplexing bit mask to select GP0[0] pin. */
#define PINMUX1_GPIO0_0_ENABLE    (SYSCFG_PINMUX1_PINMUX1_27_24_GPIO0_1  << SYSCFG_PINMUX1_PINMUX1_27_24_SHIFT)

/****************************************************************************/
/*              LOCAL FUNCTION PROTOTYPES                                   */
/****************************************************************************/
static void Delay(volatile unsigned int delay);

/****************************************************************************/
/*              GLOBAL VARIABLES                                            */
/****************************************************************************/

/****************************************************************************/
/*             LOCAL FUNCTION DEFINITIONS                                   */
/****************************************************************************/




//#include <OMAPL138_common.h>
/*
* hello.c
*/
void main(void) {
    printf("Hello World!\n");
    //CSL_FINS(gpioRegs->BANK[GP0].DIR, GPIO_DIR_DIR12, CSL_GPIO_DIR_DIR_OUT);
    unsigned int savePinmux = 0;


    /* The Local PSC number for GPIO is 3. GPIO belongs to PSC1 module.*/
   PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);

   PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);

    /* Pin Multiplexing of pin 12 of GPIO Bank 6.*/
//   GPIOBank6Pin12PinMuxSetup();
    /*
    ** Clearing the bit in context and retaining the other bit values
    ** in PINMUX10 register.
    */
    savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
                 ~(SYSCFG_PINMUX1_PINMUX1_31_28));

    /* Setting the pins corresponding to GP4[0] in PINMUX10 register.*/
    HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
         (PINMUX1_GPIO0_0_ENABLE | savePinmux);


    /* Sets the pin 1 (GP0[0]) as out.*/
    GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);

    while(1)
    {
        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_LOW);

        Delay(1000000);

        GPIOPinWrite(SOC_GPIO_0_REGS, 1, GPIO_PIN_HIGH);

        Delay(1000000);
    }


}

/*
** \brief  This function checks the insertion status of the MMC/SD card
**         in the device and prints related statements on the serial
**         commuincation console of the external device.
**
*/

/*
** \brief   This function can be called to generate a delay.
*/

static void Delay(volatile unsigned int delay)
{
    while(delay--);
}


Однако светодиод не моргает. Подпрогаммы посмотрел, вроде бы все верно (да и кто бы сомневался). Может в арм-е по-другому надо с psc что-то делать, что-то еще включить?





--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 09:03
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 29 2012, 11:41) *
По примерам из StarterWare:
Код
   PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);

И заливаю это в АРМ, все верно?

Со StarterWare я не знаком, но на вид верно.

Цитата(torik @ Aug 29 2012, 11:41) *
А как положить это в ПЗУ, хотя бы M25P64, подключенное к сигнальнику? А то не могу же я, не прекратив выполнение программы арма началь отладку дсп...

Могу предложить Хитрый Способ:
1. Создаем в HEX-редакторе "бинарник" для ARM из одной инструкции "b .": 0xfe 0xff 0xff 0xea
2. Берем AISGen, ставим в нем галку "Configure PSC", разрешаем в конфигурации PSC DSP
3. Создаем загрузочный образ
Дубово, но зато просто и будет работать.

Цитата(torik @ Aug 29 2012, 11:41) *
Но кроме того, вернусь к изначальной теме: мне надо помыргать светодиодом.
На основе StarterWire и рекомендаций aaarrr (я только не понял че там за ID такой), написал прогу и запускаю ее под арм:
...
Однако светодиод не моргает. Подпрогаммы посмотрел, вроде бы все верно (да и кто бы сомневался). Может в арм-е по-другому надо с psc что-то делать, что-то еще включить?

ID - регистр модуля GPIO. Его можно прочитать, чтобы убедиться, что клок на самом деле включен.
Подозреваю, что SYSCFG залочен (см. регистры Kick0, Kick1), поэтому запись в PINMUX не проходит.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 09:44
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
Подозреваю, что SYSCFG залочен (см. регистры Kick0, Kick1), поэтому запись в PINMUX не проходит.


Пишу такую последовательность:
Код
    HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK0R) = 0x83e70b13;
    HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK1R) = 0x95a4f1e0;


Эффект нулевой.

Цитата
ID - регистр модуля GPIO

Для тупых поясните - что это такое за регистр ID модуля GPIO?

Попробовал прочитать пинмукс после записи в него - результат 0, несмотря на разлочивание.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 09:56
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 29 2012, 13:44) *
Для тупых поясните - что это такое за регистр ID модуля GPIO?

Регистр REVID, 0-й адрес в пространстве модуля. Не знаю, как еще объяснить.

Цитата(torik @ Aug 29 2012, 13:44) *
Попробовал прочитать пинмукс после записи в него - результат 0, несмотря на разлочивание.

Возможно, процессор не в привилегированном режиме находится. Попробуйте прочитать REVID SYSCFG.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 10:10
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Чтение REVID дает 0x4E840102

а пинмукс читается как 0


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 10:11
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Попробуйте теперь прочитать DEVIDR0.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 10:16
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Кстати, SYSCFG0_KICK0R тоже 0

DEVIDR0 = 0x1B7D102F


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 10:19
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Странно как-то. В каком режиме процессор (регистр CPSR)?
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 10:40
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Такого регистра не наблюдаю в документации вообще


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 10:47
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Это регистр процессора, из серии R0, R1 и т.п.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 11:28
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



В регистре R0 содержится адрес зинмукса вроде 0x01C14124.

В режиме дебага вручную правлю регистр пинмукс1 - и запускаю прогу, диод начинает моргать.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 11:28
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(aaarrr @ Aug 29 2012, 14:47) *
Это регистр процессора, из серии R0, R1 и т.п.

Здесь имелось в виду, где смотреть. Нужно знать именно значение CPSR.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 11:43
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



0x200000D0

Есть подозрение, что надо как-то перевести проц в режим supervisor-а, иначе регистры kick и иже с ними не пишутся походу.

Типа чё типа как надо сделать?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 11:45
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 29 2012, 15:36) *
0x200000D0

Понятно: процессор в user mode, поэтому и доступа к SYSCFG нет. Надо шерстить стартап StarterWare на предмет выставления режима.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 12:11
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Exception по Reset-у как раз в режиме супервизора.
Надо как-то сделать ему обработчик, где и буду все эти регистры инициализировать.

Как вариант?

или даже Software interrupt, но не знаю как это сделать на сях.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 12:27
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(torik @ Aug 29 2012, 16:11) *
Exception по Reset-у как раз в режиме супервизора.
Надо как-то сделать ему обработчик, где и буду все эти регистры инициализировать.

Как вариант?

Так он уже есть, надо только модифицировать на предмет отмены перевода в user.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 29 2012, 12:36
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Ух ты. Где это сделать?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
maxis
сообщение Aug 29 2012, 12:45
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 2-06-09
Пользователь №: 49 843



Тоже интересно, не поделится ли кто примером как попасть в режим супервизора?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 29 2012, 12:54
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(maxis @ Aug 29 2012, 16:45) *
Тоже интересно, не поделится ли кто примером как попасть в режим супервизора?

Вариантов два:
- не попадать в режим юзера
- SWI

Нужно изучать/модифицировать исходники. Тут не помогу, т.к. у меня их нет.
А вообще, запускаем поиск по "msr" - и вперед.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 30 2012, 02:46
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(aaarrr @ Aug 29 2012, 12:57) *
DSP нужно включить со стороны ARM'а - он выключается почти сразу после старта.

Хм... А что - в L138 первым стартует ARM?
Работал с L137 только - там стартует DSP (по вкл. питания ARM - в ресете) , код bootloader-а выполняет DSP, и в пользовательском ПО чтобы использовать ARM, надо сперва прописать таблицу векторов для ARM (в его памяти), а потом - включить его и вывести из ресета.
Под JTAG - на L137 доступны сразу оба ядра, так как JTAG их сам выводит из ресета когда подключается к ним. И на отладку под JTAG можно запускать сразу два проекта параллельно.

Цитата(aaarrr @ Aug 29 2012, 17:45) *
Понятно: процессор в user mode, поэтому и доступа к SYSCFG нет. Надо шерстить стартап StarterWare на предмет выставления режима.
rts.lib файл boot.asm:
Код
cstartup: .asmfunc                                        
  MRS   R0, SPSR    ;Now will                  
  ORR   R0, R0, #CPU_MODE_SYS;set to SVC mode                  
  MSR   CPSR, R0    ;  with privileges
Можно конечно через SWI. Но я делаю как показал выше - так проще.
Кроме того - в этом rts.lib можно ещё что-нить пооптимизить и пообкусывать.
Go to the top of the page
 
+Quote Post
torik
сообщение Aug 30 2012, 05:50
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Скачали с сайта техаса файл boot.asm, тупо добавили его в проект - все заработало.

Как это работает, каким образом этот асм файл встроился в код - непонятно совершенно.

А сигнальник все равно в ресете

На строках

Код
     PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_ALWAYS_ON,
             PSC_MDCTL_NEXT_ENABLE);


виснет. Какой порядок включения dsp? Разве не такой же как и GPIO?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 30 2012, 06:21
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jcxz @ Aug 30 2012, 06:46) *
Хм... А что - в L138 первым стартует ARM?

Там мудреная система загрузки: первым стартует DSP, затем он при помощи PRU окучивает ARM, потом ARM отрубает DSP.

Цитата(torik @ Aug 30 2012, 09:50) *
Какой порядок включения dsp?

Порядок включения описан в разделе "DSP Wake Up" sprugm7. Но виснуть при обращении к PSC всяко не должен.
Go to the top of the page
 
+Quote Post
maxis
сообщение Aug 30 2012, 09:26
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 2-06-09
Пользователь №: 49 843



Цитата(aaarrr @ Aug 30 2012, 10:21) *
Порядок включения описан в разделе "DSP Wake Up" sprugm7. Но виснуть при обращении к PSC всяко не должен.


По мануалу:

Perform the following steps to wake up the DSP:
1. Write a 83E7 0B13h to the KICK0R register in the SYSCFG module.
2. Write a 95A4 F1E0h to the KICK1R register in the SYSCFG module.
3. Write the truncated DSP boot address vector to the DSP_ISTP_RST_VAL field in the host 1
configuration register (HOST1CFG) of the SYSCFG module. The least-significant bits of the boot
address are fixed at 0.
4. Write a 3h to the NEXT bit in the DSP local power sleep controller (LPSC) module control register
(PSC0.MDCTL15) to prepare the DSP module for an enable transition (to enable the clocks and all
transitioning from the SwRstDisable state to Enable state).
5. Write a 1 to the GO[1] bit (DSP subsystem is part of the PD_DSP domain) in the power domain
transition command register (PSC0.PTCMD) to start the state transition sequence for the DSP module.
6. Check (poll for 0) the GOSTAT[1] bit in the power domain transition status register (PSC0.PTSTAT) for
power transition sequence completion. The domain is only safely in the new state after the GOSTAT[1]
bit is cleared to 0.
7. Wait for the STATE bit field in the DSP LPSC module status register (PSC0.MDSTAT15) to change to
3h. The module is only safely in the new state after the STATE bit field changes to reflect the new
state.
8. Write a 1 to the LRST bit in PSC0.MDCTL15 to release the DSP local reset controlled by the PSC
module.

Выполняю следующее:

Код
    HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK0R) = 0x83e70b13;
    HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK1R) = 0x95a4f1e0;

    //Включение DSP
    HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_HOST1CFG) = 0x00E00000;
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDCTL_NEXT_ENABLE);
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_PTCMD_GO1);
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_PTSTAT_GOSTAT1_SHIFT);
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_STATE);
    PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_LRST);


И на строке
Код
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_STATE);

Выполнение программы подвисает. Что делаю не так?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 30 2012, 10:27
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(maxis @ Aug 30 2012, 13:26) *
И на строке
Код
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_STATE);

Выполнение программы подвисает. Что делаю не так?

А что говорит PSC0.MDSTAT15?
Go to the top of the page
 
+Quote Post
maxis
сообщение Aug 30 2012, 11:24
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 2-06-09
Пользователь №: 49 843



Цитата(aaarrr @ Aug 30 2012, 14:27) *
А что говорит PSC0.MDSTAT15?

0x00000A00
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 30 2012, 12:54
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



То есть по статусу он и не начинал включаться. Нужно смотреть внутренности PSCModuleControl, так у меня идей нет.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 31 2012, 20:01
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(aaarrr @ Aug 30 2012, 12:21) *
Там мудреная система загрузки: первым стартует DSP, затем он при помощи PRU окучивает ARM, потом ARM отрубает DSP.

Значит - всё точно так же как в L137.
А зачем Вы отрубаете DSP после старта ARM?
Если интересно могу привести свой код, которым запускаю ARM (см. прикреплённый файл).Прикрепленный файл  boot.zip ( 1.05 килобайт ) Кол-во скачиваний: 140
Файл boot.asm (который в составе rts.lib) модифицирован как указано в моём посте выше.
Начало main() из DSP-проекта:
Код
#pragma FUNC_NEVER_RETURNS
int main()
{
  u32 cpuUseIdle;
  s32 i;

  CACHE.L1DCFG = 7;
  i = CACHE.L1DCFG;
  soc.faza = soc.FAZA_BEGIN;
  EnableARM();

  CooperateWait(soc.FAZA_DSPIDLE_MEAS); //отсель ARM и DSP работают совместно
  ...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 31 2012, 21:10
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jcxz @ Sep 1 2012, 00:01) *
Значит - всё точно так же как в L137.

Нет, совершенно по-другому. DSP после старта отрубает программа из ARM Boot ROM.
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 1 2012, 18:26
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(jcxz @ Sep 1 2012, 00:01) *
Значит - всё точно так же как в L137.


Это и есть основное, если даже не единственное отличие 137 и 138 - в 137 стартует DSP с заглушенным ARM, а в 138 наоборот, стартует ARM с заглушенным DSP.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 2 2012, 05:54
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(SM @ Sep 2 2012, 00:26) *
Это и есть основное, если даже не единственное отличие 137 и 138 - в 137 стартует DSP с заглушенным ARM, а в 138 наоборот, стартует ARM с заглушенным DSP.

Да уж, нагородили ... техасцы на ровном месте..... wacko.gif
Думаю, что у L138 тогда более логичный порядок старта. Всегда удивляло - зачем в L137 сделали главным в запуске DSP?
Кстати - не единственное - для нас существенным доводом в пользу L137 против L138 стало наличие в первом McASP (в L138 - только McBSP).
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 2 2012, 08:32
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(jcxz @ Sep 2 2012, 09:54) *
Всегда удивляло - зачем в L137 сделали главным в запуске DSP?

Все просто. Есть задачи, где ДСП молотит всегда, а АРМ у него на подручных работах - TCP/IP например. Там не надо, чтобы АРМ стартовал первым, ДСП в него грузит нужные протокольные уровни и работает через него как через сопроцессор связи. Там L137 удобен - так как ДСП грузится первым и дальше мастерит всеми процессами. А есть другие задачи - где АРМ работает например под линуксом, а ДСП у него на подручных работах - кодек загрузить, когда юзер захочет. Вот тут L138 самое оно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 2 2012, 09:27
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



На самом деле в L138 первым тоже стартует DSP, просто от конечного пользователя вся эта кухня скрыта.

И в нем есть McASP, куда же без него.
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 2 2012, 13:47
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(aaarrr @ Sep 2 2012, 13:27) *
На самом деле в L138 первым тоже стартует DSP

Конечно, точно не могу утверждать, но косвенные признаки показывают, что это не так. Если выполнить hardware reset через JTAG при помощи ICEPICK, и не дать ядрам выполнить ничего из внутреннего ПЗУ, то живым в L138 оказывается таки ARM, а в L137 - DSP. И это же следует из анализа стартапных GEL-файлов обоих процессоров, и последовательностей коннекта эмуляторов к ядрам.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 2 2012, 21:14
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Вот цитата из errata, касающаяся ревизий 2.0 и ниже:
Цитата
For affected silicon revisions, the DSP initiates the system boot sequence when the
device is released from reset. Before the ARM can take control of the user boot mode,
the DSP must first initialize the ARM reset vector table so that the ARM will execute from
its boot ROM.

Возможно, в 2.1 последовательность поменяли, хотя проще было бы пропатчить DSP boot ROM.
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 3 2012, 05:35
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(aaarrr @ Sep 3 2012, 01:14) *
Вот цитата из errata, касающаяся ревизий 2.0 и ниже:

Возможно, в 2.1 последовательность поменяли, хотя проще было бы пропатчить DSP boot ROM.


так и именно, оный глюк был в далекой древности и устранен...
Go to the top of the page
 
+Quote Post
remi700
сообщение Sep 22 2013, 19:36
Сообщение #47





Группа: Новичок
Сообщений: 4
Регистрация: 22-09-13
Пользователь №: 78 436



Возникла примерно такая же задача как в начале темы - на OMAP-L138 протестировать uPP, EMIF и I2C для связи с ПЛИС, только под встроенным Linux и не привлекая DSP ядро. Если с I2C все понятно, то на вопрос о запуске uPP на ARM без запуска DSP на форуме TI отвечают только "используйте DSP/LINK", хотя uPP выглядит достаточно простым. Почему нельзя запустить его не запуская DSP? На форуме и в даташитах прямого ответа на этот вопрос нет (возможно проглядел что он может писать только в память DSP?).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 22 2013, 19:46
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(remi700 @ Sep 22 2013, 23:36) *
Почему нельзя запустить его не запуская DSP?

Запустить можно, просто драйвера в SDK нет, поэтому и отвечают, что нельзя.
Go to the top of the page
 
+Quote Post
ASN
сообщение Sep 23 2013, 05:48
Сообщение #49


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



remi700
Для того, чтобы портестировать UPP можно написать программу без Linux с использованием DMA.
Или написать драйвер net_device (например, на основе драйвера emac).
IMHO, DSP/LINK удобен именно для связи с DSP.
Go to the top of the page
 
+Quote Post
octobus
сообщение Nov 1 2013, 16:30
Сообщение #50


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



Есть у кого рабочий пример работы с UPP без DSP/BIOS. Интерфейс на первый взгляд простой, но GPIO тоже простые, а как посмотришь инициализицию там туче пересылок, прежде чем активируешь порты.
И еще вопрос, работал ли кто нибудь с UPP через его DMA? Есть исходники, может кто поделится.
Сам я не уверен, что удастся в разумные сроки разобраться с DMA. На E2E столько тем, где люди копаются с UPP и толком ни один топик не решен.
Короче нужна помощь.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 1 2013, 18:17
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Если не считать инициализации PINMUX и PSC, для запуска и начала передачи (с DMA) в UPP нужно прописать всего полдюжины регистров.
Исходники мало помогут, ибо все настройки напрямую зависят от того, какая железка прикручена с другой стороны UPP.
Поэтому лучше изложить ситуацию и задать вопросы. Интерфейс действительно очень простой.
Go to the top of the page
 
+Quote Post
lekintr
сообщение Nov 1 2013, 18:28
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-10-13
Пользователь №: 78 684



Цитата(aaarrr @ Nov 1 2013, 21:17) *
Поэтому лучше изложить ситуацию и задать вопросы. Интерфейс действительно очень простой.

Поддерживаю.

Сообщение отредактировал lekintr - Nov 1 2013, 18:29
Go to the top of the page
 
+Quote Post
ASN
сообщение Nov 3 2013, 11:32
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



octobus
Как точно заметил уважаемый aaarrr исходники мало помогут, ибо все настройки напрямую зависят от того, какая железка прикручена с другой стороны UPP.
Интерфейс простой, но есть несколько тонкостей.
Во-первых, чтобы использовать на всю катушку пропускную способность UPP (а иначе зачем DMA?) лучше выделять большие массивы под окна и работать поллингом по строкам, читая соответствующее регистры. А поддержку пакетирования можно реализовать передачей тегов в первой сроке пакета, состоящего из переменного количества строк.
Во-вторых, аппаратное управление потоком работает только в одну сторону (если не ошибаюсь, по приёму от OMAP). В другую сторону оно не работает, и приходится устанавливать сигнал waits вручную из программы.
При выборе подходящего размера строки (к примеру 64 байта) потери на передачу пакетов минимальной длины будут вполне приемлемы.
Go to the top of the page
 
+Quote Post
octobus
сообщение Nov 3 2013, 16:43
Сообщение #54


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



Сейчас вопрос стоит не в том, что невозможно разобраться с UPP, а в том, чтобы сэкономить время на тупые эксперименты с последовательностью команд и заполнением регистров. Поэтому нужны исходники, рабочие, в которых гарантированно рабочий код на прием и передачу желательно с эффективным использованием callback'ов. К OMAP подключена ПЛИСина, поэтому вопросов с согласованием нет. ПЛИСина всегда сможет подстроиться под OMAP.
Убедительно прошу не подымать тему недельку попусту. Советы не нужны, пока, во всяком случае. Нужны исходники. Надеюсь на понимание.

Сообщение отредактировал octobus - Nov 3 2013, 16:45
Go to the top of the page
 
+Quote Post
ASN
сообщение Nov 5 2013, 11:27
Сообщение #55


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



octobus
Вот исходники для uboot.
Код
#define DAVINCI_GPIO_BINTEN    0x01E26008
#define DAVINCI_GPIO_BANK01    0x01E26010
#define DAVINCI_GPIO_BANK23    0x01E26038
#define DAVINCI_GPIO_BANK45    0x01E26060
#define DAVINCI_GPIO_BANK67    0x01E26088
#define DAVINCI_GPIO_BANK89 0x01E260B0

struct davinci_gpio {
    unsigned int dir;
    unsigned int out_data;
    unsigned int set_data;
    unsigned int clr_data;
    unsigned int in_data;
    unsigned int set_rising;
    unsigned int clr_rising;
    unsigned int set_falling;
    unsigned int clr_falling;
    unsigned int intstat;
};

struct davinci_gpio_bank {
    int num_gpio;
    unsigned int irq_num;
    unsigned int irq_mask;
    unsigned long *in_use;
    unsigned long base;
};

#define davinci_gpio_bank01 ((struct davinci_gpio *)DAVINCI_GPIO_BANK01)
#define davinci_gpio_bank23 ((struct davinci_gpio *)DAVINCI_GPIO_BANK23)
#define davinci_gpio_bank45 ((struct davinci_gpio *)DAVINCI_GPIO_BANK45)
#define davinci_gpio_bank67 ((struct davinci_gpio *)DAVINCI_GPIO_BANK67)
#define davinci_gpio_bank89 ((struct davinci_gpio *)DAVINCI_GPIO_BANK89)

/**************************************************************************\
* Register Overlay Structure
\**************************************************************************/
typedef struct  {
    volatile unsigned UPPID;
    volatile unsigned UPPCR;
    volatile unsigned UPDLB;
    volatile unsigned char RSVD0[4];
    volatile unsigned UPCTL;
    volatile unsigned UPICR;
    volatile unsigned UPIVR;
    volatile unsigned UPTCR;
    volatile unsigned UPISR;
    volatile unsigned UPIER;
    volatile unsigned UPIES;
    volatile unsigned UPIEC;
    volatile unsigned UPEOI;
    volatile unsigned char RSVD1[12];
    volatile unsigned UPID0;
    volatile unsigned UPID1;
    volatile unsigned UPID2;
    volatile unsigned char RSVD2[4];
    volatile unsigned UPIS0;
    volatile unsigned UPIS1;
    volatile unsigned UPIS2;
    volatile unsigned char RSVD3[4];
    volatile unsigned UPQD0;
    volatile unsigned UPQD1;
    volatile unsigned UPQD2;
    volatile unsigned char RSVD4[4];
    volatile unsigned UPQS0;
    volatile unsigned UPQS1;
    volatile unsigned UPQS2;
} CSL_UppRegs;

typedef struct  {
    volatile unsigned REVID;
    volatile unsigned char RSVD0[4];
    volatile unsigned DIEIDR0;
    volatile unsigned DIEIDR1;
    volatile unsigned DIEIDR2;
    volatile unsigned DIEIDR3;
    volatile unsigned DEVIDR0;
    volatile unsigned char RSVD1[4];
    volatile unsigned BOOTCFG;
    volatile unsigned CHIPREVIDR;
    volatile unsigned char RSVD2[16];
    volatile unsigned KICK0R;
    volatile unsigned KICK1R;
    volatile unsigned HOST0CFG;
    volatile unsigned HOST1CFG1;
    volatile unsigned char RSVD3[152];
    volatile unsigned IRAWSTAT;
    volatile unsigned IENSTAT;
    volatile unsigned IENSET;
    volatile unsigned IENCLR;
    volatile unsigned EOI;
    volatile unsigned FLTADDRR;
    volatile unsigned FLTSTAT;
    volatile unsigned char RSVD4[20];
    volatile unsigned MSTPRI0;
    volatile unsigned MSTPRI1;
    volatile unsigned MSTPRI2;
    volatile unsigned char RSVD5[4];
    volatile unsigned PINMUX0;
    volatile unsigned PINMUX1;
    volatile unsigned PINMUX2;
    volatile unsigned PINMUX3;
    volatile unsigned PINMUX4;
    volatile unsigned PINMUX5;
    volatile unsigned PINMUX6;
    volatile unsigned PINMUX7;
    volatile unsigned PINMUX8;
    volatile unsigned PINMUX9;
    volatile unsigned PINMUX10;
    volatile unsigned PINMUX11;
    volatile unsigned PINMUX12;
    volatile unsigned PINMUX13;
    volatile unsigned PINMUX14;
    volatile unsigned PINMUX15;
    volatile unsigned PINMUX16;
    volatile unsigned PINMUX17;
    volatile unsigned PINMUX18;
    volatile unsigned PINMUX19;
    volatile unsigned SUSPSRC;
    volatile unsigned CHIPSIG;
    volatile unsigned CHIPSIG_CLR;
    volatile unsigned CFGCHIP0;
    volatile unsigned CFGCHIP1;
    volatile unsigned CFGCHIP2;
    volatile unsigned CFGCHIP31;
    volatile unsigned CFGCHIP4;
} CSL_SyscfgRegs;

#define CSL_SYSCFG_0_REGS   (0x01C14000u)
#define CSL_UPP_0_REGS         (0x01E16000u)
CSL_UppRegs* uppRegs =     (CSL_UppRegs*)(CSL_UPP_0_REGS);
CSL_SyscfgRegs* sysRegs = (CSL_SyscfgRegs*)(CSL_SYSCFG_0_REGS);

void UPP_WAITB_RESET(void)
{
    davinci_gpio_bank89->clr_data |= (1<<12);   //WAIT_B off
}

void setup_UPP(void)
{
    int x;
    sysRegs->SUSPSRC &= ~(1<<4);
    //2.1.add. Transmit Clock source - from UPP_2xTXCLK pin
    sysRegs->CFGCHIP31 = 0x60;
/*     uPP Transmit Clock Selection (spruh77.pdf p.144)
CFGCHIP3_UPP_TX | CFGCHIP3_ASYNC3_CLKSRC | Transmit Clock Source
----------------------------------------------------------------
  0 (ASYNC3)    |        0 (PLL0)        |     PLL0_SYSCLK2
  0 (ASYNC3)    |        1 (PLL1)        |     PLL1_SYSCLK2
  1 (TXCLK)     |        X               |     UPP_2xTXCLK pin
*/
    //2.2 Enable clocks uPP
    // Setup Peripherals;
    // wait for UPPID to become valid after enabling module in 2
    while ( uppRegs->UPPID != 0x44231100 );

    //3. SWRST
    //wait for dma active/pending bits DB to clear
    uppRegs->UPPCR = 0x1b;

    //4. Wait at least 200 clock cycles
    udelay(100000);
    uppRegs->UPPCR = 0x0b;

    //5. Program UPP Config Reg's
    //UPCTL
    uppRegs->UPCTL = 0x07;

    //UPICR
    /* !NB
       spruh77.pdf page 1519
       33.2.6.1 Step-by-Step Procedure
       NOTE: When initializing the uPP peripheral, the uPP interface configuration
       register (UPICR) must be programmed using a single, 32-bit write. Writing
       UPICR fields one-by-one can lead to unexpected results.
    */

    uppRegs->UPICR = 0x00180020;

    //UPIVR - idle value
    uppRegs->UPIVR = 0xAC;

    //6. UPIES - Interrupt Enable

    uppRegs->UPIEC = 0xffffffff;
    uppRegs->UPIES = 0x1f1f;
    uppRegs->UPIER = 0xffffffff;

    //7. uPP peripheral Enable
    uppRegs->UPPCR = 0x0b;

    davinci_gpio_bank89->dir &= ~(1<<12);    // wait_b out

    UPP_WAITB_RESET();
}

Go to the top of the page
 
+Quote Post
lekintr
сообщение Nov 5 2013, 13:26
Сообщение #56


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-10-13
Пользователь №: 78 684



2ASN тоже поковыряю Ваши исходники.

Сообщение отредактировал lekintr - Nov 5 2013, 13:28
Go to the top of the page
 
+Quote Post
octobus
сообщение Nov 5 2013, 13:39
Сообщение #57


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



О, отлично, спасибо огромнейшее за исходник. Попробую с ним разобраться. Спасибо.
Go to the top of the page
 
+Quote Post
octobus
сообщение Nov 11 2013, 14:07
Сообщение #58


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



В общем все пришлось писать заново, используя другие ресурсы. Форум electronix.ru ни фига мне не помог.
Собственно не очень и рассчитывал. Зато теперь... утритесь гуру sm.gif
Мне удалось запустить UPP в режиме DMA с прерываниями и загрузкой новых данных на лету.
По осциллографу видно что при размере буфера больше определенного размера пропуски пропадают.

Прикрепляю проект для CCS 5.4. Ничего не требуется, только импортировать проект. Все настроено так, что проект компилируется с любого места на винте.
UPP в проекте работает в режиме
TX канал A, RX канал B, ширина шины данных 8bit, частота CPU 300MHz, частота UPP 37.5MHz
Кроме того в проекте активирован режим Digital Loopback, поэтому чтобы данные полетели наружу надо его отключить.
Чтобы отключить надо закомментировать UPP_LOOPBACK_ENABLED
Также там включены только прерывания RX,TX чтобы включить все надо закомментить UPP_INT_TEST_ENABLED

Еще нашел ошибки в скачанном недавно с сайта Texas Instrumente Starterware для OMAPL138. У них в файле hw_upp.h неверные адреса регистров.
Будьте осторожны. В проекте эта ошибка исправлена.

Проект для OMAPL138.

Сообщение отредактировал octobus - Nov 11 2013, 14:12
Go to the top of the page
 
+Quote Post
ASN
сообщение Nov 11 2013, 16:35
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



octobus
Поздравляю sm.gif.
Смущает только, что при размере буфера больше определенного размера пропуски пропадают.
Поскольку обмен идёт через AXI, при изменении нагрузки SOC без правильного управления потоком пакеты могут начать снова пропадать.
А какая у Вас установившаяся скорость обмена ?
У нас тоже 8bit и частота 36,864 МГц. Всё крутиться под Linux. Пакеты переменной длины с выравниванием по границе 64 байта.
Go to the top of the page
 
+Quote Post
lekintr
сообщение Nov 11 2013, 16:40
Сообщение #60


Частый гость
**

Группа: Участник
Сообщений: 112
Регистрация: 10-10-13
Пользователь №: 78 684



Я посмотрел проект похоже пропадают не пакеты, или данные. Под "пропуском" скорее всего имется ввиду "время бездействия UPP"

Сообщение отредактировал lekintr - Nov 11 2013, 16:42
Go to the top of the page
 
+Quote Post
Victor_Tr
сообщение Jul 23 2014, 21:55
Сообщение #61





Группа: Участник
Сообщений: 13
Регистрация: 15-12-06
Из: S.-Petersburg
Пользователь №: 23 556




Прикрепляю проект для CCS 5.4. Ничего не требуется, только импортировать проект. Все настроено так, что проект компилируется с любого места на винте.
UPP в проекте работает в режиме
p.h неверные адреса регистров.
Будьте осторожны. В проекте эта ошибка исправлена.

Проект для OMAPL138.
[/quote]

А можно получить Вашш проект по почте, ссылка мне недоступна
почта v i c t o r_T r o f i m o v@ m a i l. r u
Go to the top of the page
 
+Quote Post
octobus
сообщение Oct 6 2014, 02:24
Сообщение #62


Частый гость
**

Группа: Guests
Сообщений: 122
Регистрация: 9-10-13
Из: Дубна
Пользователь №: 78 671



жду не дождусь когда же уберут предупреждение, второй год глаза мозолит.
Пока не снимут, файлы оставлять не буду.
Go to the top of the page
 
+Quote Post
den_steppenwolf
сообщение Jan 14 2016, 10:12
Сообщение #63





Группа: Новичок
Сообщений: 1
Регистрация: 14-01-16
Пользователь №: 90 027



Цитата(octobus @ Oct 6 2014, 08:24) *
жду не дождусь когда же уберут предупреждение, второй год глаза мозолит.
Пока не снимут, файлы оставлять не буду.

А можно мне тоже ваш проект? Буду очень признателен
почта otdel55(с о б а к а)oniip.ru
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.0219 секунд с 7
ELECTRONIX ©2004-2016