Я написав багатоядерний приклад з голого металу.
Код, схема схема тут - https://github.com/jeffreyantony/multipi/tree/master/Example_01
У моєму прикладі є 3 світлодіоди, підключені до штифтів GPIO малинового Пі. В Raspberry Pi 2. всього 4 ядра. Кожному ядру призначено блимати відповідний світлодіод.
Я написав адресу коду, який повинен бути виконаний кожним ядром, у нижчезазначені адреси 0x4000009C для core 1 0x400000AC для core 2 0x400000BC для core 3
Після складання коду блимає лише світлодіод, призначений для серцевини 1 (відповідно до цього прикладу, жовтий світлодіод). Інші - ні.
Це означає, що коди для Core 2 і 3 не працюють (оскільки інші світлодіоди не блимають). Також я виявив, що код після запуску всіх ядер також не працює, тобто core0_submain () - ця функція повинна блимати індикатор ACT на Raspberry Pi
Чи міг би хтось повідомити мені, у чому проблема? Це тому, що всі 4 ядра намагаються записати в один і той же реєстр GPIO, і тільки Core 1 виграє в записі?
Я спробував додати " атрибут ((голий));" для core0_submain (), але використання не було.
Я використовую ланцюжок інструментів з https://launchpad.net/gcc-arm-embedded
ще раз код - https://github.com/jeffreyantony/multipi/blob/master/Example_01/main.c
makefile - https://github.com/jeffreyantony/multipi/blob/master/Example_01/Makefile
Оновлення 20 жовтня 2015 р . Я додав підтримку JTAG. Але не вдалося отримати інтерфейс налагодження
Оновлення 25 жовтня 2015 : Виправлена проблема. Дивіться відповідь.