APC8750にNetBSD/evbarmを移植するための記録 8/31
NetBSDも7.99.1になったので動くか試してみようと思い立つ。
wmt_com.cのコンパイルでコケるので、ほかのcomドライバをまねてこんなパッチ。
やっぱり、ちょいちょい最新のソースで動かさないと、原因がわからなくなるからいけませんね。
wmt_com.cのコンパイルでコケるので、ほかのcomドライバをまねてこんなパッチ。
diff --git a/arm/wmt/wmt_com.c b/arm/wmt/wmt_com.c index 939b60c..09e9258 100644 --- a/arm/wmt/wmt_com.c +++ b/arm/wmt/wmt_com.c @@ -134,8 +134,17 @@ dev_type_tty(wmtcomtty); dev_type_poll(wmtcompoll); const struct cdevsw wmtcom_cdevsw = { - wmtcomopen, wmtcomclose, wmtcomread, wmtcomwrite, wmtcomioctl, - wmtcomstop, wmtcomtty, wmtcompoll, nommap, ttykqfilter, D_TTY + .d_open = wmtcomopen, + .d_close = wmtcomclose, + .d_read = wmtcomread, + .d_write = wmtcomwrite, + .d_ioctl = wmtcomioctl, + .d_stop = wmtcomstop, + .d_tty = wmtcomtty, + .d_poll = wmtcompoll, + .d_mmap = nommap, + .d_kqfilter = ttykqfilter, + .d_flag = D_TTY }; struct consdev wmtcomcons = {無事に起動しましたとさ。
NetBSD/evbarm (APC) booting ... arm32_bootmem_init: memstart=0, memsize=0x20000000, kernelstart=0x8000 arm32_bootmem_init: kernelend=0x616000 arm32_bootmem_init: adding 64757 free pages: [0x616000..0x1fffffff] (VA 0xc0616000) arm32_bootmem_init: adding 4 free pages: [0..0x7fff] (VA 0xc0000000) arm32_kernel_vm_init: 1 L2 pages are needed to map 0x64c000 kernel bytes arm32_kernel_vm_init: allocating page tables for vectoradd_pages: adding pv 0xc060151c (pa 0x616000, va 0xc0616000, 1 pages) at tail kerneladd_pages: appending pv 0xc060c168 (0x618000..0x61bfff) to 0x616000..0x617fff add_pages: appending pv 0xc06017b0 (0x61c000..0x61dfff) to 0x616000..0x61bfff vmadd_pages: appending pv 0xc06017c4 (0x61e000..0x61ffff) to 0x616000..0x61dfff add_pages: appending pv 0xc06017d8 (0x620000..0x621fff) to 0x616000..0x61ffff add_pages: appending pv 0xc06017ec (0x622000..0x623fff) to 0x616000..0x621fff add_pages: appending pv 0xc0601800 (0x624000..0x625fff) to 0x616000..0x623fff add_pages: appending pv 0xc0601814 (0x626000..0x627fff) to 0x616000..0x625fff add_pages: appending pv 0xc0601828 (0x628000..0x629fff) to 0x616000..0x627fff add_pages: appending pv 0xc060183c (0x62a000..0x62bfff) to 0x616000..0x629fff add_pages: appending pv 0xc0601850 (0x62c000..0x62dfff) to 0x616000..0x62bfff arm32_kernel_vm_init: allocating stacks add_pages: appending pv 0xc0601af4 (0x62e000..0x62ffff) to 0x616000..0x62dfff add_pages: appending pv 0xc0601ae0 (0x630000..0x631fff) to 0x616000..0x62ffff add_pages: appending pv 0xc0601acc (0x632000..0x633fff) to 0x616000..0x631fff add_pages: appending pv 0xc0601ab8 (0x634000..0x635fff) to 0x616000..0x633fff add_pages: appending pv 0xc0601aa4 (0x636000..0x637fff) to 0x616000..0x635fff add_pages: appending pv 0xc0601b08 (0x638000..0x639fff) to 0x616000..0x637fff add_pages: appending pv 0xc0601558 (0x63a000..0x63dfff) to 0x616000..0x639fff Creating L1 page table at 0x00618000 arm32_kernel_vm_init: adding L2 pt (VA 0xc0616000, PA 0x616000) for VA 0xffff0000 (vectors)arm32_kernel_vm_init: adding L2 pt (VA 0xc061c000, PA 0x61c000) for VA 0xc0000000 (kernel) arm32_kernel_vm_init: adding L2 pt (VA 0xc061e000, PA 0x61e000) for VA 0xc1000000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc0620000, PA 0x620000) for VA 0xc1800000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc0622000, PA 0x622000) for VA 0xc2000000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc0624000, PA 0x624000) for VA 0xc2800000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc0626000, PA 0x626000) for VA 0xc3000000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc0628000, PA 0x628000) for VA 0xc3800000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc062a000, PA 0x62a000) for VA 0xc4000000 (vm) arm32_kernel_vm_init: adding L2 pt (VA 0xc062c000, PA 0x62c000) for VA 0xc4800000 (vm) Mapping kernel arm32_kernel_vm_init: adding chunk for kernel text 0x8000..0x201fff (VA 0xc0008000) add_pages: adding pv 0xc0601508 (pa 0x8000, va 0xc0008000, 253 pages) before pa 0x616000 arm32_kernel_vm_init: adding chunk for kernel data/bss 0x202000..0x615fff (VA 0xc0202000) add_pages: appending pv 0xc0601580 (0x202000..0x615fff) to 0x8000..0x201fff add_pages: merging pv 0xc060151c (0x616000..0x63dfff) to 0x8000..0x615fff Listing Chunks arm32_kernel_vm_init: pv 0xc0601508: chunk VA 0xc0008000..0xc063dfff (PA 0x8000, prot 3, cache 1) Mapping Chunks arm32_kernel_vm_init: mapping last chunk VA 0xc0008000..0xc063dfff (PA 0x8000, prot 3, cache 1) pmap_map_chunk: pa=0x8000 va=0xc0008000 size=0x636000 resid=0x636000 prot=0x3 cache=1 PPPPLLLLLLLLLLLLLLLSSSSSLLLPPPPPPP devmap: d8000000 -> d8ffffff @ fe000000 pmap_map_chunk: pa=0xd8000000 va=0xfe000000 size=0x1000000 resid=0x1000000 prot=0x3 cache=0 sS Physical Virtual Num Starting Ending Starting Ending Pages SDRAM: 0x00000000 0x1fffffff 0xc0000000 0xdfffffff 65536 text section: 0x00008000 0x00201fff 0xc0008000 0xc0201fff 253 data section: 0x00210000 0x00600e00 0xc0210000 0xc0600e00 505 bss section: 0x00600e00 0x006145f8 0xc0600e00 0xc06145f8 11 L1 page directory: 0x00618000 0x0061bfff 0xc0618000 0xc061bfff 2 ABT stack (CPU 0): 0x0062e000 0x0062ffff 0xc062e000 0xc062ffff 1 FIQ stack (CPU 0): 0x00630000 0x00631fff 0xc0630000 0xc0631fff 1 IRQ stack (CPU 0): 0x00632000 0x00633fff 0xc0632000 0xc0633fff 1 UND stack (CPU 0): 0x00634000 0x00635fff 0xc0634000 0xc0635fff 1 IDLE stack (CPU 0): 0x00636000 0x00637fff 0xc0636000 0xc0637fff 1 SVC stack: 0x00638000 0x00639fff 0xc0638000 0xc0639fff 1 Message Buffer: 0x0063a000 0x0063dfff 0xc063a000 0xc063dfff 2 Exception Vectors: 0x0063e000 0x0063ffff 0xffff0000 0xffff1fff 1 Free Memory: 0x00640000 0x1fffffff 64736 Free Memory: 0x00000000 0x00007fff 4 TTBR0=0x4000 TTBR1=0 TTBCR=0 CONTEXTIDR=0 switching to new L1 page table @0x618000... ttb (TTBR0=0x618000) OK nfreeblocks = 2, free_pages = 64740 (0xfce4) bootstrap done. vectors 0xffff0000 init subsystems: stacks vectors undefined page pmap_physload pmap kpm locks l1pt cache(l1pt) specials pools [ Kernel symbol table missing! ] done. pmap_postinit: Allocated 35 static L1 descriptor tables Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 7.99.1 (APC) #0: Fri Aug 29 17:28:30 UTC 2014 root@aug:/usr/obj/sys/arch/evbarm/compile/APC total memory = 512 MB avail memory = 500 MB sysctl_createv: sysctl_create(machine_arch) returned 17 kern.module.path=/stand/evbarm/7.99.1/modules mainbus0 (root) cpu0 at mainbus0 core 0: ARM1176JZ-S r0p7 (ARM11J V6ZK core) cpu0: DC enabled IC enabled WB enabled LABT cpu0: 16KB/32B 4-way L1 VIPT Instruction cache cpu0: 16KB/32B 4-way write-back-locking-C L1 VIPT Data cache vfp0 at cpu0: VFP11, rounding, exceptions obio0 at mainbus0 wmicu0 at obio0 addr 0xd8140000-0xd814ffff wmtmr0 at obio0 addr 0xd8130100-0xd81301ff intr 37 : WMT OS Timer wmtcom0 at obio0 addr 0xd8200000-0xd820ffff intr 32 : WMT UART wmtcom0: console rn_init: radix functions require max_keylen be set boot device: <unknown> root on md0a dumps on md0b mountroot: trying nfs... mountroot: trying msdos... mountroot: trying ffs... root file system type: ffs WARNING: no TOD clock present WARNING: using filesystem time WARNING: CHECK AND RESET THE DATE! init: copying out flags `-s' 3 init: copying out path `/sbin/init' 11 erase ^?, werase ^W, kill ^U, intr ^C # ls .profile kern sbin sysinstmsgs.fr usr bin libexec sysinst sysinstmsgs.pl var dev mnt sysinstmsgs.de targetroot etc mnt2 sysinstmsgs.es tmp #そういえば、6.99.44を動かすために
diff --git a/evbarm/conf/std.apc b/evbarm/conf/std.apc index d29200b..ee8ec66 100644 --- a/evbarm/conf/std.apc +++ b/evbarm/conf/std.apc @@ -15,6 +15,7 @@ options EXEC_SCRIPT options ARM32 #options ARM11_CACHE_WRITE_THROUGH +options ARM11_COMPAT_MMU #options __HAVE_CPU_COUNTER options __HAVE_FAST_SOFTINTS # should be in types.h options KERNEL_BASE_EXT=0xc0000000とかいう変更もしたのでした。
やっぱり、ちょいちょい最新のソースで動かさないと、原因がわからなくなるからいけませんね。
コメント(0件)
- TB-URL http://www.tokuda.net/diary/0848/tb/