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

adnega

Свой
  • Постов

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

  • Посещение

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

    3

Сообщения, опубликованные adnega


  1. Я тоже морозил F100 серию, но нет такого холодильника, чтоб до – 60, довольствовался уличными -30. Все ОК работало. А нагревать не пробывали, как там со стабильностью?

     

    Греть проще. До +85 и выше точно грел, но не на прогоне.

    Кстати, встроенный датчик температуры (и внутренняя опора) очень даже ничего)

  2. Кто-нибудь уже запускал таймер в данном режиме? поделитесь опытом какие тут подводные камни.

     

    Запускал на 103-их. Никаких камней под водой не обнаружено.

    До исходников могу добраться только вечером.

  3. Есть мнение, что биометрический считыватель не хранит образ пальца...

    Идет сравнение с образцом, на каждого юзера по 10 пальцев, всего юзеров может быть несколько тысяч, напряжно перебирать фотки пальцев.

    Образец занимает порядка 300 байт.

    Восстановить исходный отпечаток, по-моему, не возможно.

     

    А что за система у Вас внедряется?

    Какие именно считыватели (производитель)?

  4. Ну, у STM тоже есть "проблемы" в библиотеках...

    И по личному опыту: библиотеки не всегда ускоряют разработку.

    Она (разработка) становится "рывковой" что ли... - одна функция инициализирует все, что надо, а над другой сидишь часами (или ищешь нужную).

     

    PS. Сейчас стараемся использовать стандартную библиотеку STM, и с приобретением опыта становится все лучше)

    PS2. От "индуского кода" никто не застрахован(

  5. Опишите пожалуйста подробнее свою специализацию:

    - аналоговая электроника?

    - силовая?

    - СВЧ?

    - цифровая электроника?

    - ПЛИС?

    - микроконтроллеры?

    - программное обеспечение?

    - для ПК? Windows? Linux?

    - C/C++?

    - Java?

    - для МК?

    - C? Asm?

    - платформы МК?

    - PIC? AVR? ARM?

     

    Реально по Ярославлю можно предложить ряд "халтурок":

    - разработка контроллера для DMX-димеров (управление шаговыми двигателями, ЦАП выходы с эффектами);

    - разработка установки высоковольтного тестирования кабелей и т.п.;

    - даже есть вариант контроллера для СВЧ-синезатора частот.

     

    На что можно расчитывать?

  6. По поводу дизассемблирования: машинный код после оптимизации в ряде случаев нечитаем даже автором исходника. И это с учетом человеческих имен меток, переменных и функций.

    Думаю, либа + заголовочный файл вполне защитит "исходный код" от восстановления.

    Если матан в ноу-хау приличный, то это дополнительный барьер к взлому, а если "2 + 2", то защищать такое ноу-хау крутыми защитами не целесообразно.

  7. Друзья, к качеству производства никогда претензий не было (по крайне мере у меня).

    Я двумя руками за "невмешательство в проект". В будущем буду аккуратнее.

    Если кто не понял, то обсуждается не технический момент, а работа с клиентом.

    Для Исполнителя очевидно (я надеюсь), что платы с описанным выше дефектом Заказчик использовать не сможет - нужен был всего лишь один звонок. Это где-то на грани дружеского совета: мол, уважаемый, нам сделать-то не сложно, но фигня получится...

     

    Печатные платы мы изготовили новым заказом.

     

    Если цена вопроса была бы раз эдак в сто больше и пришлось бы обращаться в суд...

     

    Кстати, Резонит сертифицирован по ISO9001 ?

  8. воткните комиллеру опции -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard

    будет генерится код для fpu, в сборке под cortex-m4f все протянуто (libgcc,libc,libm)

     

    с нетерпением жду результов

     

    следующий свежак будет 'мои релизом', поэтому хочется его оотестить в хвос и в гриву. будет особыс спросбом собраны libgcc и libc(newlib) чтоб гарантировать чоб в бинарь неприлазило вско гадость.

     

    Спасибо, буду пробовать.

    Боюсь, что воевать придется с либой, которая поставляется с демо-примером...

     

    Кста, у Вас уже есть на чем самому пробовать?

  9. Была ситуация очень напоминающая Вашу, только датчик как бы... "сжаривался" при t > 90C.

    Вообще не отрабатывалось условие START.

    Времянки делал через UART (распространенное явление), так вот при высокой температуре времянки датчика "уплыли" и в UART приходило не то, что ожидалось.

    Поборол софтово.

  10. Появилась доска STM32F4DISCOVERY.

     

    Собрал из исходников демку для -mcpu=cortex-m4: без оптимизации работает, с оптимизацией - пока нет)

    Демка сурьезная: играет WAV-файл с флешки.

     

    P.S.: Не работает только с -Os, на -O1 и -O2 работает)

    P.S.2: Работает на всех уровнях оптимизации!

  11. зачем извращатся лишней инструкцийе, попробуйте потестить оновленую сборку (-2 поста вверх), все соберется из стндартных исходников

     

    Собирается.

    Но про равенство регистров нужно помнить...

  12. А так пойдет?

     

    uint32_t __STREXB(uint8_t value, uint8_t *addr)
    {
       uint32_t result=0;
      
      // __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
       __ASM volatile ("strexb r2, %2, [%1] \n" \
           "    mov %0, r2" : "=r" (result) : "r" (addr), "r" (value) : "r2" );
       return(result);
    }

     

    Из плюсов: не ругается и компилиться

    Из минусов: правка стандартного файла и не гарантируется несовпадение регистров.

     

  13. Эхх...

     

    test.s:493: Error: registers may not be the same -- `strexb r0,r0,[r1]'

    test.s:517: Error: registers may not be the same -- `strexh r0,r0,[r1]'

     

    test.s

     

        .align    1
        .global    __STREXB
        .thumb
        .thumb_func
        .type    __STREXB, %function
    __STREXB:
    .LFB19:
        .loc 1 733 0
        .cfi_startproc
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
    .LVL34:
        .loc 1 736 0
    @ 736 "c:/gcc/lib/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c" 1
        strexb r0, r0, [r1]  <-- 493 line
    @ 0 "" 2
    .LVL35:
        .loc 1 738 0
        .thumb
        bx    lr
        .cfi_endproc
    .LFE19:
        .size    __STREXB, .-__STREXB
        .align    1
        .global    __STREXH
        .thumb
        .thumb_func
        .type    __STREXH, %function
    __STREXH:
    .LFB20:
        .loc 1 750 0
        .cfi_startproc
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        @ link register save eliminated.
    .LVL36:
        .loc 1 753 0
    @ 753 "c:/gcc/lib/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport/core_cm3.c" 1
        strexh r0, r0, [r1]  <-- 517 line

     

    А это исходный текст

    /**
    * @brief  STR Exclusive (8 bit)
    *
    * @param  value  value to store
    * @param  *addr  address pointer
    * @return        successful / failed
    *
    * Exclusive STR command for 8 bit values
    */
    uint32_t __STREXB(uint8_t value, uint8_t *addr)
    {
       uint32_t result=0;
      
       __ASM volatile ("strexb %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
       return(result);
    }
    
    /**
    * @brief  STR Exclusive (16 bit)
    *
    * @param  value  value to store
    * @param  *addr  address pointer
    * @return        successful / failed
    *
    * Exclusive STR command for 16 bit values
    */
    uint32_t __STREXH(uint16_t value, uint16_t *addr)
    {
       uint32_t result=0;
      
       __ASM volatile ("strexh %0, %2, [%1]" : "=r" (result) : "r" (addr), "r" (value) );
       return(result);
    }

     

    A.3.8 LDREX and STREX

    Load and Store Register Exclusive.

    Syntax

    LDREX{cond} Rt, [Rn {, #offset}]

    STREX{cond} Rd, Rt, [Rn {, #offset}]

    LDREXB{cond} Rt, [Rn]

    STREXB{cond} Rd, Rt, [Rn]

    LDREXH{cond} Rt, [Rn]

    STREXH{cond} Rd, Rt, [Rn]

    where

    cond is an optional condition code; see “Conditional Execution” section on page 358.

    Rd is the destination register for the returned status.

    Rt is the register to load or store.

    Rn is the register on which the memory address is based.

    offset is an optional offset applied to the value in Rn. If offset is omitted, the address is the value in Rn.

    Restrictions

    In these instructions:

    - Do not use PC.

    - Do not use SP for Rd and Rt.

    - For STREX, Rd must be different from both Rt and Rn.

    - The value of offset must be a multiple of 4 in the range 0–1020.

  14. Мне посчастливилось быть у них на экскурсии... Даже те цеха, в которые нас допустили, оставили незабываемые впечатления. Особенно линия автоматического монтажа и испытательный, не побоюсь этого слова, полигон.

  15. На предыдущей версии собиралось без проблем.

     

    C:\gcc\arm-kgp-eabi-x86_32_20111120\bin>arm-kgp-eabi-gcc.exe -mcpu=cortex-m3 -mthumb -g -O0 -c test.s -o test.o

    test.s: Assembler messages:

    test.s:103: Error: SVC is not permitted on this architecture

     

    test.s:

     

    @ 153 "c:/gcc/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c" 1

    ldr r0, =0xE000ED08

    ldr r0, [r0]

    ldr r0, [r0]

    msr msp, r0

    cpsie i

    svc 0 <- 103 line

    nop

     

     

  16. Есть еще вариант "я не знаю механизм зарплатообразования".

    Например, каждый месяц получаешь приблизительно одни и те же деньги, но сам расклад по "оклад-премия" непредсказуемый и зависит от настроений, оборота компании, командировочных, и т.п.

    Повлиять на зарплату практически не возможно) Ну, разве что сходить в оплачиваемый отпуск на недельку или на больничный залететь...

  17. Понятно. Интересно, как он там оказался. Видимо, ошиблись при создании компонента именно в маске. А если бы рисовали так, как я говорю, то проблем бы не было.

    В конце концов, есть промежуточный вариант: маску корректировать программами подготовки к производству, а компоненты все-таки рисовать без учета этих требований.

     

    Для создания этой платы пользовался KiCADом. В библиотеке компонентов зазоры можно не указывать, тогда значение берется из глобальной переменной. Тем не менее зазоры можно указывать индивидуально хоть для целого компонента, хоть для выбраного PADа.

     

    В спешке был задан очень маленький отступ при заливке земляным полигоном - 0.25мм (обычно ставлю 0.4мм).

    В глобальной переменной, отвечающей за зазор маски - тоже 0.25мм.

    Срочно нужно было изготовить прототип, и большого значения отступам придавать не стали...

     

    Ошибка грубая и между тем легко (я бы даже сказал тривиально) исправимая, просто нужна была обратноя связь...

     

    PS. За день до получения плат я поднимал вопрос тех норм на форуме Резонита. Полученная информация целиком соответствовала моим представлениям о тех требованиях. Как сказать KiCADу о нормах мне тоже прекрасно известно.

     

    Если позволите немного уместного оффтопа:

     

    Летом делал ремонт в туалете. Обратился в фирму, заключил договор, внес предоплату и т.п. чтобы мне заменили сантехнику, и положили на пол плитку. Прайс меня устроил, сумму тоже в голове представлял. Сам я там не живу...

    После того как работа была выполнена (точнее та часть, на которую хватило предоплаты), оказалось, что половина стоимости ремонта это... вывоз мусора! Моя фраза, снять старую краску с пола, залить стяжку и положить плитку чудесным образом сподвигла мастеров расфигачить пол на 10см в глубину, не согласовав работы со мной (хотя это существенный объем работ, денеги и доп материалы)! Вот откуда 20 мешков мусора)

    С дирехтуром обсудили это недоразуменее, сумму я ему мог заплатить, но о дальнейшем сотрудничестве речи идти не могло.

     

    Знаете, работать со специалистами, которых нанимаешь для профессиональной кладки плитки, а им выгоднее выносить мусор (по их расценкам), не хочется)

     

    PS. Да, директор вскоре мне перезвонил, извинился, сделал "беспрецидентную" скидку на вынос мусора, и мы аккуратно продолжили осваивать мои деньги... Каждый имеет право на ошибку, но главное не бояться это признать, простить и жить плодотворно дальше, делая мир лучше)

×
×
  • Создать...