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

 
 
> Переключить режим работы ARM, текущее состояние ядра Abort, надо переключить в Supervisor
impatt
сообщение Mar 17 2010, 09:16
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 169
Регистрация: 10-11-04
Из: Челябинск
Пользователь №: 1 088



Сорри за тупой вопрос.
Я не спец в АРМ-ах, но кое-что надо сделать, не познавая весь мир со стадии "когда Земля была жидкая". Посему нуждаюсь в конкретных советах: у меня есть консоль OpenOCD, подключенного к ARM1136, я могу загружать туда код и исполнять его, могу даже сделать что-то на ассемблере, скомпилировать и выдрать бинарный образ из ELF-контейнера. Надо переключить состояние с Abort или Undefined Instruction на Supervisor. Беда в том, что не знаю до тонкостей ARM-ассемблера и особенностей работы.
Собсна, вот.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Mar 22 2010, 07:03
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



В u-boot есть такая функция ram_size:

Код
static long ram_size(ulong *base, long maxsize)
{
    volatile long    *test_addr;
    volatile ulong    *base_addr = base;
    ulong        ofs;        /* byte offset from base_addr */
    ulong        save;        /* to make test non-destructive */
    ulong        save2;        /* to make test non-destructive */
    long        ramsize = -1;    /* size not determined yet */

    save = *base_addr;        /* save value at 0 so can restore */
    save2 = *(base_addr+1);    /* save value at 4 so can restore */

    /* is any SRAM present? */
    *base_addr = 0x5555aaaa;

    /* It is important to drive the data bus with different data so
     * it doesn't remember the value and look like RAM that isn't there.
     */
    *(base_addr + 1) = 0xaaaa5555;    /* use write to modify data bus */

    if (*base_addr != 0x5555aaaa)
    ramsize = 0;        /* no RAM present, or defective */
    else {
    *base_addr = 0xaaaa5555;
    *(base_addr + 1) = 0x5555aaaa;    /* use write to modify data bus */
    if (*base_addr != 0xaaaa5555)
        ramsize = 0;    /* no RAM present, or defective */
    }

    /* now size it if any is present */
    for (ofs = 4; ofs < maxsize && ramsize < 0; ofs <<= 1) {
    test_addr = (long*)((long)base_addr + ofs);    /* location to test */

    *base_addr = ~*test_addr;
    if (*base_addr == *test_addr)
        ramsize = ofs;    /* wrapped back to 0, so this is the size */
    }

    *base_addr = save;        /* restore value at 0 */
    *(base_addr+1) = save2;    /* restore value at 4 */
    return (ramsize);
}



Вызываю ее при запрещенных прерываниях, соответственно нет и Abort
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- impatt   Переключить режим работы ARM   Mar 17 2010, 09:16
- - Aurochs   Вот фрагмент кода на ассемблере, который позволит ...   Mar 18 2010, 11:55
|- - impatt   Цитата(Aurochs @ Mar 18 2010, 16:55) Вот ...   Mar 19 2010, 03:05
- - sergeeff   Если не секрет. Откуда возникла такая потребность?...   Mar 19 2010, 12:57
|- - impatt   Цитата(sergeeff @ Mar 19 2010, 17:57) Есл...   Mar 19 2010, 13:37
|- - defunct   Цитата(sergeeff @ Mar 19 2010, 14:57) А в...   Mar 21 2010, 00:32
|- - aaarrr   Цитата(defunct @ Mar 21 2010, 03:32) Плюс...   Mar 21 2010, 01:06
|- - defunct   Цитата(aaarrr @ Mar 21 2010, 03:06) А кон...   Mar 21 2010, 01:45
|- - aaarrr   Цитата(defunct @ Mar 21 2010, 04:45) В ре...   Mar 21 2010, 01:49
|- - defunct   Цитата(aaarrr @ Mar 21 2010, 03:49) А вот...   Mar 21 2010, 01:58
|- - aaarrr   Цитата(defunct @ Mar 21 2010, 04:58) SoC ...   Mar 21 2010, 02:10
|- - defunct   Цитата(aaarrr @ Mar 21 2010, 04:10) Хорош...   Mar 21 2010, 02:19
|- - sergeeff   Цитата(defunct @ Mar 21 2010, 05:19) Мой ...   Mar 21 2010, 12:27
|- - aaarrr   Цитата(sergeeff @ Mar 21 2010, 15:27) Сущ...   Mar 21 2010, 15:36
- - aaarrr   Тогда вопросов более нет.   Mar 21 2010, 02:29
- - sergeeff   Завтра с работы пришлю процедуру без входа в Abort...   Mar 21 2010, 20:26
|- - aaarrr   Цитата(sergeeff @ Mar 21 2010, 23:26) Зав...   Mar 21 2010, 20:28
|- - zltigo   Цитата(sergeeff @ Mar 22 2010, 10:03) Выз...   Mar 22 2010, 07:20
|- - _Pasha   Цитата(sergeeff @ Mar 22 2010, 11:03) Выз...   Mar 22 2010, 07:35
|- - defunct   Цитата(sergeeff @ Mar 22 2010, 09:03) В u...   Mar 22 2010, 12:16
- - sergeeff   Ну просветите! Надо объем памяти выяснить или ...   Mar 22 2010, 07:50
|- - zltigo   Цитата(sergeeff @ Mar 22 2010, 10:50) Пиш...   Mar 22 2010, 07:59
|- - sergeeff   Цитата(zltigo @ Mar 22 2010, 10:59) Зачем...   Mar 22 2010, 08:07
|- - aaarrr   Цитата(sergeeff @ Mar 22 2010, 11:07) Дей...   Mar 22 2010, 08:58
|- - zltigo   Цитата(sergeeff @ Mar 22 2010, 11:07) Чег...   Mar 22 2010, 09:03
- - sergeeff   Благодарю за ответы, переотдыхал, наверное.   Mar 22 2010, 09:28
- - impatt   Привет всем. Есть кусок кода: CODE ; ; Dis...   Mar 24 2010, 10:55
|- - zltigo   Цитата(impatt @ Mar 24 2010, 13:55) Приве...   Mar 24 2010, 12:37
- - scifi   По пунктам 1 и 2: запись "LDR reg, =число...   Mar 24 2010, 12:27
- - aaarrr   Все верно понимаете. Вместо второго ldr логичнее н...   Mar 24 2010, 12:28


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

 


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


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