LINUX.ORG.RU

Trying to execute code outside RAM

 , , ,


0

1

Пытаюсь запустить xen on arm with VE. Конечная цель - какая-нибудь борда, но пока делаю на qemu, который изображает из себя versatile-express-a15. Мануал взят отсюда http://wiki.xenproject.org/wiki/Xen_ARM_with_Virtualization_Extensions/Vexpress Только вместо tftpboot использую fatload mmc 0:0. Выхлоп вот такой вот

U-Boot 2013.10-rc2 (Apr 15 2014 - 17:13:24)

DRAM:  128 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  0 
reading /load-xen-tftp.img
1891 bytes read in 4 ms (460.9 KiB/s)
## Executing script at 81000000
reading /linux-zImage
** Unable to read file /linux-zImage **
reading /xen-uImage
3002006 bytes read in 235 ms (12.2 MiB/s)
reading /rtsm_ve-cortex_a15x4.dtb
7447 bytes read in 4 ms (1.8 MiB/s)
## Booting kernel from Legacy Image at 80400000 ...
   Image Name:   
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3001942 Bytes = 2.9 MiB
   Load Address: 80200000
   Entry Point:  80200000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 81f00000
   Booting using the fdt blob at 0x81f00000
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=81f00000 size=2000
   Loading Device Tree to 87ee7000, end 87eebfff ... OK

Starting kernel ...

qemu: fatal: Trying to execute code outside RAM or ROM at 0x04000000

R00=00000000 R01=000008e0 R02=87ee7000 R03=00002000
R04=00000000 R05=87fb9724 R06=80200000 R07=87fb9724
R08=00000000 R09=87eef7ec R10=00000000 R11=804dce56
R12=67801f14 R13=87eedad8 R14=87f8eccc R15=04000000
PSR=400001d3 -Z-- A svc32
s00=00000000 s01=00000000 d00=0000000000000000
s02=00000000 s03=00000000 d01=0000000000000000
s04=00000000 s05=00000000 d02=0000000000000000
s06=00000000 s07=00000000 d03=0000000000000000
s08=00000000 s09=00000000 d04=0000000000000000
s10=00000000 s11=00000000 d05=0000000000000000
s12=00000000 s13=00000000 d06=0000000000000000
s14=00000000 s15=00000000 d07=0000000000000000
s16=00000000 s17=00000000 d08=0000000000000000
s18=00000000 s19=00000000 d09=0000000000000000
s20=00000000 s21=00000000 d10=0000000000000000
s22=00000000 s23=00000000 d11=0000000000000000
s24=00000000 s25=00000000 d12=0000000000000000
s26=00000000 s27=00000000 d13=0000000000000000
s28=00000000 s29=00000000 d14=0000000000000000
s30=00000000 s31=00000000 d15=0000000000000000
s32=00000000 s33=00000000 d16=0000000000000000
s34=00000000 s35=00000000 d17=0000000000000000
s36=00000000 s37=00000000 d18=0000000000000000
s38=00000000 s39=00000000 d19=0000000000000000
s40=00000000 s41=00000000 d20=0000000000000000
s42=00000000 s43=00000000 d21=0000000000000000
s44=00000000 s45=00000000 d22=0000000000000000
s46=00000000 s47=00000000 d23=0000000000000000
s48=00000000 s49=00000000 d24=0000000000000000
s50=00000000 s51=00000000 d25=0000000000000000
s52=00000000 s53=00000000 d26=0000000000000000
s54=00000000 s55=00000000 d27=0000000000000000
s56=00000000 s57=00000000 d28=0000000000000000
s58=00000000 s59=00000000 d29=0000000000000000
s60=00000000 s61=00000000 d30=0000000000000000
s62=00000000 s63=00000000 d31=0000000000000000
FPSCR: 00000000

★★★

Ответ на: комментарий от exception13

Мм адрес по которому отказано в доступе сильно младше адреса точки входа. Это я заметил. А что это значит?

LIKAN ★★★
() автор топика

у тебя 128 MiB памяти, что 0x8000000 последний адрес, как ты грузишь ядро в 0x80400000? там флэш подмаплен?

ты бы просто какой-нить линукс загрузил для начала.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Линукс я загрузил, и очень даже успешно. Я выделял до 2Гб оперативки, результат тот же самый

LIKAN ★★★
() автор топика
Ответ на: комментарий от exception13

Да, кстати, в директории xen не удалось найти ни одного файла с расширением .map.

LIKAN ★★★
() автор топика
Ответ на: комментарий от dimon555

Вот лог с большим размером выделенной ОП, и пофиксеной маленькой проблемкой с zImage

U-Boot 2013.10-rc2 (Apr 15 2014 - 17:13:24)

DRAM:  1 GiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  0 
reading /load-xen-tftp.img
1891 bytes read in 335 ms (4.9 KiB/s)
## Executing script at 81000000
reading /zImage
3254112 bytes read in 324 ms (9.6 MiB/s)
reading /xen-uImage
3002006 bytes read in 294 ms (9.7 MiB/s)
reading /rtsm_ve-cortex_a15x4.dtb
7447 bytes read in 4 ms (1.8 MiB/s)
## Booting kernel from Legacy Image at 80400000 ...
   Image Name:   
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3001942 Bytes = 2.9 MiB
   Load Address: 80200000
   Entry Point:  80200000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 81f00000
   Booting using the fdt blob at 0x81f00000
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=81f00000 size=2000
   Loading Device Tree to 9fee7000, end 9feebfff ... OK

Starting kernel ...

qemu: fatal: Trying to execute code outside RAM or ROM at 0x04000000

R00=00000000 R01=000008e0 R02=9fee7000 R03=00002000
R04=00000000 R05=9ffb9724 R06=80200000 R07=9ffb9724
R08=00000000 R09=9feef7ec R10=00000000 R11=804dce56
R12=1f801f14 R13=9feedad8 R14=9ff8eccc R15=04000000
PSR=400001d3 -Z-- A svc32
s00=00000000 s01=00000000 d00=0000000000000000
s02=00000000 s03=00000000 d01=0000000000000000
s04=00000000 s05=00000000 d02=0000000000000000
s06=00000000 s07=00000000 d03=0000000000000000
s08=00000000 s09=00000000 d04=0000000000000000
s10=00000000 s11=00000000 d05=0000000000000000
s12=00000000 s13=00000000 d06=0000000000000000
s14=00000000 s15=00000000 d07=0000000000000000
s16=00000000 s17=00000000 d08=0000000000000000
s18=00000000 s19=00000000 d09=0000000000000000
s20=00000000 s21=00000000 d10=0000000000000000
s22=00000000 s23=00000000 d11=0000000000000000
s24=00000000 s25=00000000 d12=0000000000000000
s26=00000000 s27=00000000 d13=0000000000000000
s28=00000000 s29=00000000 d14=0000000000000000
s30=00000000 s31=00000000 d15=0000000000000000
s32=00000000 s33=00000000 d16=0000000000000000
s34=00000000 s35=00000000 d17=0000000000000000
s36=00000000 s37=00000000 d18=0000000000000000
s38=00000000 s39=00000000 d19=0000000000000000
s40=00000000 s41=00000000 d20=0000000000000000
s42=00000000 s43=00000000 d21=0000000000000000
s44=00000000 s45=00000000 d22=0000000000000000
s46=00000000 s47=00000000 d23=0000000000000000
s48=00000000 s49=00000000 d24=0000000000000000
s50=00000000 s51=00000000 d25=0000000000000000
s52=00000000 s53=00000000 d26=0000000000000000
s54=00000000 s55=00000000 d27=0000000000000000
s56=00000000 s57=00000000 d28=0000000000000000
s58=00000000 s59=00000000 d29=0000000000000000
s60=00000000 s61=00000000 d30=0000000000000000
s62=00000000 s63=00000000 d31=0000000000000000
FPSCR: 00000000
./launch.sh: line 1:  4031 Аварийный останов         (core dumped) qemu-system-arm -m 2048M -M vexpress-a15 -nographic -kernel u-boot -sd flash.img

LIKAN ★★★
() автор топика
Ответ на: комментарий от dimon555

А в арме dram как раз начинается с 0x80000000 - го адреса, так что не надо про 128 MiB.

LIKAN ★★★
() автор топика
Ответ на: комментарий от CYB3R

Гуглил конечно, и ни черта не нашел. Мне вот вообще интересно - 0x04000000 - это логический адрес (т е xen лезет реально не туда, т е за пределы оперативки, тк она начинается с 0х80000000), или это физ адрес уже внутри оп?

LIKAN ★★★
() автор топика
Ответ на: комментарий от exception13

Ну вот datasheet от Versatile Express A15x4 RTSM (то что эмулирует qemu) мне найти не удается, но вот если глянуть сюда http://www.ti.com/lit/ug/swpu235ab/swpu235ab.pdf на стр 294, там мы увидим, что от 0 до 0х3fff ffff все выделено под gpmc, я думаю (надеюсь) ребята, которые xen писали об этом знали.

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

Для чего кстати в арме R15 служит, а то я там как раз вижу заветное число.

R15 == PC

exception13 ★★★★★
()
Последнее исправление: exception13 (всего исправлений: 1)
Ответ на: комментарий от LIKAN

я конечно не раскуривал доку но

The general-purpose memory controller (GPMC) is an unified memory controller dedicated to interfacing
external memory devices:
• Asynchronous SRAM-like memories and application-specific integrated circuit (ASIC) devices
• Asynchronous, synchronous, and page mode (available only in nonmuxed mode) burst NOR flash
devices
• NAND flash
• Pseudo-SRAM devices

т.е. xen таки ожидает что там что то есть

exception13 ★★★★★
()
Последнее исправление: exception13 (всего исправлений: 1)

ты вообще уверен, что в модели реализовано всё нужное железо, чтобы xen запускать?

dimon555 ★★★★★
()
Ответ на: комментарий от exception13

Погодите, я же не зря про R15 спросил. Видите, ошибка у меня

Trying to execute code outside RAM or ROM at 0x04000000
А содержимое счетчика команд у нас такое вот
R15=04000000
Следовательно происходит попытка выполнения кода по данному (04000000) адресу. Код, как меня учили в детском саду (я мог что-то позабыть, поправьте пожалуйста, если что) может жить только в ОП. А gpmc, как вы тут написали, используется для доступа во внешнюю долгую память, чаще всего flash, вряд ли там может быть исполняемый код.

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

в вики нигде не сказано, что получилось запустить xen поверх qemu. думается тебе нужна настоящая доска, а в qemu эмуляция неполная, её хватит запустить линукс, но не хватит на xen.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Так, а можно к qemu прикрутить какой-нить отладчик? Есть бинарник xen-a c отладочными символами. Если б можно было прицепить дебаггер, можно было б посмотреть что там за команда.

LIKAN ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.