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

injen-d

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о injen-d

  • Звание
    Частый гость
    Частый гость
  • День рождения 28.02.1983

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 235 просмотров профиля
  1. Главное, чтобы после слияния проводников в один, ширины итогового проводника было достаточно для вашего "проца". А то "процы" бывают разные, одни несколько миллиампер кушают, а другие несколько ампер
  2. Места на плате для 3 конденсаторов нужно побольше, чем для 2, как нетрудно догадаться. Тут конечно дело ваше. Я предпочитаю делать выбор в пользу стабильности, предсказуемости, минимизации габаритов, минимизации длинны цепей с импульсными токами (и тут есть разница 2 или 3 довольно габаритных конденсатора разместить) на столько на сколько это возможно сразу. И если возникают сомнения, тогда начинаю все тщательно считать: какие токи, какие пульсации, при потерях емкости и/или индуктивности и все это для наихудших случаев по климату, первичному питанию и т.д.
  3. Смотря где стоят. Смотря на какую температуру рассчитано: EvalBoard обычно используют при +20...+30 С - в офисных условиях, в этом случае разницы ну будет вообще. При более высоких температурах разница будет все больше и тут важно был ли заложен запас по емкости при разработке схемы.
  4. Все зависит от запаса емкости который вы заложили в вашу схему. DC/DC как правило греются, а X5R сильно теряют при нагреве. Вам просто надо посчитать наихудший случай для вашей схемы: максимальная температура окружающей среды и максимальная температура перегрева платы. По графикам из даташитов сможете прикинуть какая будет в итого емкость, далее считаете какие будут пульсации при ней, устроит вас это или нет. И про DC bias не надо забывать, X5R при приложенном постоянном напряжении теряют емкость гораздо сильнее, чем X7R. И тут может выясниться, что для того чтобы скомпенсировать потерю емкости, нужно уже 3 конденсатора X5R вместо двух X7R... и где тут выгода?
  5. https://www.pjrc.com/teensy/beta/DDI0403D_arm_architecture_v7m_reference_manual.pdf Вот здесь рассказано, что s0-s15 сохраняются автоматически, и как узнать, что FPU использовался на момент прерывания
  6. регистры FPU сохраняются если использовались на момент переключения задач: " TST LR, #0x10 \n" // exc_return[4]=0? (it means that current process " IT EQ \n" // has active floating point context) " VSTMDBEQ R0!, {S16-S31} \n" // if so - save it. stack_item_t равно 4 так как 1 item - это один регистр (4 байта)
  7. GCC, scmRTOS v5.1.0, Cortex-M4F, -mfloat-abi=hard -mfpu=fpv4-sp-d16, FPU включен. Обнаружился следующий косяк: В файле os_target.cpp есть такие строчки: uintptr_t sptr = (((uintptr_t)Stack - CONTEXT_SIZE) & 0xFFFFFFF8UL) + CONTEXT_SIZE; StackPointer = (stack_item_t*)sptr; Проблема в том, что для включенной аппаратной плавучке мы имеем CONTEXT_SIZE = 17 * sizeof(stack_item_t), а значит мы получим не выровненный по 8-байтам указатель на начало стека процесса. Далее функция init_stack_frame() модифицирует StackPointer, имитируя сохранение контекста, после чего StackPointer становится выровненным по 8-байтам (хотя это, кстати, не нужно). Функция os_start() имитирует извлечение контекста первого процесса: " ADD %[stack], #(4 * 17) \n" // emulate context restore (после чего мы снова получаем не выровненный по по 8-байтам указатель на стек процесса) и записывает не выровненный указатель в PSP. В результате мы входим в первый процесс с не выровненным по 8-байтам PSP. Компилятор об этом ничего не знает. У меня это проявилось довольно не простым образом: не работала печать float переменных с помощью printf(), печаталось че попало. При этом, печать любых других величин работала корректно. Операции вычисления с float тоже работали корректно. Решение: заменить операцию выравнивания на uintptr_t sptr = (uintptr_t)Stack & 0xFFFFFFF8UL; В этом случае в PSP всегда будет записываться выровненное значение. А то, что StackPointer у спящего процесса будет не выровненным, так это не имеет значения, так как при пробуждении будет восстановлен контекст и он выровняется перед записью его в PSP.
  8. Порт для Cortex-M1, GCC

    Выкладываю. scmRTOS.4.00.Cortex_M1.GCC.7z ОПИСАНИЕ scmRTOS v4 Cortex-M1 GCC Что было изменено относительно порта для Cortex-M3: 1. Замена неподдерживаемых инструкций. Файл OS_Target_asm.S, функция PendSV_Handler(). Cortex-M1 не поддерживает инструкции STMDB R0!, {R4-R11} и LDMIA R0!, {R4-R11}. Инструкции заменены на соответствующие последовательности поддерживаемых инструкций. 2. Добавлена возможность выбора в качестве системного таймера TIMER1 или SystemTimer. Поскольку порт делался конкретно под 1986ВЕ1Т, а в нем присутствует бага в железе, из-за которой в большинстве случаев невозможно корректно настроить частоту SystemTimer, то пришлось в качестве системного использовать TIMER1. В файл scmRTOS_CONFIG.h был добавлен макрос scmRTOS_USE_SYSTICKTIMER. В файлах: OS_Kernel.h, OS_Target_asm.S, OS_Target_cpp.cpp, scmRTOS_TARGET_CFG.h добавлены директивы условной компиляции, позволяющие переключаться между TIMER1 или SystemTimer. Инициализация TIMER1 должна быть произведена до запуска ОС. 3. Добавлена возможность использования уникальной структуры _reent для каждого процесса. Это позволяет сделать реентерабельными функции стандартной библиотеки, но приведет к дополнительному расходу ОЗУ. Чтобы уменьшить дополнительный расход ОЗУ на хранение структур _reent, рекомендуется добавить ключ компиляции -D_WANT_REENT_SMALL Для включения данной опции, в файл scmRTOS_CONFIG.h был добавлен макрос scmRTOS_REENT_STDLIB. В файлах: OS_Kernel.h, OS_Kernel.cpp, OS_Target.h добавлены директивы условной компиляции. Пример объявления процессов с этой опцией: #if scmRTOS_REENT_STDLIB==1 _reent reent_struct_USB =_REENT_INIT(reent_struct_USB); _reent reent_struct_terminal =_REENT_INIT(reent_struct_terminal); _reent reent_struct_measurement =_REENT_INIT(reent_struct_measurement); TProc_USB Proc_USB(&reent_struct_USB); TProc_terminal Proc_terminal(&reent_struct_terminal); TProc_measurement Proc_measurement(&reent_struct_measurement); #else TProc_USB Proc_USB; TProc_terminal Proc_terminal; TProc_measurement Proc_measurement; #endif //scmRTOS_REENT_STDLIB==1 Так как в своем проекте я активно использовал стандартную библиотеку, то решил добавить в ОС эту опцию, не дожидаясь когда появятся глюки в многопоточных приложениях. В реальной полезности опции до конца не уверен. По крайней мере, с ней все работает. Данная опция не имеет непосредственного отношения к предлагаемому порту ОС. Если никому не интересно, могу вырезать это с корнями.
  9. Freelance

    Разработка электроники на заказ. Опыт работы с: 8051, PIC, AVR, ARM (ARM7 и Cortex-M3), ПЛИС (Altera Max II). C/C++, VHDL. Краткое описание последних успешно реализованных проектов: Прошивка для контроллера управления DC/AC преобразователем 54(110)В/~220В. Функции: формирование ШИМ, отслеживание аварийных ситуаций из-за: короткого замыкания, пониженного напряжения питания преобразователя, перегрева, перегрузки. Реализован сложный алгоритм определения времени до аварийного отключения преобразователя в зависимости от степени перегрузки и ее изменения. Прошивка для AT91SAM7SE512 платы протонного магнитометра. Функции: управление двумя 8-и канальными АЦП, получение параметров работы от управляющего устройства, накопление по заданным параметрам массива выборок во внешнем ОЗУ, по запросу из управляющего устройства выдача массива выборок по внешней параллельной шине. Программа управления платами протонного магнитометра (Windows XP/7, C++Builder 6). Функции: управление по USB несколькими платами, подключенными к параллельной шине микросхемы FT2232H; прием массивов выборок на максимально возможной скорости; отображение осциллограмм по принятым выборкам, с возможностью смены масштаба по высоте и ширине и др. функциями. Программа устойчива к различным сбоям при работе c платами. Используется многопоточность. Компактное устройство управления и тестирования серии различных изделий заказчика по интерфейсу типа MIL-STD-1553. Разработаны схема и встроенное ПО для Atmega64A. Интерфейс пользователя - дисплей 4х20 символов и пленочная клавиатура. Реализовано многоуровневое меню. Фото опытного образца прилагается. Предложения можно в личку или на [email protected]
  10. А Воронежское отделение чем занимается? Там разработчики и/или программисты не нужны?
  11. Мало информации о вакансии... Не очень понятно кто Вам нужен, может инженер-конструктор? Только чертежи рисовать?
  12. В своё время тоже столкнулся с данной неприятностью. Я просто переименовал make.exe в GNUmake.exe и в настройках проекта эклипсы, соответственно, меняю команду make на GNUmake. Всё работает, и Borland тоже.
  13. Если нажмёте Ctrl+Shift+L, появится окно со списком горячих клавиш. Там немало полезного.
  14. Не знаю где в ГОСТе сказано, я его не читал. Но когда я его впервые увидел, сразу вспомнилось как еще в школе на уроке черчения мы вычерчивали буковки именно в таком написании.
×
×
  • Создать...