Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Everything posted by Petka


  1. Если Вы будете использовать ОС, то ИМХО архитектура непринципиальна. Появятся доступные CortexA - просто пересоберёте на него и всё будет работать как прежде =)
  2. Э, вы ничего не попутали? 10нс это полтора метра витой пары. 1нс это 15 см.
  3. Средствами BMP. У него есть режим RLE сжатия.
  4. Да, по другому: в скрипте линкера (тот файл, что вы указываете в опциях линкера после ключа "-T") добавляете секцию: /* Memory Definitions */ MEMORY { FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 RAM (rw) : ORIGIN = 0x40000000, LENGTH = 0x00010000 USBRAM (rw) : ORIGIN = 0x7FD00000, LENGTH = 0x00004000 ETHRAM (rw) : ORIGIN = 0x7FE00000, LENGTH = 0x00004000 RTCRAM (rw) : ORIGIN = 0xE0084000, LENGTH = 0x00000800 /* Добавим ниже область памяти с периферией. В моём случае в качестве периферии будет контроллер VIC */ VIC (rw) : ORIGIN = 0xFFFFF000, LENGTH = 0x00000FFF } .... .... .... /* Section Definitions */ SECTIONS { /* В описании секций добавим секцию где будут размещаться регистры периферии VIC */ vic (NOLOAD): { *(vic) } > VIC /* Указываем что секция размещается в области памяти, принадлежащей VIC */ .... .... .... Далее в коде программы описывем регистры: .... #include <stdint.h> .... /* Описываем регистры, и указываем что они размещены в секции "vic" */ volatile uint32_t __attribute__((section("vic"))) REG_VICIRQStatus; volatile uint32_t __attribute__((section("vic"))) REG_VICFIQStatus; volatile uint32_t __attribute__((section("vic"))) REG_VICRawIntr; volatile uint32_t __attribute__((section("vic"))) REG_VICIntSelect; volatile uint32_t __attribute__((section("vic"))) REG_VICIntEnable; volatile uint32_t __attribute__((section("vic"))) REG_VICIntEnClr; volatile uint32_t __attribute__((section("vic"))) REG_VICSoftInt; volatile uint32_t __attribute__((section("vic"))) REG_VICSoftIntClr; volatile uint32_t __attribute__((section("vic"))) REG_VICProtection; volatile uint32_t __attribute__((section("vic"))) REG_VICSWPrioMask; ... Пересобираем программу и наслаждаемся отладкой периферии =) Проверил код и отладку. Работает.
  5. ИМХО тогда надо в скрипте линкера прописать эти адреса. Тогда гарантированно будет работать.
  6. В таком контексте в прерывании сидеть нельзя. Т.к. ответ по I2C абсолютно независимое от времени внешнее событие. Его железка теоретически может и не дождаться. Не, это моветон.
  7. Хм. int main() с вечным while(1) тоже фактически обработчик немаскируемого прерывания Reset. Так что "идеологически" ваш вариант тоже правильный. Но тут встаёт вопрос: а зачем Вам так делать, если за вас и так уже всё так и сделано?
  8. Похоже на то, что ваша целевая ОС (та, которая на ARM) не поддерживает RTC таймеры (скорее всего собрана без их поддержки).
  9. Ключ -Werror "превращает" варнинги в ошибки. Тут уже надо копать снова либо в конфигурацию библиотеки (судя по ошибке надо то ли включить, то ли отключить поддержку 64 бит. Хотя я не уверен.) Либо это бага в библиотеке. Можете попробовать в makefile убрать ключи "-Werror".
  10. Быть такого не может. вы что, прямо в корень /armbuild положили? Даже если он там лежит компилятор не может не найти хедеров.
  11. Посмотрите с какими ключами зачускается компилятор перед выдачей таких ошибок. В ключе "-I" должны содержаться пути к необходимым хедерам. Проверьте наличие этих хедеров. Сконфигурируйте библиотеку так, что бы при компиляции эти пути указывали на необходимые каталоги.
  12. 1) ИМХО --prefix НЕ надо при кросс-компиляции прописывать в /usr пропишите куда-нить в личный /home аналогично ARM_INSTALL_TREE 2) при компиляции (make) не выдавались-ли сообщения о ненайденых incude ?
  13. Похоже неправильно сконфигурировали speex для кросс-компиляции. При сборке вместо uclibc тянутся хэдеры локальной (хостовой) машины, а на ней наверняка glibc.
  14. Топология не менялась. Она ошибок не содержала. тут: Схемы, печатки и пр. под надписью "Актуальные на 8 июля 2009 года документы:" содержатся ссылки на работающие схемы, прошивки, инструкции, исходники.
  15. Очевидно в библиотеке speex отсутствуют такие функции. Либо не та версия библиотеки, либо вы её неправильно собрали. P.S. тему лучше перенести в OpenSource раздел
  16. И ещё. Понипрог надо использовать ТОЛЬКО для первичного программирования мк в программаторе. Далее надо использовать другие программы программаторы. т.к. Понипрог не поддерживает протокол stk500v2.
  17. Замените сначала катушку просто перемычкой и повторите эксперименты.
  18. Скорее всего либо мега до вас уже была как-то запрограммирована, либо у вас проблемы с питанием. померьте напряжение питания в момент "миганий".
  19. Разумеется можно. Для этого "адаптер" должен иметь панельку под "ваш" контроллер. К панельке на выводы питания подключите конденсаторы 0,1 мкФ. И подайте само питание. Можно, например, от USB.
  20. Посмотрите на пост №500 выше. От Feb 27 2011, 22:17.
  21. На самом деле "действительно случайное" число не нужно. Нужно всего-лишь навсего при каждом запуске в srand подсовывать ДРУГОЕ число. Получить его достаточно просто. При каждом запуске инкрементируйте какую-нибудь ячейку EEPROM и данным значением инициализируйте srand.