![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
mantech
-
Постов
6 972 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные mantech
-
-
16 минут назад, novikovfb сказал:
"в цепь 3,3 В поставили транзисторы на 1,8 В" и "перепутали выводы",
Да, это просто ЖЕСТЬ!
-
1 минуту назад, nanorobot сказал:
Ну JLink использует другой файл - ELF, который суть то же самое плюс отладочная информация
Посмотрите поля эльфа для начала...
-
26 минут назад, nanorobot сказал:
Все мои представления в корне неверны?
Надо просто потренировать матчасть, вы что-то где-то услышали и решили, что все легко и просто, ИМХО.
-
24 минуты назад, nanorobot сказал:
зачем там егон хидер?
38 минут назад, mantech сказал:Это не обязательно, главное 1я строчка..
Это ни о чем не говорит? Просто использовал универсальный стартовый модуль...
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
6 минут назад, nanorobot сказал:да, именно так.
По адресу 0x40000000 примерно так идет-
void __attribute__((section(".start"))) __attribute__((naked)) start(void)
{
asm volatile (
"b Entry \n" //Jump to Entry (init.S)
".long 0x4E4F4765\n" //eGON
".long 0x3054422E\n" //.BT0
".long 0x00000000\n" //checksum for boot0 (must be calculated !!!)
".long 0x00008000\n" //length for boot0 (32 kB)
".long 0x00000000\n"
".long 0x00000000\n"
".long 0x00000000\n"
);
}
".long 0x4E4F4765\n" //eGON
".long 0x3054422E\n" //.BT0
".long 0x00000000\n" //checksum for boot0 (must be calculated !!!)
".long 0x00008000\n" //length for boot0 (32 kB)Это не обязательно, главное 1я строчка..
Entry: MRC p15, 0, r0, c1, c0, 0 @ Read CP15 System Control register BIC r0, r0, #(0x1 << 12) @ Clear I bit 12 to disable I Cache BIC r0, r0, #(0x1 << 2) @ Clear C bit 2 to disable D Cache BIC r0, r0, #0x1 @ Clear M bit 0 to disable MMU BIC r0, r0, #(0x1 << 11) @ Clear Z bit 11 to disable branch prediction MCR p15, 0, r0, c1, c0, 0 @ Write value back to CP15 System Control register MOV r0,#0 MCR p15, 0, r0, c8, c7, 0 @ I-TLB and D-TLB invalidation MCR p15, 0, r0, c7, c5, 6 @ BPIALL - Invalidate entire branch predictor array LDR r0, =_stack @ Read the stack address MSR cpsr_c, #MODE_UND|I_F_BIT @ switch to undef mode MOV sp,r0 @ write the stack pointer SUB r0, r0, #UND_STACK_SIZE @ give stack space MSR cpsr_c, #MODE_ABT|I_F_BIT @ Change to abort mode MOV sp, r0 @ write the stack pointer SUB r0,r0, #ABT_STACK_SIZE @ give stack space MSR cpsr_c, #MODE_FIQ|I_F_BIT @ change to FIQ mode MOV sp,r0 @ write the stack pointer SUB r0,r0, #FIQ_STACK_SIZE @ give stack space MSR cpsr_c, #MODE_IRQ|I_F_BIT @ change to IRQ mode MOV sp,r0 @ write the stack pointer SUB r0,r0, #IRQ_STACK_SIZE @ give stack space MSR cpsr_c, #MODE_SVC|I_F_BIT @ change to SVC mode MOV sp,r0 @ write the stack pointer SUB r0,r0, #SVC_STACK_SIZE @ give stack space MSR cpsr_c, #MODE_SYS|I_F_BIT @ change to system mode MOV sp,r0 @ write the stack pointer MOV r0, #0 @ Invalidate and Enable Branch Prediction MCR p15, #0, r0, c7, c5, #6 ISB MRC p15, #0, r0, c1, c0, #0 ORR r0, r0, #0x00000800 MCR p15, #0, r0, c1, c0, #0 MRC p15, #0, r1, c1, c0, #2 @ r1 = Access Control Register ORR r1, r1, #(0xf << 20) @ enable full access for p10,11 MCR p15, #0, r1, c1, c0, #2 @ Access Control Register = r1 MOV r1, #0 MCR p15, #0, r1, c7, c5, #4 @flush prefetch buffer MOV r0,#0x40000000 FMXR FPEXC, r0 @ Set Neon/VFP Enable bit LDR r10,=libc_init MOV lr,pc @ Dummy return from start_boot BX r10 @ Branch to start_boot SUB pc, pc, #0x08 @ looping
-
14 минут назад, nanorobot сказал:
да, запускаю, само собой.
Таким образом -
xfel ddr t113-s3
xfel write 0x40000000 main.bin
xfel exec 0x40000000
main.bin - ваш бинарник
-
2 минуты назад, nanorobot сказал:
Нет, не работает, при загрузке и старте при помощи xfel ..
Инит ДДР перед заливкой запускаете?
Тогда чего вы ждете от загрузчика?? Добивайтесь, чтоб работала.
-
1 час назад, nanorobot сказал:
заливаю его в исходном, рабочем виде, в чем и убедился, выводя его дамп в уарт. Но оно всеравно не работает.
Т.е. то, что вы заливаете, если загрузить xfel с адреса 0х40000000 и запустить с него же, работает исправно? Проверяли?
Теперь, то, что загружается с флешки соответствует тому, что нужно, т.е. целостность файла и корректность считывания?
1 час назад, nanorobot сказал:что исполнение зацикленно ходит в районе startup RTThread ..
Не знаю, что у вас там за ртос, но вполне возможно, если все вышеуказанное проверено, то возможно некорректный инит таймера или уарта, который уже был проинициализирован в буте...
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
11 часов назад, x893 сказал:Сотовый с постоянным подключением в розетку.
Удалённо управляете как хотите.
Так он трафика жрет немало тоже)))
ЗЫ. Вообще по уму тут сиделка нужна.
-
5 часов назад, Turgenev сказал:
Т.е. нужно чтобы интернет трафик расходовался только в момент просмотра онлайн видео. В остальные моменты все писалось только на накопитель информации.
Ну и? И зачем эта запись, если к ней нет оперативного доступа? Ну "учудит" там дед что-то, как вы будете просматривать эти записи? И насколько актуальны они тогда будут? Не проще соседа или соседку попросить периодически следить и звонить, если что случилось...
-
42 минуты назад, A.V.Avtomat сказал:
Ту же ATmega128 можно накрыть сверху их большим металлокерамическим корпусом.
Прикольно
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
7 часов назад, makc сказал:Ок, давайте не будем ему верить и проверим. См. выше. В чём я неправ?
Вот куда б направить все это, чтоб подобных "импортозаместителей" нахлобучили по-полной? Хотя, о чем это я, там уже давно рука-руку моет((
7 часов назад, novikovfb сказал:Миландр примерно так же обосновывал англоязычные комментарии примеров программирования своих процессоров.
Тоже тупо паковал китайские кристаллы в свои корпуса?
-
2 минуты назад, sasamy сказал:
Я не настаиваю - кому-то каждый раз новый загрузчик делать удобней
Из-за вот этой универсальности все сложнее становится разобраться в этих деревьях зависимостей, хотя конечно, кому как...
-
7 минут назад, sasamy сказал:
Да уж... У меня к счастью все куда проще...
-
1 минуту назад, sasamy сказал:
если делать в eclipse то наверно
Да, именно там и делаю. Где ТС делает - х.з.
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
7 минут назад, nanorobot сказал:Это похоже ИАР? У меня GCC
GCC
И я вообще не вижу, где у вас стартовый адрес указан? В ИДЕ где-то указывали?
SECTIONS
{.start : { *(.start) } > ROM
.ivc : {. = ALIGN(32); *(.ivc) *(.rodata)} > ROM
.text : { *(.text) } > ROM
.rodata : { *(.rodata) } > ROM
.data : { *(.data) } > ROM
-
2 минуты назад, sasamy сказал:
может взять u-boot и грузить elf ?
ИМХО, это заметно сложнее, чем сделать смещение...
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
3 минуты назад, nanorobot сказал:С линкером отношения не складываютя ..
START_ADDR = 0x40000000 ; /* Entry Point */
Здесь сложно прибавить размер хидера?START_ADDR = 0x40000000 ; /* Entry Point */
ROM_SIZE = 512K ; /* Size of "Read-Only" Data */
RAM_SIZE = 2M ; /* Size of Static R/W Data */
HEAP_SIZE = 21M ; /* Heap Size */
STACK_SIZE = 512K ; /* Stack Size */ROM_BASE = START_ADDR ;
RAM_BASE = ROM_BASE + ROM_SIZE ;
HEAP_BASE = RAM_BASE + RAM_SIZE ;
STACK_BASE = HEAP_BASE + HEAP_SIZE ;ENTRY(start)
MEMORY
{
ROM (RX) : ORIGIN = ROM_BASE , LENGTH = ROM_SIZE
RAM (RW) : ORIGIN = RAM_BASE , LENGTH = RAM_SIZE
HEAP (RW) : ORIGIN = HEAP_BASE , LENGTH = HEAP_SIZE
STACK (RW) : ORIGIN = STACK_BASE , LENGTH = STACK_SIZE
} -
Только что, nanorobot сказал:
Я этот пожход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot
А я вижу это так, есть бинарь, скомпилированный под адрес 0х40000000 и который нормально работает. После этого вы в начало этого бинаря прошиваете какую-то непонятную инфу с вашими хидерами и пр и он почему-то перестает работать? Да и с чего бы так)))))))
Допустим, ваш хидер занимает 16 байт. Вы должны указать линкеру, что старт будет со смещением в 16 байт, а потом через секции линкера дописать ваш хидер, после этого грузить бинарь с адрема 40000000, а запускать с этого адреса+ 16...
-
20 минут назад, nanorobot сказал:
1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER ..
Тогда не понял что вы хотите, вам нужно просто добавить к загружаемому бинарю N байт под какую-то служебную инфу?
-
35 минут назад, nanorobot сказал:
что нет принципиального понимания работы этого механизма
Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить?
Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте...
38 минут назад, nanorobot сказал:LOADER_HEADER при загрузке через J-Link, при условии, что у меня все сделано верно?
Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО.
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
14 часов назад, Ivan. сказал:HD качества в JPEG-е
14 часов назад, Ivan. сказал:в среднем 50kB на кадр
Или у вас JPEG какой-то волшебный, детализации там никакой или все на одном фоне, или качество там будет, ммм...вообщем)))
Ну вам виднее, если действительно 50к\кадр хватает, то СТМ с таким конечно справится...
-
1 час назад, makc сказал:
Удивительно, когда и главное зачем они успели перевести 1000 с лишним страниц руководства на английский язык?
Да уж, и впрямь удивительно)))
-
Опубликовано · Изменено пользователем mantech · Пожаловаться
48 минут назад, Arlleex сказал:Нет, я к тому,
Понятно, а то я уж возгордиться собирался)))
48 минут назад, Arlleex сказал:и это не вызывает ни у кого бурной негативной реакции.
Это не вызывает, т.к. они не называют это импортозамещением с выделением кучи бабла, т.к. там за подобное можно к стеночке встать или, если повезет, на урановые или какие там у них бывают, рудники, а нам предлагают понять и простить...
Что под капотом у НИИЭТ К1921ВК01Т2 (GD32F4xx?)
в ARM
Опубликовано · Изменено пользователем mantech · Пожаловаться
Ну да, ну да...