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

VAI

Модератор
  • Постов

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

  • Посещение

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


  1. А здесь на сервере смотрел? MCs\ARM\IAR ARM.411a
  2. MSP430 USB Debugging Interface

    Там нет бита защиты, но можно пережечь перемычку, отключающую JTAG. Приведу выписку из faq С. Борщ, http://forum.electronix.ru/index.php?showtopic=33 21) Q: Чем можно пережечь fuse защиты кода от считывания? A: Из известных мне средств - только программаторами от TI (MSP-430PRG для однократных, MSP-PRGS430 - для всех). Или создать свой программатор, используя AN "Programming a Flash-based MSP430 Using the JTAG Interface" (slaa149). По всей видимости никто не реализовал самодельный программатор, пережигающий fuse. Во всяком случае в конфе такой информации не проскакивало. Мы купили 2 шт. MSP-PRGS430 на серию, для серии дешевле купить, чем делать самому. 22) Q: Если я пережгу fuse, останется ли возможность программирования через bootstrap loader? A: Да, останется. Fuse всего-лишь отключает от ядра JTAG. А bootstrap loader - обычная программа внутри кристалла, только расположенная в нестираемой части памяти. 23) Q: В описании bootstrap loader сказано, что 256-битный ключ для чтения программы хранится по адресам 0xFFE0-0xFFFF. Но там же должны быть вектора прерываний? A: Совершенно верно. Именно содержимое векторов прерываний и является ключом. Чистый кристалл содержит 0xFF в этих ячейках, т.е. ключ нам известен. Именно с этим ключем (все '1') и проводится запись в чистый кристалл. После записи программы область ключа заполнится векторами прерываний и единственная команда, которая может быть выполнена без знания ключа - стирание всей флеш-памяти, и следовательно - приведение ключа в исходное состояние. Знать ключ теоретически может только человек, имеющий на руках прошивку кристалла, следовательно ему чтение памяти необходимо явно не для копирования. Задача защиты от копирования выполнена. Время подбора 256-битного ключа сопоставимо с временем разрушения данных во флеш.
  3. MspFet v1.43 release

    Ведь он только предполагает, а не говорит прямо. И тебе остается принять решение. Если ты веришь его предположениям - не ставь.
  4. uC/OS-II вопрос?

    Пока к комерческим изделиям при сертификации не было вопросов по поводу софта вообще и языка программирования, используемого для firmware. OS пока не использовали. На всякий случай мы купили лицензионный Борланд5 (за 1000р) для легализации софта на РС. Вопрос по санкциям и возможностям проверки меня тоже интересует. Если для ИАР еволюшн я могу получать лицензию хоть ежедневно, для uCOS этого нет.
  5. Это я нагородил еще лет 5 назад для РС. С тех пор и сую везде, где можно не задумываясь. :-) Спасибо, гляну avrlib. А буфер у меня не страшный (см. ниже), страшна реализация одновременного доступа к буферу из нескольких фоновых приложений... Но со временем приведу в порядок. В отличии от avrlib у меня используется только ++, а там -деление (точнее остаток). typedef struct { unsigned char *home; // указатель на начало буфера unsigned char *head; // указатель на голову буфера unsigned char *tail; // указатель на хвост буфера unsigned char *end; // указатель на конец буфера } CIRCULAR_BUFFER; /* --- put_circle() --------------------------------------------------------------------------------------- ** * Помещает байт dat в кольцевой буфер, при заполнении буфера делает buf->tail = NULL и возвращает -1, * при уже заполненом буфере затирает байт в голове буфера. * -------------------------------------------------------------------------------------------------------- */ int put_circle( unsigned char dat, CIRCULAR_BUFFER *buf ) { int c = 0; if ( buf->tail == NULL ) { buf->tail = buf->head; // буфер полон, if ( ++buf->head == buf->end ) // сдвинем голову buf->head = buf->home; } *buf->tail = dat; // затрем первый байт if ( ++buf->tail == buf->end ) buf->tail = buf->home; if ( buf->tail == buf->head ) // буфер заполнен ? { buf->tail = NULL; // да c = -1; } return( c ); } /* --- get_circle() --------------------------------------------------------------------------------------- ** * Возвращает в младшем байте байт из кольцевого буфера, если буфер пуст, возвращает -1 * -------------------------------------------------------------------------------------------------------- */ int get_circle( CIRCULAR_BUFFER *buf ) { int c = -1; if ( buf->head != buf->tail ) // буфер пуст ? { if ( buf->tail == NULL ) // буфер был полон buf->tail = buf->head; c = *buf->head; if ( ++buf->head == buf->end ) buf->head = buf->home; } return( c ); } /* --- ini_circle() --------------------------------------------------------------------------------------- ** * * -------------------------------------------------------------------------------------------------------- */ void ini_circle( unsigned char *home, unsigned char *end, CIRCULAR_BUFFER *buf ) { buf->head = buf->tail = buf->home = home; buf->end = end; } /* --- flush_circle() ------------------------------------------------------------------------------------- ** * Очистка буфера * -------------------------------------------------------------------------------------------------------- */ void flush_circle( CIRCULAR_BUFFER *buf ) { buf->tail = buf->head; } /* --- status_circle() ------------------------------------------------------------------------------------ ** * Проверка статуса буфера * Возвращает -1 если буфер полон (нет места) * 0 если в буфере есть место * 1 если буфер пуст * -------------------------------------------------------------------------------------------------------- */ int status_circle( CIRCULAR_BUFFER *buf ) { if ( buf->tail == NULL ) // буфер заполнен? return( -1 ); // да if ( buf->head == buf->tail ) // буфер пуст ? return( 1 ); // да return( 0 ); // есть место } /* ---------------------------------------------( end of file )-------------------------------------------- */ что-то первый пробел в каждой строчке кода съедается...
  6. MspFet v1.43 release

    Ок. Только вчера смотрел у тебя - вдруг обновился? Скоро буду готов тестировать BSL.
  7. Пример, в котором проявляется ошибка оптимизатора typedef struct { unsigned char *home; // указатель на начало буфера unsigned char *head; // указатель на голову буфера unsigned char *tail; // указатель на хвост буфера unsigned char *end; // указатель на конец буфера volatile int change; // } CIRCULAR_BUFFER; int put_circle( unsigned char dat, CIRCULAR_BUFFER *buf ) { CIRCULAR_BUFFER b; istate_t i; int c; unsigned char *p; for ( b.home = buf->home, b.end = buf->end;; ) { b.head = buf->head; b.tail = buf->tail; b.change = buf->change; c = 0;// это присваивание при "Code motion" выносится из цикла, хотя ниже с может стать -1, а при повторном прохождении цикла с должно опять стать нулем. if ( b.tail == NULL ) { b.tail = b.head; // буфер полон, if ( ++b.head == b.end ) // сдвинем голову b.head = b.home; } p = b.tail; // Сюда надо положить dat if ( ++b.tail == b.end ) b.tail = b.home; if ( b.tail == b.head ) // буфер заполнен ? { b.tail = NULL; // да c = -1; } if ( b.change == buf->change ) // фоновый процесс поработал с буфером в это-же время, придется все делать заново break; } i = __get_interrupt_state(); // сохраним статус прерываний __disable_interrupt(); // Запретим прерывания buf->change++; // мы поработали с буфером! buf->head = b.head; // обновим значения в буфере buf->tail = b.tail; *p = dat; __set_interrupt_state( i ); // востановим статус прерываний return( c ); }
  8. Попробовал ИАР-МСП в3.20

    Ошибка при работе с volatile (http://www.telesys.ru/wwwboards/mcontrol/703/messages/67032.shtml ), что была в v3.10a, исправлена, как минимум, в моем случае. Есть глюк с оптимизацией, я использую полную по скорости - надо отключать "Code motion" - ошибочно выносит из цикла переменную (опять же в моем случае). При других оптимизациях не проверял.
  9. стабильно захожу на сахару телесиськи и сюда. Иногда на электроду.
  10. Начинал с 1816ВЕ35, потом 1810ВМ86 - серия больших приборов. Потом очень долго PICи - брррр. Сейчас MSP, немного Fujitsu, начинаю ARM. После ПИКов - душа поет!
  11. Лет 7 писал для пиков. Эта сегментация затрахала. Сейчас начали пользовать MSP и ARM. одно удовольствие, и при той-же цене огромный выигрыш в ресурсе.
  12. Отбой тревоги! Сам поставил Orcad на VMware Workstation, затем поставил SP. layout работает. По всей видимости на той машине, где первый раз проверял, какие-то глюки. Может что криво стоит.
  13. Но ведь сносишь SP, все начинает работать. Попробую на виртуальной машине установить с нуля. Результаты сообщу.
  14. Я скачал с фтп, а наш разводчик установил "OrCAD10_0_SP1_1.exe". Лайаут кричит, что ИД лицензии не тот. Лицензия, что у нас была, такая же, что и на фтп. Это только у нас, или надо искать новую лицензию, или какие другие тонкости? После деинсталяции сервиспака все стало на свои места.. :(
  15. дополню - и маленькое read.me надо писать: чо за программа, как устанавливать. Времени много не займет, а пользу комуто принесет.
  16. Мы используем 220->12 PS45-12, обходится около 300р. Берем в Элтехе, довольны. Посмотри http://www.eltech.spb.ru/catalog.phtml?gro...%F2%E5%EB%E8%0A P.S. Опять интерфейс стал русским и исчезло окно быстрого ответа.... :( Уже появилось, это что-то у меня было. :) Хотя нет, в теме "Предложения и обсуждения сайта и форума->предложения к Админам" есть окошко, а здесь так и нет, 2 раза открывал!
  17. у меня тоже были сомнения... http://electronix.ru/forum/index.php?showtopic=45&hl=
  18. Здесь посмотрите. http://groups.yahoo.com/group/fsr-ru/ PS Версия под винду называется Топор http://www.freestyleteam.com/ru/ Более подробно, наверное, может просветить Сергей Пинигин.
  19. используйте чипы от FTDI - FT232BM - их сейчас везде как грязи. Схема включения и драйвера на сайте производителя.
  20. Спасибо, атавар "впендюрил". :-) Приятно глазу... :)
  21. Нее. Сделал только атавар из базовой галереи. А с моего диска gif 50х40 размером 1 кб загружаться не хочет, вот что пишет: Обнаружена ошибка: Неудачная загрузка. Обратитесь к Администрации форума для помощи в разрешении проблемы. И кнопку "ответ" жать приходится... :(
  22. При ответе хотелось бы, чтобы внизу страницы сразу была форма для быстрого ответа, как, например, на www.forum.ru-board.com/. К чему нажимать кнопку "ответ", ждать когда откроется форма, и заново, задом наперед развернется тема. Лишняя накрутка трафика, по моему. И еще, хотел "впендюрить" атавар - говорит обратитесь к администратору. Это только у меня?
×
×
  • Создать...