|
Опять про загрузчик..., Не получается передать управление. |
|
|
|
Apr 9 2008, 07:05
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305

|
Перечитал все что нашел, по этой теме - так и не дошло в чем проблема. Итак. Написан загрузчик - все пишется, все обновляется, но не получается передать управление на основную программу. Ремаплю-передаю вот так: Код MEMMAP = 2; //Map vector table from RAM // Copy vectors table src = (unsigned long *)START_ADDR; dst = (unsigned long *)0x00000000; size = 0x40 / sizeof(*dst); do { *dst++ = *src++; } while (--size);
//Reset controller ((void(*)(void))(0x00000000))(); Смотрю в симуляторе, все ремапится, но после перехода на 0 получаю вот это: *** error 65: access violation at 0x00000000 : no 'execute/read' permission Загрузчик линкуется вот так: Код ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; *************************************************************
LR_IROM1 0x00000000 0x00020000 { ; load region size_region ER_IROM1 0x00000000 0x00020000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x40000040 0x0000FFC0 { ; RW data .ANY (+RW +ZI) } } Основной модуль вот так: Код ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; *************************************************************
LR_IROM1 0x00006000 0x0001A000 { ; load region size_region ER_IROM1 0x00006000 0x0001A000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x40000000 0x00010000 { ; RW data .ANY (+RW +ZI) } } В связи с этим вопросы: 1. Что не так делаю? 2. Как надо компилить-линковать основной модуль и загрузчик по расположению в памяти?
|
|
|
|
|
 |
Ответов
|
Apr 9 2008, 07:28
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305

|
Цитата(aaarrr @ Apr 9 2008, 11:24)  Не знаю, как оформлены вектора в основной программе, но такой простой перенос не заработает, если reset вектор сделан как relative branch. Да никак особо не оформлял. Стартап по умолчанию, который Кейл предлагает. если передавать управление на основной модуль - в данном случае на 0х6000, то в симуляторе все работает и без ремапа. Но вот на железе - нет.
|
|
|
|
|
Apr 9 2008, 07:41
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(EXeGLuMATOR @ Apr 9 2008, 11:28)  Стартап по умолчанию, который Кейл предлагает. Стартап по умолчанию скорее всего выглядит примерно так: Код b reset ; Reset b xxx ; Undefined instruction b xxx ; Software interrupt b xxx ; Prefetch abort b xxx ; Data abort DCD xxx ; reserved b xxx ; IRQ b xxx ; FIQ
reset ... После копирования векторов из 0x6000 в 0x00 команда b reset будет посылать процессор оч. далеко. Пишите свой стартап.
|
|
|
|
|
Apr 9 2008, 07:51
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305

|
Цитата(aaarrr @ Apr 9 2008, 11:41)  После копирования векторов из 0x6000 в 0x00 команда b reset будет посылать процессор оч. далеко. Пишите свой стартап. Стартап вот такой: Код ; Area Definition and Entry Point ; Startup Code must be linked first at Address at which it expects to run.
AREA RESET, CODE, READONLY ARM
; Exception Vectors ; Mapped to Address 0. ; Absolute addressing mode must be used. ; Dummy Handlers are implemented as infinite loops which can be modified.
Vectors LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, PAbt_Addr LDR PC, DAbt_Addr NOP ; Reserved Vector ; LDR PC, IRQ_Addr LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr LDR PC, FIQ_Addr
Reset_Addr DCD Reset_Handler Undef_Addr DCD Undef_Handler SWI_Addr DCD SWI_Handler PAbt_Addr DCD PAbt_Handler DAbt_Addr DCD DAbt_Handler DCD 0 ; Reserved Address IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler
Undef_Handler B Undef_Handler SWI_Handler B SWI_Handler PAbt_Handler B PAbt_Handler DAbt_Handler B DAbt_Handler IRQ_Handler B IRQ_Handler FIQ_Handler B FIQ_Handler
; Reset Handler
EXPORT Reset_Handler Reset_Handler Знать-бы еще как его написать.
|
|
|
|
Сообщений в этой теме
EXeGLuMATOR Опять про загрузчик... Apr 9 2008, 07:05    aaarrr Цитата(EXeGLuMATOR @ Apr 9 2008, 11:51) С... Apr 9 2008, 08:00 EXeGLuMATOR То что лежит в 64 байтах от адреса 0х6000 переноси... Apr 9 2008, 08:26 aaarrr Цитата(EXeGLuMATOR @ Apr 9 2008, 12:26) п... Apr 9 2008, 08:32 EXeGLuMATOR Может что не так скомпилировано? Не по тем адресам... Apr 9 2008, 09:21 aaarrr Цитата(EXeGLuMATOR @ Apr 9 2008, 13:21) М... Apr 9 2008, 09:28 EXeGLuMATOR Тогда не понятно в чем проблема. Ладно-бы симуля... Apr 9 2008, 10:01 EXeGLuMATOR Глас вопиющего в пустыне.
Все делают подобные про... Apr 11 2008, 07:51 Сергей Борщ Цитата(EXeGLuMATOR @ Apr 11 2008, 10:51) ... Apr 11 2008, 09:56 amw Цитата(EXeGLuMATOR @ Apr 11 2008, 10:51) ... Apr 11 2008, 10:50 EXeGLuMATOR да, сорри забыл сказать. камень LPC2106. Память и... Apr 11 2008, 19:10 amw Цитата(EXeGLuMATOR @ Apr 11 2008, 22:10) ... Apr 11 2008, 19:51  EXeGLuMATOR Цитата(amw @ Apr 11 2008, 23:51) Блин ско... Apr 11 2008, 20:54   amw Цитата(EXeGLuMATOR @ Apr 11 2008, 23:54) ... Apr 12 2008, 08:29    eml Цитата(amw @ Apr 12 2008, 11:29) Возмите ... Apr 17 2008, 09:44     amw Цитата(eml @ Apr 17 2008, 12:44) У вас со... Apr 17 2008, 16:54     Vitaliy_ARM Цитата(eml @ Apr 17 2008, 13:44) У вас со... May 2 2008, 12:33      user234 Цитата(Vitaliy_ARM @ May 2 2008, 15:33) Т... May 12 2008, 08:58       amw Цитата(user234 @ May 12 2008, 11:58) Здра... May 12 2008, 09:24        user234 Цитата(amw @ May 12 2008, 12:24) Вопрос с... May 12 2008, 09:52         amw Цитата(user234 @ May 12 2008, 12:52) Спас... May 12 2008, 09:57          user234 Цитата(amw @ May 12 2008, 12:57) Возможно... May 12 2008, 11:08           amw Цитата(user234 @ May 12 2008, 14:08) 1.
... May 12 2008, 11:29            user234 Цитата(amw @ May 12 2008, 14:29) А перед ... May 12 2008, 12:48 aaarrr Цитата(user234 @ May 12 2008, 16:48) Когд... May 12 2008, 13:00 user234 Спасибо. May 12 2008, 13:39  amw Цитата(user234 @ May 12 2008, 16:39) Спас... May 12 2008, 16:56 Altemir Здравствуйте, уважаемые. Понимаю, что этот вопрос ... May 24 2008, 11:50 Сергей Борщ Цитата(Altemir @ May 24 2008, 14:50) Но, ... May 24 2008, 13:45  Altemir Всё это понятно. Вы с Argon-ом на: Сахаре
обсужда... May 24 2008, 14:01 zltigo Цитата(Altemir @ May 24 2008, 13:50) Есть... May 24 2008, 14:10  Altemir Цитата(zltigo @ May 24 2008, 18:10) Ну за... May 24 2008, 15:21   zltigo Цитата(Altemir @ May 24 2008, 17:21) 3. П... May 24 2008, 16:21    Altemir ЦитатаНет.
Читаем комментарий: IRQ "Jump dir... May 24 2008, 17:01     zltigo Цитата(Altemir @ May 24 2008, 19:01) Везд... May 24 2008, 17:51      Altemir Цитата(zltigo @ May 24 2008, 21:51) Что т... May 24 2008, 18:06       Сергей Борщ Цитата(Altemir @ May 24 2008, 21:06) 3. О... May 24 2008, 19:38        Altemir Цитата(Сергей Борщ @ May 24 2008, 23:38) ... May 24 2008, 19:53         Altemir Кстати, порывшись в опциях XLINK, обнаружил возмож... May 24 2008, 21:15 Altemir Всё сделал. Всё работает. Никакой правки и копания... May 26 2008, 19:06 zltigo Цитата(Altemir @ May 26 2008, 21:06) Всё ... May 26 2008, 19:31  Altemir Цитата(zltigo @ May 26 2008, 23:31) Сдела... May 26 2008, 19:36 vesago Хочу разобраться с ремапом основного приложения в ... Mar 23 2009, 12:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|