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

GenaSPB

Участник
  • Постов

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

  • Посещение

  • Победитель дней

    2

Весь контент GenaSPB


  1. Кажется, начало находиться... Это оно? (кусочек инициализации от openocd): soft_reset_halt # RSTC_CR : Reset peripherals mww 0xfffffd00 0xa5000004 # disable watchdog mww 0xfffffd44 0x00008000 # enable user reset mww 0xfffffd08 0xa5000001 # CKGR_MOR : enable the main oscillator mww 0xfffffc20 0x00000601 sleep 10 # CKGR_PLLR: 96.1097 MHz mww 0xfffffc2c 0x00481c0e sleep 10 # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz mww 0xfffffc30 0x00000007 sleep 10 # MC_FMR: flash mode (FWS=1,FMCN=73) mww 0xffffff60 0x00490100 sleep 100 То есть, мне надо писать в регистры так, как это делал бы процессор?
  2. Спаибо... кстати, никто не делал этих загрузчиков самостоятельно? попробовал бы через скрипты urjtag запрограммировать. в даташите на процессор упоминается о двух режимах работы jtag - ICE и "стандартный" режим. hjtag только в режиме ICE работает (и у меня JTAGMODE наглухо на земле). Как я понял, программирование "как микросхемы памяти" внутреннего flash процессора возможно во втором режиме. Небольшая "непонятка" с тем, что после reset при единице на JTAGMODE - написано, что в режим serialprogramming через jtag процессор входит только при определённых состояниях ножек pgm modexxx. Никто не программировал процессор как "просто память"?
  3. add2: с таким же выводом уже сталкивался писавший тут http://www.koka-in.org/~kensyu/handicraft/...y/20081110.html человек. Прочёл через гугль. Что делать? ps: с невозможностью прямой пршивки флеш через jtag согласен... Но как-то h-jtag это делает? Хотя, кажется, от помещает в память инструкции для прошивки... Наверное, скриптом придётся делать то же самое?
  4. Вот, при попытке сказать discover выдаёт вот это: jtag> cable usbblaster Connected to libftd2xx driver. jtag> detect IR length: 4 Chain length: 1 Device Id: 00111111000011110000111100001111 (0x000000003F0F0F0F) Manufacturer: ARM Cannot open c:\u\data/arm/PARTS Unknown part! chain.c(149) Part 0 without active instruction chain.c(200) Part 0 without active instruction chain.c(149) Part 0 without active instruction jtag> discover Detecting IR length ... 4 Detecting DR length for IR 1111 ... 1 Detecting DR length for IR 0000 ... Warning: TDO seems to be stuck at 0 -1 Detecting DR length for IR 0001 ... 1 Detecting DR length for IR 0010 ... 4 Detecting DR length for IR 0011 ... Warning: TDO seems to be stuck at 0 -1 Detecting DR length for IR 0100 ... 1 Detecting DR length for IR 0101 ... 1 Detecting DR length for IR 0110 ... 1 Detecting DR length for IR 0111 ... 1 Detecting DR length for IR 1000 ... 1 Detecting DR length for IR 1001 ... 1 Detecting DR length for IR 1010 ... 1 Detecting DR length for IR 1011 ... 1 Detecting DR length for IR 1100 ... Warning: TDO seems to be stuck at 0 -1 Detecting DR length for IR 1101 ... 1 Detecting DR length for IR 1110 ... 32 jtag> Соответственно, все файлы и каталоги на месте. Может, cygwin что-то не нравится? Я об пропущеном add: не помогло, перестановка urjtag при инсталированном cygwin & ioperm не помогло тоже...
  5. UrJTAG с ALTERA USB BLASTER сконнектился - светодиод на адапетере загорелся. Пока к плате не подключал, посему команды диагностики пока возвращают ошибку. Осталось только разобраться, куда там hex/bin "засовывать".
  6. Спасибо, со всеми параметрами кроме ft2232_layout я разберусь. Кто-нибудь знает, как выглядит ft2232_layout для ALTERA USB BLASTER? Не найти.
  7. Скачал, поставил. В хелпе на 128 страницах слов ALTERA или BLASTER не нашлось. Куда примерно смотреть?
  8. ALTERA USB BLASTER use as JTAG programmer

    Кто-нибудь знает, как научить ALTERA USB BLASTER зашивать по JTAG AT91SAM7S* Никаких функций отладки не требуется, просто залить HEX или BIN во флэш.
  9. Вот документ (взгляд со стороны) - AVR ISP и AVR JTAG вполне соответствуют. Вид со стороны штырей того разъёма, что устанавливается на плате с процессором. Я когда искал разводку - смотрел в какой-то документ найденный на сайие Атмела и сравнивал с тем, что написано в хелпе к AVReal. зы: кто-нибудь знает, как научить ALTERA USB BLASTER зашивать по JTAG AT91SAM7S*?
  10. Неправильно. В указанном порядке (например, для операции умножения - сдева направо) вычисляются выражения над двумя операндами. И, соответственно, promotion выполняется для первой пары операндов. К вычислению второго умножения приходит в качестве левого операнда то, что получилось в результате умножения (с наиболее "старшим" типом из операндов), затем делается "продвижение" среди пары ыторых. То есть, в выражении 2 * 3L * 4.0 сперва 2 делается long, потом умножается на 3, затем результат делается float и умножается на 4. Скобки, естественно, меняют порядок вычислений.
  11. Тут правильно сказали - если не тащить петель по плате - всё тихо работает. Вот на фото - приёмник. Клавиатура - 12 кнопок - подключеня к трём входам АЦП. Кварц на 12 МГц на процессоре AT91SAM7S64 - забыл предусмотреть припайку корпуса к земле - так я его слышу только тогда, гда к корпусу кварца прикасаюсь отвёрткой. Гораздо бероятнее получить наводки от контроллеа в индикаторе типа 1602. Из советов - уменьшать напряжение питания до минимума, в управляющие цепи включать последовательно резисторы, не жалеть фееритовых блочков и дросслей. http://forum.cqham.ru/download.php?id=52159
  12. Мне кажется, если не найти на помойке микросхему от cypress, то указанным Вами требованиям (кроме частоты) соответствует AD9834 - у неё есть выход последнего разряда сумматора, при тактовой до 75 МГц можно получать до 32.5 МГц.
  13. Тогда не просто коммутатор, а два - и управлять квадратурными сигналами. Писать двумя каналами звуковухи. Или все-таки не потеряется?
  14. Хоть разберётесь как должны выглядеть дескрипторы аудиоустройств и что именно должны делать функции-обработчики. Ещё один вариант - считать дескрипторы с какого-нибудь работающего usb audio устройства и побитно разобраться что зачем нужно. Желательно при этом иметь под рукой документ с usb.org. А что именно обеспечивает передачу данных по usb это совсем другая проблема. Зачем PCM3000 Вам нужен? На другой чип выдачу звука сделаете. Хотя бы для начала просто "проглатыватель" данных сделайте. ps: перечитал первй вопрос - Вам вообще ввод звука нужен. Загоните хотя бы синусоиду, сгенерированную программно в компютер. Потом АЦП прицепите.
  15. Загляните сюда - http://www.circuitcellar.com/AVR2004/HA3553.html Я начинал с разбирательств с этим проектом. Аккуратно, код написан студентом!
  16. Это тоже пример "шаловливых ручек". Зачем? Крутите потом, когда разберетесь с загрузкой файлов - когда сможете контролировать результат. Разнца между загрузкой в ОЗУ и программированием ПЗУ Вам понятна?
  17. В область 0 - скорее всего ничего не произойдёт. Вернее, надо прочитать повнимательней про маппинг после сброса у at91sam7sXXX - может оно в ОЗУ направляется? А при просто записи в область ПЗУ ничего не происходит, его содержимое не меняется и всё остаётся как и прежде. Если код, предназначенный для работы с абсолютного адреса 0 загручить со смещением - не знаю, зависит от кодогенератора. Сейчас я не знаю ассемблера АРМ настолько (и не собираюсь его изучать пока), чтоб сказать точно что будет, но, скорее всего, код выполняться будет из-за используемой в основном относительной адресации. НО, адрес ОЗУ прописан начинающимся с 0x200000 - и код, скорее всего, если используется что-то в ОЗУ - будет испорчен. Для отладки в ОЗУ попробуйте самостоятельно выделть два непересекающихся участка в ОЗУ и скомпилировать программу под эту конфгурацию (например, модифицировать конфигурацию debug того проекта, что я выложил). Ещё, есть предопределённые места в адресном пространстве - например, таблица векторов прерываний - и их прото так не переместишь. Мой пример не использует прерывания.
  18. Я же сказал - не записывается в ПЗУ. Только грузится естественно без результата. Адрес для кода в линкере я поставил с 0 - это надо каким-нибудь "флэшером" прожигать. IAR не делает этого. А "стартап" неявно подключается - о его наличии говорит содержимое .map файла после завершения построения проекта. Бинарник работающий, не беспокойтесь. Попробуйте .hex с помощью какой-нибудь утилиты вроде тех, что идут вместе с jtag адаптером прошить - и посмотрите на вывод PA8. У меня с частотой около полугерца машет. Возмоте мой проект и забудьте пока про стартап - он есть! Ну не даёт iar к нему доступа - так для начинающего продукт (на мой взгляд после знакомства с тем, что я вчера скачал).
  19. Посмотрел на результат препроцессирования (-E)... Только не понятно с такими ошибками, как же тогда offsetof в константных инициалзиаторах работает? Или тогда дефайлы для SFR надо было бы сделать так же... Кто объяснит это автору? ps: а для случая со смещениями в структурах придумано __builtin_offsetof - интересно, что-то делающее l-value из числа встроенное есть?
  20. Скачал IAR Embedded Workbench for ARM 5.40 Kickstart, в ней добился того, что собирается работоспособный проект. Средствами среды не нашёл способа прошивать во flash скомпилированную программу (только загрузка и выполнение из озу возможно). Вернее, не смог правильно сконфигурирвать предлагаемые flash loader-ы. В соответствующих каталогах проекта лежат .hex файлы, дёргающие PA8 с небольшой скоростью. Программировал flash отдельной программой - всё работает.
  21. Что не так в версии: template <uint8_t volatile & ctl, uint8_t volatile & port, const char bit> class mypin { public: __inline mypin(){ctl|=(1<<bit);} static __inline void set() {port|=(1<<bit);} }; mypin<DDRA,PORTA, PA4> mypinname; mypinname.set();
  22. А не надо делать предположения об адресе регистра управления направлением. Заведите явный параметр для регистра управления направлением и настанет благодать...
  23. Одна маленькая тонкость - в этой программе отсутствует разрешение реагирования процессора на сигнал сброса - то есть, попробуйте выключить питание отладочной платы, а затем включить опять. Обычно это разрешение делается startup, но не всегда нужно (оно, конечно, удобно при отладке, но в реальной жизни может и не требоваться).
  24. Держите на C. Подставить имя бита, который можете посмотреть осциллографом. #include "AT91SAM7S64.h" /* Главная функция программы */ int main(void) { AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // запретить сторожевую собаку #define WORKMASK AT91C_PIO_PA15 // битовая маска, определяет каким выводом шевелить AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOA); // enable periph clock for PIO controller AT91C_BASE_PIOA->PIO_PPUDR = WORKMASK; // disable pull-up resistors AT91C_BASE_PIOA->PIO_OER = WORKMASK; // эти выводы на вывод for (;;) { AT91C_BASE_PIOA->PIO_SODR = WORKMASK; AT91C_BASE_PIOA->PIO_CODR = WORKMASK; } #undef WORKMASK return 0; }
  25. Попробуйте в шаблоне не делать предположения о том, что uint8_t это unsigned char, а оставить этот тип. За справками в файл stdint.h, строка 121. И поделитесь результатами. зы: а попробуйте как улучшение сделать параметром ссылку вместо указателя.
×
×
  • Создать...