Будет ли источник U-boot работать только на одном ядре?
U-Boot двоичный файл (а не источник) выполняется только на одном ядре процессора.
Функциональность загрузчика не требует параллельной обработки.
Также ядро Linux ожидает включения только одного ядра при его запуске.
Если да, то как другие ядра будут отключены?
Обычно после перезагрузки процессора/системы допускается только одно ядро; все остальное покоится или отключилось.
Таким образом, ядро позволит другим ядрам при загрузке?
ОС, предполагая, что она поддерживает SMP (симметричные мультипроцессоры), позволит другим ядрам стать частью ее инициализации.
Вы можете поделиться ссылкой источника ядра (git), которая позволяет другим ядрам.
для ARM Cortex-A9 четырехъядерный процессор (А15 будет похож) выходы ядра Linux:
Booting Linux on physical CPU 0x0
Linux version 3.10.60+wandboard_1.0.2+1.0.0-wandboard ([email protected]) (gcc version 4.8.3 (crosstool-NG 1.19.0)) #7 SMP Mon Dec 29 18:49:06 PST 2014
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: PIPT/VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: Freescale i.MX6 Quad/DualLite (Device Tree), model: Wandboard Quad based on Freescale i.MX6 Quad
...
L310 cache controller enabled
l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x32070000, Cache size: 1048576 B
...
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x804bdd30 - 0x804bdd88
CPU1: Booted secondary processor
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU2: Booted secondary processor
CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
CPU3: Booted secondary processor
CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
Brought up 4 CPUs
SMP: Total of 4 processors activated (6324.22 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
...
Ядро Linux начинает выполнение своего кода С в start_kernel() в init/main.c.
Вторая процедура называется ARM-версией smp_setup_processor_id(), которая отвечает за текст сообщения Booting Linux on physical CPU ...
.
К концу start_kernel(), версия АРМ check_bugs() будет вызывать check_writebuffer_bugs(), который отвечает за текстом CPU: Testing write buffer coherency: ...
сообщения.
В конце start_kernel(), в конечном итоге rest_init() инициализирует другие ядра процессора через версию ARM от secondary_start_kernel() (CPUn: Booted secondary processor
), вызывается как-то через smp_init() (Brought up N CPUs
).
Обычно после перезагрузки процессора/системы допускается только одно ядро; все остальное покоится или отключилось. Проверьте документацию по ARM, о которой вы упоминали.U-Boot будет выполняться только на одном ядре – sawdust
«В соответствии с документами ARM CortexA15 имеет 4 ядра» - вы уверены? Конструкция Cortex-A15 может поддерживать конфигурации от _up до 4 ядер на кластер, но все, что я вижу на сайте TI, говорит, что Jacinto 6 реализует двухъядерную конфигурацию. – Notlikethat
@sawdust Спасибо за информацию. Итак, ядро будет включать другие ядра при загрузке?, Можете ли вы поделиться ссылкой источника ядра (git), которая позволяет другим ядрам. – user3693586