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

 
 
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

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

 


RSS Текстовая версия Сейчас: 12th July 2025 - 22:50
Рейтинг@Mail.ru


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