‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

worklog: прогресс неумолим

Докопался до причины сбоя. Поначалу грешил на по-умолчанию невключенный FPU. Вписал иснтрукции по его включению в arch/arm/kernel/setup.c - не помогло, сбой остался где был. Методом анализа System.map и сопоставления с белибердой, вываливаемой встроенной "отладкой", нашёл функцию, виновную в генерации исключения NOCP - это оказался некий компонент из hvc console, ответственный за какую-то там гипервиртуализацию, т.е. чего в этой системе в принципе нет. Порылся в конфиге, отключил всё что могло вызвать появление этой штуки в общем котле и вот...

Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] STM32F7: Attempting to enable FPU...
[ 0.000000] (CPACR = 0x08f00000)
[ 0.000000] Ok
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 4.2.0-awesome (eugene@BigBrain) (gcc version 6.3.0 (GCC) ) #16 Wed Mar 15 15:45:41 MSK 2017
[ 0.000000] CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000
[ 0.000000] CPU: OFF data cache, OFF instruction cache
[ 0.000000] Machine model: SEA STM32f746 Awesome board
[ 0.000000] bootconsole [earlycon0] enabled
[ 0.000000] dmamem: No dts node found.
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
[ 0.000000] Kernel command line: mem=64M console=ttyS1,115200n8 earlyprintk=serial,ttyS1,115200n8 rootwait panic=10 uclinux.physaddr=0x08180000 root=/dev/mtdblock0
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Memory: 62748K/65536K available (1319K kernel code, 79K rwdata, 508K rodata, 112K init, 135K bss, 2788K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0x00000000 - 0x00001000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0x00000000 - 0xffffffff (4095 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
[ 0.000000] .text : 0xc0008000 - 0xc01d1024 (1829 kB)
[ 0.000000] .init : 0xc01d2000 - 0xc01ee000 ( 112 kB)
[ 0.000000] .data : 0xc01ee000 - 0xc0201d78 ( 80 kB)
[ 0.000000] .bss : 0xc0201d78 - 0xc0223c68 ( 136 kB)
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] /soc/interrupt-controller@40013c00: 24 External IRQs detected
[ 0.000000] clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 276513358 ns
[ 0.000000] ARM System timer initialized as clocksource
[ 0.000000] /soc/timer@40000000: STM32 clockevent driver initialized (32 bits)
[ 0.000000] sched_clock: 32 bits at 200 Hz, resolution 5000000ns, wraps every 10737418237500000ns
[ 0.010000] Calibrating delay loop... 52.63 BogoMIPS (lpj=131584)
[ 0.060000] pid_max: default: 4096 minimum: 301
[ 0.065000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.075000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.110000] devtmpfs: initialized
[ 0.205000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 9556302231375000 ns
[ 0.215000] pinctrl core: initialized pinctrl subsystem
[ 0.230000] NET: Registered protocol family 16
[ 0.495000] DMA-API: preallocated 4096 debug entries
[ 0.505000] DMA-API: debugging enabled by kernel config
[ 0.510000] clocksource: Switched to clocksource arm_system_timer
[ 0.550000] NET: Registered protocol family 2
[ 0.565000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.575000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.585000] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.590000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.595000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.610000] NET: Registered protocol family 1
[ 0.650000] dmamem: no coherent mem will be available (-19).
[ 0.730000] io scheduler noop registered (default)
[ 0.770000] STM32 USART driver initialized
[ 0.775000] stm32f7-usart 40004400.serial: could not find pctldev for node /soc/pin-controller/usart2@0, deferring probe
[ 1.055000] brd: module loaded
[ 1.105000] null: module loaded
[ 1.110000] dummy-irq: no IRQ given. Use irq=N
[ 1.185000] NET: Registered protocol family 17
[ 1.190000] NET: Registered protocol family 9
[ 1.195000] X25: Linux Version 0.2
[ 1.220000] bootconsole [earlycon0] disabled


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

Болдом выделил кое-что интересное. Я не знаю точно, что это за богомипсы, но сам значение очень низкое - в норме оно должно быть порядка 400, то есть настройки железа ещё далеки от оптимальных. Подозреваю кривизну в настройке памяти.


Очень тяжело чинить систему, про устройство которой имеешь очень смутное представление...
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments