реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Бутлодырь на мх6 или любом кортекс А9, загрузка и передача управления проге
mantech
сообщение Aug 4 2015, 11:05
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



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


Никогда не имел дел с этим форматом, поэтому ничего сказать не могу, когда-то он мне показался сильно навороченным... Соотв, где там брать точки входа - без понятия...
Мне все-таки интересно, почему встроенный бут не пускается? Стек и вектора прерываний, если не изменяет память, настраиваются уже после запуска проги по точке входа.
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Aug 4 2015, 11:20
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



извиняюсь , наврал я вам . это я так хотел сделать , но не получилось . в итоге выходной файл 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
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 4 2015, 14:09
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(AndrejM @ Aug 4 2015, 14:20) *
там reset vector


Т.е. я правильно понимаю, чтоб мне перезапустить собственный бутлодырь, который уже запущен (для проверки, конечно), я должен перейти в нем-же на адрес "__iar_program_start"?? Я пробовал, не стартует, причем перед этим блокировал прерывания, на всякий...
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Aug 4 2015, 15:48
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



Вам собственный бутлоадер нужно перезапускать? я то понял что он у вас отработал и с запуском приложения проблема?
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 4 2015, 16:29
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(AndrejM @ Aug 4 2015, 18:48) *
Вам собственный бутлоадер нужно перезапускать?


Нет, конечно biggrin.gif Я написал, что для теста...Ну хоть с чего-то надо начинать. Проверить, где искать точку входа, пусть пока в том, что уже запущено, а потом можно уже и к основной проге переходить, логично?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 4 2015, 18:57
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 4 2015, 19:07
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



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

Т.к. он при запуске ничего вообще не делает, как я пойму, что он запустился, а не просто повис?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 4 2015, 19:11
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



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

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

пусть после запуска бинарника и успешного возвращения управления скажет "гав!" в uart1..
ну а если завис, то "гав!" пусть не говорит sm.gif
Go to the top of the page
 
+Quote Post
_3m
сообщение Aug 4 2015, 19:49
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



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

Через jtag.
Если совсем ничего не работает придется подключать тяжелую артиллерию.
Go to the top of the page
 
+Quote Post
AndrejM
сообщение Aug 5 2015, 05:17
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 20-11-13
Пользователь №: 79 278



mantech , а как вы сейчас (ну до того как "бутлодырем" занялись) грузите и запускаете приложение?
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 5 2015, 06:21
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



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


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

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

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


А вот это дельное замечание, че-то не додумался об этом, спасибо! cool.gif
Go to the top of the page
 
+Quote Post
_3m
сообщение Aug 5 2015, 07:27
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



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

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

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

Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 5 2015, 14:32
Сообщение #28


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



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


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

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


Как и полагается, иару подсовываю dcd-записи, затем cfimager-ом прошиваю сд-карту и в путь biggrin.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 12 2015, 12:05
Сообщение #29


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(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();
}



Что еще делать - пока без понятия...
Go to the top of the page
 
+Quote Post
_3m
сообщение Aug 13 2015, 05:50
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(mantech @ Aug 12 2015, 15:05) *
К сожалению висит, причем намертво

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


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

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

Еще стоит вернуться к запуску из uboot.
Он может грузить бинарник даже через уарт. Ну в крайнем случае набьете десяток байт с консоли.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01472 секунд с 7
ELECTRONIX ©2004-2016