Jump to content

    

OMAP-L138

Доброе время суток!

 

Поставлена задача - плотно освоить OMAP-L138 (ARM9 + C6000).   Интересует программирование процессора под голое железо: без TI BIOS, TI RTOS, uC Linux, Linux, WinCE и других уродских вещей.

 

В частности, интересуют доки и информация, как загрузить программу для DSP через ARM, а лучше - сразу DSP.

Имею экспиренс в программировании ARM920T и C6745.   Теперь надо разобраться, где писать программу для ARM?  CCS или Keil?  А может сразу на GCC?

Где брать хедеры на периферию OMAP-L138?  Самому из даташита делать и из огрызков с гитхаба(как я это делал для C6745) ?

 

В общем в каком направлении рыть?

 

В моем распоряжении UART и светодиоды + предыдущий опыт с ARM9 и C6000+

 

 

Edited by __inline__

Share this post


Link to post
Share on other sites
26 минут назад, __inline__ сказал:

В частности, интересуют доки и информация, как загрузить программу для DSP через ARM, а лучше - сразу DSP.

Сразу - это к OMAP-L137. На L138, насколько помню, после сброса стартует ARM9-ядро, а DSP-ядро - в reset-е, пока его ARM не разрешит.

В L137 программа для обоих ядер грузилась DSP-ядром (из общего комплексного файла прошивки), а потом DSP-ядро через PRUSS инициализировало таблицу прерываний ARM9 и выводило ARM9 из сброса.

Думаю и для L138 должна создаваться комплексная прошивка. Формата .ais. Утилитой AISgen.

26 минут назад, __inline__ сказал:

Имею экспиренс в программировании ARM920T и C6745.   Теперь надо разобраться, где писать программу для ARM?  CCS или Keil?  А может сразу на GCC?

Главное (имхо) не как писать, а как отлаживать. CCS - умеет отлаживать оба ядра одновременно, про остальные - не уверен.

Хотя впрочем - Вы же вроде принципиально не используете JTAG?  :wink:

26 минут назад, __inline__ сказал:

Где брать хедеры на периферию OMAP-L138?  Самому из даташита делать и из огрызков с гитхаба(как я это делал для C6745) ?

Зачем какие-то огрызки если TI предоставляет вполне качественные хидеры на периферию? Я брал оттуда. Вроде были они в примерах к CCS.

Но можно из по даташитам самостоятельно.

26 минут назад, __inline__ сказал:

В моем распоряжении UART и светодиоды + предыдущий опыт с ARM9 и C6000+

UART конечно хорошо, но мне в своё время так и не удалось заставить OMAP-L137 грузиться с него: Затыкалось в процессе загрузки .ais-файла на разных стадиях загрузки. Все опции AISgen перерыл - без толку.

Так что при отладке грузил с JTAG, а в боевом режиме - SPI-FLASH.

 

PS: Кстати - в OMAP-L137 были баги чипа, не описанные в errata. На которые мы благополучно наступили и искали их целый месяц.  :dash2:

Share this post


Link to post
Share on other sites
21 minutes ago, jcxz said:

Думаю и для L138 должна создаваться комплексная прошивка. Формата .ais. Утилитой AISgen.

 

Это очень хорошо, что AISgen сможет разрулить код для ARM и DSP.  А я думал, что придётся программу для DSP делать бинарником на стартовый адрес, который захардкожен или через ключ -PIC генерить Position Independent Code :acute:и потом его встраивать в исходник через bin-to-h

 

21 minutes ago, jcxz said:

Вы же вроде принципиально не используете JTAG?  :wink:

 

Да вот как-то не ощущаю в нём надобности. Для хоббийных поделок моя жаба душит на него уделить время :wink:

 

21 minutes ago, jcxz said:

Зачем какие-то огрызки если TI предоставляет вполне качественные хидеры на периферию? Я брал оттуда. Вроде были они в примерах к CCS.

 

А где эти хедеры лежат?  Всё что я видел, это - огромная структура с полями, с большой вложенностью, где мострячат что-то вроде:

EDMA->ATTRIBUTE->SUBATTRIBUTE->SUBSUBATTRIBUTE->BITFIELD=C1|C2|C3|C4

 

а вместо этого хочется нормального прозрачного волатильного описания:

#define EDMA_PARAMETER (*(volatile unsigned int*)(EDMA_BASEADDRESS+0x14))

 

AISgen позволит настроить DDR SDRAM, или надо самому инициализировать?

 

Можно ли одновременно использовать оба ядра - ARM и DSP?  DSP будет считать основную программу, а ARM будет заниматься рендерингом(2D).  Понимаю, что наоборот было бы лучше, но DSP досталась основная работа, так как в управляющем коде много операций с плавучкой.

 

 

Под C6745 делал хедеры по даташиту, ниже пример такого хедера - всё прозрачно просто и понятно:

 

#ifndef _MCASP_EDMA3_H_
#define _MCASP_EDMA3_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <c6x.h>

#include "Type.h"

#include "sysconfig.h"

#include "McASP.h"
#include "EDMA3.h"

#define CHAM 1 /* !!! McASP DMA Channel 1       */
#define TCCM 1 /* Transfer Complete Code McASP  */
#define FIF 64 /* FIFO Size                     */

#define PaRAM1_BASE (0x01C04000+(32*CHAM))

#define PaRAM1_OPT       (*(IO u32*)(PaRAM1_BASE+0x0000))
#define PaRAM1_SRC       (*(IO u32*)(PaRAM1_BASE+0x0004))

#define PaRAM1_A_CNT     (*(IO u16*)(PaRAM1_BASE+0x0008))
#define PaRAM1_B_CNT     (*(IO u16*)(PaRAM1_BASE+0x000A))

#define PaRAM1_DST       (*(IO u32*)(PaRAM1_BASE+0x000C))

#define PaRAM1_SRC_BIDX  (*(IO u16*)(PaRAM1_BASE+0x0010))
#define PaRAM1_DST_BIDX  (*(IO u16*)(PaRAM1_BASE+0x0012))

#define PaRAM1_LINK      (*(IO u16*)(PaRAM1_BASE+0x0014))
#define PaRAM1_BCNTRLD   (*(IO u16*)(PaRAM1_BASE+0x0016))

#define PaRAM1_SRC_CIDX  (*(IO u16*)(PaRAM1_BASE+0x0018))
#define PaRAM1_DST_CIDX  (*(IO u16*)(PaRAM1_BASE+0x001A))

#define PaRAM1_C_CNT     (*(IO u16*)(PaRAM1_BASE+0x001C))
#define PaRAM1_RSVD      (*(IO u16*)(PaRAM1_BASE+0x001E))

extern void _intcVectorTable(void);

extern volatile u32 SWAP;
extern volatile u32 McASP_EDMA3_Flag;

void McASP_EDMA3_Init(u32 s,u32 v,void (*h)(u32));

#ifdef __cplusplus
}
#endif

#endif

 

Edited by __inline__

Share this post


Link to post
Share on other sites
1 час назад, __inline__ сказал:

А где эти хедеры лежат?  Всё что я видел, это - огромная структура с полями, с большой вложенностью, где мострячат что-то вроде:

Очевидно в: CCS\C6000\CSL\INCLUDE

1 час назад, __inline__ сказал:

AISgen позволит настроить DDR SDRAM, или надо самому инициализировать?

Мне позволял.

1 час назад, __inline__ сказал:

Можно ли одновременно использовать оба ядра - ARM и DSP?

А зачем как вы думаете несколько ядер если бы они не могли работать одновременно?  :unknw:

Можно хоть все 4 (+2*PRU). 

Share this post


Link to post
Share on other sites
17 hours ago, jcxz said:

А зачем как вы думаете несколько ядер если бы они не могли работать одновременно?  :unknw:

Можно хоть все 4 (+2*PRU). 

 

Потому что мои пессимистические настроения диктуют ожидать самое худшее, что может быть. В данном случае "а вдруг нельзя?". Помню у Филлипса был какой-то ARM7, который не мог код выполнять во внешней памяти, причём это было в его Errata.   Вот и подумал, что у OMAPL138 может быть нечто подобное :)

 

В даташите на OMAP сказано, что EMIFB может работать с памятью DDR2.  На TI-шном форуме прочитал, что частота шины не может превысить 152 МГц (треть от частоты ядра 456 МГц).  Выходит эффективная передача DDR2 идёт на 152*4 = 608 МГц ? Всё верно?

 

И ещё вопрос, за счёт чего пропускная способность DDR2 выше чем DDR в 2 раза?   То что передачи идут по фронту и спаду клока, это я понял - это DDR.   А откуда второе удвоение в DDR2?  В википедии как-то непонятно расписано.  Никогда с DDR не работал, только с SDRAM и SRAM.

 

По поводу встроенного видеоконтроллера.  Только 16 бит и скорость 40 МГц ?   Выходит 800x480 16 бит на 60 Гц должен тянуть с ДМА ?  Буфера щёлкать можно? чтобы сделать двойную или тройную буферизацию ? (пока одна рисуется, вторая показывается).  Перехват VSYNC (обратный ход луча по кадру)  есть в виде прерывания?

Edited by __inline__

Share this post


Link to post
Share on other sites
22 минуты назад, __inline__ сказал:

В даташите на OMAP сказано, что EMIFB может работать с памятью DDR2.  На TI-шном форуме прочитал, что частота шины не может превысить 152 МГц (треть от частоты ядра 456 МГц).  Выходит эффективная передача DDR2 идёт на 152*4 = 608 МГц ? Всё верно?

Не знаю, у L137 и L138 насколько помню - интерфейсы внешней памяти отличаются. L137 не поддерживает DDR.

А почему читаете о возможностях МК не в мануале, а на форуме? У TI хорошая документация.

Share this post


Link to post
Share on other sites
2 minutes ago, jcxz said:

А почему читаете о возможностях МК не в мануале, а на форуме? У TI хорошая документация.

 

У TI действительно хорошая документация. Но для того чтобы её найти, нужно ещё правильно сформировать запрос.  ну и большинство ссылок уже просто убитые :sorry:

Кое-как наскрёб AISgen для L138 и Pin-конфигуратор.  Ситуация повторяется также как и с C6745, приходится рыть архивы или форумы

5 minutes ago, jcxz said:

Не знаю, у L137 и L138 насколько помню - интерфейсы внешней памяти отличаются. L137 не поддерживает DDR.

 

Я уже вдоволь поигрался с SDRAM 152 МГц, хочется чего-то быстрее.  Да и 64 МБ на 1 чип.  А тут можно 128 МБ поставить или даже больше.  И быстродействие в 4 раза поднять.

Share this post


Link to post
Share on other sites
9 минут назад, __inline__ сказал:

У TI действительно хорошая документация. Но для того чтобы её найти, нужно ещё правильно сформировать запрос.  ну и большинство ссылок уже просто убитые :sorry:

Я как-то не испытывал с этим проблем. И к форумам почти не обращался.

А ищется документация на периферию легко:

Открываем "TMS320C674x/OMAP-L1x Processor Peripherals Overview Reference Guide" (SPRUFK9D), а из него уже идут ссылки на .pdf всех периферийных модулей. Ничего сложного.

Share this post


Link to post
Share on other sites

 

1 hour ago, __inline__ said:

А откуда второе удвоение в DDR2?

А нет там никакого "второго удвоения".

 

56 minutes ago, jcxz said:

Открываем "TMS320C674x/OMAP-L1x Processor Peripherals Overview Reference Guide" (SPRUFK9D), а из него уже идут ссылки на .pdf всех периферийных модулей. Ничего сложного.

Этот маразм давно в единый TRM свели.

Share this post


Link to post
Share on other sites

Маразм происходит на просторах нашей страны.  Девкит на OMAPL138 продают за 27 - 63 тысячи рублей. Идут мимо...

Share this post


Link to post
Share on other sites

В чём именно маразм? Я в своё время свою отладку с L137 за 500+$ покупал. Так что - ничего не изменилось.

Share this post


Link to post
Share on other sites
6 minutes ago, jcxz said:

В чём именно маразм?

 

В том, что камню 100 лет в обед, а продают по цене 2012-го года. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now