Перейти к содержанию
    

prst

Свой
  • Постов

    703
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные prst


  1. Если в те времена, когда в ходу ARM7TDMI были, то там еще при вызовах stub'ы очень быстро накапливались, а компиляция одним файлом позволяла их минимизировать.

    То я помню просто года... и там явной привязки к архитектуре не было на сколько я помню, в обзоре рассматривалось в рамках армовского компилятора, и помоему кто-то делал аналогичные тесты в мс-студии и т д

  2. ИМХО, не актуально, так как современные компиляторы имеют режим multifile compilation.

    не, тут мне важно не актуальность, а сама статья, там обсуждалась природа этого явления, вот это то что щас нужно мне

  3. Помнится когда-то тут, в этом разделе кажется, было интересное обсуждение, где один из уважаемых (в то время) пользователей приводил интересную статью(помоему даже его собственную) - сравнение размера скомпиллированного кода ARM компилятора в зависимости от структуры файлов программы.

    Суть в топике передавался следуюший, есть арм компилятора, один, и есть по разному устроенная тестовая программа, которая делает одно и тоже в разных ее исполнениях. В одном варианте все сделано в одном .c файле, потом разбито на разные .c, потом на .c+.h, потом все это разбросано и для объектов какието параметры менялись... и сравнивался результирующий hex(или чтото еще на выходе). Помнится что самый большой выигрыш был когда все написано в одном файле, но при этом правда код привратился в той еще длины "полотенце"...

    Я сейчас не могу найти эту интересную статью, ребята, помогите плиз ее найти. Надеюсь на сторожил раздела форума, вы точно должны помнить, это было длинное интересное обсуждение, гдето в 2008-2010гг.

  4. Вот есть китайский комплект радиоканала для передачи аналогового видео на частоте 2.4 ГГц типа этого http://video2002.ru/primnik_peredatchik_jmk_ws-2486.

     

    Возможно ли его подключение к стандартному wi-fi усилителю диапазона 2.4 ГГц с целью увеличения дальности действия?

     

    раньше были двунаправленные wifi усилители MANUS-212 (2Вт) возможно щас чтото есть еще...

  5. В общем, досталось больше сотни этого добра бесплатно.

    Как раз хотел потренироватся в CPLD и FPGA.

    Скачал бесплатный Квартус от Альтеры,

    а там нет поддержки MAX3000A.

     

    Че делать? Как программу написать и скомпилировать?

    Как нет? Этого не может быть.

    Можете ещё скачать альтеровский MAXplus II или старый квартус

  6. - человека может быть уже и нет в живых

     

    - человек по какойто причине уже не заходит сюда

     

    Напишите ему в приват с оповещением о получении, и узнаете читает ли он вообще или нет.

     

    врядли он проигнорит ваше сообщение, в крайнем случае зарегте се новый аккаунт и пойдите на хитрость, предложите ему еще один заказ

     

     

     

    способов много, тем более гугл знает все ))

     

    Ну или попросите моделаторов отседить по логам и IP

  7. Здравствуйте! Наступило время у меня ознакомится с сигнальными процессорами и ацп/цап. Скажите, возможно отыскать отладочник с ДСП на частоте выше 300МГЦ и с достаточно сильными АЦП/ЦАП?или их как то лучше по отдельности изучать?

     

    Начните с BF533 или BF532 они самые доступные и самые дешевые

     

    АЦП/ЦАП у них на борту нет, обычно для DSP они внешние

     

     

  8. Когда "тянете"-- не отпуская мышки Shift+пробел-- переключает режимы (прямой угол, 45 град, любой угол)

    CTRL+Shift+пробел --- еще и вращать умеет

    Спасибо, как раз только что этот способ нашел, правда он у меня по CTRL+Пробел, меняет углы ))

     

    И кстати возможно нашел только что баг у 10го альтиума

    - если перед такой сменой правил переворотов расставить лабель и десигнатор, то после поворотов они устанавливаются в дефолтовое состояние...

    не удобно малехо, думаю это баг.

  9. DXP->Preference->Schematic->Grafical Editing поставить галку Always Drag.

    Возможно это поможет, если речь идет о схеме.

    Да, спасибо, похоже то что я искал, но тоже это не совсем то.

    Дело в том что когда перемещаешь то схематик соединяет под 90грд все соединения, то есть не особо то и удобно. ну а при соедении они все замыкаются, и это по сути ни чего не улучшает...

    Я конечно понимаю что пикад это прошлое и другой продукт - но не могу понять логику - почему тут не сделано такое удобство, что бы соединялись проводники под любым углом как в старом добром пикаде.

    Может где-то есть галочка отключающая насильно 90грд?

  10. Altuim 10странности, мне этот вопрос не дает покоя.

    Например сделал я соедение проводника к элементу, и потом захотел его подвинуть, выделяю его и тяну, и.... ну просто пэинт какой-то, честное слово. Вместо того, что бы тянуть все соединения и элемент - он тянет только лишь элемент, а проводники с выкушенным местом остаются на месте. Ыыыыы.

    Блин, Пикад с такой примитивной задачей справляется на ура.

    а если мне нужно несколько десятков-сотен элементов переместить, это что потом пересоединенять все эти проводники по новой?

    Может что-то не включено или какую галочку нужно дергнуть?

     

    Добавлено

    ага, оказывется если зажать Ctrl то как нужно, а вот как сделать по умолчанию так, что бы контрол не жать постоянно?

  11. Altuim 10мне этот вопрос не дает покоя

    итак - вот сделал я соедение проводника к элементу, и потом захотел его подвинуть, выделяю его и тяну, и.... ну просто пэинт какой-то, честное слово. Вместо того, что бы тянуть все соединения и элемент - он тянет только лишь элемент, а проводникис выкушенным местом остаются на месте. Ыыыыы.

    Блин, Пикад с такой примитивной задачей справляется на ура.

    а если мне нужно несколько десятков-сотен элементов переместить, это что потом пересоединенять все эти проводники по новой?

    Может что-то не включено или какую галочку нужно дергнуть?

  12. А есть варинаты без кнопки?

    Т.е. подали питание, МК включился, а потом мог себя выключить до новой подачи питания?

    Спасибо.

     

    В варианте который я предлагаю ниже по идее можно без кнопки

     

    pwr_bttn_sch_955.jpg

     

    полностью исходник и описание принципа работы тут - http://projects.org.ua/forum/viewtopic.php?p=17839#17839

    я ранее эту схему использовал - советую.

    если в параллель транзистора TV2 подавать напряжение или в затвор VT1 - то можно без кнопки выключать, прада что бы включить - кнопка нужна будет все равно :rolleyes: .

  13. Код, уж простите, просто чудовищный. И это еще самый мягкий эпитет, который к нему можно применить.

    да я знаю, вы меня не задели ))

    я этот код вообще не причесывал, и развернул специально что бы не перепрыгивать между листингами и функциями. Это только на стадию запуска 4 битного режима.

  14. Запускаю на своем модуле ARM7MODA LCD индикатор из серии KS0066. Режим этот нужен, так что вопрос принципиальный.

    Уже столько камней об него заточено что и писать нет смысла, однако есть какие то грабли при запуске, и я вот не пойму то ли это у него не так что то то ли я жутко торможу, надеюсь что первое.

    Жутко принципиальный момент, по этому хочется его запустить.

     

    Итак, 8bit mode - запустился на раз плюнуть, код я подставил свой старый, уже рабочий. Но был затык, и как оказалось, выяснил опытным путем, что индикатор мне попался жуткий тормозяра... каких я не встречал до этого.

    Индикатор NEWTEC NC08082A. Ну то ладно, главное что нашел виновника, это - его медлительность.

     

    Потом залез в его даташит, там приведены намного меньшие таймауты необходимые для работы... А по моему коду получается что нужно намного большие временные периоды между RS -> E -> Data.

     

    А вот 4bit mode - напрочь не хочет заводиться. И вот тут у меня какой то шоковый ступор. Так как 4 бит я уже запускал несколько штук ранее. А на этом индикаторе - не получается.

     

    В общем вот я вам и пишу, взгляните на код и скажите, это я где то торможу или для этого индикатора нужно что-то отличное от даташита...

    На не оптимизированный код в 4bit mode не обращайте внимания, это я уже ради удобства выснения проблемы все перенес в один фрагмент

     

    #define	_RS	_B8
    #define	_E	_B9
    
    #define LCD_TIME_FAST  (10)
    #define LCD_TIME_SLOW  (50)
    #define LCD_TIME  LCD_TIME_SLOW
    ...
    ...
    //-----------------------------------------------------------
    void LCD_Config(void)
    {
    
    #ifdef LCD_4_BITS
     AT91PS_SYS  regs = AT91C_BASE_SYS;
    
    tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS;	//   RS=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    delay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    
    delay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x20);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x80);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    delay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x00);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x80);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    delay();	
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x00);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x10);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    delay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x00);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		  regs->PIOA_ODSR |= (0x30);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    delay();
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_RS;	//   RS=0;
    #endif /*LCD_4_BITS*/
    
    
    #ifdef LCD_8_BITS
    unsigned char i=0, init_value[] = { 0x01, 0x02, 0x06, 0x0c, 0x14, 0x38 }; /* 16x2 */ 
    
    for (i=0; i<sizeof(init_value); i++) { 
      lcd_cmd ( init_value[i] );
    }
    #endif /*LCD_8_BITS*/
    
    } /* LCD_Config() */
    
    //-----------------------------------------------------------
    void lcd_cmd (unsigned char ch)
    {
     AT91PS_SYS  regs = AT91C_BASE_SYS;
    
    #ifdef LCD_4_BITS
    udelay();
    tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS;//   RS=0;
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		   regs->PIOA_ODSR |= (ch&0xf0);
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    udelay();
    tick(60*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
    tick(1);		   regs->PIOA_ODSR |= (ch&0x0f)<<4;
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    tick(60*LCD_TIME); regs->PIOA_ODSR &=~_RS;	//   RS=0;
    #endif /*LCD_4_BITS*/
    
    #ifdef LCD_8_BITS
    tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS;//   RS=0;
    tick(6*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(6*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00;
    tick(6*LCD_TIME); regs->PIOA_ODSR |= ch;
    tick(6*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    tick(6*LCD_TIME); regs->PIOA_ODSR &=~_RS;	//   RS=0;
    #endif /*LCD_8_BITS*/
    } /* lcd_cmd() */
    
    //-----------------------------------------------------------
    // Set address of first byte on desired row
    void lcd_xy( unsigned char y, unsigned char x )
    {	
     unsigned char  LCD_ROW_ADDRESS[4] = { 0x00, 0x40, 0x14, 0x54 };
     unsigned char  AddrXYData;
     AT91PS_SYS	 regs = AT91C_BASE_SYS;
    
    AddrXYData = LCD_ROW_ADDRESS[y]+x;
    
    #ifdef LCD_4_BITS
    tick(60*LCD_TIME); regs->PIOA_ODSR   &=~_RS; //   RS=0;
     tick(40*LCD_TIME); regs->PIOA_ODSR  |=_E;	//   E=1;
     tick(40*LCD_TIME); regs->PIOA_ODSR  &= 0xffffff0f;
     tick(1);		  regs->PIOA_ODSR  |=0x80|(AddrXYData&0xF0);
     tick(40*LCD_TIME); regs->PIOA_ODSR  &=~_E;	//   E=0;
      tick(40*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
      tick(40*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
      tick(1);		  regs->PIOA_ODSR |=(AddrXYData&0x0F)<<4;
      tick(40*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    #endif /*LCD_4_BITS*/
    
    #ifdef LCD_8_BITS
    tick(6*LCD_TIME); regs->PIOA_ODSR &=~_RS;//   RS=0;
    tick(4*LCD_TIME); regs->PIOA_ODSR |=_E;	//   E=1;
    tick(4*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00;
    tick(1);		  regs->PIOA_ODSR |=(0x80|AddrXYData);
    tick(4*LCD_TIME); regs->PIOA_ODSR &=~_E;	//   E=0;
    #endif /*LCD_8_BITS*/
    } /* lcd_xy() */
    
    //-----------------------------------------------------------
    /* Show message on LCD*/
    void lcd_char( unsigned char value )
    { 
     AT91PS_SYS	 regs = AT91C_BASE_SYS;
     unsigned char  kod;
    
    kod = value;
    kod = lcd_recode( value );
    
    #ifdef LCD_4_BITS
    tick(30*LCD_TIME); regs->PIOA_ODSR   |=_RS; //   RS=1;
     tick(30*LCD_TIME); regs->PIOA_ODSR  |=_E;  //   E=1;
     tick(20*LCD_TIME); regs->PIOA_ODSR  &= 0xffffff0f;
     tick(1);		  regs->PIOA_ODSR  |=((kod &0xF0));
     tick(20*LCD_TIME); regs->PIOA_ODSR  &=~_E; //   E=0;
      tick(30*LCD_TIME); regs->PIOA_ODSR |=_E;  //   E=1;
      tick(20*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f;
      tick(1);		  regs->PIOA_ODSR |=((kod &0x0F)<<4);
      tick(20*LCD_TIME); regs->PIOA_ODSR &=~_E; //   E=0;
    #endif /*LCD_4_BITS*/
    
    #ifdef LCD_8_BITS
    tick(3*LCD_TIME); regs->PIOA_ODSR |=_RS;	 //   RS=1;
    tick(3*LCD_TIME); regs->PIOA_ODSR |=_E;	 //   E=1;
    tick(2*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00;
    tick(1);		  regs->PIOA_ODSR |= kod;
    tick(2*LCD_TIME); regs->PIOA_ODSR &= ~_E; //   E=0;
    #endif /*LCD_8_BITS*/
    } /* lcd_char() */
    
    ...
    ...

     

    ...тормознутость можете сами заметить по 60*LCD_TIME

     

    Вопрос - Где же что не правильно?

    Или есть такое что индикатор не поддерживает этот режим?

    Так должен - даташит обещает...

  15. Так в Россию можете выслать пару плат ?

    С Россией и другими странами что-то оказывается не просто осуществлять доставку. Я поступил иначе, раз я немогу отправить сам, то решил просто выставить эти модули в магазины, и таким образом всем желающим становится проще купить и магазин сам осуществит доставку, у них эта тропинка уже пройдена. Правда любая доставка платная.

     

    Да, кстати о том где их уже можно найти ( модуль, или только плату)

    Сейчас они есть в Космодроме(цены+фото), и в Радиомаге.

    Пока это единственный способ для других стран, поймите меня правильно, искал способы, не нашел иначе... Все еще ищю, что бы было удобнее.

     

    Вот фото с Космодрома, где лучше видно весь модуль:

     

    ARM7MODA256.jpg

     

    там же можно заказывать и пустые платы.

     

    ARM7MODAPLATA.jpg

     

     

    Цены почти те же, что и на сайте.

    Так что, можете смело заказывать там. :)

  16. Здравствуйте!!!

     

    Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам.

    Используется Операционная Система Linux 2.6

     

    Подскажите как это сделать?

     

    Спасибо!!!

    по моему это в лоб не рещается

    причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью.

    возможно существуют на кернел.орге патчи для такого.

    но сомниваюсь в этом

  17. В тестовом режиме "C" нет! Вообще можете рассказать подробнее об этих передаваемых символах - в даташите об этом не нашёл

    там гдето это есть, суть такова что если 9200 не находит не один из способов загрузиться, то он непрерывно шлет на УАРТ символы CCCCC

  18. Не работает процессор ARM AT91RM9200. Питание есть, частота с кварцевых резонаторов корректная, сигнал сброса подаётся корректно, замыканий на ножках нет. При загрузке рабочей прошивки процессор не дышит. В чём может быть дело?

    на компорт бросает символы "с"? - ссссссс...

    если да, то что то с загрузчиком

  19. Здравствуйте!!!

     

    Нужно написать программку-демон, которая работает так:

     

    Открываем терминал, запускаем в фоне эту программку-демон и она работая в фоне, считывая все что выводится на консоль, предпринимает какие либо действия.

     

    Как сделать так чтобы программка перехватывала все что выводится в терминал? :)

     

    Спасибо!!!

    от amw - http://code.google.com/u/amwsoft/

    вот то что вам нужно http://code.google.com/p/developer-console/

  20. Встал вопрос о размещении конденсаторов вокруг двух BGA на плате.

    Сами бга лежат на расстоянии порядка 40мм.

    1. Spartan 6 ( CSG225 )

    2. ADSP-BF537 ( BC-208 )

     

    Все компоненты с одной стороны. Плата 6-слойная.

     

    Размещать равномерно вокруг корпусов их кондеры не рационально, т.к. под питание отведен всего 1 слой и он будет залит только одним питанием 3.3в. А спартану требуется еще 1.2в и 2.5в, которые будут видимо размещаться на другом слое. Да и у блэкфина есть регулируемое питание ядра.

     

    Вот и вопрос, как лучше разместить все кондеры по питанию. Может есть у кого примерчики?

    на сколько я помню правило общее, идеальное требование - на каждый пин питания, минимум по 1 ВЧ конденсатору

    Смысл в том что бы была минимальная длина от пина до конденсатора.

    Конечно, может есть и другие правила, но я другого не встречал.

×
×
  • Создать...