mantech 53 2 августа, 2015 Опубликовано 2 августа, 2015 (изменено) · Жалоба Приветствую. Собственно, решился таки на написание собственного бутлоадера для проектов на мх6 До этого обновление программы делала сама программа, переписывая себя саму, но это не айс, как говорится, при неудачной прошивке получается кирпич и без cifmager-а и плясок с бубном работоспособность не вернуть... Собственно вопрос, бутлодырь я гружу в статическую память, благо он не больше 128кило весом Затем поднимаю ФС, которая загружает в память бинарник прошивки с адреса 0х10000000, и как-бы его и запускать надо, да только не запускается, гад :crying: Может кто подскажет, какие нюансы там, у стмок просто прибавлял к адресу загрузки 4 и все норм... ЗЫ. "Запускальщик" позаимствовал из проекта на стм. Изменено 2 августа, 2015 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба исходники grub же есть, чего вы мучаетесь? непонятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба исходники grub же есть, чего вы мучаетесь? непонятно. Да много чего есть и убуты всякие и пр... Только вы сами-то в них разберетесь, где, что грузится и запускается?? Если да, то может закинете сюда кусочек или файло, где это есть :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба хз. я вас не понимаю. у меня в работе система, где grub проводит начальную инициализацию, lane alignment, верифицирует DDR3, после чего грузит следующий grub, который грузит astra-linux. и мне непонятно зачем "спрямлять" этот путь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба у меня в работе система, где grub проводит начальную инициализацию, lane alignment, верифицирует DDR3, после чего грузит следующий grub, который грузит astra-linux. Во первых, потому, что у меня не линукс, а во вторых, загрузчик должен быть "подписан", и грузить зашифрованную прогу, которая не подписана уже, ну такая вот у них хитровывернутая защита Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба Собственно вопрос, бутлодырь я гружу в статическую память, благо он не больше 128кило весом Затем поднимаю ФС, которая загружает в память бинарник прошивки с адреса 0х10000000, и как-бы его и запускать надо, да только не запускается, гад :crying: пройдите по шагам: - загрузили "бутлодырь", выдали в консольный порт "я жив" - загрузили свой бинарник в основную память (надеюсь "бутлодырь" ее проинтил) - вывалили в ту же консоль содержимое первых и последних 16 байт, сравнили с ожидаемым содержимым - бинарник скомпилен для запуска с нужного адреса - бинарник при запуске первым делом пишет в консоль "я запустился" вместо консоли подергать пином АРМа или поморгать доступной лампочкой.. как вариант ошибки - при считывание бинарника в память кладете байтовую или битовую последовательность "наоборот" imx6 шибко наворочен, может где надо взвести разрешение на запуск из этой области памяти или подобный битовый признак (тут могу врать ибо вопрос не изучал) у вас же д.б. система с юбутом - попробуйте на ней запустить свой бинарник вместо ядра, командой "go 0х10000000" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_3m 9 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба Во первых, потому, что у меня не линукс, а во вторых, загрузчик должен быть "подписан", и грузить зашифрованную прогу, которая не подписана уже, ну такая вот у них хитровывернутая защита У вас что чип с включенной секурностью и прошиты ключи ? Если так то подписывайте свой код иначе не запустите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 3 августа, 2015 Опубликовано 3 августа, 2015 (изменено) · Жалоба пройдите по шагам: Уже прошел Бутлодырь запускается, инициализирует уарт1, ддр, проверяет нужную область ддр на ошибки, мму, кеш,(честно говоря они тут и нафиг не нужны, но до кучи, да и работает быстрее), usdhc, прерывания и 1 таймер. Все это хозяйчтво работает, проверено на более сложных программах. Это раз. Второе, бинарь грузится, в нужную область, тоже проверено. У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска, и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее. Каким образом можно стартовать оба случая, т.е. точки входа - непонятно. Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего. Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил... у вас же д.б. система с юбутом - попробуйте на ней запустить свой бинарник вместо ядра, командой "go 0х10000000" Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем :crying: У вас что чип с включенной секурностью и прошиты ключи ? Если так то подписывайте свой код иначе не запустите. Так-то да, но я делаю эксперимент на нелоченом чипе, соотв. и нелоченые бинари. Так бы вообще забил болт на это, но если идут изменения в основной проге, то ее надо переподписывать, а делает это другой чел. и не за даром, вот и решил, что лучше сделать один раз бутлодырь, подписать его, а что он будет грузить, это уже подписывать не надо... Изменено 3 августа, 2015 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба кеши которые у вас включены, вы их инвалидейтите после заливки проги? Потому что большой шанс что данные в кеше остаются, а как шина программ и данных идет фиг знает, вдруг в обход? Ну или наоборот вы их (данные) напрямую в память пихаете, а у вас не стоит флажка что кеши не актуальны, и проц лезет в них и нули читает? а подпись программы только на момент загрузки используется? а научиться самим подписывать программу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба Уже прошел Второе, бинарь грузится, в нужную область, тоже проверено. ок, значит тут подвоха нет.. Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем :crying: я не предлагаю им пользоваться постоянно, а просто рекомендую попробовать на "нормальной" плате, типа кита, след комбинацию: собираете своим ИАРом контрольный бинарник с любым примитивным функционалом и контролем успешного старта и пробуете запустить на плате с юбутом, далее вилка: - бинарник не запустился, с большой вероятностью что-то не то в самом бинарнике (адреса, выравнивание, стек) - бинарник запустился, а значит что-то вы недописали в "бутлодыре", недостающие знания можно поискать в исходниках того же юбута, в районе common/main.c и common/cmd_boot.c все, у меня идей больше нет.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_3m 9 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба Бутлодырь запускается, инициализирует уарт1, ддр, проверяет нужную область ддр на ошибки, мму, кеш,(честно говоря они тут и нафиг не нужны, но до кучи, да и работает быстрее), usdhc, прерывания и 1 таймер. Все это хозяйчтво работает, проверено на более сложных программах. Это раз. Второе, бинарь грузится, в нужную область, тоже проверено. У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска, и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее. Каким образом можно стартовать оба случая, т.е. точки входа - непонятно. Если у вас стартует бутлодырь DCD уже не нужен. DCD и остальное нужны для HAB. Точки входа ищите в скриптах линкера. Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего. Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил... MMU накрутили ? Этот ваш бутлодырь откуда взялся, кто его писал ? Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем :crying: В убуте на imx6 сд карты и сеть работают. Видимо у вас убут собран под другую борду или в конфиге все порезано например чтобы в 1 блок нанд влез. Так-то да, но я делаю эксперимент на нелоченом чипе, соотв. и нелоченые бинари. Так бы вообще забил болт на это, но если идут изменения в основной проге, то ее надо переподписывать, а делает это другой чел. и не за даром, вот и решил, что лучше сделать один раз бутлодырь, подписать его, а что он будет грузить, это уже подписывать не надо... Если вы через бутлодырь на залоченом чипе запускаете неподписанный бинарник это равносильно отключению защиты. Тогда просто ставьте несекурные чипы - с ними жить проще. Так ничего и не понял. Вы на нелоченом чипе не можете из вашего же бутлодыря запустить на исполнение бинарник ? при попытке старта бинарника что получаете ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба кеши которые у вас включены, вы их инвалидейтите после заливки проги? Потому что большой шанс что данные в кеше остаются, а как шина программ и данных идет фиг знает, вдруг в обход? Ну или наоборот вы их (данные) напрямую в память пихаете, а у вас не стоит флажка что кеши не актуальны, и проц лезет в них и нули читает? а подпись программы только на момент загрузки используется? а научиться самим подписывать программу? Я и без кэшей и мму пробовал - результат тот же. Еслиб знать, как это все подписывать, плюс проги и доку дают под NDA :laughing: В убуте на imx6 сд карты и сеть работают. Видимо у вас убут собран под другую борду или в конфиге все порезано например чтобы в 1 блок нанд влез. Наверно вам с бордой больше повезло, на моей от стартеркита, imx6s-oem стоит один разъем под сд карту, при попытке доступа пишет - "карта не вставлена"... Если вы через бутлодырь на залоченом чипе запускаете неподписанный бинарник это равносильно отключению защиты. Там все еще хитрей понаворочено, бут запускается, только, если подписан, затем берет ключ шифровки из однократных фьюзов, загружает и расшифровывает основную прогу, и запускает. данные фьюзов может прочитать только подписанная прога, через jtag нельзя - он отключен аппаратно, при прошивке кодов в чип... Этот ваш бутлодырь откуда взялся, кто его писал ? Я и писал собираете своим ИАРом контрольный бинарник с любым примитивным функционалом и контролем успешного старта и пробуете запустить на плате с юбутом, далее вилка: А если в убуте сделать go 0, он перезагрузится или повиснет? Пока нет возможности попробовать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 3 августа, 2015 Опубликовано 3 августа, 2015 (изменено) · Жалоба А если в убуте сделать go 0, он перезагрузится или повиснет? Пока нет возможности попробовать... hola-imx6s => go 0 ## Starting application at 0x00000000 ... виснет.. полагаю, что если покрутить watchdog в юбуте, то должна перегрузиться.. Наверно вам с бордой больше повезло, на моей от стартеркита, imx6s-oem стоит один разъем под сд карту, при попытке доступа пишет - "карта не вставлена"... и чтобы "два раза не вставать" (все та же hola-imx6s с самодельным дополнением): => mmc part Partition Map for MMC device 0 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 2048 65536 00000000-01 0c Boot 2 67584 16777216 00000000-02 83 3 16844800 14036992 00000000-03 83 => mmc dev 1 mmc1 is current device => mmc part Partition Map for MMC device 1 -- Partition Type: DOS Part Start Sector Num Sectors UUID Type 1 16384 65536 00000000-01 0b 2 81920 1913856 00000000-02 83 видимо у вас юбут "не туда" настроен.. Изменено 3 августа, 2015 пользователем Jury093 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 4 августа, 2015 Опубликовано 4 августа, 2015 (изменено) · Жалоба виснет.. полагаю, что если покрутить watchdog в юбуте, то должна перегрузиться.. А по идее, должен встроенный бутром запуститься :cranky: Может поэтому и моя не стартует, там какая-то хитрость есть... и чтобы "два раза не вставать" (все та же hola-imx6s с самодельным дополнением): Тут не все так просто, в холе и оем бордах, кард детекты и контроллеры разные на платах разведены, почему, это вопрос к стартеркиту... видимо у вас юбут "не туда" настроен.. Видимо да, коли сами контроллеры видит, а кард детекты "не туда" заведены... ЗЫ, наверно потом на холе придется проверять, т.к. сам не линуксовик, занимался этим давно и уже не помню, как и что там пересобирать и компилить... Да еще линукс-машина нужна. Изменено 4 августа, 2015 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndrejM 0 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска, и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее. Каким образом можно стартовать оба случая, т.е. точки входа - непонятно. Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего. Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил... а к чему эти искания? IAR (если его об ином не просить) сгородит вам в elf формате , при загрузке image прочитали в заголовке адрес точки входа (e_entry) от туда и запускайте. или в чем то другом вопрос? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться