Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Бутлодырь на мх6 или любом кортекс А9
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
mantech
Приветствую.

Собственно, решился таки на написание собственного бутлоадера для проектов на мх6
До этого обновление программы делала сама программа, переписывая себя саму, но это не айс, как говорится, при неудачной прошивке получается кирпич и без cifmager-а и плясок с бубном работоспособность не вернуть...

Собственно вопрос, бутлодырь я гружу в статическую память, благо он не больше 128кило весом biggrin.gif
Затем поднимаю ФС, которая загружает в память бинарник прошивки с адреса 0х10000000, и как-бы его и запускать надо, да только не запускается, гад crying.gif

Может кто подскажет, какие нюансы там, у стмок просто прибавлял к адресу загрузки 4 и все норм...
ЗЫ. "Запускальщик" позаимствовал из проекта на стм.
krux
исходники grub же есть, чего вы мучаетесь?
непонятно.
mantech
Цитата(krux @ Aug 2 2015, 18:20) *
исходники grub же есть, чего вы мучаетесь?
непонятно.


Да много чего есть и убуты всякие и пр... Только вы сами-то в них разберетесь, где, что грузится и запускается?? Если да, то может закинете сюда кусочек или файло, где это есть laughing.gif
krux
хз. я вас не понимаю.
у меня в работе система, где grub проводит начальную инициализацию, lane alignment, верифицирует DDR3, после чего грузит следующий grub, который грузит astra-linux.
и мне непонятно зачем "спрямлять" этот путь.
mantech
Цитата(krux @ Aug 2 2015, 19:35) *
у меня в работе система, где grub проводит начальную инициализацию, lane alignment, верифицирует DDR3, после чего грузит следующий grub, который грузит astra-linux.


Во первых, потому, что у меня не линукс, а во вторых, загрузчик должен быть "подписан", и грузить зашифрованную прогу, которая не подписана уже, ну такая вот у них хитровывернутая защита wacko.gif
Jury093
Цитата(mantech @ Aug 2 2015, 18:17) *
Собственно вопрос, бутлодырь я гружу в статическую память, благо он не больше 128кило весом biggrin.gif
Затем поднимаю ФС, которая загружает в память бинарник прошивки с адреса 0х10000000, и как-бы его и запускать надо, да только не запускается, гад crying.gif

пройдите по шагам:
- загрузили "бутлодырь", выдали в консольный порт "я жив"
- загрузили свой бинарник в основную память (надеюсь "бутлодырь" ее проинтил)
- вывалили в ту же консоль содержимое первых и последних 16 байт, сравнили с ожидаемым содержимым
- бинарник скомпилен для запуска с нужного адреса
- бинарник при запуске первым делом пишет в консоль "я запустился"
вместо консоли подергать пином АРМа или поморгать доступной лампочкой..

как вариант ошибки - при считывание бинарника в память кладете байтовую или битовую последовательность "наоборот"
imx6 шибко наворочен, может где надо взвести разрешение на запуск из этой области памяти или подобный битовый признак (тут могу врать ибо вопрос не изучал)

у вас же д.б. система с юбутом - попробуйте на ней запустить свой бинарник вместо ядра, командой "go 0х10000000"
_3m
Цитата(mantech @ Aug 2 2015, 20:55) *
Во первых, потому, что у меня не линукс, а во вторых, загрузчик должен быть "подписан", и грузить зашифрованную прогу, которая не подписана уже, ну такая вот у них хитровывернутая защита wacko.gif

У вас что чип с включенной секурностью и прошиты ключи ?
Если так то подписывайте свой код иначе не запустите.
mantech
Цитата(Jury093 @ Aug 3 2015, 00:34) *
пройдите по шагам:


Уже прошел biggrin.gif
Бутлодырь запускается, инициализирует уарт1, ддр, проверяет нужную область ддр на ошибки, мму, кеш,(честно говоря они тут и нафиг не нужны, но до кучи, да и работает быстрее), usdhc, прерывания и 1 таймер.
Все это хозяйчтво работает, проверено на более сложных программах.
Это раз.
Второе, бинарь грузится, в нужную область, тоже проверено.

У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска,
и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее.
Каким образом можно стартовать оба случая, т.е. точки входа - непонятно.

Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего.
Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил...

Цитата(Jury093 @ Aug 3 2015, 00:34) *
у вас же д.б. система с юбутом - попробуйте на ней запустить свой бинарник вместо ядра, командой "go 0х10000000"


Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем crying.gif

Цитата(_3m @ Aug 3 2015, 08:19) *
У вас что чип с включенной секурностью и прошиты ключи ?
Если так то подписывайте свой код иначе не запустите.


Так-то да, но я делаю эксперимент на нелоченом чипе, соотв. и нелоченые бинари.
Так бы вообще забил болт на это, но если идут изменения в основной проге, то ее надо переподписывать, а делает это другой чел. и не за даром, вот и решил, что лучше сделать один раз бутлодырь, подписать его, а что он будет грузить, это уже подписывать не надо...
Golikov A.
кеши которые у вас включены, вы их инвалидейтите после заливки проги? Потому что большой шанс что данные в кеше остаются, а как шина программ и данных идет фиг знает, вдруг в обход? Ну или наоборот вы их (данные) напрямую в память пихаете, а у вас не стоит флажка что кеши не актуальны, и проц лезет в них и нули читает?

а подпись программы только на момент загрузки используется? а научиться самим подписывать программу?
Jury093
Цитата(mantech @ Aug 3 2015, 16:42) *
Уже прошел biggrin.gif
Второе, бинарь грузится, в нужную область, тоже проверено.

ок, значит тут подвоха нет..

Цитата
Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем crying.gif

я не предлагаю им пользоваться постоянно, а просто рекомендую попробовать на "нормальной" плате, типа кита, след комбинацию:
собираете своим ИАРом контрольный бинарник с любым примитивным функционалом и контролем успешного старта и пробуете запустить на плате с юбутом, далее вилка:
- бинарник не запустился, с большой вероятностью что-то не то в самом бинарнике (адреса, выравнивание, стек)
- бинарник запустился, а значит что-то вы недописали в "бутлодыре", недостающие знания можно поискать в исходниках того же юбута, в районе common/main.c и common/cmd_boot.c
все, у меня идей больше нет..
_3m
Цитата(mantech @ Aug 3 2015, 16:42) *
Бутлодырь запускается, инициализирует уарт1, ддр, проверяет нужную область ддр на ошибки, мму, кеш,(честно говоря они тут и нафиг не нужны, но до кучи, да и работает быстрее), usdhc, прерывания и 1 таймер.
Все это хозяйчтво работает, проверено на более сложных программах.
Это раз.
Второе, бинарь грузится, в нужную область, тоже проверено.
У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска,
и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее.
Каким образом можно стартовать оба случая, т.е. точки входа - непонятно.

Если у вас стартует бутлодырь DCD уже не нужен. DCD и остальное нужны для HAB.
Точки входа ищите в скриптах линкера.
Цитата
Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего.
Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил...

MMU накрутили ?
Этот ваш бутлодырь откуда взялся, кто его писал ?


Цитата
Ой, про этот убут лучше не говорите, там пробовал, даже интерфейсы сд-карт не работают, усб и подавно, а паять сетевые разъемы, чтоб всякие фтп поднимать... Вообщем не то совсем crying.gif

В убуте на imx6 сд карты и сеть работают. Видимо у вас убут собран под другую борду или в конфиге все порезано например чтобы в 1 блок нанд влез.

Цитата
Так-то да, но я делаю эксперимент на нелоченом чипе, соотв. и нелоченые бинари.
Так бы вообще забил болт на это, но если идут изменения в основной проге, то ее надо переподписывать, а делает это другой чел. и не за даром, вот и решил, что лучше сделать один раз бутлодырь, подписать его, а что он будет грузить, это уже подписывать не надо...

Если вы через бутлодырь на залоченом чипе запускаете неподписанный бинарник это равносильно отключению защиты.
Тогда просто ставьте несекурные чипы - с ними жить проще.
Так ничего и не понял. Вы на нелоченом чипе не можете из вашего же бутлодыря запустить на исполнение бинарник ?
при попытке старта бинарника что получаете ?
mantech
Цитата(Golikov A. @ Aug 3 2015, 19:41) *
кеши которые у вас включены, вы их инвалидейтите после заливки проги? Потому что большой шанс что данные в кеше остаются, а как шина программ и данных идет фиг знает, вдруг в обход? Ну или наоборот вы их (данные) напрямую в память пихаете, а у вас не стоит флажка что кеши не актуальны, и проц лезет в них и нули читает?

а подпись программы только на момент загрузки используется? а научиться самим подписывать программу?


Я и без кэшей и мму пробовал - результат тот же.

Еслиб знать, как это все подписывать, плюс проги и доку дают под NDA laughing.gif

Цитата(_3m @ Aug 3 2015, 21:04) *
В убуте на imx6 сд карты и сеть работают. Видимо у вас убут собран под другую борду или в конфиге все порезано например чтобы в 1 блок нанд влез.


Наверно вам с бордой больше повезло, на моей от стартеркита, imx6s-oem стоит один разъем под сд карту, при попытке доступа пишет - "карта не вставлена"...


Цитата(_3m @ Aug 3 2015, 21:04) *
Если вы через бутлодырь на залоченом чипе запускаете неподписанный бинарник это равносильно отключению защиты.


Там все еще хитрей понаворочено, бут запускается, только, если подписан, затем берет ключ шифровки из однократных фьюзов, загружает и расшифровывает основную прогу, и запускает.

данные фьюзов может прочитать только подписанная прога, через jtag нельзя - он отключен аппаратно, при прошивке кодов в чип...

Цитата(_3m @ Aug 3 2015, 21:04) *
Этот ваш бутлодырь откуда взялся, кто его писал ?


Я и писал biggrin.gif

Цитата(Jury093 @ Aug 3 2015, 20:16) *
собираете своим ИАРом контрольный бинарник с любым примитивным функционалом и контролем успешного старта и пробуете запустить на плате с юбутом, далее вилка:


А если в убуте сделать go 0, он перезагрузится или повиснет? Пока нет возможности попробовать...
Jury093
Цитата(mantech @ Aug 3 2015, 22:03) *
А если в убуте сделать go 0, он перезагрузится или повиснет? Пока нет возможности попробовать...

hola-imx6s
Код
=> go 0
## Starting application at 0x00000000 ...

виснет..
полагаю, что если покрутить watchdog в юбуте, то должна перегрузиться..

Цитата(mantech @ Aug 3 2015, 22:03) *
Наверно вам с бордой больше повезло, на моей от стартеркита, 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


видимо у вас юбут "не туда" настроен..
mantech
Цитата(Jury093 @ Aug 3 2015, 23:02) *
виснет..
полагаю, что если покрутить watchdog в юбуте, то должна перегрузиться..


А по идее, должен встроенный бутром запуститься cranky.gif

Может поэтому и моя не стартует, там какая-то хитрость есть...

Цитата(Jury093 @ Aug 3 2015, 23:02) *
и чтобы "два раза не вставать" (все та же hola-imx6s с самодельным дополнением):


Тут не все так просто, в холе и оем бордах, кард детекты и контроллеры разные на платах разведены, почему, это вопрос к стартеркиту...

Цитата(Jury093 @ Aug 3 2015, 23:02) *
видимо у вас юбут "не туда" настроен..

Видимо да, коли сами контроллеры видит, а кард детекты "не туда" заведены...
ЗЫ, наверно потом на холе придется проверять, т.к. сам не линуксовик, занимался этим давно и уже не помню, как и что там пересобирать и компилить... Да еще линукс-машина нужна.
AndrejM
Цитата(mantech @ Aug 3 2015, 17:42) *
У меня подозрение на 2 вещи: 1) с какого адреса нужно делать запуск и правильность процедуры запуска,
и второе, ИАР компилит бинарник либо со встроенной загрузочной записью (IVT, DCD и т.д.) либо без нее.
Каким образом можно стартовать оба случая, т.е. точки входа - непонятно.

Пытался с 0 адреса(по оффсету, конечно), +4, как в стм, и +20, как в вибриде - ничего.
Потом попробовал просто перейти на 0й адрес, по идее, там должен бутром стартануть, но тоже нет, что за магия такая??? Вот тут бы кто разъяснил...


а к чему эти искания? IAR (если его об ином не просить) сгородит вам в elf формате , при загрузке image прочитали в заголовке адрес точки входа (e_entry) от туда и запускайте. или в чем то другом вопрос?
mantech
Цитата(AndrejM @ Aug 4 2015, 10:55) *
а к чему эти искания? IAR (если его об ином не просить) сгородит вам в elf формате , при загрузке image прочитали в заголовке адрес точки входа (e_entry) от туда и запускайте. или в чем то другом вопрос?


Никогда не имел дел с этим форматом, поэтому ничего сказать не могу, когда-то он мне показался сильно навороченным... Соотв, где там брать точки входа - без понятия...
Мне все-таки интересно, почему встроенный бут не пускается? Стек и вектора прерываний, если не изменяет память, настраиваются уже после запуска проги по точке входа.
AndrejM
извиняюсь , наврал я вам . это я так хотел сделать , но не получилось . в итоге выходной файл IAR в формате binary , и запуск с адреса загрузки , там reset vector
__vector:
ARM

LDR PC,Reset_Addr ; Reset

DATA

Reset_Addr: DCD __iar_program_start


map
__vector 0x80000000 Code Gb cstartup.o
mantech
Цитата(AndrejM @ Aug 4 2015, 14:20) *
там reset vector


Т.е. я правильно понимаю, чтоб мне перезапустить собственный бутлодырь, который уже запущен (для проверки, конечно), я должен перейти в нем-же на адрес "__iar_program_start"?? Я пробовал, не стартует, причем перед этим блокировал прерывания, на всякий...
AndrejM
Вам собственный бутлоадер нужно перезапускать? я то понял что он у вас отработал и с запуском приложения проблема?
mantech
Цитата(AndrejM @ Aug 4 2015, 18:48) *
Вам собственный бутлоадер нужно перезапускать?


Нет, конечно biggrin.gif Я написал, что для теста...Ну хоть с чего-то надо начинать. Проверить, где искать точку входа, пусть пока в том, что уже запущено, а потом можно уже и к основной проге переходить, логично?
Jury093
Цитата(mantech @ Aug 4 2015, 19:29) *
Нет, конечно biggrin.gif Я написал, что для теста...Ну хоть с чего-то надо начинать. Проверить, где искать точку входа, пусть пока в том, что уже запущено, а потом можно уже и к основной проге переходить, логично?

вот вам архив:
http://files.webfile.ru/ba7bcc6254723e13c3bc79d6647197f7
внутри сделанный из юбутовского примера бинарник скомпиленный для стендалона
голый мейн, войти и сразу выйти..
работа на холе:
Код
=> tftpboot 10000000 hello_world.bin
Using FEC device
TFTP from server 192.168.0.2; our IP address is 192.168.0.136
Filename 'hello_world.bin'.
Load address: 0x10000000
Loading: #
         134.8 KiB/s
done
Bytes transferred = 276 (114 hex)
=> go 10000000
## Starting application at 0x10000000 ...
## Application terminated, rc = 0x0
##

если добавить выхлоп printf("что угодно");
то вылет:
CODE
=> tftpboot 12000000 hello_world.bin
Using FEC device
TFTP from server 192.168.0.2; our IP address is 192.168.0.136
Filename 'hello_world.bin'.
Load address: 0x12000000
Loading: #
297.9 KiB/s
done
Bytes transferred = 305 (131 hex)
=> go 12000000
## Starting application at 0x12000000 ...
data abort

MAYBE you should read doc/README.arm-unaligned-accesses

pc : [<12000048>] lr : [<1200000c>]
sp : 2f57be10 ip : 0000000f fp : 00000000
r10: 2ffbab2c r9 : 2f57bf38 r8 : 00000002
r7 : 2f706ae8 r6 : 12000000 r5 : 00000002 r4 : 2f706aec
r3 : 12000000 r2 : 2f706aec r1 : 2f706aec r0 : 12000124
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
resetting ...


U-Boot 2013.10 (Jan 18 2015 - 22:05:09)

CPU: Freescale i.MX6SOLO rev1.1 at 792 MHz
Reset cause: WDOG

при рассмотрение видно, что добавление функции printf увеличивает бинарник на ~100 байт, хотя по моим предположениям должно добавить не менее 10кБ.
как версия, printf может использовать вызовы функций из юбута, но для сборки под фрискейл что-то не учли - мне разбираться лень..

берете мой *.bin и скармливаете своему "бутлодырю", а там поглядим..

зы примеры лежат в исходниках любого юбута examples/standalone
mantech
Цитата(Jury093 @ Aug 4 2015, 21:57) *
берете мой *.bin и скармливаете своему "бутлодырю", а там поглядим..

Т.к. он при запуске ничего вообще не делает, как я пойму, что он запустился, а не просто повис?
Jury093
Цитата(mantech @ Aug 4 2015, 22:07) *
Т.к. он при запуске ничего вообще не делает, как я пойму, что он запустился, а не просто повис?

у вас что, "бутлодырь" партизан?
Цитата
Бутлодырь запускается, инициализирует уарт1

пусть после запуска бинарника и успешного возвращения управления скажет "гав!" в uart1..
ну а если завис, то "гав!" пусть не говорит sm.gif
_3m
Цитата(mantech @ Aug 4 2015, 22:07) *
Т.к. он при запуске ничего вообще не делает, как я пойму, что он запустился, а не просто повис?

Через jtag.
Если совсем ничего не работает придется подключать тяжелую артиллерию.
AndrejM
mantech , а как вы сейчас (ну до того как "бутлодырем" занялись) грузите и запускаете приложение?
mantech
Цитата(_3m @ Aug 4 2015, 22:49) *
Через jtag.
Если совсем ничего не работает придется подключать тяжелую артиллерию.


А вы шутник, однако! Хоть на одной из плат на мх6 у стартера, вы жтаг видели? biggrin.gif

Цитата(Jury093 @ Aug 4 2015, 22:11) *
у вас что, "бутлодырь" партизан?

пусть после запуска бинарника и успешного возвращения управления скажет "гав!" в uart1..
ну а если завис, то "гав!" пусть не говорит sm.gif


А вот это дельное замечание, че-то не додумался об этом, спасибо! cool.gif
_3m
Цитата(mantech @ Aug 5 2015, 09:21) *
А вы шутник, однако! Хоть на одной из плат на мх6 у стартера, вы жтаг видели?

Я не использую платы стартеркит именно по причине их системной убогости.
В первичных макетах всех изделий jtag закладываю в обязательном порядке именно на случай "когда ничего не работает". В последующих ревизиях его выкидываю.

без jtag вам нужно
* в бутолоадере осуществлять перехват всех исключений с выдачей диагностики
* тестовый бинарник создавать в режиме позиционно-независимого кода.

mantech
Цитата(_3m @ Aug 5 2015, 10:27) *
В первичных макетах всех изделий jtag закладываю в обязательном порядке именно на случай "когда ничего не работает". В последующих ревизиях его выкидываю.


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

Цитата(AndrejM @ Aug 5 2015, 08:17) *
mantech , а как вы сейчас (ну до того как "бутлодырем" занялись) грузите и запускаете приложение?


Как и полагается, иару подсовываю dcd-записи, затем cfimager-ом прошиваю сд-карту и в путь biggrin.gif
mantech
Цитата(Jury093 @ Aug 4 2015, 22:11) *
пусть после запуска бинарника и успешного возвращения управления скажет "гав!" в uart1..
ну а если завис, то "гав!" пусть не говорит sm.gif


К сожалению висит, причем намертво

CODE
Debug port init as: UART1

DDR Checking... Done.
SD/MMC1: Init...
F: SD/MMC: Ok
Filesystem: FAT32
Loading <F:hello_world.bin>...Read 276 bytes OK
Dump at 0x10000000 in DDR
[00]=0xE3A00000, [04]=0xE12FFF1E, [08]=0xE598C058, [0C]=0xE59CF000,
[10]=0xE598C058, [14]=0xE59CF004, [18]=0xE598C058, [1C]=0xE59CF008,
[20]=0xE598C058, [24]=0xE59CF00C, [28]=0xE598C058, [2C]=0xE59CF010,
[30]=0xE598C058, [34]=0xE59CF014, [38]=0xE598C058, [3C]=0xE59CF018,
[40]=0xE598C058, [44]=0xE59CF01C, [48]=0xE598C058, [4C]=0xE59CF020,
[50]=0xE598C058, [54]=0xE59CF024, [58]=0xE598C058, [5C]=0xE59CF028,
[60]=0xE598C058, [64]=0xE59CF02C, [68]=0xE598C058, [6C]=0xE59CF030,
[70]=0xE598C058, [74]=0xE59CF034, [78]=0xE598C058, [7C]=0xE59CF038,
[80]=0xE598C058, [84]=0xE59CF03C, [88]=0xE598C058, [8C]=0xE59CF040,
[90]=0xE598C058, [94]=0xE59CF044, [98]=0xE598C058, [9C]=0xE59CF048,
[A0]=0xE598C058, [A4]=0xE59CF04C, [A8]=0xE598C058, [AC]=0xE59CF050,
[B0]=0xE598C058, [B4]=0xE59CF054, [B8]=0xE598C058, [BC]=0xE59CF058,
[C0]=0xE598C058, [C4]=0xE59CF05C, [C8]=0xE598C058, [CC]=0xE59CF060,
[D0]=0xE598C058, [D4]=0xE59CF064, [D8]=0xE598C058, [DC]=0xE59CF068,
[E0]=0xE598C058, [E4]=0xE59CF06C, [E8]=0xE12FFF1E, [EC]=0xE59F3018,
[F0]=0xE3A01000, [F4]=0xE59F2014, [F8]=0xEA000000, [FC]=0xE4C31001,
[100]=0xE1530002, [104]=0x3AFFFFFC, [108]=0xE12FFF1E, [10C]=0x10008114,
[110]=0x10008114, [114]=0x00, [118]=0x00, [11C]=0x00,
Startup...



Процедура запуска -

CODE
#define A5FW_BASE 0x10000000

typedef void (*pFunction)(void);

pFunction Jump_To_Application;
uint32_t JumpAddress;

uint32_t _boot_addr;

void bootloader_boot(void)
{
_boot_addr=A5FW_BASE;
__disable_interrupt();
/* Jump to user application */
JumpAddress = *( uint32_t*) (_boot_addr);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
// __set_MSP(*(__IO uint32_t*) _boot_addr);
Jump_To_Application();
}



Что еще делать - пока без понятия...
_3m
Цитата(mantech @ Aug 12 2015, 15:05) *
К сожалению висит, причем намертво

Ну я уже писал что надо перехватывать исключения.


Цитата
Процедура запуска -
...
Что еще делать - пока без понятия...

Давайте ассемблерный листинг процедуры запуска.
Попробуйте так: запускаемый бинарник пусть ничего не делает а сразу возвращается.
Бутлоадер переделайте чтобы после возврата из запускаемой функции он выдавал сообщение.
Если и так не заработает - ищите плату с работающим jtag.

Еще стоит вернуться к запуску из uboot.
Он может грузить бинарник даже через уарт. Ну в крайнем случае набьете десяток байт с консоли.
mantech
Цитата(_3m @ Aug 13 2015, 08:50) *
Если и так не заработает - ищите плату с работающим jtag.


Я столько не зарабатываю biggrin.gif
Шутка, но считаю, что пока не стоит оно того...

Цитата(_3m @ Aug 13 2015, 08:50) *
Еще стоит вернуться к запуску из uboot.
Он может грузить бинарник даже через уарт. Ну в крайнем случае набьете десяток байт с консоли.


А что мне это даст? Ну запускается он, допустим в убуте, мне от этого ни тепло ни холодно, мне надо, чтоб мой бутлодырь его запускал. Если только выковыривать процедуру запуска из убута, но это очень тяжело в виду того, как тот написан...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.