Jump to content

    

Oleg_IT

Свой
  • Content Count

    936
  • Joined

  • Last visited

Everything posted by Oleg_IT


  1. AM1808 от TI

    Как у GNU C узнать какие архитектуры он поддерживает?
  2. AM1808 от TI

    А где компилятор для этих ARM-ов брать? Они только под Linux?
  3. AM1808 от TI

    Загрузчик есть в примерах указанных sysel. Надеюсь, он универсальный. Нашёл ссылки на инструментарий http://focus.ti.com/docs/toolsw/folders/pr...el-dsplibs.html http://focus.ti.com/docs/toolsw/folders/print/ccstudio.html Что из этого посоветуете? А какой виртуалкой вы пользуетесь? Честно говоря, привык к интегрированным средам разработки и хочется что-нибудь подобное. С командной строки очень непривычно.
  4. AM1808 от TI

    То, что придётся перейти на gcc это понятно. Уже пытаюсь. С UNIX системами (Solaris) знаком поверхностно, когда-то делал под эту ОС программы для Sun, но только «бизнес логику», к администрированию и настройкам отношение не имел, другие люди были. Под виндусом ни чего дельного, эмулирующего нет или лучше Linux? U-Boot нашёл. Может поделитесь полезными ссылками. По поводу gcc. Где его взять для OMAP-а и am18xx? Всё с нуля, конечно писать не буду. Как я понимаю нужен стартовый код, примеры есть. Где посмотреть как обновлять программу через USB в процессе эксплуатации, что мне в программе нужно сделать?
  5. AM1808 от TI

    Спасибо за отклик. Вах, извиняюсь, недоглядел:) Воюю. Есть вопросы. JTAG адаптер у меня DPM-ARM/CORTEX, разъём 20 пин. В приложении перепиновка на 14 пин платы. Правильно я сделал? С этой распиновкой из Keil с Device ARM926EJ-S компьютер плату не видит, Target Options -> Debug(J-LINK/J-TRACE) -> Settings -> Info -> Target. Вынужден перейти на GNU и Eclipse, скачал amontec-sdk4arm-win32-20070328.zip, установил. Ранее были установлены CYGWIN и GNUARM. Теперь сижу, думаю, как это всё оживить и чем шить и отлаживать программы для OMAP, am. Не работал я с Eclipse. Где чего на эту тему почитать? На GNU вынужден перейти из-за библиотеки, которая уж слишком сильно зависит от GCC, лучше освоить это компилятор, чем переводить библиотеку в стандарт ISO. Кстати, при установки GNUARM выдаётся список поддерживаемых фирм, производителей ARM. TI в этом списке нет, Atmel есть, на него ориентироваться? И ещё, чего-то подозрительно сильно греется МК, хоть и работает, выдает картинку на монитор. Не мог я плату повредить опытами с JTAG? Помогите стартануть. _______________________14_____20___________________.doc
  6. AM1808 от TI

    Не могу найти хедеры McASP модуль. Где он?
  7. Увы, не получается. Программа работает, команды обмена и ответы проходят, а LCD модуль не стартует, а после старта, после вкл-выкл МК, память экрана не обновляется. Ввёл секундную задержку между инициализацией и включением LCD модуля и первой отрисовкой экрана. Не помогает.
  8. Так, вроде бы так и делаю GLCD_Ctrl(FALSE); - выключить TFT_24_Init(); - инициализировать GLCD_Ctrl(TRUE); - включить Выключить и включить это питание и энейбл. И обратной связи нет, тек что программа, как и сам МК "не знают" даже есть на его выходах чего-нибудь или там пусто.
  9. Есть простенькая программа для LPC2478, тест TFT и передача/приём по COM. Код инициализации LCD взял из примера. Проблема в том, что после каждой прошивки программы приходится передёргивать питание и посылать команду на перерисовку, что бы всё правильно заработало. Если питание не выключить/включить, то LCD модуль LPC вообще не заводится. Если не дать команду на перерисовку, то изображение может быть сдвинуто и с артефактами, точками, линиями. В чём проблема? #define LCD_VRAM_BASE_ADDR_UP0 DYNAMIC_MEM0_BASE #define LCD_VRAM_BASE_ADDR_LP0 DYNAMIC_MEM0_BASE void SDRAMInit( void ) { volatile DWORD i, dummy = dummy; /************************************************************************* * Initialize EMC and SDRAM *************************************************************************/ // SCS |= 0x00000002; /* Reset EMC */ EMC_CTRL = 0x00000001; /*Disable Address mirror*/ PCONP |= 0x00000800; /* Turn On EMC PCLK */ PINSEL4 = 0x50000000; PINSEL5 = 0x05050555; PINSEL6 = 0x55555555; PINSEL7 = 0x55555555; PINSEL8 = 0x55555555; PINSEL9 = 0x50555555; EMC_DYN_RP = 2; /* command period: 3(n+1) clock cycles */ EMC_DYN_RAS = 3; /* RAS command period: 4(n+1) clock cycles */ EMC_DYN_SREX = 7; /* Self-refresh period: 8(n+1) clock cycles */ EMC_DYN_APR = 2; /* Data out to active: 3(n+1) clock cycles */ EMC_DYN_DAL = 5; /* Data in to active: 5(n+1) clock cycles */ EMC_DYN_WR = 1; /* Write recovery: 2(n+1) clock cycles */ EMC_DYN_RC = 5; /* Active to Active cmd: 6(n+1) clock cycles */ EMC_DYN_RFC = 5; /* Auto-refresh: 6(n+1) clock cycles */ EMC_DYN_XSR = 7; /* Exit self-refresh: 8(n+1) clock cycles */ EMC_DYN_RRD = 1; /* Active bank A->B: 2(n+1) clock cycles */ EMC_DYN_MRD = 2; /* Load Mode to Active cmd: 3(n+1) clock cycles */ EMC_DYN_RD_CFG = 1; /* Command delayed strategy */ /* Default setting, RAS latency 3 CCLKs, CAS latenty 3 CCLKs. */ EMC_DYN_RASCAS0 = 0x00000303; #if ENG_BOARD_LPC24XX /* NXP engineering board */ /* 256MB, 16Mx16, 4 banks, row=12, column=9 */ EMC_DYN_CFG0 = 0x00000480; #else /* Embedded Artists board */ /* 256MB, 16Mx16, 4 banks, row=13, column=9 */ EMC_DYN_CFG0 = 0x00000680; #endif delayMs(1, 100); /* use timer 1 */ //for(i = 0; i < 0x5000*100; i++); /* wait 128 AHB clock cycles */ /* Mem clock enable, CLKOUT runs, send command: NOP */ EMC_DYN_CTRL = 0x00000183; delayMs(1, 200); /* use timer 1 */ //for(i = 0; i < 0x5000*200; i++); /* wait 128 AHB clock cycles */ /* Send command: PRECHARGE-ALL, shortest possible refresh period */ EMC_DYN_CTRL = 0x00000103; /* set 32 CCLKs between SDRAM refresh cycles */ EMC_DYN_RFSH = 0x00000002; for(i = 0; i < 0x40; i++); /* wait 128 AHB clock cycles */ /* set 28 x 16CCLKs=448CCLK=7us between SDRAM refresh cycles */ EMC_DYN_RFSH = 28; /* To set mode register in SDRAM, enter mode by issue MODE command, after finishing, bailout and back to NORMAL mode. */ /* Mem clock enable, CLKOUT runs, send command: MODE */ EMC_DYN_CTRL = 0x00000083; /* Set mode register in SDRAM */ /* Mode regitster table for Micron's MT48LCxx */ /* bit 9: Programmed burst length(0) bit 8~7: Normal mode(0) bit 6~4: CAS latency 3 bit 3: Sequential(0) bit 2~0: Burst length is 8 row position is 12 */ dummy = *((volatile DWORD *)(SDRAM_BASE_ADDR | (0x33 << 12))); EMC_DYN_CTRL = 0x00000000; /* Send command: NORMAL */ EMC_DYN_CFG0 |= 0x00080000; /* Enable buffer */ delayMs(1, 1); /* Use timer 1 */ //for(i = 0; i < 0x5000; i++); /* wait 128 AHB clock cycles */ return; } void GLCD_Ctrl(BOOL bEna) { volatile int i; if (bEna) { LCD_CTRL |= LCD_CTRL_LcdEn(0x01); for(i = C_GLCD_PWR_ENA_DIS_DLY; i != 0; i--); LCD_CTRL |= LCD_CTRL_LcdPwr(0x01); } else { LCD_CTRL &= ~LCD_CTRL_LcdPwr(0x01); for(i = C_GLCD_PWR_ENA_DIS_DLY; i != 0; i--); LCD_CTRL &= ~LCD_CTRL_LcdEn(0x01); } } void TFT_24_Init(void) { FIO0DIR |= (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9); FIO1DIR |= (1 << 20) | (1 << 21) | (1 << 22) | (1 << 23) | (1 << 24) | (1 << 25) | (1 << 26) | (1 << 27) | (1 << 28) | (1 << 29); FIO2DIR |= (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 11) | (1 << 12) | (1 << 13); FIO4DIR |= (1 << 28) | (1 << 29); PINSEL0 &= ~((3 << 8) | (3 << 10) | (3 << 12) | (3 << 14) | (3 << 16) | (3 << 18)); PINSEL0 |= (1 << 8) | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16) | (1 << 18); PINSEL3 &= ~((3 << 8) | (3 << 10) | (3 << 12) | (3 << 14) | (3 << 16) | (3 << 18) | (3 << 20) | (3 << 22) | (3 << 24) | (3 << 26)); PINSEL3 |= (1 << 8) | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16) | (1 << 18) | (1 << 20) | (1 << 22) | (1 << 24) | (1 << 26); PINSEL4 &= ~((3 << 0) | (3 << 2) | (3 << 4) | (3 << 6) | (3 << 8) | (3 << 10) | (3 << 12) | (3 << 14) | (3 << 18) | (3 << 22) | (3 << 24) | (3 << 26)); PINSEL4 |= (3 << 0) | (3 << 2) | (3 << 4) | (3 << 6) | (3 << 8) | (3 << 10) | (3 << 12) | (3 << 14) | (3 << 18) | (3 << 22) | (3 << 24) | (3 << 26); PINSEL9 &= ~((3 << 24) | (3 << 26)); PINSEL9 |= (1 << 24) | (1 << 26); PINSEL11 = 0x0F;//1 | ( 0x03 << 1 ); PCONP |= (1 << 20); LCD_CTRL = //LCD_CTRL_LcdEn(0x00) | LCD_CTRL_LcdBpp(0x05) | LCD_CTRL_LcdBW(0x00) | LCD_CTRL_LcdTFT(0x01) | LCD_CTRL_LcdMono8(0x00) | LCD_CTRL_LcdDual(0x00) | LCD_CTRL_BGR(0x01) | LCD_CTRL_BEBO(0x00) | LCD_CTRL_BEPO(0x00) | //LCD_CTRL_LcdPwr(0x01) | LCD_CTRL_LcdVComp(0x00) | LCD_CTRL_WATERMARK(0x00); LCD_TIMH = LCD_TIMH_PPL((C_GLCD_H_SIZE/16) - 1) | LCD_TIMH_HSW(C_GLCD_H_PULSE - 1) | LCD_TIMH_HFP(C_GLCD_H_FRONT_PORCH - 1) | LCD_TIMH_HBP(C_GLCD_H_BACK_PORCH - 1); LCD_TIMV = LCD_TIMV_LPP(C_GLCD_V_SIZE - 1) | LCD_TIMV_VSW(C_GLCD_V_PULSE) | LCD_TIMV_VFP(C_GLCD_V_FRONT_PORCH) | LCD_TIMV_VBP(C_GLCD_V_BACK_PORCH); LCD_POL = LCD_POL_PCD_LO(0x00) | LCD_POL_CLKSEL(0x00) | LCD_POL_ACB(0x00) | LCD_POL_IVS(0x00) | LCD_POL_IHS(0x00) | LCD_POL_IPC(0x00) | LCD_POL_IOE(0x00) | LCD_POL_CPL(C_GLCD_H_SIZE-1) | LCD_POL_BCD(0x01) | LCD_POL_PCD_HI(0x00); // LCD_LE = (1 << 16); LCD_UPBASE = LCD_VRAM_BASE_ADDR_UP0; LCD_LPBASE = LCD_VRAM_BASE_ADDR_LP0; LCD_CFG = LCD_CFG_CLKDIV(7); } int main (void) { char ch[100]; MAMCR = 0; MAMTIM = 3; MAMCR = 2; SDRAMInit(); delayMs(1, 1000); /* Use timer 1 */ GLCD_Ctrl(FALSE); TFT_24_Init(); GLCD_Ctrl(TRUE); ClearScreen(255,255,255); SetColor(250,0,0); FillPoligon(PAr,3); // рисование треугольника while(1) { if (getline(ch,1) != __FALSE) { ParseKey(ch); } } }
  10. С расширениями языка боле-менее разобрался. Вопросы остались по __ESCAPE__. В описании говорят, что этот макрос меняется от реализации компилятора и, что его можно просто опустить, но смысл этого макроса я так и не понял. Все эти расширения направлены на оптимизацию кода и, пока, достойной замены в VS не вижу. Не разобрался с av_alias Как это в VS сделать? Не вижу как в VS это реализовать. Это в опциях где-то?
  11. Где найти пример программы работы с AD2S1210 для какого-нибудь МК?
  12. #pragma pack обычно идёт с числом, на сколько выравнивать. А тут выравнивание по умолчанию на 1?
  13. Спасибо, надеюсь поможет. Чего-то не открывается у меня:(
  14. Мало программировал на GNU С. Тут столкнулся с необходимостью перевода текста написанного для GNU на Visual Studio. Столкнулся с особенностями, отличиями от ISO. Где бы почитать о том, как правильно эти особенности обработать? Примеры особенностей __attribute__((packed)) __attribute__((__nonnull__(1,2))) __pure __attribute__((packed)) __ESCAPE__ restrict Не нравится компилятору inline в хедер файле, когда этот хедр включён в *.c файл, в *.cpp ошибок не выдаёт static inline unsigned int CMP___(unsigned int a, unsigned int b) { return (unsigned int)(a < b); } В объявление функции аргумент указатель на структуру. Компилятор выдаёт ошибку 1>d:\MyProj\util.h(582) : error C2373: 'cmp_func' : redefinition; different type modifiers… Есть объявления typedef union { uint64_t u64; uint32_t u32[2]; uint16_t u16[4]; uint8_t u8 [8]; double f64; float f32[2]; } av_alias av_alias64; typedef union { uint32_t u32; uint16_t u16[2]; uint8_t u8 [4]; float f32; } av_alias av_alias32; typedef union { uint16_t u16; uint8_t u8 [2]; } av_alias av_alias16; Компилятору не нравится повторение av_alias. av_alias используется в записи union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; И ещё там много всякой мелочи. О каких-то записях догадки есть, но это догадки, а хочется быть уверенным в правильности перевода. Что-то есть в гугле.
  15. Есть два файла описания отладочной платы OMAP-L138 Hawkboard_schematics_v1.pdf и Hawkboard_UG_ver1.pdf. В файле Hawkboard_schematics_v1.pdf на последней страницы дана распиновка выходного разъёма, а в файле Hawkboard_UG_ver1.pdf в разделе <5.16 Expansion Connector> дана таблица распиновки того же выходного разъёма. Эти разпиновки не совпадают. Чему верить? Продавцы посоветовали посмотреть на разводку платы. Она похоже в ALLEGRO сделана. Не работаю я с этой программой. И не посмотреть, не перевести в P_CAD не могу. Помогите! А если там третий вариант распиновки будет???
  16. Спасибо. Работает.
  17. В дебагере Keil, при обращении к Off-Chip Memory возникает ошибка чтения/записи. Что нужно сделать, что бы эмулировать эту память?
  18. Не знаю, что у меня было не так, но из 20 контактов 1-2 то да, то нет. Затеканий флюса точно не было.
  19. Есть отладочная плата, на которой стоит разъём 2x50 подобный этому. Подскажите ответную часть для него, с ламелькими, подобный PCI. Этот не предлагать, есть опыт, не надёжный он.
  20. AM1808 от TI

    Доставили мне наконец-то платку с OMAP-L137. Появились вопросы 1. По JTAG, с распиновкой. У платы 14-и пиновый разъём у JTAG адаптера 20. В таблице соответствий пинов есть неопределённости, отметил вопросами Пины JTAG адаптера_________Пины OMAP-L137 3-------------- NTRST____________TRSTn --------2 5-------------- TDI______________TDI ------------3 7-------------- TMS______________TMS -----------1 9-------------- TCK______________BTCK ---------11 11------------- RTCK_____________BRTCK -------9 13------------- TDO______________TDO ----------7 15------------- RST______________? ?--------------------------------------- EMU0 ---------13 ?--------------------------------------- EMU1 --------14 Правильно соответствия поставил? 2. Похоже аудио вход и выход (I2S) не выведен на разъём J13 платы (файл Hawkboard_schematics_v1.pdf). Неужто подпаиваться придётся? 3. Какой ответный разъём посоветуете для J13 (PLLD-1.27)? Желательно с ламельками, похожий на PCI.
  21. AM1808 от TI

    Настораживает ответ на вопрос http://www.innovatesolutions.net/forum/sup...-with-ti-am1808