|
Опять про загрузчик..., Не получается передать управление. |
|
|
|
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 11 2008, 19:51
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(EXeGLuMATOR @ Apr 11 2008, 22:10)  да, сорри забыл сказать. камень LPC2106. Память и вектора ремапятся нормально. А передача управления не происходит поскольку стоят неправильные адреса на векторах. Вопрос собсно как скомпилировать программу, чтобы вектора были рассчитаны на работу с 0 адреса, а сама прога с другого. Бьюсь уже сколько времени - все никак. Все компилится либо с 0 либо с адреса - соотв вектора все направлены в космос. Что-то я туплю походу где-то. Блин сколько уже сказано об этом. 1. Сделайте секцию с нулевого адреса. 2. Разместите в ней вектора. 3. Сделайте секцию с нужного Вам адреса. 4. Разместите в ней всю остальную программу. 5. Скомпилируйте. 6. Наслаждайтесь. Пример для gcc см выше. С keil помочь не могу.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 11 2008, 20:54
|
Частый гость
 
Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305

|
Цитата(amw @ Apr 11 2008, 23:51)  Блин сколько уже сказано об этом. 1. Сделайте секцию с нулевого адреса. 2. Разместите в ней вектора. 3. Сделайте секцию с нужного Вам адреса. 4. Разместите в ней всю остальную программу. 5. Скомпилируйте. 6. Наслаждайтесь. Пример для gcc см выше. С keil помочь не могу. За пример спасибо. Только в кейле както все иначе выглядит совсем. Насколько я смог разобраться. В этом и проблема. Даже примеры на CARM и Real View - разные. синтаксис другой. Вот и мучаюсь.
|
|
|
|
|
Apr 12 2008, 08:29
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(EXeGLuMATOR @ Apr 11 2008, 23:54)  За пример спасибо. Только в кейле както все иначе выглядит совсем. Насколько я смог разобраться. В этом и проблема. Даже примеры на CARM и Real View - разные. синтаксис другой. Вот и мучаюсь. Возмите простейшую програмку. Пусть она ничего не делает полезного, но маленькой проще разбираться. И размещая функции и переменные в разных секциях, подвигайте эти секции в скрипте линкера по разным адресам. Смотрите на резуль дизассемблирования. Что и по каким адресам располагается уже после компиляции. Стартап придется переписывать. По крайней мере для второй программы, которую должен запускать бутлоадер. И переписать так, чтоб не было конфликтующих действий в разных стартапах.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
Сообщений в этой теме
EXeGLuMATOR Опять про загрузчик... Apr 9 2008, 07:05 aaarrr Не знаю, как оформлены вектора в основной программ... Apr 9 2008, 07:24 EXeGLuMATOR Цитата(aaarrr @ Apr 9 2008, 11:24) Не зна... Apr 9 2008, 07:28  aaarrr Цитата(EXeGLuMATOR @ Apr 9 2008, 11:28) С... Apr 9 2008, 07:41   EXeGLuMATOR Цитата(aaarrr @ Apr 9 2008, 11:41) После ... Apr 9 2008, 07:51    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    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
|
|
|