Правильно ли понимаю, что cross compile toolchain - это набор binutils + gcc + gdb, сконфигуренных и скомпиленных для соответствующей аппаратной платформы?
прально, тока еще забыли как минимум библиотеку libc ( бывают ее реализации newlib uClib glibc и тд )
Чем отличаются arm-elf-tools (arm-elf-gcc и т.д.) от arm-linux-tools (соответственно, arm-linux-gcc)? Сам собирал RedBoot при помощи arm-elf- и linux на эту же платформу при помощи arm-linux-. Все работает и не жалуется. В другой ситуации, uClinux для LPC2468 собирается arm-elf, но не хочет arm-linux. В чем тут разница, чего не понимаю?
разница в компоновке исполняемых модулей. если вы имеете простейшие ARM машинки например LPC2000 то компилируется нипосредственный исполняемый код с реальной адресацией - тоесть все адреса, регистры и тд - есть совершенно четко физические понятия в этом коде приминительно к железу. Мы это называем "просто бинарь, исполняемый непосредственно процом ". arm-elf говорит о том что выходной файл компиляции имет формат ELF - тоесть сами бинарные данные и код + ELF объвязка (таблицы символов, размещенией флагов, отладочных и профилировояных секций ..........). Тоесть это еще не то что заливается в флеш и исполняется процом. Даее обычно используется утилита *-objcopy которая выдирает из этого изобилия непосредственно бинарь. ELF нужен для отладки : на кристале запускается бинарь а GDB засасывает ELF парсит заголовки,бинарь и грубо говоря устанавливает соответствие между состоянеием прогаммы на проце и ее модели которую он посторил по ELF файлу. Источнок даных о состоянии является например JTAG, типа дальше должно стать понятным в общем ввиде как идет оладка.
А вот если линукс - то тут все совсем по другому - компоновка подразумевает не настоящие адреса физической памяти а просто какета адреса линейной модели. Программа понятия не миее что и где реально лежит, ей достаточно что система гарантирует целостность данных и их адресов. Реальные адреса используются при работе с ячейками озу только в уже в специальном аппаратном модуле MMU который по табличкам соостветствия виртуальных адресов с которыми работает программа связывает реальные ячейки. Управляет этими табличками ядро операционной системы. Зачем этот гимарой? в первом приближении можно сказать что это практически едиственный метод резделит от взаимного влияни я различные задачи выполняющиеся паралельно и независимо. Далее должно стать понятно что вытекает совершенно другая компоновка исполняемого файла - стате это тоже ELF тока запускается именно он, таблички смволов и тд используется загрузчико процесса для настройки процесса на выполнение в конкретной операционной среде.
пример1 FreeRTOS + lpc2103 - шедуллер задач, все адреса реальные все задачи работают в едином ареальном адресном пространстве - и !!!!! каждая задача может засрать ВСЕ И ВСЕМ. Зато быстро и без шаманства.
пример2 Linux + ep9312 - настоящая OC, все задачки работаюст в своем ненастоящем(виртуальном пространстве) и имеют доступ к реальной памяти через MMU - он то и не дает согласно таблицам трансляции "пересечся" процессам, тоесть OC путем управления табличками MMU выполняет свою класическое предназначение - раздача и контроль ресурсов ( в данном случае памяти, но это относится ко всему - временные интервалы, файлы, каналы,семафоры..... ) в системе - тесть создание операционой среды для множества задач(пользователей ресурсов).
Где можно взять относительно свежие бинарники этих тулчаинов для linux? На какие параметры целевой платформы надо обращать внимание, чтобы собрать самому? Или там просто типа configure --target=arm-elf?
искать с собаками. обычно кому нада берет и сам собирает и подпиливат под себя. свежий бинарники бывают у меня, выкладываю сюда. Вот кстате протрахался неделю сделал для ep9312/ep9315 тулчейн и ядро 2,6,24,3 uClibc которые полностю вытряхивают весь дух из Mavericka. ес!! всю жизнь мечтал о FPU, плата ТионПро - немного птестил вроде плавучка без ошибок. Это моя первая более менее серьезная зелезячка, в планах изготовит миниатюрынй девайс с mips64 и выжать из связки mips64 20Kc + кусок гетинакса с линухом порядка + GCC инфраструктуры порядка гигафлопса. А че? что нам помешает.
Удачи.
|