Update: Feb 17,2014
今天又重新试了一次bootup,。
按照Github链接DE2-115,先synthesize和burn:(解决了一个locale的问题)
openrisc@openrisc-VirtualBox:~/orpsoc-master/boards/altera/de2_115/syn/quartus/run$ ALTERA_PATH=/home/openrisc/altera/ make all
openrisc@openrisc-VirtualBox:~/orpsoc-master/boards/altera/de2_115/syn/quartus/run$ ALTERA_PATH=/home/openrisc/altera/ make pgm
$ cd ~/soc-design/linux
$ or32-elf-gdb
(gdb) target remote :55555
(gdb) file ./vmlinux
Answer ‘y’
(gdb) load
(gdb) spr npc 0x100
(gdb) c
5》此时,打开终端:openrisc@openrisc-VirtualBox:~$ screen /dev/ttyUSB0 115200
但是目前还是有些问题没有解决:
Reading symbols from /home/openrisc/soc-design/linux/vmlinux...done. Remote debugging using localhost:9999 0x00000604 in ?? () (gdb) load Loading section .text, size 0x1fbcbc lma 0x0 Loading section .rodata, size 0x24eb0 lma 0x1fc000 Loading section __ksymtab, size 0x3b20 lma 0x220eb0 Loading section __ksymtab_gpl, size 0x1978 lma 0x2249d0 Loading section __ksymtab_strings, size 0xb40d lma 0x226348 Loading section __param, size 0x1b0 lma 0x231758 Loading section .data, size 0x14f60 lma 0x232000 Loading section __ex_table, size 0xa10 lma 0x246f60 Loading section .head.text, size 0x4000 lma 0x248000 Loading section .init.text, size 0x1150c lma 0x24c000 Loading section .init.data, size 0x14b07c lma 0x25d520 Start address 0xc0000000, load size 3830969 Transfer rate: 15 KB/sec, 15830 bytes/write. (gdb) spr npc 0x100 SYS.NPC (SPR0_16) set to 256 (0x100), was: 1540 (0x604) (gdb) c Continuing. Cannot access memory at address 0xc0000000
这时候在会在jtag的那个terminal出现:
Devices on JTAG chain: Index Name ID Code IR Length ---------------------------------------------------------------- 0: EP4CE115F29 0x020F70DD 10 Target device 0, JTAG ID = 0x020f70dd IDCODE sanity test passed, chain OK! JSP server listening on host openrisc-VirtualBox (0.0.0.0), port 9944, address family IPv4 JSP server thread running! No watchpoint hardware found, HWP server not starting JTAG bridge ready! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! ERROR! WB bus error during burst write, address 0x0 (index 0x0), retrying! Max WB bus errors reached! Error writing memory: 'max WishBone bus errors' ERROR! WB bus error during burst write, address 0x0 (index 0xFFFFE000), retrying! CRC ERROR! match bit after write is 0 (computed CRC 0x9c018fa1)Retry count exceeded! Abort!
接着gdb端口自动跳出:
(gdb) target remote:9999 Remote debugging using :9999 0x0024809c in ?? () (gdb) file ./helloworld_hw A program is being debugged already. Are you sure you want to change the file? (y or n) y Reading symbols from /home/openrisc/soc-design/helloworld-or1ksim/helloworld_hw...done. (gdb) load Loading section .vectors, size 0x2000 lma 0x0 Ignoring packet error, continuing... Loading section .init, size 0x28 lma 0x2000 Remote communication error. Target disconnected.: Connection reset by peer. (gdb)
openrisc论坛上也有人出现同样的问题,他看了波形图(logic analyzer ip-core from altera???),发现WB可以读写,我也可以进入vcd文件看看。
之前还成功在port screen里面显示出bootup信息,不过没有进入terminal阶段:
Compiled-in FDT at 0xc025f640 Linux version 3.1.0-rc6-00002-g0da8eb1-dirty (openrisc@openrisc-VirtualBox) (gcc version 4.5.1-or32-1.0rc4 (OpenRISC 32-bit toolchain for or32-linux (built 20111017)) ) #14 Wed Nov 16 18:11:19 CET 2011 CPU: OpenRISC-12 (revision 8) @50 MHz -- dcache: 16384 bytes total, 16 bytes/line, 1 way(s) -- icache: 16384 bytes total, 16 bytes/line, 1 way(s) -- dmmu: 64 entries, 1 way(s) -- immu: 64 entries, 1 way(s) -- additional features: -- debug unit -- PIC -- timer setup_memory: Memory: 0x0-0x2000000 Reserved - 0x01ffda90-0x00002570 Setting up paging and PTEs. map_ram: Memory: 0x0-0x2000000 On node 0 totalpages: 4096 free_area_init_node: node 0, pgdat c0246200, node_mem_map c03c0000 Normal zone: 16 pages used for memmap Normal zone: 0 pages reserved Normal zone: 4080 pages, LIFO batch:0 dtlb_miss_handler c0002000 itlb_miss_handler c0002108 OpenRISC Linux -- http://openrisc.net pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists in Zone order, mobility grouping off. Total pages: 4080 Kernel command line: console=uart,mmio,0x90000000,115200 Early serial console at MMIO 0x90000000 (options '115200') bootconsole [uart0] enabled PID hash table entries: 128 (order: -4, 512 bytes) Dentry cache hash table entries: 4096 (order: 1, 16384 bytes) Inode-cache hash table entries: 2048 (order: 0, 8192 bytes) Memory: 28696k/32768k available (2031k kernel code, 4072k reserved, 300k data, 1416k init, 0k highmem) mem_init_done ........................................... NR_IRQS:32 100.00 BogoMIPS (lpj=500000) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 devtmpfs: initialized NET: Registered protocol family 16 Switching to clocksource openrisc_timer Switched to NOHz mode on CPU #0 NET: Registered protocol family 2 IP route cache hash table entries: 2048 (order: 0, 8192 bytes) TCP established hash table entries: 1024 (order: 0, 8192 bytes) TCP bind hash table entries: 1024 (order: -1, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP reno registered UDP hash table entries: 512 (order: 0, 8192 bytes) UDP-Lite hash table entries: 512 (order: 0, 8192 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Unpacking initramfs Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled 90000000.serial: ttyS0 at MMIO 0x90000000 (irq = 2) is a 16550A console [ttyS0] enabled, bootconsole disabled console [ttyS0] enabled, bootconsole disabled
期望是这2天可以跑到:http://www.designspark.com/blog/booting-linux-on-a-de0-nano-with-orpsoc