Jump to content

    

gab

Свой
  • Content Count

    362
  • Joined

  • Last visited

Community Reputation

0 Обычный

About gab

  • Rank
    Местный
  • Birthday 07/21/1979

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2197 profile views
  1. Согласен. Мой прокол. Запутался при переносе с одной серии на другую.
  2. Алилуйа!!!! Спасибо!!!! Слона-то я и не заметил! Спасибо всем!!
  3. gcc -mcpu=cortex-m4 -mthumb -O0 -ggdb -fomit-frame-pointer -falign-functions=16 -ffunction-sections -fdata-sections -fno-common -flto -Wall -Wextra -Wstrict-prototypes -Wa,-alms=./build/lst/ -DUAVCAN_TOSTRING=0 -DUAVCAN_DEBUG=0 -DUAVCAN_STM32_NUM_IFACES=1 -DUAVCAN_STM32_TIMER_NUMBER=3 -DUAVCAN_STM32_CHIBIOS=1 -DUAVCAN_CPP_VERSION=UAVCAN_CPP11 -DCORTEX_USE_FPU=FALSE -DDEBUG_BUILD -DCRT1_AREAS_NUMBER=0 -MD -MP -MF ./.dep/PRE_MAKE_ALL_RULE_HOOK.d g++ -mcpu=cortex-m4 -mthumb -O0 -ggdb -fomit-frame-pointer -falign-functions=16 -ffunction-sections -fdata-sections -fno-common -flto -fno-rtti -std=gnu++11 -fno-exceptions -Wall -Wextra -Wundef -Wa,-alms=./build/lst/ -DUAVCAN_TOSTRING=0 -DUAVCAN_DEBUG=0 -DUAVCAN_STM32_NUM_IFACES=1 -DUAVCAN_STM32_TIMER_NUMBER=3 -DUAVCAN_STM32_CHIBIOS=1 -DUAVCAN_CPP_VERSION=UAVCAN_CPP11 -DCORTEX_USE_FPU=FALSE -DDEBUG_BUILD -DCRT1_AREAS_NUMBER=0 -MD -MP -MF ./.dep/PRE_MAKE_ALL_RULE_HOOK.d ld -mcpu=cortex-m4 -mthumb -O0 -ggdb -fomit-frame-pointer -falign-functions=16 -ffunction-sections -fdata-sections -fno-common -flto -nostartfiles -Wl,-Map=./build/riyo-sw.map,--cref,--no-warn-mismatch,--library-path=../chibios203/os/common/startup/ARMCMx/compilers/GCC/ld,--script=linker/STM32F207xG.ld,--gc-sections,--defsym=__process_stack_size__=0x800,--defsym=__main_stack_size__=0x800
  4. Всёравно вызывает и вываливается. 197 int a = strlen(s0); 08014108: ldr r0, [sp, #164] ; 0xa4 0801410a: bl 0x8000740 <strlen> 0801410e: mov r3, r0 08014110: str r3, [sp, #156] ; 0x9c ----------- strlen: 08000740: pld [r0] 08000744: strd r4, r5, [sp, #-8]! 08000748: bic.w r1, r0, #7 0800074c: mvn.w r12, #0 08000750: ands.w r4, r0, #7 08000754: pld [r1, #32] 08000758: bne.w 0x80007ee <strlen+174> 0800075c: mov.w r4, #0 08000760: mvn.w r0, #7 08000764: ldrd r2, r3, [r1] 08000768: pld [r1, #64] ; 0x40 0800076c: add.w r0, r0, #8 08000770: uadd8 r2, r2, r12 ------- вот тут вываливается!!!! 08000774: sel r2, r4, r12 08000778: uadd8 r3, r3, r12 0800077c: sel r3, r2, r12 08000780: cbnz r3, 0x80007d6 <strlen+150> 08000782: ldrd r2, r3, [r1, #8] 08000786: uadd8 r2, r2, r12 0800078a: add.w r0, r0, #8 0800078e: sel r2, r4, r12 08000792: uadd8 r3, r3, r12 08000796: sel r3, r2, r12 0800079a: cbnz r3, 0x80007d6 <strlen+150> 0800079c: ldrd r2, r3, [r1, #16] 080007a0: uadd8 r2, r2, r12 080007a4: add.w r0, r0, #8 080007a8: sel r2, r4, r12 080007ac: uadd8 r3, r3, r12 080007b0: sel r3, r2, r12 080007b4: cbnz r3, 0x80007d6 <strlen+150> 080007b6: ldrd r2, r3, [r1, #24] 080007ba: add.w r1, r1, #32 080007be: uadd8 r2, r2, r12 080007c2: add.w r0, r0, #8 080007c6: sel r2, r4, r12 080007ca: uadd8 r3, r3, r12 080007ce: sel r3, r2, r12 080007d2: cmp r3, #0 080007d4: beq.n 0x8000764 <strlen+36> 080007d6: cmp r2, #0 080007d8: itt eq 080007da: addeq r0, #4 080007dc: moveq r2, r3 080007de: rev r2, r2 080007e0: clz r2, r2 080007e4: ldrd r4, r5, [sp], #8 080007e8: add.w r0, r0, r2, lsr #3 080007ec: bx lr 080007ee: ldrd r2, r3, [r1] 080007f2: and.w r5, r4, #3 080007f6: rsb r0, r4, #0 080007fa: mov.w r5, r5, lsl #3 080007fe: tst.w r4, #4 08000802: pld [r1, #64] ; 0x40 08000806: lsl.w r5, r12, r5 0800080a: orn r2, r2, r5 0800080e: itt ne 08000810: ornne r3, r3, r5 08000814: movne r2, r12 08000816: mov.w r4, #0 0800081a: b.n 0x8000770 <strlen+48> 0800081c: movs r0, r0 0800081e: movs r0, r0
  5. размер 0x400. Всё-равно странно: это не первая вызываемая функция в main. После того как перепутал посадочное место у кварца я уже не знвю куда копать. :(
  6. ChibiOS. arm-none-eabi-gcc-7.2.1. Пробовал на 9-м одинаково. Всё прекрасно работает, моргает светодиодом пока не натыкается на код использующий strlen или strcmp. При этом strcmp падает только при равенстве сравниваемых строк. Убрав все навороты, поставив -O0, получил такой простой код гарантированно вызывающий HardFault: void main(){ ... инициализация периферии { char *s0 = "01234567890"; char *s1 = "01234567890"; char buf[128]; strcpy(buf, s0); // работает int a = strlen(s0); // вылетаем в HardFault int r = strcmp(s0, s1); // тоже вылетаем chprintf(ch_stdout, "%d, %d\n", r, a); } вывод gdb: i loc ctx = {r0 = 0, r1 = 134316136, r2 = 858927408, r3 = 926299444, r12 = 4294967295, lr_thd = 134300015, pc = 134219632, xpsr = 1627389952} faultType = HardFault faultAddress = 3758157112 isFaultPrecise = false isFaultImprecise = false isFaultOnUnstacking = false isFaultOnStacking = false isFaultAddressValid = false Менял клок с HSE на HSI и обратно. Тактовую ядра ставил 60МГц и 120МГц. Ничего не меняется. Если взять код strlen и strcmp из newlib, то они прекрасно работают.
  7. Трафарет заказывать надо. А у нас - по одной плате. Максимум - две. Невыгодно. Поэтому и ручной дозатор. А пасту - только прогреть до комнатной температуты.
  8. Я, конечно, утрировал :). А вообще, большую часть времени занимает разработка технологии как всё это добро паять. Нет у нас технолога :(. Самим приходится учиться. Ручной дозатор, подготовка паяльной пасты, подборка комплектующих из касс, расстановка. А потом - 15 минут - и готово!
  9. Кстати, поддержу. У нас http://www.lpkf.com/products/rapid-pcb-pro...reflow-oven.htm. Пайка 15 минут, а подготовка доходила до 40 часов. Мелкие платы проще вручную паять. Тем более у этой печки такие вентиляторы, что все элементы больше 1206 ставится криво.
  10. Насчёт денег - согласен. Посмотрим на сроки...
  11. Буквально сегодня утром заказал 5 простеньких двуслоек. 3 рабочих дня. Сразу позвонили и сказали что покрыть горячим оловом, по техническим причинам не смогут. Предложили серебро. Буду смотреть.
  12. Чем докажите? За свои деньги я ваши предположения не готов доказывать.
  13. Вообще не в тему, но: №152853. Из-за непрохождения электротеста платы правлены скальпелем. В печке платы "повело".
  14. Мои платы у них скальпелем правились :). Для пайки в печке - непригодны.Из 6-ти сделали только 3. От температуры - деформируются. Мы перешли на нового производителя ПП. PS: Меня ещё раздражает неравномерность зелёнки и, на наших платах, точность сверловки переходных отверстий.