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

Waso

Свой
  • Постов

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

  • Посещение

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


  1. Нет. всеравно не хочет. дело в том что там в цикле еще есть условие и обнуление указателя буфера, со всякой обработкой, где много регистров используется. Поэтому и жадничает компилятор наверное. Но мог бы сохранить регистры в стек внутри этой обработки...
  2. День добрый! Назрел такой вопрос: как ИАР-у(4.20) сказать чтобы перед циклом запомнил в регистр процессора адрес регистра выходных данных и потом не грузил его снова каждый раз. (Нужно ускорить процесс). Написал так: register uint16_t *pcSource; register uint32_t *pOut; pcSource = (uint16_t*)( xRxDescriptors[ ulNextRxBuffer ].addr & emacADDRESS_MASK); pin_off(clk_pin); // from AT91SAM7X256.h : //#define AT91C_PIOA_ODSR ((AT91_REG *) 0xFFFFF438) // (PIOA) Output Data Status Register pOut = (uint32_t*) AT91C_PIOA_ODSR; while( ulTotalFrameLength) { *pOut = *(pcSource++); pin_on(clk_pin); ulTotalFrameLength --; pin_off(clk_pin); } Но в результате компиляции упорно получается следующее: // 385 pOut = (uint32_t*) AT91C_PIOA_ODSR; LDR R3,??vEMACRead_and_Go_0+0x8 ;; 0xfffff430 CMP R5,#+0 BEQ ??vEMACRead_and_Go_4 // 396 *pOut = *(pcSource++); ??vEMACRead_and_Go_5: LDR R6,??vEMACRead_and_Go_0+0xC ;; 0xfffff438 LDRH R7,[R4, #+0] STR R7,[R6, #+0] ADDS R4,R4,#+2 // 399 pin_on(clk_pin); MOVS R6,#+128 LSLS R6,R6,#+10 ;; #+131072 STR R6,[R3, #+0] // 400 ulTotalFrameLength --; SUBS R5,R5,#+1 // 401 pin_off(clk_pin); STR R6,[R2, #+0] ... Тоесть при инициализации pOut в регистр пишется совсем другой адрес, который затем используется совсем в другом месте - макросом pin_on. Это макросы из ascold.h - знатокам знаком этот хедер. Оптимизация выставлена максимальная. При других уровнях оптимизации компилятор и вовсе игнорирует переменную pOut. Как это победить?
  3. ЗдОрово! Благодарю. ВОТ какраз нарыл похожего зверя в одном корпусе, но характеристики не ахти, и получается крупнее и дороже дискретных полевиков. Такчто спасибо за схемку - не придется изобретать велик. :)
  4. О шотках - посмотрел на BAT54 и испугался. У них 0.8В падение при 100мА. Посоветуйте шотку с действительно малым падением.
  5. Добрый день. Дубовый вопрос. Скажите пожалуйста, а у всех мосфетов встроен защитный диод? Мне нужно чтоб при закрывании через транзистор ток немог теч ни в одном направлении. Вобщем мне нужно собрать электронный переключатель, который бы переключал питание схемы с батареи на USB и обратно. Нужны минимальные падения напруги на этом переключателе - не более 0.3В при токе 100мА.
  6. Обновил УГО - подкорректировал графику. Делаю "Update schematic sheets" - обновляет УГО, но и забывает(обновляет) все параметры. Как этого избежать? Как обновить только графику или может както можно скопировать параметры?
  7. Хм... у меня нет такой вкладки. Версия альтиума 6.5. Девятый в пути.. %) На схеме основной части - только вкладка с ее названием. На схеме канала - несколько вкладок с именами каналов. Я скопировал канал на основную схему - получилось как надо, но в PCB такую схему наверное уже не перегонишь. Только для распечатки...
  8. С линиями печально. Но ничего.. Обрыскал форум, но так и не нашел ответ - как создать свой символ или элемент в библиотеке типа Power port. А то у земли палочка худенькая, и у питания стрелка не по ГОСТу... Пробовал сделать элемент типа Net tie(no bom) у которого один из пинов скрыт и подключен к GND, но это не то, потомучто цепь, подключенная к другому выводу не получает нужного имени.
  9. Эм.. А можно еще вопрос? Можно тип линий свой задать? Ато мне вот надо по ГОСТу одинаковые каналы обвести штрих-пунктирной линией, а ее такой нет. Есть только отдельно штриховая и пунктирная.. :'( .. А я пока вкладку "Editor" поищщу... 0_о
  10. Подскажите пожалуйста, можно какнибудь на схеме в случае многоканального устройства поз. обозначения отображать логические а не физические (с довеском имени канала). Такая возможность есть при рисовании платы, а на схеме я такого не нашел.
  11. О! Получилось. Благодарю. Этого достаточно. Хотя гибкости поменьше чем в пикаде в этом месте получается.
  12. Хорошо, спасибо, поз.обозначения так тягаются. А вот меня не устраивает например расстояние от УГО микросхемы до текстового символа - номера ноги. Он почемуто далековато получается. Както не по ГОСТу... И шрифт этого элемента где задавать - тоже пока не нашел... Как быть?
  13. А можно ли в Альтиуме на схеме перемещать части УГО (поз. обозначния, номера выводов и тп), как это делается в P-CAD-е с помощью шифта.
  14. Ругается что мое семейство CoolRunner XPLA3 поддерживает пулап только для входных портов. А у меня двунаправленный с переходом в третье состояние. И вот надо чтоп в третьем состоянии включались пулапы. Это можно сделать?
  15. А вы в чем пишете? У меня ISE4.2 ругается на неизвестный символ "|" А пулапы ой как нужны... Девайс - xcr3064xl
  16. AVR-Doper

    Эм... Ну и как обстоят дела с самодельным JTAG -ом спустя годик с небольшим? ;) Я вот подумываю присобачить FT232RQ к JTAG mini ICE, но неуверен будет ли оно работать с альтерой... А было бы здорово! Может уже кто изобрел такой велосипед?
  17. О! Уже два варианта! Второй - в ветке OLEG_BOS: Спасибо!
  18. Имеется STK500, пишу в IAR. Надо прошить. AVRstudio говорит что hex, сгенеренный IAR-ом имеет неверную контрольную сумму. Уже много разных хексов перепробовал - они одни и теже получаются и ошибка не уходит. Программа простейшая - ledchase, идущий с яром. Неужели все транслируют в студию через ubrof8 а не напрямую hex?? И еще непонятна ситуация с отладчиками для авр. Я вот по первости игрался с AlgorithmBuilder-ом и был шчасслефф. Он умеет контролировать регистры проца (аля Жытаг), дописывая свой отладочный код и используя всего одну ногу, одну из тех что и для прошивки. И вот пришла пора писать серьезные проекты - пересел на ИАР и незнаю как быть с отладкой, ибо настоящий JTAG держат не все AVR-ы...
  19. Рецепт работает, благодарю! Еще вопрос по CRC - хочу дописывать в конец файла число, которое давало бы нулевую CRC после прохода функции подсчета по файлу и этому числу вконце. Взял функцию crc16 из иаровских апнотов. Прогнал по прошивке. Результат сходится. В иаре менял настройку чтоб вставлял инверсионную сумму. И делал завершающий проход по этому числу. Результат ненулевой. Где я ошибся/как правильно??? Именно эту тонкость в гугле не нашол. :(
  20. sam256 remap

    Однако подвисает симулятор при запуске. Но всеравно спасибо за участие! Я пока обошел эту проблему работая напрямую с железом. Позже разберусь с макросами и настрою симулятор. Буду использовать ваш файл как отправную точку.
  21. Ну, некоторые не настолько мелкие чтоб их делать inline. Хотя при наличии достаточного количества свободно места помешать может только жадность программиста. :) Благодарю за идею со структурами!
  22. Хочется внутри одной большой функции создавать мелкие, которые бы видели переменные родительской функции как глобальные. Как я понимаю, при вызове функции с параметрами компилятор предварительно копирует эти параметры в отдельные переменные, которые вместе с переменными, обьявленными внутри той функции, образуют ее стек. Это долго и жирно. Хочется создать функцию, при вызове которой в стек заносился бы только адрес места вызова, а переменные брались бы из внешней функции. Как это сделать? Как я понимаю, при обращении через указатель, его значение также копируется в стек, такчто это не вариант.
  23. А можно поподробнее о библиотечном аналоге Cstartup? Как его слинковать, откуда взять, какие функции он выполняет? Ато первый раз про такой слышу. :unsure: И еще. Резервировать 0x40 байт под вектора не много ли? Всего там 8 4-х байтных векторов, правильно? Это 0х20. В два раза больше места это на случай что все они будут грузить в PC абсолютный адрес? Или там есть чтото еще? Извиняюсь что так много вопросов.... :laughing: :smile3046:
  24. sam256 remap

    Отладчик не зеркалит флеш в нулевые адреса при старте. Это и надо исправить. Отлаживаю пока в симуляторе. Оттого и удивляюсь насчет брейкпоинтов. Проц - AT91SAM7X256, ИДЕ IAR 440A
  25. sam256 remap

    У меня основная программа закачивает обновление через изернет, рестартует и затем бут его переписывает на место проги. В будущем бут должен будет уметь закачать прошивку через UART, но... незнаю, может и придется реализовать это сейчас, но времени в обрез. А пока хочу попробовать воспользоваться опцией линкера "Raw binary image"... Как все получится - отпишу. ============================================================== Шить еще не пробовал (заменил FlashAT91SAM7Sx.d79 на ваш), но отладчик упорно начинает работать с нулевого адреса даже если ROMSTART=00100000. Какнибудь можно его научить учитывать ремап/неремап при запуске? А вообще линкует хорошо. Дописывает указанный в rawbinary image файл куда надо. Кстати, как отладчика заставить вставлять больше брейкпоинтов? В некоторых программах при отладке у меня получалось ставить одновременно не больше 2-3х брейков. А взялся за бут - так он мне вообще фигу показывает и даже пошагам смотреть может только на ассемблеровский код. Чтото гдето забыл я настроить. Раньше пользовался шаблонами...
×
×
  • Создать...