Новость из категории: Информация

Инструкция: Как подключить PS3 к ОС Linux

Здравствуйте, дорогие друзья!!! В этой статье мы с вами познакомимся с архитектурой Sony PlayStation 3 и научимся ставить всем известную операционную систему Linux на консоль нового поколения Sony PlayStation 3.

Перед началом изучения и прочтения этой статьи задайте себе один маленький вопросик "нужен ли мне Linux на PS3?".И еще... сами разработчики PS3 не гарантируют вам корректной роботы ОС на консоли... так что, ребята, решать вам будете ли Вы подвергать свою "родненькую", "любимую" консоль этим неизвестным и секретным экспериментам! А теперь ПОЕХАЛИ.....

Вся статья состоит из двух очень важных частей. Первая часть включает в себя особенности архитектуры PS3, вторая - подробную инструкцию установки Linux на консоль.

I. АрхитектураSony PlayStation 3.
Вообще говоря, PLAYSTATION 3 - это необычная игровая консоль, которую нам доводилось видеть раньше, этот вывод можно сделать, исходя из двух характерных причин. Во-первых, она наиболее открытая для пользователя (на программном уровне), в отличие от консолей предыдущего поколения. То есть, в то время как большинство консолей пытаются бороться с несанкционированными, запрещенными или пиратскими играми для своей системы, то процесс развития консоли PS3 направлен немного в иную сторону, а именно, обеспечивает прямую поддержку устанавливать и загружать не только игры и различного рода приложения, но и даже операционные системы, которые не имеют никакого отношения к консольной индустрии. Разумеется, многие другие консоли не придерживаются такого направления, исходя из многих факторов и причин (например, из-за «фич», связанных с игрой). Здесь, к примеру, имеется ввиду то, что ускоритель передачи видеосигналов блокируется со стороны операционной системы. Но этот цикл сосредоточен на универсальных и научных системах исследованиях.

Однако, по-настоящему главная и, пожалуй, основная часть для PS3 – это его процессор – чип Cell Broadband Engine (сокращенно Cell BE чип). Архитектура Cell BE чипа стала радикально отличаться от традиционной архитектуры процессора. Эти отличия стали проявляться в следующем: Cell BE процессор стал представлять собой чип сложной структуры, состоящий из девяти элементов обработки данных, причем в PS3 один из них – блокирован для взаимодействия пользователя с системой, другой из них – резервный и используется исключительно системой, остальные семь элементов остаются в распоряжении пользователя. Главным же элементом обработки данных является, довольно, стандартный процессор общего назначения. Это – двойное ядро PowerPC® , т.е. основной элемент, который называется Power Processing Element (сокращенно PPE).

Другие элементы обработки данных известны как Synergistic Processing Elements или SPE. Каждый SPE состоит из:

- Направленного процессора, который принято называть Synergistic Processing Unit( SPU);
- Собственной области памяти в пределах SPU, называемым локальным хранилищем (размер этой области на PS3 - 256 КБ);
- Коммуникационных каналов связи длявзаимодействия с внешним миром;
- 128 регистраторов, каждый из которых содержит 128 широких битов (каждый регистр обычно хранит в себе одновременно четыре 32х-битных значения)
- Диспетчера потока памяти (Memory Flow Controller или MFC), который управляет передачами прямого доступа к памяти между локальным хранилищем SPU и главной памятью процессора.

Однако, элементы SPE имеют недостаток во многих особенностях общего назначения, которые пользователь обычно ожидает увидеть в процессоре. Эти SPE элементы не приспособлены к выполнению стандартных задач операционной системы, и причем существенно. У них нет никакой поддержки виртуальной памяти, к тому же они не имеют прямого доступа к оперативной памяти компьютера. Эти процессоры полностью сконцентрированы на быстрой обработке данных.

Поэтому можно сделать вывод, что процессор PPE действует в системе как менеджер ресурсов, а SPE процессор – как механизм быстрой обработки данных. Можно отметить, что SPE и PPE процессоры взаимодействуют между собой, обрабатывая и передовая данные друг другу. То есть, программы на PPE процессоре распределены также и на SPE процессоры для того, чтобы завершить задачи, поставленные системой.

Теперь, соединяем вместе SPE, PPE и главный контролер памяти, в итоге получаем некий канал, который называется Element Interconnect Bus канал. Это главный пропускной коридор, через который проходят данные.

Самая поразительная часть архитектуры чипа Cell BE – это то, что локальное хранилище SPE элементов не является, в своем роде, кэшем, то есть, это, фактически, полный объем памяти, в котором SPE процессор должен работать одновременно и с программами, и с обработкой данных. Такой подход может с одной стороны показаться неудобством, но с другой – имеет несколько преимуществ:

- Доступы к памяти локального хранилища SPU на порядок быстрее, чем доступы к главной памяти процессора;
- Доступы к памяти локального хранилища SPU могут быть заранее помещены в синхронизированный цикл;
- Обработка входных и выходных данных основной памяти процессора можно запросить асинхронно раньше времени.

В основном такие особенности локального хранилища SPU – это, ничто иное, как скоростные характеристики кэша. Однако, так как программы используют это тщательно и быстро, то они могут намного изящней управлять этим процессом. Например, могут запрашивать, чтобы данные загружались в необходимом порядке, при этом параллельно продолжать выполнение других задач до полной загрузки этих данных.

Таким образом, подводя итоги сказанному, PS3 – это первый девайс, который основан на чипе Cell BE, и, благодаря своему новому дизайну архитектуры процессора, предоставляет пользователю полный доступ к своей системе, т.е. пользователь может полностью настроить систему “под себя”. Такая консоль позволяет не только загружать операционные системы, но и программировать в ней.

II. Теперь рассмотрим как поставить ОС на PS3, на примере ОС Linux.
Вообще говоря, для игровых консолей не свойственна загрузка операционных систем. Потому что на консоли, обычно, ставятся игры с лицензией, которая приобретается у самих разработчиков приставки, и поэтому “левый хлам” установить практически невозможно. Но представители SONY решили предоставить возможность загрузки операционной системы на консоль SP3, только с одной оговоркой, что ОС не получает ускоренную графику.

Вследствие такой «фичи», пользователь теперь может установить Linux на PS3, правда, ему придется для этого проделать несколько этапов, но это определенно работает. Terra Soft Solutions в сотрудничестве с S ONY разработали Yellow Dog Linux 5 для PS3. Эта уникальная поддержка пользователям консоли нового поколения. Yellow Dog Linux (известный как YDL), начиная с самого начала, был распределен на базе ядра PowerPC. Таким образом, никого не удивило то, что SONY заключила такую договоренность по отношению к ОС, чтобы разработать следующую версию YDL определенно для PS3. Далее прилагается инструкция инсталляции первого выпуска YDL 5 для PS3.

Подготовка PS3

Для того чтобы загрузить Linux на PS3, необходим следующий перечень аппаратных средств:

- Дисплей и соответствующий кабель;
- USB клавиатура;
- USB мышь;
- USB флеш драйвер ("флешка").

Необходимо отметить, что 20GB PS3 проходят через сложный RCA разъём, который подобен телевизионному устройству выхода. Это можно преобразовать в VGA (здесь вы можете посмотреть как выглядит этот кабель: http://www.monoprice.com/products/search.asp?keyword=2509) через специальный кабель. К сожалению, все это будет работать в разрешении экрана 576x384. Для того чтобы увеличить разрешение, необходимо использовать порт HDMI, но такой подход может привести к ненужным проблемам.

Чтобы подготовить PLAYSTATION 3 для загрузки ОС, необходимо выполнить следующие шаги:

1. Соедините кабель Ethernet с PS3. Убедитесь, что сеть имеет DHCP сервер.
2. Если PS3 совсем новая, то тщательно разберите все пункты инсталляции, т.к. от запуска первой программы зависит многое, в том числе регулирование языка, времени, имени пользователя для системы PS3.
3. Зайдите теперь в Settings, затем в System Settings выберете Format Utility.
4. Выберете Format Hard Disk и подтвердите выбранный вариант дважды.
5. Укажите, что хотите выбрать Custom разбиение диска.
6. Укажите, что хотите выбрать Allot 10GB to the Other OS. Такая опция автоматически зарезервирует оставшееся свободное место на диске PS3 для операционной системы. После чего надо будет выполнится перезагрузка системы.
7. После перезагрузки системы, войдите в Settings, затем System Update.
8. Теперь выбираем Update via Internet.
9. Далее, на экране будут всплывать окна для обновления системы, следуйте за ними, переходя от одного окошка к другому, чтобы загрузить и установить последние обновления. Некоторые из этих окон не будут содержать кнопки “cancel”, и для того, чтобы перейти в другое окно вам придется на джойстике нажать кнопку X.
10. В итоге, PS3 один раз перезагрузится и будет подготовлена к инсталляции Linux.

Подготовка к инсталляции

Теперь, подготовим к инсталляции Linux на PS3 со стороны операционной системы. Ниже описывается последовательность шагов, которые вы должны проделать на своем компьютере (НЕ НА PS3), чтобы правильно подготовить ОС:

1. Загрузите и создайте DVD ISO образ для YDL 5.
2. Загрузите PS3 OtherOS инсталлятор от SONY ( http://www.playstation.com/ps3-openplatform/terms.html ) и сохраните его как otheros.self. Это файл, который запускает на PS3 операционную систему, служит для установки неизвестных bootloader-ов.
3. Загрузите YDL bootloader от Terra Soft (http://www.terrasoftsolutions.com/support/install/ps3/otheros.bld) и сохраните его как otheros.bld. Это будет bootloader, который установится инсталлятором SONY.
4. Вставьте USB-флешку в свой компьютер.
5. Создайте там папку с названием PS 3. В этой папке создайте еще одну папку с названием otheros.
6. Скопируйте созданные файлы ( otheros.self и otheros.bld) в директорию PS3/ otheros на флешке.
После проделанных манипуляций можно приступить к инсталляции.

Инсталляция

Выполните следующие шаги, чтобы поставить Linux на PS3:

1. Извлекаем USB- флешку с вашего компьютера и вставляем его в PS3.
2. Далее идем в Settings, затем в System Settings, после чего выбираем Install Other OS.
3. Подтвердите место расположения инсталлятора и перейдите на экран инсталляционного процесса. Отметим, что сейчас устанавливается bootloader , а не операционная система.
4. После завершения загрузки зайдите в Settings, затем в System Settings и выберете Default System. Затем выберете пункт Other OS и нажмите кнопку X.
5. Вставьте YDL 5 DVD.
6. После вставьте в USB-разъем клавиатуру и мышь.
7. Сейчас перезагрузите систему. Вы можете сделать это удерживая кнопку PS на джойстике и затем выбрать команду выключения системы ( Turn Off), или, просто, удержать кнопку power в течении 5 секунд.
8. Когда система загрузится, тоее интерфейс пользователя будет похож наинтерфейс загруженного Linux. Потому что bootloader реально переключится на ядро Linux, или иначе kboot.
9. Как только система полностью загрузится и перейдет в режим kboot, то немедленно установите и перейдите на этот тип модели (только в случае, когда у вас устройство выхода проходит через HDMI порт), или прейдите на другой тип модели - installtext (если у вас действующее аналоговое (лицензионной)устройство). Оставшиеся пункты инструкции предполагают, что вы выбрали опции installtext.
10. После медиа проверки, у вас может выскочить в синей части экрана сообщение об ошибке - Traceback error. Но вы не волнуйтесь, просто проигнорируйте эту ошибку и переходите в другое инсталляционное окно.
11. Когда система спросит у вас о разбиении диска, то вы не беспокойтесь о том, что можете удалить операционную систему с PS3. Так как режим Other OS позволяет только пользователю операционной системы увидеть разделы жесткого накопителя. Даже утилиты низкого уровня не могут видеть другие разделы жесткого диска. Таким образом, YDL продолжает удаление данных с вашего накопителя HDD, после этого удаляются все разделы и создается стандартная, привычная любому пользователю PC разметка жесткого диска.
12. Когда вы дойдете до установки пакета, то вам потребуется приблизительно час, чтобы его полностью установить в систему PS3. Но это не означает, что вы установите все данные с DVD диска.
13.Сейчас у вас система перезагрузится. Если у вас аналоговый продукт, то вам необходимо выставить тип ядра kboot как boot prompt в опции ydl480i. Иначе это может привести к результатам, которые не допускаются аналоговой (или лицензионной) продукцией.
14. Во время загрузки у вас появятся инструменты инсталляции. Здесь вам больше ничего делать не надо, т.к. система автоматически выполнит дальнейшую загрузку и первый запуск.

Все! Теперь вы можете считать, что YDL на вашей PS3!

Теперь мы с вами рассмотрим как настроить некоторые полезные элементы или параметры установленного Linux(а) на вашу PS3.

Установка внедренной операционной системы

К сожалению, установленная программа не заботится о всех деталях аналогового устройства. Однако, вы еще можете сделать, скажем, автоматическую загрузку надлежащей операционной системы, настроить X Window System на лицензионном устройстве, установить Cell BE SDK. Для всех этих фич, вам надо убедиться, что YDL 5 DVD находится в дисководе, установив это следующим образом:

mount /dev/dvd /mnt

Все инструкции предполагают, что загруженный DVD установлен так, чтобы вы при загрузки операционной системы сразу оказываетесь в корневом каталоге системы. Чтобы получить лицензионную систему загрузки при запуске, необходимо, редактировать файл /etc/kboot.conf, изменив в нем значение строки default=ydl на default=ydl480i, и после этого сохранить файл.

Если вы хотите настроить X Window System на вашем аналоговом(лицензионом) устройстве, надо установить и запустить пакет Xautoconfig. Это можно выполнить следующим образом:

cd / mnt/ YellowDog/ RPMS
rpm - i spu- binutils-* spu- gcc-* spu- gdb-* spu- utils* libspe- devel-*

Однако!!! ... стоит заметить, что один важный набор пакетов не включается в DVD – это 64-битовая версия библиотеки libspe. Но этот недостаток можно легко исправить. Получите пакет SRPM библиотеки libspe либо загрузив с DVD, либо скачав с вебсайта (этот пакет называется libspe-1.1.0-1.src.rpm). Затем зайдите в директорию, в которой вы его загрузили и выполните следующие шаги:

rpm -i libspe-*.src.rpm
cd /usr/src/yellowdog/SPECS
rpmbuild -bb --target ppc64 libspe.spec
cd ../RPMS/ppc64
rpm -i elfspe-* libspe-*

Все готово! YDL 5 – установлен, настроен и готов к использованию.

Что же дальше? Linux – установлен!

Сейчас, у вас и Linux, и Cell BE SDK полностью установлены. В этом разделе мы с вами поговорим о программировании и о том, какиспользовать установленные "навороты". Давайте, рассмотрим нетрудную задачку на языке Си (описанную ниже), в которой используются PPE и SPE элементы. Но для этого нам понадобится некоторый набор инструментов, которые используются при построении Cell BE программ:

- gcc
Наш испытанный компилятор, построенный для формирования бинарников PPC Linux для элемента PPE. Использует -m64 коммутатор, чтобы генерировать 64-битовый операции.

- spu-gcc
Это такой же испытанный компилятор, который генерирует код для SPEs элементов.

- embedspu
Это специальный инструмент, который преобразовывает программы SPE, файл объекта которого может быть связан с PPE операциями. Он создает глобальную переменную, которая обращается к программе SPE так, чтобы PPE мог загрузить и управлять программой в SPE-элементах. Используйте -m64 флаг, чтобы внедрить в систему 64-битовые программы PPC.

Без элементов PPE, Cell BE процессор может быть программируемым (причем существенным образом) на любой другой системе, основанной на ядре PowerPC. Фактически, вы можете эмулировать несуществование этих элементов, вследствие чего, ваш код будет прекрасно работать. Но это повлечет то, что большинство вашей вычислительной мощности будет не затронуто. Чтобы полноценно использовать в своих интересах SPE процессоры, вы должны будете приложить немного усилий.

Если вы плохо знакомы с Cell BE технологией, то запомните, что PPE процессор – это менеджер ресурсов системы. Он обращается к задачам операционной системы, регулирует доступ к памяти и управляет SPE процессами. Код для PPE задач отвечает за инициализацию программы, за настройку SPE элементов с задачами и выполнения ввода/вывода. Конечно, PPE процессор может также выполнять задачи обработки данных. Но, как правило, система должна освободиться от лишней загрузки, что является основательным по отношению к SPE элементам.

Таким образом, мы сейчас увидим, как написанная ниже простая программа выполнит задачу обработки данных на SPE процессорах. Программа будет очень элементарна, она вычисляет расстояние пройденного пути, скорость (миль/час) и время (в часах). Ниже приведенный код для PPE процессора (записанный как ppe_distance.c ):

#include
#include
//This global is for the SPE program code itself. It will be created by
//the embedspu program.
extern spe_program_handle_t calculate_distance_handle;
//This struct is used for input/output with the SPE task
typedef struct {
float speed; //input parameter
float num_hours; //input parameter
float distance; //output parameter
float padding; //pad the struct a multiple of 16 bytes
} program_data;
int main() {
program_data pd __attribute__((aligned(16))); //aligned for transfer
//GATHER DATA TO SEND TO SPE
printf("Enter the speed at which your car is travelling in miles/hr: ");
scanf("%f", &pd.speed);
printf("Enter the number of hours you have been driving at that speed: ");
scanf("%f", &pd.num_hours);
//USE THE SPE TO PROCESS THE DATA
//Create SPE Task
speid_t spe_id = spe_create_thread(0, &calculate_distance_handle, &pd, NULL,
-1, 0);
//Check For Errors
if(spe_id == 0) {
fprintf(stderr, "Error creating SPE thread!n");
return 1;
}
//Wait For Completion
spe_wait(spe_id, NULL, 0);
//FORMAT THE RESULTS FOR DISPLAY
printf("The distance travelled is %f miles.n", pd.distance);
return 0;
}

Как упоминалось раньше, основное назначение PPE в Cell BE процессоре это управление задачами ввода/вывода. Реально интересная часть, которую здесь можно рассмотреть – создание потока spe_create_thread. Первы параметр – это поток ID группы (ноль указывает на то, что этот ID должен создать новую группу для потока данных); второй параметр -отвечает за управление SPE программы; третий параметр -является указателем на данные, которые вы хотите передать; четвертый параметр – указатель на опциональное окружение; пятый параметр – список опций, которые вы хотите использовать(но не все подряд). Функция возвращает номер ID задач процессора, которую вы будете в дальнейшем использовать как параметр метода spe_wait . Метод spe_wait возвращается, когда заканчивается SPE задача.

Далее представлен код для SPE процессора (записанный как spe_distance.c ):

//Pull in DMA commands
#include
//Struct for communication with the PPE
typedef struct {
float speed; //input parameter
float num_hours; //input parameter
float distance; //output parameter
float padding; //pad the struct a multiple of 16 bytes
} program_data;
int main(unsigned long long spe_id, unsigned long long program_data_ea, unsigned
long long env) {
program_data pd __attribute__((aligned(16)));
int tag_id = 0;
//READ DATA IN
//Initiate copy
mfc_get(&pd, program_data_ea, sizeof(pd), tag_id, 0, 0);
//Wait for completion
mfc_write_tag_mask(1<<tag_id);
mfc_read_tag_status_any();
//PROCESS DATA
pd.distance = pd.speed * pd.num_hours;
//WRITE RESULTS OUT
//Initiate copy
mfc_put(&pd, program_data_ea, sizeof(program_data), tag_id, 0, 0);
//Wait for completion
mfc_write_tag_mask(1<<tag_id);
mfc_read_tag_status_any();
return 0;
}

Указатель выполняется в качестве третьего параметра, чтобы spe_create_thread вернулся в программу как program_data_ea. Стандарты EA для действительных адресов, которые являются адресами главной памяти, представленные для главных PPE программ. Поскольку, SPE не имеет прямого доступа к главной памяти, то вы не можете на прямую переопределить это в указатель. Взамен этого вы можете вводить передачу запроса, чтобы копировать данные в ваше локальное хранилище, вы можете получить доступ к данным напрямую с адреса локального хранилища (сокращенно LSA).

mfc_get вводится трансфером в локальное хранилище. Заметим, что структура обоих процессоров PPE и SPE была выравнена и записана до 16 байт. tag_id позволяет вам восстановить статус DMA операции.

Основная обработка данных-тривиально простая, а именно, справедливо увеличение скорости и времени. После чего, данные являются процессом, mfc_put вводятся обратной передачей в главную память, и следующие две функции вызываются, чтобы подождать выполнение DMA процесса. Когда все это выполнится, то программа закроется.

Сейчас у вас скомпилированная и рабочая программа. Это, действительно, просто:

#Compile the SPE program
spu-gcc spe_distance.c -o spe_distance
#Embed the SPE program into an ELF object file, and expose it
#through the global variable: calculate_distance_handle
embedspu calculate_distance_handle spe_distance spe_distance_csf.o
#Compile the PPE program together with the SPE program
gcc ppe_distance.c spe_distance_csf.o -lspe -o distance
#Run the program

Таким образом, у вас теперь полностью работающая Cell BE программа.

В итоге, мы с вами научились ставить ОС Linux на PS3, программировать и строить программы для процессора Cell BE, понимать уникальность архитектуры PS3. Но вы призадумайтесь, перед тем как будете экспериментировать, действительно ли вам необходим Linux на PS3? Если ваш ответ "ДА!", то вперед, дерзайте! Вам эта статья очень поможет.

И еще (забыл вам сказать)... Спасибо дорогие читатели за ваше внимание и время, которое вы мне уделили и предоставили, когда читали и осваивали данную статью!

Рейтинг статьи

Оценка
5/5
голосов: 7
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх