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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Проблема с Linux на AT91RM9200, Unable to handle kernel paging request at virtual address
dmitry-rf
сообщение Jun 3 2008, 10:00
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Нее.. 2100 0000 - это оперативка. Флэш мапится на 1000 0000.

Код
u-boot> md 10010000
10010000: 08088b1f 46b2f350 5f750300 746f6f62    ....P..F..u_boot
...

Похоже dch прав и u-boot начинается со вторых 64К.
Вот нашёл по поводу обновления u-boot:
Код
Updating U-Boot:
=> tftp 00100000 /home/karim/example-sys/images/u-boot.bin...
=> protect off 40000000 4003FFFF
=> erase 40000000 4003FFFF
=> cp.b 00100000 40000000 $(filesize)
=> setenv filesize
=> saveenv
=> reset

Как я понимаю, надо только адреса оперативки и флэша заменить на свои?

Хотя нет, тогда потрётся boot sad.gif

Сообщение отредактировал dmitry-rf - Jun 3 2008, 10:03


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 3 2008, 11:18
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



А если залить uboot или u-boot.bin с помощью tftpboot в ОЗУ и запустить - ничего не происходит.
Код
u-boot> tftpboot 21000000 u-boot
eth: setting MAC address to 12:34:56:78:9a:bc
PHY not connected!!
Link: 100baseTX Full Duplex
TFTP from server 192.168.1.10; our IP address is 192.168.1.1
Filename 'u-boot'.
Load address: 0x21000000
Loading: invalid RARP header
##############################################################
done
Bytes transferred = 316225 (4d341 hex)
u-boot> go 21000000
## Starting application at 0x21000000 ...


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 5 2008, 12:46
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Ковырял romboot для evm9200, выяснил, что он понимает только SPI флэш, а у меня - параллельный.
Начал ковырять boot (брал здесь).
Пытаюсь собрать:
Код
$ make
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common -mshort-load-bytes -msoft-float -D__arm__ -D__FLASHED__ -I. -c entry.S
cc1: error: invalid option `short-load-bytes'
make: *** [entry.o] Ошибка 1

Если удалить из Makefile упоминание -mshort-load-bytes, то получаем:
Код
$ make
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c entry.S
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c div0.c
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c _udivsi3.S
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c initboot.c
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c crt0.S
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c misc.c
/opt/arm/bin/arm-linux-gcc -Os -fno-builtin -fomit-frame-pointer  -fno-strict-aliasing  -fno-common  -msoft-float -D__arm__ -D__FLASHED__ -I. -c main.c
/opt/arm/bin/arm-linux-gcc -nostdlib -Tld.script -o boot entry.o div0.o _udivsi3.o initboot.o crt0.o misc.o main.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: error: no memory region specified for loadable section `.rodata.str1.4'
collect2: ld returned 1 exit status
make: *** [boot] Ошибка 1

Помогите разобраться с сборкой-прошивкой boot и u-boot, пожалуйста.


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 5 2008, 14:43
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Выяснил, что параметр -mshort-load-bytes уже не актуален и его можно выкинуть. Вопрос со сборкой остался. Попробовал пересобрать loader.bin - не вышло:
Код
$ make
/opt/arm/bin/arm-linux-gcc -nostdlib -Tld.script -o loader entry.o div0.o _udivsi3.o _umodsi3.o init.o crt0.o main.o asm_isr.o jump.o lib_AT91RM9200.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: ERROR: crt0.o uses hardware FP, whereas loader uses software FP
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file crt0.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: ERROR: main.o uses hardware FP, whereas loader uses software FP
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file main.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: ERROR: asm_isr.o uses hardware FP, whereas loader uses software FP
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file asm_isr.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: ERROR: jump.o uses hardware FP, whereas loader uses software FP
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file jump.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: ERROR: lib_AT91RM9200.o uses hardware FP, whereas loader uses software FP
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file lib_AT91RM9200.o
/opt/arm/bin/../lib/gcc/arm-linux/3.4.6/../../../../arm-linux/bin/ld: error: no memory region specified for loadable section `.rodata.str1.4'
collect2: ld returned 1 exit status
make: *** [loader] Ошибка 1


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
RW9UAO
сообщение Jun 6 2008, 02:32
Сообщение #20


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

Группа: Свой
Сообщений: 115
Регистрация: 23-01-07
Пользователь №: 24 688



х.з. u-boot у меня ни разу не собрался. а то что собралось - не работало толком. собирал по мануалу от heavi. в итоге от у-бута я отказался и гружу ядро и ФС по уарту.
атмеловский ромбут хорошо собирается. есть и с поддержкой SD карт, возможно тебе будет проще дописать в него свой кусок. ссылку на исходники ромбута версии 1.05 я выкладывал.
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 6 2008, 08:45
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Спасибо, но дописать мне точно не будет проще, ибо в программировании я слабоват. А чем вы грузите ядро и ФС по уарту? Я нашёл loader.bin. Он может загрузить и запустить u-boot, но у меня ничего не вышло. Вроде, переконфигурял его под моё железо, но он не собирается sad.gif
Атмеловский ромбут, как я понял, не поддерживает параллельную флэш, а в имеющемся железе использована именно она. Более того, в железке уже сейчас есть почти рабочий u-boot, который, если я правильно понял, не полностью инициализирует оперативку и нормально использовать можно только 32 Мб из 64.


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
RW9UAO
сообщение Jun 7 2008, 03:47
Сообщение #22


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

Группа: Свой
Сообщений: 115
Регистрация: 23-01-07
Пользователь №: 24 688



х.з. как оно с линуксом будет работать без у-бута. я по х-модему заливаю с помощью ромбута скомпонованный образ ядра и файловой системы QNX, пишу его в последовательную флэш. потом отдаю управление IPL, а он стартрапу.
короче, если сроки жмут - забей на верхние 32 мега =)
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 7 2008, 07:41
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Ну с последовательной немного проще - атмелосвкий ромбут как раз на неё и рассчитан. А вот для параллельной мне что-то не найти нужной программки.


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 9 2008, 09:32
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



На счёт сборки loader.bin. Указанная выше ошибка
Код
ld: ERROR: crt0.o uses hardware FP, whereas loader uses software FP

Лечится добавлением -msoft-float в CFLAGS и последующими командами make clean && make

Ошибка
Код
ld: error: no memory region specified for loadable section `.rodata.str1.4'

Устраняется правкой ld.script
Было:
Код
*(.rodata)

Стало:
Код
*(.rodata)
*(.rodata.str1.4)


loader.bin собрался, но после загрузки через debug uart выкидывает в терминал мусор и молчит

Сообщение отредактировал dmitry-rf - Jun 9 2008, 09:40


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 9 2008, 12:36
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Так не правильно. Вот правильный скрипт:
Код
MEMORY {
        ram    : ORIGIN = 0x200000, LENGTH = 0x3000
}

SECTIONS {
    .text : {
        _stext = .;
        *(.text)
        . = ALIGN(4);
        _etext = .;
    } > ram
    .data : {
        _sdata = .;
        *(.data)
                *(.rodata)
        *(.rodata.str1.4)
        *(.glue_7*)
        . = ALIGN(4);
        _edata = .;
    } > ram
    .bss : {
        _sbss = .;
        *(.bss)
        . = ALIGN(4);
        _ebss = .;
    } > ram
}

Теперь лоадер шлёт один нечитаемый символ в секудну. Видимо, это С. Надо где-то подправить частоту...


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dch
сообщение Jun 10 2008, 17:50
Сообщение #26


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

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(dmitry-rf @ Jun 3 2008, 15:18) *
А если залить uboot или u-boot.bin с помощью tftpboot в ОЗУ и запустить - ничего не происходит.


обычно запускают приложением командочкой bootm <адрес откуда брать приложение> , но для этого приложение должно быть обработано програмкой mkimage, которая дописывает заголовок, в котором указаны куда нужно откопировать приложение и куда передать управление. Наверное нужно посмотреть куда копирует u-boot.bin приложение и загрузить u-boot не в 21000000 а в другое место.

Цитата(dmitry-rf @ Jun 3 2008, 14:00) *
Updating U-Boot:
=> tftp 00100000 /home/karim/example-sys/images/u-boot.bin...
=> protect off 40000000 4003FFFF
=> erase 40000000 4003FFFF
=> cp.b 00100000 40000000 $(filesize)
=> setenv filesize
=> saveenv
=> reset


если у Вас параллельная флэш которая которая доступна по адресу 10000000, то прошивка u-boot.bin

tftp 21000000 u-boot.bin
protect off 10000000 1000FFFF
erase 10000000 1000FFFF
cp.b 21000000 10000000 FFFF

прошивка u-boot.bin

gzip u-boot.bin

на входе получится какойто файл, например, u-boot.bin.gz

tftp 21000000 u-boot.bin.gz
protect off 10010000 1001FFFF
erase 10010000 1001FFFF
cp.b 21000000 10010000 FFFF



Цитата(dmitry-rf @ Jun 5 2008, 16:46) *
Ковырял romboot для evm9200, выяснил, что он понимает только SPI флэш, а у меня - параллельный.

нет он понимает и параллельную, но не тот тип что у Вас. флэш у Вас AT49BV641670TU (8Мб) - у меня ее наверное не будет понимать u-boot, исходный текст надо посмотреть, что там есть. На моих платочках стоит 29LV160 обычно поддержка для нее есть

boot.bin u-boot у меня нормально компилируется
http://ucrouter.ru/download/arm-elf-tools-20030314.sh

опции для gcc в Makefile можно посмотреть

В качестве компортового загрузчика можно использовать:
http://ucrouter.ru/download/AT91RM9200-29lv160d.bin
http://ucrouter.ru/download/AT91RM9200-29lv160d-1.tgz

Цитата(RW9UAO @ Jun 6 2008, 06:32) *
u-boot у меня ни разу не собрался

там по инструкции сначала свой кроскомпилятор собирается, но лучше использовать для u-boot кроскомпилятор от uclinux.org


Цитата(dmitry-rf @ Jun 9 2008, 16:36) *
Теперь лоадер шлёт один нечитаемый символ в секудну. Видимо, это С. Надо где-то подправить частоту...


нет не нужно, наверное, он грузится по x-модему во внутреннюю SRAM и сам настраивает все. Те у Вас должен быть джампер на платочки который позволяет ножку BMS либо на землю либо на питание посадить. В одном положении это обычная загрузка в другом работает внутренний загрузчик из ПЗУ. Но вообщето по руководству от производителя должно все собираться если это конечно не готовое изделие :-).
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 16 2008, 14:21
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Дмитрий, спасибо за развёрнутый ответ. Выбор способа загрузки и процесс прошивки boot/u-boot во флэш понятны. Не понятно, как собрать рабочий загрузчик. В качестве отправной точки есть содержимое вот этого архива. В нём есть loader.bin и u-boot.bin. Они нормально заливаются через отладочный ком и запускаются. Если с помощью лоадера залить мой u-boot, то появляется надпись U-Boot downloaded successfully и ничего не происходит. Возможно, отличаются точки входа для версий от атмела и моей, но я не нашёл кода, который бы определял это. U-boot 1.1.1, собирал тулчейном от heavy.

Поставил ваш тулчейн. В скрипте есть ошибка: не хватает -n после tail в 39-й строке. Т. е. она должна выглядеть так: tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf -

u-boot не собирается:
Код
In file included from cfi_flash.c:48:
/home/dimka/arm/src/u-boot-1.1.1/include/asm/processor.h:52: parse error before `1'
/home/dimka/arm/src/u-boot-1.1.1/include/asm/processor.h:52: warning: no semicolon at end of struct or union
/home/dimka/arm/src/u-boot-1.1.1/include/asm/processor.h:54: parse error before `}'
/home/dimka/arm/src/u-boot-1.1.1/include/asm/processor.h:58: field `insn' has incomplete type
make[1]: *** [cfi_flash.o] Ошибка 1
make[1]: Leaving directory `/home/dimka/arm/src/u-boot-1.1.1/drivers'
make: *** [drivers/libdrivers.a] Ошибка 2

кусок include/asm/processor.h
Код
#include <asm/proc/processor.h>                    //48
#include <asm/types.h>

union debug_insn {
        u32     arm;                             //52
        u16     thumb;
};                                                  //54

struct debug_entry {
        u32                     address;
        union debug_insn        insn;                //58
};

struct debug_info {
        int                     nsaved;
        struct debug_entry      bp[2];
};


Моя основная цель сейчас - научиться собирать u-boot так, чтоб он хотя бы запускался. Потом буду разбираться с поддержкой железа.

Сообщение отредактировал dmitry-rf - Jun 16 2008, 14:23


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
RW9UAO
сообщение Jun 17 2008, 01:46
Сообщение #28


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

Группа: Свой
Сообщений: 115
Регистрация: 23-01-07
Пользователь №: 24 688



закоменти эти куски про дебаг и все скомпилируется.
Go to the top of the page
 
+Quote Post
dmitry-rf
сообщение Jun 17 2008, 08:54
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 15-01-08
Из: Санкт-Петербург
Пользователь №: 34 101



Цитата(RW9UAO @ Jun 17 2008, 05:46) *
закоменти эти куски про дебаг и все скомпилируется.

Спасибо, собрался. Но после заливки лоадером опять тишина sad.gif


--------------------
Debian Fan
Go to the top of the page
 
+Quote Post
dch
сообщение Jun 24 2008, 04:57
Сообщение #30


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

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(dmitry-rf @ Jun 16 2008, 18:21) *
Поставил ваш тулчейн. В скрипте есть ошибка: не хватает -n после tail в 39-й строке. Т. е. она должна выглядеть так: tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf -

Надо посмотреть вроде таких проблемм ранее не возникало да и ошибок не выдавалось, а Вы командочку
make RM9200_config либо чтото подобное даете перед компиляцией? Нужно чтобы u-boot настроился на платформу. boot.bin всегда должен чегото выдавать, минимально строчка типа uncompress u-boot там должна быть.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 06:43
Рейтинг@Mail.ru


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