Стажер Apple занимался портированием Mac OS X на ARM-архитектуру
В научной статье, написанной бывшим стажером Apple, который сейчас работает в компании программным инженером отдела Core OS, описан секретный эксперимент по портированию Mac OS X Snow Leopard на архитектуру ARM.
В 2010 году Тристан Шаап (Tristan Schaap) написал бакалаврскую дипломную работу о том, как он проходил 12-недельную стажировку в Apple Platform Technologies Group, подразделении отдела Core OS компании. Изначально эта работа не разглашалась и не публиковалась, так как она содержала секретную информацию. Однако несколько месяцев назад ее опубликовал Нидерландский Дельфтский Университет Технологии (Delft University of Technology), о чем пишет сайт iMore.
В работе указано, что Шаап работал с группой инженеров над Darwin, «нижней частью» операционной системы Apple Mac OS X, и над ее загрузкой на ARM-процессор с Marvell. В ходе проекта у него получилось добиться «загрузки в многопользовательскую строку», хотя некоторые вопросы тогда остались нерешенными из-за «плохой реализации на отладочном оборудовании».
Стоит допустить вероятность, что целью исследований Apple по портированию Mac OS X на ARM-архитектуру никогда не было применение результатов в конечной продукции, предназначенной для продажи. Компания известна тем, что привлекает новых инженеров в специальные фиктивные проекты, чтобы определить надежность будущих сотрудников.
Интересно, что впоследствии Шаап, как указано в его профиле на LinkedIn, стал работать в Apple на посту «инженера CoreOS» — после окончания университета в течение полутора лет. В своей дипломной работе Шаап пишет, что во время своей 12-недельной стажировки в компании столкнулся с тремя техническими вопросами. С самого начала одной из трудностей была необходимость создания системы сборки, в том числе файловой системы и ядерного кэша. Еще одной проблемой были устаревшие исходные коды ядра, из-за чего разработчики долго не могли справиться с багами в части ARMv5 ядра XNU. И, наконец, Шаап пишет, что проблемы с отладчиком JTAG привели к тому, что в итоге «весь набор команд» оказался непригодным для использования.
Для того, чтобы получить готовый требуемый продукт, как отмечает Шаап, нужно было полностью переработать кэш L2. Для оборудования также пришлось написать несколько дополнительных драйверов, чтобы «в полной мере использовать его потенциал». Кроме этого Шаап порекомендовал создать или портировать с других платформ еще несколько приложений, так как совокупности приложений и библиотек, портированных командой разработчиков, оказалось недостаточно «для выполнения задач, которые готовый продукт должен был выполнять».
Слухи о том, что Apple была заинтересована в переводе своих Мас с Intel на ARM-архитектуру, имели место в течение недавнего времени. Однако один из аналитиков на прошлой неделе опроверг их, рассказав о встрече с главой Apple Тимом Куком. Ричард Гарднер (Richard Gardner) уверяет, что после встречи у него осталось твердое впечатление, что « Apple считает, что планшет iPad удовлетворяет – или скоро удовлетворит – потребности всех, кому может быть интересен такой продукт», как MacBook Air на базе архитектуры ARM.
Мисек раньше высказывал предположение, что Apple объединит Mac OS X и iOS уже в этом году, выпустив модели ноутбуков MacBook Air с процессором А6. В мае прошлого года ходили слухи, что Apple создала тестовую модель MacBook Air с существующим процессором А5 на базе архитектуры ARM, который уже используется в планшетах iPad 2. Впоследствии руководство компании якобы призналось, что прототип показал себя «намного лучше, чем ожидалось».
Предположения о том, что Apple будет портировать OS X на ARM-архитектуру, вызваны отчасти тем фактом, что компания Microsoft в прошлом году объявила о том, что ее Windows 8 будет основана на ARM. Однако стратегия Microsoft отличается от стратегии Apple тем, что софтверная компания планирует предложить планшетам свою полную десктоповую операционную систему со слоем пользовательского интерфейса Metro, оптимизированным для сенсорного управления. Со своей стороны, Apple предпочитает «черпать вдохновение» у планшета iPad, перенеся его особенности в Mac, а не наоборот.
С PowerPC на Intel
Apple потратила много лет, готовя последний крупный «архитектурный переход» для Mac – переход с PowerPC на Intel. Фактически бывшее руководство компании дало понять, что в большей степени из-за неудачных попыток портирования Mac OS на Intel им пришлось в определенный момент вернуть Стива Джобса обратно в компанию. Эти неудачи ясно указали Apple на необходимость модернизации операционной системы, поэтому было принято решение о покупке компании NeXT, которую Стив Джобс основал после ухода из Apple.
Джобсу удалось достичь задуманной цели и модернизировать Mac OS – в 2001 году состоялся первый релиз Mac OS X, а впоследствии, в 2005 году, компания перешла на использование процессоров Intel. В течение пяти лет до перехода Intel-версии Mac OS X существовали параллельно с официальными вариантами PowerPC – говорили, что еще тогда Джобс задумывался о дальнейшем использовании только Intel, но в итоге принял решение о принятии процессоров G5.
Источник
STM32 на MAC OS
Как то раз я понял, что для реализации моей идеи мне не обойтись одними транзисторами и самодельными RS тригерами, и пора начинать работать с микроконтроллерами.
В микроконтроллерах я к сожалению абсолютный ноль, и мне пришлось начать гуглить и читать кучу статей. Спустя некоторое время, когда стала ясна разница между архитектурой Фон Неймана и Гарвардской, и другими базовыми вещами, нужно было выбрать микроконтроллер с которым я буду работать.
Из-за простоты необходимых мне возможностей я остановился на PIC, но коллега вовремя наставил меня на путь праведный и сказал копать в сторону STM и AVR, так как себестоимость не на много больше а возможности на порядок выше.
И вскоре я приобрел отладочную плату STM32F4 Discovery kit for STM32F407
В первый день носился с ней по дому и радовался как мигают LEDы и работает гироскоп. Но пора бы начать и самому писать программы. После 30 минут гугления я понял что 95% решений описанных в интернете работают под Windows, а счастливые обладатели Linux и Mac OS гуляют лесом. Я провел 3 дня по вечерам в поисках решений и в итоге имеем полный мануал как начать программировать под STM32 под Mac OS.
Сначала необходимо поставить среду разработки. В нашем случае это будет Eclipse(Indigo R Eclipse IDE for C/C++ Developers Mac Cocoa 64-bit). Идем по ссылке Eclipse качаем и устанавливаем.
GNU ARM toolchain
Можно скачать с официального сайта http://www.gnuarm.com/files.html. Но почему то при попытке запуска arm-elf-gcc или arm-elf-g++ возникает ошибка — Bad CPU type in executable. Почему? Я ещё не разобрался. Поэтому даю ссылочку на мой fork репозитория arm.
Давайте его выкачаем — git clone github.com/jsnyder/arm-eabi-toolchain.git
Теперь надо поставить все необходимые пакеты — brew install mpfr gmp libmpc texinfo
Далее идем выкачанную директорию — cd arm-eabi-toolchain
И выполняем:
mkdir -p $HOME/arm-cs-tools/bin
export PATH=$HOME/arm-cs-tools/bin:$PATH
CC=clang make cross-binutils cross-gcc cross-g++ cross-newlib
make cross-gdb
export PATH=$HOME/arm-cs-tools/bin:$PATH
make clean
ST-LINK
Идем сюда качаем и устанавливаем как написано в README. Тут можно почитать по дебагер ST-LINK.
Настройка
Теперь начинаем все связывать воедино.
Запускаем Eclipse. Идем в Help -> Install New Software. Нажимаем ссылку Available Software Sites. Находим CDT Juno, ставим галочку и жмем OK. Теперь в поле Work with выбираем CDT Juno. В появившемся списке ищем GCC Cross Compiler, ставим галочку а потом кнопку Finish.
Теперь мы можем создать нужный нам проект.
Идем в File -> New -> C++ Project. Выбираем Executable Cross Compile Project, даем ему имя и нажимаем Finish.
Теперь у нас есть пустой проект и нужно его настроить.
Выбираем наш проект, нажимаем правой кнопкой и идем в Properties -> C/C++ Build -> Settings.
В Cross GCC Assembler -> General -> Assembler flags пишем -mthumb -mcpu=cortex-m4
В Cross GCC Compiler -> Miscellaneous -> Other flags пишем -c -mthumb -mcpu=cortex-m4
В Cross G++ Compiler -> Miscellaneous -> Other flags пишем -c -mthumb -mcpu=cortex-m4
В Cross GCC Linker -> Miscellaneous -> Linker flags пишем:
-T «$
Теперь после компиляции получим бинарный файл в нужном виде. Для этого тут же в настройках выбираем таб Build Steps и в поле Command пишем
arm-none-eabi-objcopy -I ihex «$
Базовый проект
Здесь качаем базовый проект. В нем описано чтобы отладочная борда умела мигать светодиодами.
После того как вы скачаете и поместите все файлы в проект Eclipse. Нужно указать пути к подключаемым заголовкам. Опять же идем в Properties -> C/C++ Build -> Settings.
Тут у Cross GCC Compiler и Cross G++ Compiler в Includes добавляем
«$
«$
«$
«$
«$
и жмём OK.
Поехали
Вроде все. Привязывать st-link и gdb к eclipse я не стал. Поэтому покажу как все делается из консоли.
В Eclipse собираем наш проект кнопочкой Build.
После того как убедились что сборка успешная и бинарный файлик тоже есть, подключаем нашу плату через USB.
Открываем консоль (лучше iterm). В первом табе запускаем st-link. После установки он должен быть доступен глобально.
2013-12-05T22:48:22 INFO src/stlink-common.c: Loading device parameters…
2013-12-05T22:48:22 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
2013-12-05T22:48:22 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
Chip ID is 00000413, Core ID is 2ba01477.
Target voltage is 2879 mV.
Listening at *:4242.
Мы видим как определяется устройство и вешается обработчик на порт 4242.
В соседней вкладке запускаем ранее установленный arm-none-eabi-gdb
GNU gdb (32-bit ARM EABI Toolchain JBS-2013.05-23-v2013.05-1-gd66a29f) 7.4.50.20120716-cvs
Copyright © 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type «show copying»
and «show warranty» for details.
This GDB was configured as «—host=x86_64-apple-darwin12.5.0 —target=arm-none-eabi».
For bug reporting instructions, please see:
.
(gdb)
Все отлично. Теперь необходимо подключиться к нашему девайсу. Нужно выполнить команду target remote :4242
(gdb) target remote :4242
Remote debugging using :4242
0x08000b70 in ?? ()
В соседней вкладке где запущен st-link мы дожны увидеть инфу о подключении GDB
KARL — should read back as 0x03, not 60 02 00 00
GDB connected.
Ну и осталось послследнее. Нужно накатить нашу новую прошивку.
Идем во вкладку с GDB и выполняем команду load
(gdb) load путь_к_бинарнику_.ihex
Loading section .sec1, size 0xc10 lma 0x8000000
Start address 0x8000b70, load size 3088
Transfer rate: 3 KB/sec, 3088 bytes/write.
А в соседней вкладке отладчика будет видно что все успешно накатилось
2013-12-05T22:56:04 INFO src/stlink-common.c: Attempting to write 16384 (0x4000) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash — Sector:0x0 Size:0x4000
Flash page at addr: 0x08000000 erased
2013-12-05T22:56:05 INFO src/stlink-common.c: Finished erasing 1 pages of 16384 (0x4000) bytes
2013-12-05T22:56:05 INFO src/stlink-common.c: Starting Flash write for F2/F4
2013-12-05T22:56:05 INFO src/stlink-common.c: Successfully loaded flash loader in sram
size: 16384
2013-12-05T22:56:05 INFO src/stlink-common.c: Starting verification of write complete
2013-12-05T22:56:05 INFO src/stlink-common.c: Flash written and verified! jolly good!
Чтобы посмотреть на результат, в gdb выполните команду ‘c’ (continue). Плата должна замигать как новогодняя ёлка.
Всё о чем я писал не имеет 100% понимания с моей стороны. Но это отличная отправная точка для начинающих.
Надеюсь эта статья поможет кому-нибудь.
Источник
Apple переходит на собственные процессоры в Mac, начиная уже с этого года
Apple официально переходит на собственные чипы для некоторых Mac. Назвав это «историческим днем для Mac», генеральный директор Apple Тим Кук подробно рассказал о переходе на PowerPC, OS X 10 и переходе на чипы Intel, а затем обнародовал свои планы по использованию в будущем собственного чипа Apple с процессором ARM в Mac. Это большой шаг, который означает, что macOS будет поддерживать нативные приложения iOS и приложения macOS бок о бок на этих новых машинах в будущем.
Apple выпустит первый Mac с чипом Apple в конце этого года, и ожидает, что переход займет два года. Mac на базе Intel все еще находятся в производстве, поэтому Apple пока не переходит исключительно на Mac на базе ARM. Тем не менее, отказ от чипов на базе Intel в Mac это большой сдвиг для Apple.
Самым большим дополнением к этому переходу на чипы на платформе ARM является возможность для приложений iOS и iPadOS работать в MacOS в будущем. «Большинство приложений будут просто работать», — говорит Apple, имея в виду, что вы сможете впервые запускать собственные приложения MacOS вместе с нативными приложениями iOS.
Apple обещает новый уровень производительности и гораздо меньшее энергопотребление, переходя на собственные процессоры. Apple разрабатывает собственную линейку SoC для Mac с уникальными функциями для Mac. Общая архитектура на основе ARM для всех продуктов Apple теперь должна облегчать разработчикам написание и оптимизацию приложений для всех основных устройств Apple.
Собственные профессиональные приложения Apple будут обновлены для поддержки нового чипа компании в MacOS Big Sur, и компания надеется, что разработчики обновят свои приложения. «Подавляющее большинство разработчиков могут запустить свои приложения в считанные дни», — утверждает Крейг Федериги, старший вице-президент Apple по разработке программного обеспечения.
Microsoft работает над обновлениями Office для нового чипа Mac, Word и Excel уже изначально работают на Mac с новыми процессорами, а PowerPoint даже использует технологию Apple Metal для рендеринга. Apple также работает с Adobe над тем, чтобы эти профессиональные приложения работали на этих новых чипах. Apple продемонстрировала Lightroom и Photoshop, работающие на новых компьютерах компании, с PSD на 5 Гб в Photoshop, работающей изначально с плавной анимацией.
Photoshop работает на новом Mac с собственным чипом от Apple
macOS Big Sur также будет включать новую версию Rosetta. Apple ранее использовала Rosetta для перехода c PowerPC на Mac на процессоры от Intel, а Rosetta 2 автоматически переведет существующие приложения во время установки. Это означает, что даже если разработчики не полностью обновили свои приложения, они все равно должны работать без изменений. Apple также использует виртуализацию для запуска Linux на этих новых компьютерах Mac.
Источник