Anns an dealbh, bidh an kernel Linux aâ cur beannachdan thugad tro GPIO.
Anns aâ phĂ irt seo den sgeulachd mu bhith aâ giĂšlain an RISC-V RocketChip gu bòrd SĂŹneach le Cyclone IV, bidh sinn fhathast aâ ruith Linux, agus cuideachd ag ionnsachadh mar a rèiticheas sinn rianadair cuimhne IP Core sinn fhĂŹn agus beagan deasaich sinn tuairisgeul DTS air an uidheamachd. Tha an artaigil seo aâ leantainn , ach, eu-coltach ris an fhear a bha gu math farsaing roimhe, bidh e gu math goirid.
⌠Air sgĂ th an setup_smp ris an canar a-mhĂ in ma tha an kernel air a rèiteachadh le taic SMP, faodaidh tu feuchainn ri ioma-cridhe a dhĂŹ-chomasachadh. Bidh e mĂŹ-thlachdmhor ma dhâ fheumas mi cuideachd taic atomicity a chuir an gnĂŹomh anns a âmhodal cuimhne (bha e coltach rium gu robh an tasgadan aâ tinkers leis fhèin), ach anns a âchĂšis aon-chridhe cha bu chòir dha a bhith aâ cur bacadh oirnn.
Cha do dh'fhĂ g e fhathast ...
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.19.0-sifive-1+ (trosinenko@trosinenko-pc) (gcc version 8.3.0 (Buildroot 2019.02-07449-g4eddd28f99)) #1 Thu Jul 4 18:38:10 MSK 2019
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] Initial ramdisk at: 0x(____ptrval____) (16777216 bytes)
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal [mem 0x00000000c0000000-0x00000bffffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] software IO TLB: mapped [mem 0xbb1fc000-0xbf1fc000] (64MB)
[ 0.000000] Unable to find "cpu" devicetree entry
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055
[ 0.000000] Kernel command line: debug console=ttySIF0,125200 root=/dev/mmcblk0p2 loglevel=7 rootwait
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] BUG: Bad page state in process swapper pfn:80bf7
[ 0.000000] page:ffffffe03f029e08 count:0 mapcount:-65280 mapping:0000000000000000 index:0x1
[ 0.000000] flags: 0x0()
[ 0.000000] raw: 0000000000000000 0000000000000100 0000000000000200 0000000000000000
[ 0.000000] raw: 0000000000000001 0000000000000000 00000000ffff00ff
[ 0.000000] page dumped because: nonzero mapcount
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.19.0-sifive-1+ #1
[ 0.000000] Call Trace:
[ 0.000000] [<ffffffe00002cfde>] walk_stackframe+0x0/0xa0
[ 0.000000] [<ffffffe00002d1da>] show_stack+0x2a/0x34
[ 0.000000] [<ffffffe00063c898>] chachachllachachachTradeonachachach_inachachipachachachachllachachachTradeonachachachdevachachachypachachachllachachachTradeona+0x20/0x28
[ 0.000000] [<ffffffe00009499c>] bad_page+0xe4/0x102
[ 0.000000] [<ffffffe0000949f2>] free_pages_check_bad+0x38/0x7a
[ 0.000000] [<ffffffe000094bb0>] free_pcppages_bulk+0x106/0x36c
[ 0.000000] [<ffffffe0000957be>] free_unref_page_commit.isra.23+0x86/0x8e
[ 0.000000] [<ffffffe0000960bc>] free_unref_page+0x44/0x58
[ 0.000000] [<ffffffe0000960de>] __free_pages.part.28+0xe/0x22
[ 0.000000] [<ffffffe0000056da>] __free_pages_bootmem+0x86/0x90
[ 0.000000] [<ffffffe000007c46>] free_all_bootmem+0x156/0x1ba
[ 0.000000] [<ffffffe0000023f8>] mem_init+0x36/0x44
[ 0.000000] [<ffffffe0000007a0>] start_kernel+0x1aa/0x328
[ 0.000000] [<ffffffe000000058>] _sinittext+0x58/0x5c
[ 0.000000] Disabling lock debugging due to kernel taint
[ 0.000000] BUG: Bad page state in process swapper pfn:80bf9
[ 0.000000] page:ffffffe03f029e78 count:0 mapcount:-65280 mapping:0000000000000000 index:0x0
[ 0.000000] flags: 0x0()
[ 0.000000] raw: 0000000000000000 ffffffe03f020080 ffffffe03f020080 0000000000000000
[ 0.000000] raw: 0000000000000000 0000000000000000 00000000ffff00ff
[ 0.000000] page dumped because: nonzero mapcount
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G B 4.19.0-sifive-1+ #1
[ 0.000000] Call Trace:
[ 0.000000] [<ffffffe00002cfde>] walk_stackframe+0x0/0xa0
[ 0.000000] [<ffffffe00002d1da>] show_stack+0x2a/0x34
[ 0.000000] [<ffffffe00063c898>] chachachllachachachTradeonachachach_inachachipachachachachllachachachTradeonachachachdevachachachypachachachllachachachTradeona+0x20/0x28
[ 0.000000] [<ffffffe00009499c>] bad_page+0xe4/0x102
[ 0.000000] [<ffffffe0000949f2>] free_pages_check_bad+0x38/0x7a
[ 0.000000] [<ffffffe0000955c6>] __free_pages_ok+0x3fe/0x430
[ 0.000000] [<ffffffe0000960ea>] __free_pages.part.28+0x1a/0x22
[ 0.000000] [<ffffffe0000056da>] __free_pages_bootmem+0x86/0x90
[ 0.000000] [<ffffffe000007c46>] free_all_bootmem+0x156/0x1ba
[ 0.000000] [<ffffffe0000023f8>] mem_init+0x36/0x44
[ 0.000000] [<ffffffe0000007a0>] start_kernel+0x1aa/0x328
[ 0.000000] [<ffffffe000000058>] _sinittext+0x58/0x5c
[ 0.000000] BUG: Bad page state in process swapper pfn:80bfa
[ 0.000000] page:ffffffe03f029eb0 count:0 mapcount:-65280 mapping:0000000000000000 index:0x0
[ 0.000000] flags: 0x0()
[ 0.000000] raw: 0000000000000000 ffffffe03f0200b8 ffffffe03f0200b8 0000000000000000
[ 0.000000] raw: 0000000000000000 0000000000000000 00000000ffff00ff
[ 0.000000] page dumped because: nonzero mapcount
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G B 4.19.0-sifive-1+ #1
[ 0.000000] Call Trace:
[ 0.000000] [<ffffffe00002cfde>] walk_stackframe+0x0/0xa0
[ 0.000000] [<ffffffe00002d1da>] show_stack+0x2a/0x34
[ 0.000000] [<ffffffe00063c898>] chachachllachachachTradeonachachach_inachachipachachachachllachachachTradeonachachachdevachachachypachachachllachachachTradeona+0x20/0x28
[ 0.000000] [<ffffffe00009499c>] bad_page+0xe4/0x102
[ 0.000000] [<ffffffe0000949f2>] free_pages_check_bad+0x38/0x7a
[ 0.000000] [<ffffffe0000955c6>] __free_pages_ok+0x3fe/0x430
[ 0.000000] [<ffffffe0000960ea>] __free_pages.part.28+0x1a/0x22
[ 0.000000] [<ffffffe0000056da>] __free_pages_bootmem+0x86/0x90
[ 0.000000] [<ffffffe000007c46>] free_all_bootmem+0x156/0x1ba
[ 0.000000] [<ffffffe0000023f8>] mem_init+0x36/0x44
[ 0.000000] [<ffffffe0000007a0>] start_kernel+0x1aa/0x328
[ 0.000000] [<ffffffe000000058>] _sinittext+0x58/0x5c
[ 0.000000] BUG: Bad page state in process swapper pfn:80bfb
[ 0.000000] page:ffffffe03f029ee8 count:0 mapcount:-65280 mapping:0000000000000000 index:0x0
[ 0.000000] flags: 0x0()
[ 0.000000] raw: 0000000000000000 ffffffe03f0200f0 ffffffe03f0200f0 0000000000000000
[ 0.000000] raw: 0000000000000000 0000000000000000 00000000ffff00ff
[ 0.000000] page dumped because: nonzero mapcount
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Tainted: G B 4.19.0-sifive-1+ #1
[ 0.000000] Call Trace:
[ 0.000000] [<ffffffe00002cfde>] walk_stackframe+0x0/0xa0
[ 0.000000] [<ffffffe00002d1da>] show_stack+0x2a/0x34
[ 0.000000] [<ffffffe00063c898>] chachachllachachachTradeonachachach_inachachipachachachachllachachachTradeonachachachdevachachachypachachachllachachachTradeona+0x20/0x28
[ 0.000000] [<ffffffe00009499c>] bad_page+0xe4/0x102
[ 0.000000] [<ffffffe0000949f2>] free_pages_check_bad+0x38/0x7a
[ 0.000000] [<ffffffe0000955c6>] __free_pages_ok+0x3fe/0x430
[ 0.000000] [<ffffffe0000960ea>] __free_pages.part.28+0x1a/0x22
[ 0.000000] [<ffffffe0000056da>] __free_pages_bootmem+0x86/0x90
[ 0.000000] [<ffffffe000007c46>] free_all_bootmem+0x156/0x1ba
[ 0.000000] [<ffffffe0000023f8>] mem_init+0x36/0x44
[ 0.000000] [<ffffffe0000007a0>] start_kernel+0x1aa/0x328
[ 0.000000] [<ffffffe000000058>] _sinittext+0x58/0x5c
[ 0.000000] BUG: Bad page state in process swapper pfn:80bfc
[ 0.000000] page:ffffffe03f029f20 count:0 mapcount:-65280 mapping:0000000000000000 index:0x0
[ 0.000000] flags: 0x0()
[ 0.000000] raw: 0000000000000000 ffffffe03f020028 ffffffe03f020028 0000000000000000
[ 0.000000] raw: 0000000000000000 0000000000000000 00000000ffff00ff
...Tha e inntinneach, Ă s deidh a h-uile cĂ il debugging, gun do chuir mi romhpa coimhead air cò ris a bu chòir an toradh kernel âiomradhâ a bhith coltach, thuirt e make qemu, agus chunnaic e mearachd coltach ris.
Gu mÏ-fhortanach, tha an ath Ïre (Linux kernel) nas toinnte: tha e coltach gu bheil GDB, ceangailte tro JTAG ris an RocketChip, ag obair le seòlaidhean fiosaigeach ge bith ciamar a tha am MMU air a rèiteachadh, agus tha an kernel aig a bheil Úidh againn an-drà sta air an taisbeanadh a rèiteachadh. de sheòlaidhean, mar sin tha e furasta a rà dh display/10i $pc chan obraich e a-mach - chan fhaic sinn ach tòrr unimp. Ach ma tha sinn air faighinn a-mach mun chothromachadh mu thrà th (tha e coltach gu bheil 0x80200000 -> 0xffffffe000000000), faodaidh tu an uairsin a mhealladh:
1: x/10i $pc
=> 0xffffffe000002436 <setup_smp>: unimp
0xffffffe000002438 <setup_smp+2>: unimp
0xffffffe00000243a <setup_smp+4>: unimp
0xffffffe00000243c <setup_smp+6>: unimp
0xffffffe00000243e <setup_smp+8>: unimp
0xffffffe000002440 <setup_smp+10>: unimp
0xffffffe000002442 <setup_smp+12>: unimp
0xffffffe000002444 <setup_smp+14>: unimp
0xffffffe000002446 <setup_smp+16>: unimp
0xffffffe000002448 <setup_smp+18>: unimp
(gdb) undisplay 1
(gdb) display/10i ($pc - 0xffffffe000002436 + 0x80202436)
2: x/10i ($pc - 0xffffffe000002436 + 0x80202436)
0x80202436: addi sp,sp,-96
0x80202438: sd s0,80(sp)
0x8020243a: sd s1,72(sp)
0x8020243c: sd s2,64(sp)
0x8020243e: sd s3,56(sp)
0x80202440: sd s4,48(sp)
0x80202442: sd s5,40(sp)
0x80202444: sd s6,32(sp)
0x80202446: sd s7,24(sp)
0x80202448: sd s8,16(sp)Tha puingean briste air an suidheachadh san aon dòigh:
(gdb) p setup_smp
$1 = {<text variable, no debug info>} 0xffffffe000002436 <setup_smp>
(gdb) b *0x80202436
Breakpoint 1 at 0x80202436
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
setup_smp () at /home/trosinenko/freedom-u-sdk/linux/arch/riscv/kernel/smpboot.c:58
58 while ((dn = of_find_node_by_type(dn, "cpu"))) {
(gdb) bt
#0 setup_smp () at /home/trosinenko/freedom-u-sdk/linux/arch/riscv/kernel/smpboot.c:58
#1 0xffffffe0000022a2 in setup_arch () at /home/trosinenko/freedom-u-sdk/linux/arch/riscv/kernel/setup.c:253
#2 0x0000000000000000 in ?? ()
Backtrace stopped: frame did not save the PCAch feumaidh tu an toirt air falbh le là imh gus gluasad air adhart - airson GDB is e seòrsa de ribe gu tur do-chreidsinneach a tha seo. O tha, ma thachras tu ag rà dh s no n an à ite si, feuchaidh gdb ri briseadh inntinneach a chuir a-steach, nach tèid airson adhbharan follaiseach a shuidheachadh, ach chan eil dòigh ann air GDB a chuir à s. Ach na dèan cabhag gus am bòrd ath-thòiseachadh - a rèir mo bheachdan, tha e gu leòr dÏreach gdb ath-thòiseachadh (thoir an aire gur dòcha nach tèid na seann phuingean briste à sealladh).
Gu fĂŹrinneach, feumaidh tu dèiligeadh ris an duilgheadas tĂšsail: suidheachadh debugging printk a-steach gu gnĂŹomh of_find_node_by_type, air a chleachdadh le còd sgrĂšdaidh kernel pròiseasar boot, aâ sealltainn gu bheil e a âfaicinn seòrsa de sgudal an Ă ite ainmean seòrsa inneal. Mar eisimpleir, bheir e an loidhne âSreath portâ bho Ă iteigin, ged a tha e soilleir nach eil seo anns an raon dtb device_type. Ăs deidh dhomh na bytes sin a lorg anns an ĂŹomhaigh kernel, lorg mi iad, choimhead mi air an chothromachadh, agus thuig mi na tha follaiseach: tha e soilleir gu bheil meud an kernel ann am paramadairean bròg air a dhĂŹ-meas: tha e air a riarachadh 8Mb, ach bheir e suas barrachd air deich. Thug mi seachad 16Mb, ach cha do stad an neònachas. An dèidh dannsadh le leughadh FDT bho sheòlaidhean eadar-dhealaichte (mar as trice tha an seòladh air a ghluasad chun an kernel sa chlĂ r a1), Cho-dhĂšin mi mu dheireadh lorg a dhèanamh, ach dè ŃоКŃĐ°Ń tha e air a pharsadh an sin. Gu fortanach, an Ă ite a bhith a 'coiseachd mun cuairt le debugger (agus tha sinn a' cuimhneachadh gu bheil nuances ann le eadar-theangachadh seòladh a dh'fheumas a bhith air am fuasgladh fhathast ann an dòigh no dhĂ ), faodaidh tu dĂŹreach agus crutch san fhaidhle drivers/of/fdt.c comharrachadh #define pr_debug printk. Bâ e an toradh:
aâ cur toradh deasbaid ris
diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index 3db0d71d128b..fac47df9d1db 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -173,6 +173,7 @@ asmlinkage void __init setup_vm(void)
void __init parse_dtb(unsigned int hartid, void *dtb)
{
+ printk("HART = %u DTB = %lxn", hartid, dtb);
early_init_dt_scan(__va(dtb));
}
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 74eaedd5b860..c019e4158e1d 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -940,10 +940,12 @@ struct device_node *of_find_node_by_type(struct device_node *from,
unsigned long flags;
raw_spin_lock_irqsave(&devtree_lock, flags);
- for_each_of_allnodes_from(from, np)
+ for_each_of_allnodes_from(from, np) {
+ printk("%lx %lx [%s] | [%s]n", from, np, np->type, type);
if (np->type && (of_node_cmp(np->type, type) == 0)
&& of_node_get(np))
break;
+ }
of_node_put(from);
raw_spin_unlock_irqrestore(&devtree_lock, flags);
return np;
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 800ad252cf9c..2b45870ebada 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -31,6 +31,8 @@
#include "of_private.h"
+#define pr_debug printk
+
/*
* of_fdt_limit_memory - limit the number of regions in the /memory node
* @limit: maximum entries
@@ -1253,6 +1255,7 @@ bool __init early_init_dt_scan(void *params)
*/
void __init unflatten_device_tree(void)
{
+ printk("INITIAL: %lxn", initial_boot_params);
__unflatten_device_tree(initial_boot_params, NULL, &of_root,
early_init_dt_alloc_memory_arch, false);Toradh air bathar-cruaidh
SIFIVE, INC.
5555555555555555555555555
5555 5555
5555 5555
5555 5555
5555 5555555555555555555555
5555 555555555555555555555555
5555 5555
5555 5555
5555 5555
5555555555555555555555555555 55555
55555 555555555 55555
55555 55555 55555
55555 5 55555
55555 55555
55555 55555
55555 55555
55555 55555
55555 55555
555555555
55555
5
SiFive RISC-V Core IP
{
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
compatible = "freechips,rocketchip-unknown-dev";
model = "freechips,rocketchip-unknown";
chosen {
linux,initrd-start = <0x82000000>;
riscv,kernel-end = <0x81200000>;
riscv,kernel-start = <0x80200000>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
bootargs = <0x64656275 0x6720636f 0x6e736f6c 0x653d7474 0x79534946 0x302c3132 0x35323030 0x20726f6f 0x743d2f64 0x65762f6d 0x6d63626c 0x6b307032 0x206c6f67 0x6c657665 0x6c3d3720 0x726f6f74 0x77616974>;
}
firmware {
sifive,uboot = "YYYY-MM-DD";
}
aliases {
serial0 = <0x2f736f63 0x2f736572 0x69616c40 0x36343030 0x30303030>;
}
cpus {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
cpu@0 {
device_type = "cpu";
clock-frequency = <0x00000000>;
compatible = "sifive,rocket0", "riscv";
d-cache-block-size = <0x00000010>;
d-cache-sets = <0x00000040>;
d-cache-size = <0x00001000>;
d-tlb-sets = <0x00000001>;
d-tlb-size = <0x00000020>;
i-cache-block-size = <0x00000010>;
i-cache-sets = <0x00000040>;
i-cache-size = <0x00001000>;
i-tlb-sets = <0x00000001>;
i-tlb-size = <0x00000020>;
mmu-type = "riscv,sv39";
next-level-cache = <0x00000001>;
reg = <0x00000000>;
riscv,isa = "rv64imafdc";
status = "okay";
timebase-frequency = <0x000f4240>;
tlb-split;
interrupt-controller {
#interrupt-cells = <0x00000001>;
compatible = "riscv,cpu-intc";
interrupt-controller;
phandle = <0x00000002>;
}
}
}
ram@80000000 {
device_type = "memory";
reg = <0x80000000 0x40000000>;
reg-names = "mem";
phandle = <0x00000001>;
}
soc {
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
compatible = "freechips,rocketchip-unknown-soc", "simple-bus";
ranges;
clint@2000000 {
compatible = "riscv,clint0";
interrupts-extended = <0x00000002 0x00000003 0x00000002 0x00000007>;
reg = <0x02000000 0x00010000>;
reg-names = "control";
}
debug-controller@0 {
compatible = "sifive,debug-013", "riscv,debug-013";
interrupts-extended = <0x00000002 0x0000ffff>;
reg = <0x00000000 0x00001000>;
reg-names = "control";
}
gpio@64002000 {
#gpio-cells = <0x00000002>;
#interrupt-cells = <0x00000002>;
compatible = "sifive,gpio0";
gpio-controller;
interrupt-controller;
interrupt-parent = <0x00000003>;
interrupts = <0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008>;
reg = <0x64002000 0x00001000>;
reg-names = "control";
}
interrupt-controller@c000000 {
#interrupt-cells = <0x00000001>;
compatible = "riscv,plic0";
interrupt-controller;
interrupts-extended = <0x00000002 0x0000000b 0x00000002 0x00000009>;
reg = <0x0c000000 0x04000000>;
reg-names = "control";
riscv,max-priority = <0x00000007>;
riscv,ndev = <0x00000008>;
phandle = <0x00000003>;
}
rom@10000 {
compatible = "sifive,maskrom0";
reg = <0x00010000 0x00002000>;
reg-names = "mem";
}
serial@64000000 {
compatible = "sifive,uart0";
interrupt-parent = <0x00000003>;
interrupts = <0x00000002>;
reg = <0x64000000 0x00001000>;
reg-names = "control";
}
spi@64001000 {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
compatible = "sifive,spi0";
interrupt-parent = <0x00000003>;
interrupts = <0x00000001>;
reg = <0x64001000 0x00001000>;
reg-names = "control";
mmc@0 {
compatible = "mmc-spi-slot";
disable-wp;
reg = <0x00000000>;
spi-max-frequency = <0x01312d00>;
voltage-ranges = <0x00000ce4 0x00000ce4>;
}
}
tlclk {
#clock-cells = <0x00000000>;
clock-frequency = <0x017d7840>;
clock-output-names = "tlclk";
compatible = "fixed-clock";
}
}
}
[ 0.000000] HART = 0 DTB = 81200000
[ 0.000000] search "chosen", depth: 0, uname:
[ 0.000000] search "chosen", depth: 1, uname: chosen
[ 0.000000] Looking for initrd properties...
[ 0.000000] Command line is: debug console=ttySIF0,125200 root=/dev/mmcblk0p2 loglevel=7 rootwait
[ 0.000000] dt_root_size_cells = 1
[ 0.000000] dt_root_addr_cells = 1
[ 0.000000] memory scan node ram@80000000, reg size 8,
[ 0.000000] - 80000000 , 40000000
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.19.0-sifive-1+ (trosinenko@trosinenko-pc) (gcc version 8.3.0 (Buildroot 2019.02-07449-g4eddd28f99)) #1 SMP Sat Jul 6 12:14:41 MSK 2019
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] initrd not found or empty - disabling initrd
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal [mem 0x00000000c0000000-0x00000bffffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] INITIAL: ffffffe001000000
[ 0.000000] -> unflatten_device_tree()
[ 0.000000] Unflattening device tree:
[ 0.000000] magic: d00dfeed
[ 0.000000] size: 00001000
[ 0.000000] version: 00000011
[ 0.000000] size is 13512, allocating...
[ 0.000000] unflattening (____ptrval____)...
[ 0.000000] fixed up name for ->
[ 0.000000] fixed up name for chosen -> chosen
[ 0.000000] fixed up name for firmware -> firmware
[ 0.000000] fixed up name for aliases -> aliases
[ 0.000000] fixed up name for cpus -> cpus
[ 0.000000] fixed up name for cpu@0 -> cpu
[ 0.000000] fixed up name for interrupt-controller -> interrupt-controller
[ 0.000000] fixed up name for ram@80000000 -> ram
[ 0.000000] fixed up name for soc -> soc
[ 0.000000] fixed up name for clint@2000000 -> clint
[ 0.000000] fixed up name for debug-controller@0 -> debug-controller
[ 0.000000] fixed up name for gpio@64002000 -> gpio
[ 0.000000] fixed up name for interrupt-controller@c000000 -> interrupt-controller
[ 0.000000] fixed up name for rom@10000 -> rom
[ 0.000000] fixed up name for serial@64000000 -> serial
[ 0.000000] fixed up name for spi@64001000 -> spi
[ 0.000000] fixed up name for mmc@0 -> mmc
[ 0.000000] fixed up name for tlclk -> tlclk
[ 0.000000] <- unflatten_device_tree()
[ 0.000000] software IO TLB: mapped [mem 0xbb1fc000-0xbf1fc000] (64MB)
[ 0.000000] 0 ffffffe03effcab0 [attach() failed for %s with error %d
[ 0.000000] ] | [cpu]
[ 0.000000] 0 ffffffe03eff0020 [(null)] | [cpu]Toradh gu QEMU
SIFIVE, INC.
5555555555555555555555555
5555 5555
5555 5555
5555 5555
5555 5555555555555555555555
5555 555555555555555555555555
5555 5555
5555 5555
5555 5555
5555555555555555555555555555 55555
55555 555555555 55555
55555 55555 55555
55555 5 55555
55555 55555
55555 55555
55555 55555
55555 55555
55555 55555
555555555
55555
5
SiFive RISC-V Core IP
{
#address-cells = <0x00000002>;
#size-cells = <0x00000002>;
compatible = "riscv-virtio";
model = "riscv-virtio,qemu";
chosen {
linux,initrd-start = <0x00000000 0x88000000>;
linux,initrd-end = <0x00000000 0x88442b86>;
riscv,kernel-start = <0x00000000 0x80200000>;
riscv,kernel-end = <0x00000000 0x80c482ac>;
bootargs = "";
stdout-path = <0x2f756172 0x74403130 0x30303030>;
}
uart@10000000 {
interrupts = <0x0000000a>;
interrupt-parent = <0x00000002>;
clock-frequency = <0x00384000>;
reg = <0x00000000 0x10000000 0x00000000 0x00000100>;
compatible = "ns16550a";
}
test@100000 {
reg = <0x00000000 0x00100000 0x00000000 0x00001000>;
compatible = "sifive,test0";
}
virtio_mmio@10008000 {
interrupts = <0x00000008>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10008000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10007000 {
interrupts = <0x00000007>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10007000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10006000 {
interrupts = <0x00000006>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10006000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10005000 {
interrupts = <0x00000005>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10005000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10004000 {
interrupts = <0x00000004>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10004000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10003000 {
interrupts = <0x00000003>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10003000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10002000 {
interrupts = <0x00000002>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10002000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
virtio_mmio@10001000 {
interrupts = <0x00000001>;
interrupt-parent = <0x00000002>;
reg = <0x00000000 0x10001000 0x00000000 0x00001000>;
compatible = "virtio,mmio";
}
cpus {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
timebase-frequency = <0x00989680>;
cpu@0 {
device_type = "cpu";
reg = <0x00000000>;
status = "okay";
compatible = "riscv";
riscv,isa = "rv64imafdcsu";
mmu-type = "riscv,sv48";
clock-frequency = <0x3b9aca00>;
interrupt-controller {
#interrupt-cells = <0x00000001>;
interrupt-controller;
compatible = "riscv,cpu-intc";
linux,phandle = <0x00000001>;
phandle = <0x00000001>;
}
}
}
memory@80000000 {
device_type = "memory";
reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
}
soc {
#address-cells = <0x00000002>;
#size-cells = <0x00000002>;
compatible = "simple-bus";
ranges;
pci@30000000 {
interrupt-map-mask = <0x00001800 0x00000000 0x00000000 0x00000007>;
interrupt-map = <0x00000000 0x00000000 0x00000000 0x00000001 0x00000002 0x00000020 0x00000000 0x00000000 0x00000000 0x00000002 0x00000002 0x00000021 0x00000000 0x00000000 0x00000000 0x00000003 0x00000002 0x00000022 0x00000000 0x00000000 0x00000000 0x00000004 0x00000002 0x00000023 0x00000800 0x00000000 0x00000000 0x00000001 0x00000002 0x00000021 0x00000800 0x00000000 0x00000000 0x00000002 0x00000002 0x00000022 0x00000800 0x00000000 0x00000000 0x00000003 0x00000002 0x00000023 0x00000800 0x00000000 0x00000000 0x00000004 0x00000002 0x00000020 0x00001000 0x00000000 0x00000000 0x00000001 0x00000002 0x00000022 0x00001000 0x00000000 0x00000000 0x00000002 0x00000002 0x00000023 0x00001000 0x00000000 0x00000000 0x00000003 0x00000002 0x00000020 0x00001000 0x00000000 0x00000000 0x00000004 0x00000002 0x00000021 0x00001800 0x00000000 0x00000000 0x00000001 0x00000002 0x00000023 0x00001800 0x00000000 0x00000000 0x00000002 0x00000002 0x00000020 0x00001800 0x00000000 0x00000000 0x00000003 0x00000002 0x00000021 0x00001800 0x00000000 0x00000000 0x00000004 0x00000002 0x00000022>;
ranges = <0x01000000 0x00000000 0x00000000 0x00000000 0x03000000 0x00000000 0x00010000 0x02000000 0x00000000 0x40000000 0x00000000 0x40000000 0x00000000 0x40000000>;
reg = <0x00000000 0x30000000 0x00000000 0x10000000>;
dma-coherent;
bus-range = <0x00000000 0x000002ff>;
linux,pci-domain = <0x00000000>;
device_type = "pci";
compatible = "pci-host-ecam-generic";
#size-cells = <0x00000002>;
#interrupt-cells = <0x00000001>;
#address-cells = <0x00000003>;
}
interrupt-controller@c000000 {
linux,phandle = <0x00000002>;
phandle = <0x00000002>;
riscv,ndev = <0x00000035>;
riscv,max-priority = <0x00000007>;
reg-names = "control";
reg = <0x00000000 0x0c000000 0x00000000 0x04000000>;
interrupts-extended = <0x00000001 0x0000000b 0x00000001 0x00000009>;
interrupt-controller;
compatible = "riscv,plic0";
#interrupt-cells = <0x00000001>;
#address-cells = <0x00000000>;
}
clint@2000000 {
interrupts-extended = <0x00000001 0x00000003 0x00000001 0x00000007>;
reg = <0x00000000 0x02000000 0x00000000 0x00010000>;
compatible = "riscv,clint0";
}
}
}
[ 0.000000] HART = 0 DTB = 80e00000
[ 0.000000] search "chosen", depth: 0, uname:
[ 0.000000] search "chosen", depth: 1, uname: chosen
[ 0.000000] Looking for initrd properties...
[ 0.000000] initrd_start=0x88000000 initrd_end=0x88442b86
[ 0.000000] Command line is: earlyprintk
[ 0.000000] dt_root_size_cells = 2
[ 0.000000] dt_root_addr_cells = 2
[ 0.000000] memory scan node memory@80000000, reg size 16,
[ 0.000000] - 80000000 , 40000000
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.19.0-sifive-1+ (trosinenko@trosinenko-pc) (gcc version 8.3.0 (Buildroot 2019.02-07449-g4eddd28f99)) #1 SMP Sat Jul 6 12:14:41 MSK 2019
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] Initial ramdisk at: 0x(____ptrval____) (4467590 bytes)
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal [mem 0x00000000c0000000-0x00000bffffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] INITIAL: ffffffe000c00000
[ 0.000000] -> unflatten_device_tree()
[ 0.000000] Unflattening device tree:
[ 0.000000] magic: d00dfeed
[ 0.000000] size: 00000d56
[ 0.000000] version: 00000011
[ 0.000000] size is 14192, allocating...
[ 0.000000] unflattening (____ptrval____)...
[ 0.000000] fixed up name for ->
[ 0.000000] fixed up name for chosen -> chosen
[ 0.000000] fixed up name for uart@10000000 -> uart
[ 0.000000] fixed up name for test@100000 -> test
[ 0.000000] fixed up name for virtio_mmio@10008000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10007000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10006000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10005000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10004000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10003000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10002000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10001000 -> virtio_mmio
[ 0.000000] fixed up name for cpus -> cpus
[ 0.000000] fixed up name for cpu@0 -> cpu
[ 0.000000] fixed up name for interrupt-controller -> interrupt-controller
[ 0.000000] fixed up name for memory@80000000 -> memory
[ 0.000000] fixed up name for soc -> soc
[ 0.000000] fixed up name for pci@30000000 -> pci
[ 0.000000] fixed up name for interrupt-controller@c000000 -> interrupt-controller
[ 0.000000] fixed up name for clint@2000000 -> clint
[ 0.000000] <- unflatten_device_tree()
[ 0.000000] software IO TLB: mapped [mem 0xbb1fc000-0xbf1fc000] (64MB)
[ 0.000000] 0 ffffffe03effc808 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effca78 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effcd98 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd068 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd230 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd4b8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd740 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd9c8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effdc50 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effded8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe160 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe3e8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe670 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe888 [cpu] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03effec00 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03effeee8 [memory] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff0b0 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff320 [pci] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff858 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efffd58 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effc808 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effca78 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effcd98 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd068 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd230 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd4b8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd740 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd9c8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effdc50 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effded8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe160 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe3e8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe670 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe888 [cpu] | [cpu]
[ 0.000000] elf_hwcap is 0x112d
[ 0.000000] percpu: Embedded 17 pages/cpu @(____ptrval____) s29400 r8192 d32040 u69632
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055
[ 0.000000] Kernel command line: earlyprintk
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 949716K/1046528K available (6565K kernel code, 342K rwdata, 2564K rodata, 208K init, 832K bss, 96812K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[ 0.000000] plic: mapped 53 interrupts to 2 (out of 2) handlers.
[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] bootconsole [early0] disabled
[ 0.000000] HART = 0 DTB = 80e00000
[ 0.000000] search "chosen", depth: 0, uname:
[ 0.000000] search "chosen", depth: 1, uname: chosen
[ 0.000000] Looking for initrd properties...
[ 0.000000] initrd_start=0x88000000 initrd_end=0x88442b86
[ 0.000000] Command line is: earlyprintk
[ 0.000000] dt_root_size_cells = 2
[ 0.000000] dt_root_addr_cells = 2
[ 0.000000] memory scan node memory@80000000, reg size 16,
[ 0.000000] - 80000000 , 40000000
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.19.0-sifive-1+ (trosinenko@trosinenko-pc) (gcc version 8.3.0 (Buildroot 2019.02-07449-g4eddd28f99)) #1 SMP Sat Jul 6 12:14:41 MSK 2019
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] Initial ramdisk at: 0x(____ptrval____) (4467590 bytes)
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal [mem 0x00000000c0000000-0x00000bffffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] INITIAL: ffffffe000c00000
[ 0.000000] -> unflatten_device_tree()
[ 0.000000] Unflattening device tree:
[ 0.000000] magic: d00dfeed
[ 0.000000] size: 00000d56
[ 0.000000] version: 00000011
[ 0.000000] size is 14192, allocating...
[ 0.000000] unflattening (____ptrval____)...
[ 0.000000] fixed up name for ->
[ 0.000000] fixed up name for chosen -> chosen
[ 0.000000] fixed up name for uart@10000000 -> uart
[ 0.000000] fixed up name for test@100000 -> test
[ 0.000000] fixed up name for virtio_mmio@10008000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10007000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10006000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10005000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10004000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10003000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10002000 -> virtio_mmio
[ 0.000000] fixed up name for virtio_mmio@10001000 -> virtio_mmio
[ 0.000000] fixed up name for cpus -> cpus
[ 0.000000] fixed up name for cpu@0 -> cpu
[ 0.000000] fixed up name for interrupt-controller -> interrupt-controller
[ 0.000000] fixed up name for memory@80000000 -> memory
[ 0.000000] fixed up name for soc -> soc
[ 0.000000] fixed up name for pci@30000000 -> pci
[ 0.000000] fixed up name for interrupt-controller@c000000 -> interrupt-controller
[ 0.000000] fixed up name for clint@2000000 -> clint
[ 0.000000] <- unflatten_device_tree()
[ 0.000000] software IO TLB: mapped [mem 0xbb1fc000-0xbf1fc000] (64MB)
[ 0.000000] 0 ffffffe03effc808 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effca78 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effcd98 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd068 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd230 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd4b8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd740 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd9c8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effdc50 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effded8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe160 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe3e8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe670 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe888 [cpu] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03effec00 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03effeee8 [memory] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff0b0 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff320 [pci] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efff858 [<NULL>] | [cpu]
[ 0.000000] ffffffe03effe888 ffffffe03efffd58 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effc808 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effca78 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effcd98 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd068 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd230 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd4b8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd740 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effd9c8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effdc50 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effded8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe160 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe3e8 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe670 [<NULL>] | [cpu]
[ 0.000000] 0 ffffffe03effe888 [cpu] | [cpu]
[ 0.000000] elf_hwcap is 0x112d
[ 0.000000] percpu: Embedded 17 pages/cpu @(____ptrval____) s29400 r8192 d32040 u69632
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055
[ 0.000000] Kernel command line: earlyprintk
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 949716K/1046528K available (6565K kernel code, 342K rwdata, 2564K rodata, 208K init, 832K bss, 96812K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[ 0.000000] plic: mapped 53 interrupts to 2 (out of 2) handlers.
[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] bootconsole [early0] disabled
[ 0.000000] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=100000)
[ 0.000000] pid_max: default: 32768 minimum: 301
[ 0.000000] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.020000] rcu: Hierarchical SRCU implementation.
[ 0.020000] smp: Bringing up secondary CPUs ...
[ 0.020000] smp: Brought up 1 node, 1 CPU
[ 0.050000] devtmpfs: initialized
[ 0.050000] 0 ffffffe03effc808 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effca78 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effcd98 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effd068 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effd230 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effd4b8 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effd740 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effd9c8 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effdc50 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effded8 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effe160 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effe3e8 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effe670 [<NULL>] | [cpu]
[ 0.050000] 0 ffffffe03effe888 [cpu] | [cpu]
[ 0.050000] random: get_random_u32 called from bucket_table_alloc+0x76/0x17a with crng_init=0
[ 0.050000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.050000] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.060000] NET: Registered protocol family 16
[ 0.090000] vgaarb: loaded
[ 0.090000] SCSI subsystem initialized
[ 0.090000] usbcore: registered new interface driver usbfs
[ 0.090000] usbcore: registered new interface driver hub
[ 0.090000] usbcore: registered new device driver usb
[ 0.090000] pps_core: LinuxPPS API ver. 1 registered
[ 0.090000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.090000] PTP clock support registered
[ 0.100000] Advanced Linux Sound Architecture Driver Initialized.
[ 0.100000] clocksource: Switched to clocksource riscv_clocksource
[ 0.110000] NET: Registered protocol family 2
[ 0.110000] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes)
[ 0.110000] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.110000] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[ 0.110000] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.110000] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.110000] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.110000] NET: Registered protocol family 1
[ 0.120000] Unpacking initramfs...
[ 0.590000] workingset: timestamp_bits=62 max_order=18 bucket_order=0
[ 0.620000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 0.620000] io scheduler noop registered
[ 0.620000] io scheduler deadline registered
[ 0.620000] io scheduler cfq registered (default)
[ 0.620000] io scheduler mq-deadline registered
[ 0.620000] io scheduler kyber registered
[ 0.620000] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.690000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.690000] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 10, base_baud = 230400) is a 16550A
[ 0.720000] console [ttyS0] enabled
[ 0.720000] [drm] radeon kernel modesetting enabled.
[ 0.720000] [drm] amdgpu kernel modesetting enabled.
[ 0.730000] loop: module loaded
[ 0.730000] libphy: Fixed MDIO Bus: probed
[ 0.740000] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 0.740000] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 0.740000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.740000] ehci-pci: EHCI PCI platform driver
[ 0.740000] ehci-platform: EHCI generic platform driver
[ 0.740000] mousedev: PS/2 mouse device common for all mice
[ 0.740000] usbcore: registered new interface driver usbhid
[ 0.740000] usbhid: USB HID core driver
[ 0.740000] usbcore: registered new interface driver snd-usb-audio
[ 0.740000] NET: Registered protocol family 10
[ 0.750000] Segment Routing with IPv6
[ 0.750000] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 0.750000] NET: Registered protocol family 17
[ 0.750000] Key type dns_resolver registered
[ 0.760000] ALSA device list:
[ 0.760000] No soundcards found.
[ 0.770000] Freeing unused kernel memory: 208K
[ 0.770000] This architecture does not have kernel memory protection.
[ 0.770000] Run /init as init process(âTha loidhnichean le stampa Ăšineâ air an toirt a-mach leis an kernel, air am beulaibh tha a âchraobh air a thoirt a-mach le BBL) Air an aon lĂ imh, tha an FDT air a leughadh gu soirbheachail, air an lĂ imh eile, gheibhear seòrsa de neòinean anns aâ pharsed â nĂŹ." craobh.
Rè aâ phròiseas dĂŹ-bhugachaidh, thuig mi nach bâ urrainn do BBL an seòladh âdĂšbailteâ a leughadh, chan ann air sgĂ th gu robh mearachd anns an rèiteachadh, ach dĂŹreach air sgĂ th gu robh an nòta freumha aig an #address-cells = <1>; #size-cells = <1>;.
Le bhith aâ leudachadh toradh an deasbaid, chunnaic mi sin aâ comharrachadh type и name âair a bhualadhâ, agus ann an dòigh caran neònach: chaidh aâ chiad byte aca (aâ tòiseachadh bho neoni) ath-shuidheachadh gu neoni, rudeigin mar 0xabcdef -> 0xab00ef. Bâ fheudar dhomh innleachd eòlach a chleachdadh: le eòlas air na seòlaidhean far a bheil aâ chuimhne millte suidhichte, cuir ris aâ ghnĂŹomh e printk clò-bhuail an dĂ ta seo. Uill, na dĂšbhlain fhèin printk sgap iad far am bheil beagan diubh. Och, chan eil e air fĂ s mòran nas soilleire. An uairsin thòisich mi, a 'co-chomhairleachadh ris an fheadhainn a chaidh a chuir Ă s a chèile objdump dreach, suidhich puingean brisidh le lĂ imh agus gabh tron ââââearrann trioblaideach den chòd ceum air cheum. Agus an uairsin chaidh rud dĂŹomhair agus mĂŹ-thlachdmhor a lorg: ma shuidhicheas mi sa bhad Ă ite briste an Ă iteigin gu math fada bhon t-suidheachadh aithnichte, an uairsin, aâ stad air, chĂŹ mi aâ chuimhne a tha air a mhilleadh mar-thĂ . Ach ma dhâ fheuchas tu ri sreap suas oirre ceum air cheum, thèid aig aâ bhiast air falach! Bidh fĂ ileadh mar rianadair cuimhne briste agus tasgadan a bhios aâ falach na mearachd ma dhâ iarras tu an-còmhnaidh an luach a tha a dhĂŹth. Dè ma thaâŚ
Cuimhne a chur an Ă ite
Aâ cumail ris aâ chothrom fuasgladh fhaighinn air duilgheadas nach robh air mo thaobh, ghabh mi ris gur dòcha gu robh mi dĂŹreach air bata cuimhne briste fhaighinn. An uairsin chuimhnich mi nach e a-mhĂ in coimpiutair so-ghiĂšlain a thâ ann an leabhar-lĂŹn deich bliadhna a dh'aois, ach cuideachd stòr luachmhor de DDR2 SO-DIMM. Mar bhuannachd, faodaidh tu cuimhne a thoirt air falbh bhon bhòrd a chuir a-steach agus toirt air Memtest a chrochadh cha mhòr sa bhad (Linux, leis an t-slighe, air a luchdachadh cha mhòr chun t-slige grafaigeach. Ach tha e nas fheĂ rr gun a bhith ag ath-aithris an deuchainn seo ma tha thu aâ cur luach air an fhiosrachadh air diosgan air an cur suas ...). Air an aon lĂ imh, faodaidh sinn a bhith den bheachd nach robh aâ chuimhne dĂŹreach aâ freagairt air an lĂŹon shònraichte seo. Air an lĂ imh eile, bha e comasach dha bròg! Bha dòchas ann gun robh aâ chuimhne dĂŹreach âbristeâ, agus cha robh an duilgheadas anns aâ phasgan agam.
Tha seo aâ ciallachadh gum feum thu feuchainn ri cur air bhog airson Ăšine le cuimhne netbook. Gu mĂŹ-fhortanach, chan eil fios aig Quartus 18 mar a nĂŹ thu Ăšrachadh air an IP Core seo gus an tèid a dheasachadh. Tha seo aâ ciallachadh gu bheil an t-Ă m ann mu dheireadh ionnsachadh mar a chruthaicheas tu suidheachaidhean Ăšra. Thionndaidh a h-uile cĂ il a-mach gu bhith gu math sĂŹmplidh: bidh sinn a âcoimhead anns aâ Chatalog IP airson an rud Rianadair DDR2 SDRAM le ALTMEMPHY Intel FPGA IP agus gheibh sinn bloc leis an aon eadar-aghaidh agus roimhe. Is e an aon dhuilgheadas a bhith aâ suidheachadh nan roghainnean cuimhne ceart.
A 'faighinn crĂŹochan a' mhodal cuimhne
Tha dòigh gu math follaiseach ann airson am modal a rèiteachadh: leugh na paramadairean bhon SPD. Gu dearbh, ma leughas coimpiutair à bhaisteach dà ta SPD agus ma rèiticheas e an rianadair stèidhichte air, an uairsin thoir air falbh an dà ta seo air netbook a tha ann mu thrà th agus cuir a-steach e ann an clà r.
Tha seo ga dhèanamh air Ubuntu : feumaidh tu am pasgan a stà ladh i2c-tools, luchdaich modalan eeprom и i2c-i801 (Chan eil mi cinnteach, ge-tà , an obraich an dà rna draibhear anns a h-uile à ite), ruith an uairsin decode-dimms:
toradh decode-dimms
# decode-dimms version 6231 (2014-02-20 10:54:34 +0100)
Memory Serial Presence Detect Decoder
By Philip Edelbrock, Christian Zuckschwerdt, Burkart Lingner,
Jean Delvare, Trent Piepho and others
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/0-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62 OK (0x00)
SPD Revision Invalid
Fundamental Memory type Unknown (0x00)
---=== Manufacturing Information ===---
Manufacturer Undefined
Part Number Undefined
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/4-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62 OK (0x00)
SPD Revision Invalid
Fundamental Memory type Unknown (0x00)
---=== Manufacturing Information ===---
Manufacturer Undefined
Part Number Undefined
Decoding EEPROM: /sys/bus/i2c/drivers/eeprom/6-0050
Guessing DIMM is in bank 1
---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62 OK (0x76)
# of bytes written to SDRAM EEPROM 128
Total number of bytes in EEPROM 256
Fundamental Memory type DDR2 SDRAM
SPD Revision 1.2
---=== Memory Characteristics ===---
Maximum module speed 800 MHz (PC2-6400)
Size 1024 MB
Banks x Rows x Columns x Bits 8 x 13 x 10 x 64
Ranks 2
SDRAM Device Width 16 bits
Module Height 30.0 mm
Module Type SO-DIMM (67.6 mm)
DRAM Package Planar
Voltage Interface Level SSTL 1.8V
Module Configuration Type No Parity
Refresh Rate Reduced (7.8 us) - Self Refresh
Supported Burst Lengths 4, 8
tCL-tRCD-tRP-tRAS 6-6-6-18
Supported CAS Latencies (tCL) 6T, 5T, 4T
Minimum Cycle Time 2.50 ns at CAS 6 (tCK min)
3.00 ns at CAS 5
3.75 ns at CAS 4
Maximum Access Time 0.40 ns at CAS 6 (tAC)
0.45 ns at CAS 5
0.50 ns at CAS 4
Maximum Cycle Time (tCK max) 8.00 ns
---=== Timing Parameters ===---
Address/Command Setup Time Before Clock (tIS) 0.17 ns
Address/Command Hold Time After Clock (tIH) 0.25 ns
Data Input Setup Time Before Strobe (tDS) 0.05 ns
Data Input Hold Time After Strobe (tDH) 0.12 ns
Minimum Row Precharge Delay (tRP) 15.00 ns
Minimum Row Active to Row Active Delay (tRRD) 10.00 ns
Minimum RAS# to CAS# Delay (tRCD) 15.00 ns
Minimum RAS# Pulse Width (tRAS) 45.00 ns
Write Recovery Time (tWR) 15.00 ns
Minimum Write to Read CMD Delay (tWTR) 7.50 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.50 ns
Minimum Active to Auto-refresh Delay (tRC) 60.00 ns
Minimum Recovery Delay (tRFC) 127.50 ns
Maximum DQS to DQ Skew (tDQSQ) 0.20 ns
Maximum Read Data Hold Skew (tQHS) 0.30 ns
---=== Manufacturing Information ===---
Manufacturer Samsung
Manufacturing Location Code 0x02
Part Number M4 70T2864QZ3-CF7
Revision Code 0x3351
Manufacturing Date 2009-W34
Assembly Serial Number 0x79C64E9A
Number of SDRAM DIMMs detected and decoded: 3Is e an duilgheadas nach eil cuid de na h-amannan air an comharrachadh an seo, mar sin gabhamaid an dĂ rna slighe.
Na tha sgrĂŹobhte air na modalan againn:


Anns a 'chĂšis seo, tha an sgrĂŹobhadh air na sgoltagan cuimhne fhèin nas inntinniche: K4T1G164QQ-HCF7. Le bhith aâ taipeadh na loidhne seo a-steach do Google, bidh sinn aâ faighinn bileag-dĂ ta de ghrunn dhusan duilleag leis na paramadairean riatanach uile, a dhâ fhaodar a ghabhail a-steach gu sgiobalta ann an togalaichean IP Core. DĂŹreach thoir aire do na h-aonadan tomhais: an Ă iteigin ns, Ă iteigin - ps, agus uaireannan eadhon earrannan tCK. Cha bhith mi aâ teagasg dhut dè a bu chòir dhut aire a thoirt - shuidhich mi tòrr rudan mi-fhĂŹn air thuaiream (chan urrainn dhomh gealltainn nach urrainn dhut an cuimhne no FPGA a âlosgadhâ san dòigh seo). Bidh mi dĂŹreach aâ tarraing dâ aire gu seo: cha bâ urrainn dhomh an rianadair a bhith ag obair airson Ăšine mhòr, agus bâ e an ceum mu dheireadh a bhith aâ tuigsinn gum feumadh mi sgrĂšdadh a dhèanamh air leud gach eadar-aghaidh cuimhne airson gèilleadh ris aâ chòd Verilog a chaidh a chruthachadh. : Ă s dèidh a h-uile, nuair a-staigh MemIfBundle air a chomharrachadh val mem_ba = IO(Output(UInt(2.W))), agus tha 8 bancaichean ann (ie seòladh 3 pĂŹosan de leud), agus an uairsin chan eil againn ach an toradh bhon rianadair cuimhne a tha crochte san adhar - duilgheadas, ach chan eil e riatanach, agus mar sin tha a h-uile dad air a cho-chur, ach chan eil e ag obair.
Is dòcha gun obraicheadh ââââa h-uile cĂ il leis an t-seann mhodal nan deidheadh ââââan rianadair Ăšrachadh, ach airson a-nis tha mi ro leisg dèiligeadh ri biastagan fleòdraidh a dhâ fhaodadh a bhith ann: tha gu leòr agam fhĂŹn.
Mar sin, an dèidh gluasad timebase-frequency ann an DTS bhon Ïre CPU sònraichte gu Ïre an nód cpus (a rèir iarrtas a tha gu math so-thuigsinn bhon kernel), gheibh sinn:
Teacs falaichte
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.19.0-sifive-1+ (trosinenko@trosinenko-pc) (gcc version 8.3.0 (Buildroot 2019.02-07449-g4eddd28f99)) #1 SMP Tue Jul 9 22:42:36 MSK 2019
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] Initial ramdisk at: 0x(____ptrval____) (16777216 bytes)
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal [mem 0x00000000c0000000-0x00000bffffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] software IO TLB: mapped [mem 0xbb1fc000-0xbf1fc000] (64MB)
[ 0.000000] elf_hwcap is 0x112d
[ 0.000000] percpu: Embedded 17 pages/cpu @(____ptrval____) s29400 r8192 d32040 u69632
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055
[ 0.000000] Kernel command line: debug console=ttySIF0,125200 root=/dev/mmcblk0p2 loglevel=7 rootwait
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 937696K/1046528K available (6565K kernel code, 343K rwdata, 2564K rodata, 208K init, 832K bss, 108832K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[ 0.000000] plic: mapped 8 interrupts to 1 (out of 2) handlers.
[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[ 0.020000] pid_max: default: 32768 minimum: 301
[ 0.030000] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.040000] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.140000] rcu: Hierarchical SRCU implementation.
[ 0.190000] smp: Bringing up secondary CPUs ...
[ 0.190000] smp: Brought up 1 node, 1 CPU
[ 0.220000] devtmpfs: initialized
[ 0.300000] random: get_random_u32 called from bucket_table_alloc+0x76/0x17a with crng_init=0
[ 0.330000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.340000] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.380000] NET: Registered protocol family 16
[ 1.850000] vgaarb: loaded
[ 1.870000] SCSI subsystem initialized
[ 1.900000] usbcore: registered new interface driver usbfs
[ 1.910000] usbcore: registered new interface driver hub
[ 1.920000] usbcore: registered new device driver usb
[ 1.930000] pps_core: LinuxPPS API ver. 1 registered
[ 1.940000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 1.950000] PTP clock support registered
[ 1.970000] Advanced Linux Sound Architecture Driver Initialized.
[ 2.010000] clocksource: Switched to clocksource riscv_clocksource
[ 2.600000] NET: Registered protocol family 2
[ 2.640000] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes)
[ 2.650000] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 2.670000] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)
[ 2.700000] TCP: Hash tables configured (established 8192 bind 8192)
[ 2.720000] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 2.730000] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 2.750000] NET: Registered protocol family 1
[ 2.770000] Unpacking initramfs...
[ 23.980000] Initramfs unpacking failed: junk in compressed archive
[ 24.030000] workingset: timestamp_bits=62 max_order=18 bucket_order=0
[ 25.020000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 25.030000] io scheduler noop registered
[ 25.040000] io scheduler deadline registered
[ 25.050000] io scheduler cfq registered (default)
[ 25.060000] io scheduler mq-deadline registered
[ 25.060000] io scheduler kyber registered
[ 25.120000] sifive_gpio 64002000.gpio: SiFive GPIO chip registered 6 GPIOs
[ 25.150000] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 28.870000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 28.940000] sifive-serial 64000000.serial: unable to find controller clock
[ 28.950000] sifive-serial: probe of 64000000.serial failed with error -2
[ 28.980000] [drm] radeon kernel modesetting enabled.
[ 28.990000] [drm] amdgpu kernel modesetting enabled.
[ 29.500000] loop: module loaded
[ 29.610000] sifive_spi 64001000.spi: Unable to find bus clock
[ 29.620000] sifive_spi: probe of 64001000.spi failed with error -2
[ 29.640000] libphy: Fixed MDIO Bus: probed
[ 29.680000] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 29.690000] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 29.700000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 29.710000] ehci-pci: EHCI PCI platform driver
[ 29.720000] ehci-platform: EHCI generic platform driver
[ 29.750000] mousedev: PS/2 mouse device common for all mice
[ 29.790000] usbcore: registered new interface driver usbhid
[ 29.800000] usbhid: USB HID core driver
[ 29.820000] usbcore: registered new interface driver snd-usb-audio
[ 29.900000] NET: Registered protocol family 10
[ 29.960000] Segment Routing with IPv6
[ 29.960000] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 30.020000] NET: Registered protocol family 17
[ 30.020000] Key type dns_resolver registered
[ 30.070000] bootconsole [early0] uses init memory and must be disabled even before the real one is ready
[ 30.080000] bootconsole [early0] disabledĂs deidh sin chan eil dad ri fhaicinn aâ tachairt.
A-nis faodaidh tu feuchainn ri dèiligeadh ri trÏ duilgheadasan:
[ 23.980000] Initramfs unpacking failed: junk in compressed archive
...
[ 28.940000] sifive-serial 64000000.serial: unable to find controller clock
...
[ 29.610000] sifive_spi 64001000.spi: Unable to find bus clock... agus cuideachd a 'stad toradh chun a' chonsail.
Chan eil e idir doirbh faighinn thairis air dĂ dhuilgheadas le tricead: feumaidh tu puingean a chur ris clocks a-steach do na fo-chraobhan de na h-innealan a tha a dhĂŹth, airson goireasachd aâ toirt ainm soilleir leubail airson an nĂłd tlclk:
diff --git a/arch/riscv/dts/zeowaa-1gb.dts b/arch/riscv/dts/zeowaa-1gb.dts
index 4b2cebc..1347e76 100644
--- a/arch/riscv/dts/zeowaa-1gb.dts
+++ b/arch/riscv/dts/zeowaa-1gb.dts
@@ -96,6 +97,7 @@
L8: serial@64000000 {
compatible = "sifive,uart0";
interrupt-parent = <&L0>;
+ clocks = <&tlclk>;
interrupts = <2>;
reg = <0x64000000 0x1000>;
reg-names = "control";
@@ -107,6 +109,7 @@
interrupt-parent = <&L0>;
interrupts = <1>;
reg = <0x64001000 0x1000>;
+ clocks = <&tlclk>;
reg-names = "control";
L12: mmc@0 {
compatible = "mmc-spi-slot";
@@ -116,7 +119,7 @@
voltage-ranges = <3300 3300>;
};
};
- L11: tlclk {
+ tlclk: tlclk {
#clock-cells = <0>;
clock-frequency = <25000000>;
clock-output-names = "tlclk";Le bhith a 'cur ris an loidhne #define pr_debug printk gu toiseach an fhaidhle init/initramfs.c, a sheallas teachdaireachd mu sgudal an Ă ite initramfs, gheibh sinn teachdaireachd beagan nas mionaidiche:
[ 2.760000] Unpacking initramfs...
[ 2.770000] Detected gzip compressed data
[ 23.940000] Detected (null) compressed data
[ 23.970000] Initramfs unpacking failed: junk in compressed archiveIs e sin, is dòcha nach eil an sgudal an Ă ite initramfs, agus вПоŃŃĐľ.
Ceart gu leòr, lorg e rudeigin, is dòcha gu bheil sin gu leòr. CĂ ite an deach an consol? Bheir an rannsachadh ceangal don chĂšis air Github: - tha e a 'tionndadh a-mach gu bheil UART a-mhĂ in, a rèir an drĂ ibhear, chan eil fiĂš' s fhiach bruidhinn mu dheidhinn. Ach le deit 11 Iuchar, 2018 - bliadhna air ais. Thionndaidh e a-mach nach do rinn an gealladh seo a-steach don chraoibh Ă s a bheil mi a 'togail an uillt. Le bhith aâ cleachdadh aâ phĂŹos seo le lĂ imh, fhuair mi Linux ag obair! Thionndaidh e a-mach nach robh an duilgheadas le initramfs fĂŹor chudromach.
Logadh a-steach mar chleachdaiche = freumh, facal-faire = sifive, bha e comasach dhomh gun duilgheadas sam bith (ach a-mhĂ in a bhith aâ tuigsinn gu bheil bunait aig an Ă ireamh GPIO, Ă s a bheil a h-uile cĂ il air a thomhas, agus a dhâ fheumar a leughadh bhon fhaidhle meallta co-fhreagarrach) troimhe sysfs lasadh suas an LED air aâ bhòrd.
Coltach ris an turas mu dheireadh, tha mi a 'ceangal bhidio teacsa de Linux a' cur air bhog. Nuair a thionndaidheas an consol bho chlò-bhualadh trĂ th chun fhear Ă bhaisteach, nochdaidh sgudal de sheòrsa air choreigin, coltach ris an toradh nuair a tha astar UART air a shuidheachadh gu ceĂ rr. Gu inntinneach, dh âobraich an cluicheadair gu soirbheachail tron âââââ bhreugan â.
Source: www.habr.com
