Перейти к содержанию
    

mantech

Участник
  • Постов

    6 972
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные mantech


  1. 26 минут назад, nanorobot сказал:

    Все мои представления в корне неверны?

    Надо просто потренировать матчасть, вы что-то где-то услышали и решили, что все легко и просто, ИМХО.

  2. 24 минуты назад, nanorobot сказал:

    зачем там егон хидер?

     

    38 минут назад, mantech сказал:

    Это не обязательно, главное 1я строчка..

    Это ни о чем не говорит?  Просто использовал универсальный стартовый модуль...

  3. 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

     

  4. 2 минуты назад, nanorobot сказал:

    Нет, не работает, при загрузке и старте при помощи xfel ..

    Инит ДДР перед заливкой запускаете?

    Тогда чего вы ждете от загрузчика?? Добивайтесь, чтоб работала.

  5. 1 час назад, nanorobot сказал:

    заливаю его в исходном, рабочем виде, в чем и убедился, выводя его дамп в уарт.  Но оно всеравно не работает.

    Т.е. то, что вы заливаете, если загрузить xfel с адреса 0х40000000 и запустить с него же, работает исправно? Проверяли?

    Теперь, то, что загружается с флешки соответствует тому, что нужно, т.е. целостность файла и корректность считывания?

    1 час назад, nanorobot сказал:

    что исполнение зацикленно ходит в районе startup RTThread ..

    Не знаю, что у вас там за ртос, но вполне возможно, если все вышеуказанное проверено, то возможно некорректный инит таймера или уарта, который уже был проинициализирован в буте...

  6. 11 часов назад, x893 сказал:

    Сотовый с постоянным подключением в розетку.

    Удалённо управляете как хотите.

    Так он трафика жрет немало тоже)))

    ЗЫ. Вообще по уму тут сиделка нужна.

  7. 5 часов назад, Turgenev сказал:

    Т.е. нужно чтобы интернет трафик расходовался только в момент просмотра онлайн видео. В остальные моменты все писалось только на накопитель информации.

    Ну и? И зачем эта запись, если к ней нет оперативного доступа? Ну "учудит" там дед что-то, как вы будете просматривать эти записи? И насколько актуальны они тогда будут? Не проще соседа или соседку попросить периодически следить и звонить, если что случилось...

  8. 7 часов назад, makc сказал:

    Ок, давайте не будем ему верить и проверим. См. выше. В чём я неправ?

    Вот куда б направить все это, чтоб подобных "импортозаместителей" нахлобучили по-полной?  Хотя, о чем это я, там уже давно рука-руку моет((

    7 часов назад, novikovfb сказал:

    Миландр примерно так же обосновывал англоязычные комментарии примеров программирования своих процессоров.

    Тоже тупо паковал китайские кристаллы в свои корпуса?

  9. 2 минуты назад, sasamy сказал:

    Я не настаиваю - кому-то каждый раз новый загрузчик делать удобней

    Из-за вот этой универсальности все сложнее становится разобраться в этих деревьях зависимостей, хотя конечно, кому как...

  10. 7 минут назад, nanorobot сказал:

    Это похоже ИАР? У меня GCC

    GCC

    И я вообще не вижу, где у вас стартовый адрес указан? В ИДЕ где-то указывали?

    SECTIONS
    {

     .start    : { *(.start)    } > ROM
     .ivc      : {. = ALIGN(32); *(.ivc) *(.rodata)} > ROM
     .text     : { *(.text)     } > ROM
     .rodata   : { *(.rodata)   } > ROM
     .data     : { *(.data)     } > ROM
     

  11. 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
    }

  12. Только что, nanorobot сказал:

    Я этот пожход пытаюсь распространить и на текущий проект с Т113, модифицируя под него awboot

    А я вижу это так, есть бинарь, скомпилированный под адрес 0х40000000  и который нормально работает. После этого вы в начало этого бинаря прошиваете какую-то непонятную инфу с вашими хидерами и пр и он почему-то перестает работать? Да и с чего бы так)))))))

    Допустим, ваш хидер занимает 16 байт. Вы должны указать линкеру, что старт будет со смещением в 16 байт, а потом через секции линкера дописать ваш хидер, после этого грузить бинарь с адрема 40000000, а запускать с этого адреса+ 16...

  13. 20 минут назад, nanorobot сказал:

    1. Да, рабочий бинарь есть. Рабочим он является в том случае, если в нем НЕ размещен LOADER_HEADER ..

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

  14. 35 минут назад, nanorobot сказал:

    что нет принципиального понимания работы этого механизма

    Для начала, есть рабочий бинарь, который нормально запускается, если его через xfel загрузить и запустить?

    Если п1 есть, тогда просто запишите его на флешку, и awboot-ом грузите его с адреса, куда грузили xfel-ом, перед запуском отключите прерывания, кэш и мму и запускайте...

    38 минут назад, nanorobot сказал:

    LOADER_HEADER при загрузке через J-Link, при условии, что у меня все сделано верно?

    Пользуйтесь лучше xfel по usb, проще и понятнее, ИМХО.

  15. 14 часов назад, Ivan. сказал:

    HD качества в JPEG-е

     

    14 часов назад, Ivan. сказал:

    в среднем 50kB на кадр

    Или у вас JPEG какой-то волшебный, детализации там никакой или все на одном фоне,  или качество там будет, ммм...вообщем)))

    Ну вам виднее, если действительно 50к\кадр хватает, то СТМ с таким конечно справится...

  16. 48 минут назад, Arlleex сказал:

    Нет, я к тому,

    Понятно, а то я уж возгордиться собирался)))

    48 минут назад, Arlleex сказал:

    и это не вызывает ни у кого бурной негативной реакции.

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

×
×
  • Создать...