Ananas 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Дорогие друзья! Есть ли люди, которые сведущи в buildroot и вообще портировании LInux. Сейчас занимаюсь портированием Linux на необычный Mips и в принципе вопросов миллион. есть ли здесь спецы, которые путь этот проходили и которые могут помочь? :twak: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ananas 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба До того, как мне пришлось этим всем заниматься, я мало общалась с Линукс, поэтому представления о системе вообще имею мало. Поэтому вся эта ситуация дается мне тяжело))) Итак, я скачала buildroot и сконфигурировала искомпилировала его. В результате у меня появилась директория output и все, что в ней полагается)) Теперь передо мной задача стоит - что делать дальше? теоретически дальше идет конфигурация Линукс. Но, конечно же процессор у меня не классический MIPS, хоть и сделанный на его базе, и платы нужной нет. Один умный человек сказал мне, что надо нужно запустить таймер, инициализировать uart, и добавить обработку прерываний. Вопрос такой: как это сделать????? Может есть люди, которые простым языком могут мне объяснить - как Линукс зависит от таймеров, уартов и прерываний и как это все добавлять в билтрут? Я надеюсь, если мои высказывания покажутся вам смешными, вы просто поржете, а потом поможете) Я что-то очень теряюсь в этом всем( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Сначала отрабатывает загрузчик, потом инитится ядро и драйвера и только потом подключается rootfs, которую билдрут и строит. Если у вас нету рабочих первых двух пунктов, то до рутфс вы и не доберетесь. В моем случае у меня был старый линукс на старом билдруте и сейчас я обновляю и то и то (чисто с целью рабобраться как работает). И я начал с конца, как с более простого. Но у меня были и бутлоадер и ядро старые. Если вы говорите, что у вас особенный мипс, то насколько он совместим с неособенным? Это просто мипс + своя перефирия? Тогда проще, потому как есть шанс, что можно запустить линукс постоенный для какого-то камня близкого к вашему и подрехтовать. Если же что-то далекое, то повиснет все сразу :) Прерывания таймер и уарт действительно нужны, так как уарт - средство отладки. Но билдрут тут непричем. Тяжко будет. У меня есть определнный опыт в эмбеддед, ноя сам дни трачу, чтоб простейшие вещи сделать и рабобраться. Это при том, что у меня есть живая система и я ее просто обносляю. Портирования линука как первая задача - непростой выбор :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Итак, я скачала buildroot и сконфигурировала искомпилировала его. В результате у меня появилась директория output и все, что в ней полагается)) в этой директории полагается быть toolchain у, загрузчику, ядру и корневой фс В принципе это все, что вам нужно и именно в указанной последовательности оно портируется и запускается(кроме toolchain) на плате . Buildroot это система сборки. В принципе это инструмент релиз-инженера, если у вас такой есть. Обычно нужна для финальной сборки прошивки. Для разработки ядра, загрузчика, своих приложений - вещь не очень удобная, если не сказать ненужная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Для разработки ядра, загрузчика, своих приложений - вещь не очень удобная, если не сказать ненужная. Вот да, начинать нужно со сборки u-boot'а (без buildroot'а, он очень не скоро понадобится), взяв за основу максимально похожий MIPS. Это задача на порядок проще, чем портирование ядра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Есть ли люди, которые сведущи в buildroot и вообще портировании LInux. Сейчас занимаюсь портированием Linux на необычный Mips и в принципе вопросов миллион. есть ли здесь спецы, которые путь этот проходили и которые могут помочь? стесняюсь спросить - а у вас дока то на "необычный Mips" чип есть? не портянка на сотню листов, а нормальный "Reference Manual" с описанием всех регистров и битов, всех узлов и подсистем.. и отдельный талмуд "User Guide", где разжевывают основы работы узлов вашего Mips без документации можете этот уникальный чип гвоздиком на стенку приколотить.. по билдруту - загляните в исходники ядра, это если смотреть в "у меня появилась директория output", то далее в output/build ищите каталог ядра (там должны лежать файлы типа vmlinux vmlinux.o) нашли исходники - изучайте содержимое arch/mips и как справедливо написали ранее - перед портированием ядра придется портировать u-boot или тот загрузчик, который будет обеспечивать после подачи питания начальную инициализацию Mips (pll, ram, peripherals.. etc) и сервис по загрузке ядра.. Linux на необычный Mips и в принципе вопросов миллион. перед тем, как спрашивать свой миллион, напишите маркировку своего чипа - возможно те, кто сталкивался с архитектурой Mips, сразу наведут на путь истинный.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 30 октября, 2016 Опубликовано 30 октября, 2016 · Жалоба Вот да, начинать нужно со сборки u-boot'а (без buildroot'а, он очень не скоро понадобится), взяв за основу максимально похожий MIPS. Это задача на порядок проще, чем портирование ядра. Я бы оспорил это утверждение. Если учесть, что именно в u-boot-e (или другом стартовом загрузчике) инициализируются ключевые вещи, такие как clock's, timers, DDR/DDR2 - то и скиллов для портирования u-boot'a нужно на порядок больше, понимания, как работает DDR-память и что за "магические" константы передаются ей при ините, ну и т. п. А уже если "взлетел" u-boot - что там портировать ядро, наливай да пей конфигурируй да компилируй (make menuconfig -> make all) :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 30 октября, 2016 Опубликовано 30 октября, 2016 · Жалоба Если учесть, что именно в u-boot-e (или другом стартовом загрузчике) инициализируются ключевые вещи, такие как clock's, timers, DDR/DDR2 - то и скиллов для портирования u-boot'a нужно на порядок больше, понимания, как работает DDR-память и что за "магические" константы передаются ей при ините, ну и т. п. Ключевое слово "инициализируются", о полноценной работе на этом этапе речи не идет: - тактирование запустить, а не управлять им - прерывания можно вообще не трогать - DMA? не нужен DMA - UART на уровне принять-передать байт - Ethernet - принять/отправить пакет через поллинг и т.п. А уже если "взлетел" u-boot - что там портировать ядро, наливай да пей конфигурируй да компилируй (make menuconfig -> make all) :rolleyes: Для "необычной" системы одним menuconfig'ом дело не обойдется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 31 октября, 2016 Опубликовано 31 октября, 2016 · Жалоба Ключевое слово "инициализируются", о полноценной работе на этом этапе речи не идет: - тактирование запустить, а не управлять им - прерывания можно вообще не трогать - DMA? не нужен DMA - UART на уровне принять-передать байт - Ethernet - принять/отправить пакет через поллинг и т.п. Ну это смотря как относиться к u-boot. Я чаще всего относился так: драйвера периферии в u-boot - это "генеральная репетиция" линуксовых драйверов. Для "необычной" системы одним menuconfig'ом дело не обойдется. "Необычность" системы, как правило, заключается в разбрасывании периферии по другим (нежели чем на девборде) пинам. Соответственно, IOMUX (или что там подобное) настраивается один раз тоже в u-boot. В ядре остается лишь разрешить соответствующий драйвер (модуль ядра). Ну и предварительные ласки патчи ядра, конечно же, должны быть наложены перед этим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 31 октября, 2016 Опубликовано 31 октября, 2016 · Жалоба "Необычность" системы, как правило, заключается в разбрасывании периферии по другим (нежели чем на девборде) пинам. Подозреваю, что в данном случае "необычность" сопровождается отсутствием кита с Linux. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ananas 0 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Дорогие друзья! Нереальное спасибо за комментарии! Я поняла пока только, что плохо вообще ориентируюсь в структуре Линукс. и задача для меня сложновата, конечно. буду думать над грамотными вопросами по-существу. Потому что пока непонятно просто все... :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 1 ноября, 2016 Опубликовано 1 ноября, 2016 · Жалоба Попробуйте начать отсюда http://free-electrons.com/docs/ http://free-electrons.com/docs/porting-u-boot/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ananas 0 2 ноября, 2016 Опубликовано 2 ноября, 2016 · Жалоба Я бы оспорил это утверждение. Если учесть, что именно в u-boot-e (или другом стартовом загрузчике) инициализируются ключевые вещи, такие как clock's, timers, DDR/DDR2 - то и скиллов для портирования u-boot'a нужно на порядок больше, понимания, как работает DDR-память и что за "магические" константы передаются ей при ините, ну и т. п. А уже если "взлетел" u-boot - что там портировать ядро, наливай да пей конфигурируй да компилируй (make menuconfig -> make all) :rolleyes: Спасибо большое за ваши комментарии. Они прямо свет истины на мое темное царство беспомощности проливают. Согласна с вами насчет u-boot) сейчас как раз в u-boot'е и затык у меня получается, раз именно там все инициализируется.. Прочитала, что u-boot можно собрать прямо в билтруте. Кто-нибудь делал это? Сначала отрабатывает загрузчик, потом инитится ядро и драйвера и только потом подключается rootfs, которую билдрут и строит. Если у вас нету рабочих первых двух пунктов, то до рутфс вы и не доберетесь. В моем случае у меня был старый линукс на старом билдруте и сейчас я обновляю и то и то (чисто с целью рабобраться как работает). И я начал с конца, как с более простого. Но у меня были и бутлоадер и ядро старые. Если вы говорите, что у вас особенный мипс, то насколько он совместим с неособенным? Это просто мипс + своя перефирия? Тогда проще, потому как есть шанс, что можно запустить линукс постоенный для какого-то камня близкого к вашему и подрехтовать. Если же что-то далекое, то повиснет все сразу :) Прерывания таймер и уарт действительно нужны, так как уарт - средство отладки. Но билдрут тут непричем. Спасибо за ваш ответ! Вот на линукс.орг вычитала, что загрузчик можно собрать также используя билдрут. Но просто как утверждение, подробностей пока нигде не нашла(( Вы не видели чего-нибудь по этой теме? Мипс мой пока еще в стадии модели) чипа нет) насколько он совместим - я не вникала глубоко, наверняка можно было бы взять стандарт и рехтовать его, но у меня задача, не просто Линукс запустить, а освоить билдрут и с его помощью подготовить рабочий линукс :rolleyes: стесняюсь спросить - а у вас дока то на "необычный Mips" чип есть? не портянка на сотню листов, а нормальный "Reference Manual" с описанием всех регистров и битов, всех узлов и подсистем.. и отдельный талмуд "User Guide", где разжевывают основы работы узлов вашего Mips без документации можете этот уникальный чип гвоздиком на стенку приколотить.. по билдруту - загляните в исходники ядра, это если смотреть в "у меня появилась директория output", то далее в output/build ищите каталог ядра (там должны лежать файлы типа vmlinux vmlinux.o) нашли исходники - изучайте содержимое arch/mips и как справедливо написали ранее - перед портированием ядра придется портировать u-boot или тот загрузчик, который будет обеспечивать после подачи питания начальную инициализацию Mips (pll, ram, peripherals.. etc) и сервис по загрузке ядра.. перед тем, как спрашивать свой миллион, напишите маркировку своего чипа - возможно те, кто сталкивался с архитектурой Mips, сразу наведут на путь истинный.. Вот мой умный коллега посоветовал мне созадать в arch/mips/my_board и добавить туда как раз инициализацию таймера и уарта. но в моей голове это к сожалению не укладывается в общую картину всего этого процесса. :crying: Может вы сможете мне пояснить, что выходит в итоге из arch/mips/? Насчет маркировки мипса - нет ее - он еще на стадии прототипа. по повду документации - программная модель есть. У меня больше вопросов вызывает сама система билдрута - что где лежит и что из чего получается.... Понимаю, что сейчас вы отправите меня к https://buildroot.org/downloads/manual/manual.pdf и я, конечно, пойду его читать еще раз. Но если у вас есть возможность прояснить простым языком мои вопросы, буду признательна. Ключевое слово "инициализируются", о полноценной работе на этом этапе речи не идет: - тактирование запустить, а не управлять им - прерывания можно вообще не трогать - DMA? не нужен DMA - UART на уровне принять-передать байт - Ethernet - принять/отправить пакет через поллинг Спасибо большое за участие в дискуссии! Можно ли это все проинициализировать через buildroot? в этой директории полагается быть toolchain у, загрузчику, ядру и корневой фс В принципе это все, что вам нужно и именно в указанной последовательности оно портируется и запускается(кроме toolchain) на плате . Buildroot это система сборки. В принципе это инструмент релиз-инженера, если у вас такой есть. Обычно нужна для финальной сборки прошивки. Для разработки ядра, загрузчика, своих приложений - вещь не очень удобная, если не сказать ненужная. Спасибо огромное за ответ! А что если требуется загрузчик сделать через билдрут? Может не очень удобно, но вот надо? Пробовали такое творить? Попробуйте начать отсюда http://free-electrons.com/docs/ http://free-electrons.com/docs/porting-u-boot/ Спасибо большое! Читаю :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 2 ноября, 2016 Опубликовано 2 ноября, 2016 · Жалоба Можно ли это все проинициализировать через buildroot? buildroot - это просто система сборки. Грубо говоря, он позволит поменять пару опций в уже готовой конфигурации u-boot и запустит за вас make. Он подходит для сборки рабочей конфигурации, на этапе портирования и отладки не нужен. Пока что нужно взять исходный код u-boot, найти более-менее близкую конфигурацию среди MIPS'ов и начать курочить её под свою платформу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 51 2 ноября, 2016 Опубликовано 2 ноября, 2016 · Жалоба Вот мой умный коллега посоветовал мне созадать в arch/mips/my_board и добавить туда как раз инициализацию таймера и уарта. но в моей голове это к сожалению не укладывается в общую картину всего этого процесса. crying.gif Может вы сможете мне пояснить, что выходит в итоге из arch/mips/? Насчет маркировки мипса - нет ее - он еще на стадии прототипа. по повду документации - программная модель есть. У меня больше вопросов вызывает сама система билдрута - что где лежит и что из чего получается.... Понимаю, что сейчас вы отправите меня к https://buildroot.org/downloads/manual/manual.pdf и я, конечно, пойду его читать еще раз. Может тогда вообще подумать, а вам точно линукс в своей задаче нужен? Может сначала в обычном программировании его потренироваться, инициализация периферии, загрузка образа скомпилированной программы в чип и т.д. А уж потом, если ОС действительно необходима, и начинать эпопею с портированием? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться