Я написал голый металлический многоядерный пример.
Код, принципиальная схема здесь - https://github.com/jeffreyantony/multipi/tree/master/Example_01
В моем примере есть 3 светодиода, подключенных к выводам GPIO Raspberry Pi. В Raspberry Pi 2 всего 4 ядра. Каждому ядру назначено мигать соответствующим светодиодом.
Я написал адрес кода, который будет выполняться каждым ядром, по адресам ниже 0x4000009C для ядра 1 0x400000AC для ядра 2 0x400000BC для ядра 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 : проблема устранена. Смотри ответ.