Mercurial > hg > Members > innparusu > xv6_rpi_port
comparison source/main.c @ 0:c450faca55f4
Init
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Oct 2017 18:25:39 +0900 |
parents | |
children | 59cb42810ad9 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c450faca55f4 |
---|---|
1 /***************************************************************** | |
2 * main.c | |
3 * by Zhiyi Huang, hzy@cs.otago.ac.nz | |
4 * University of Otago | |
5 * | |
6 ********************************************************************/ | |
7 | |
8 | |
9 #include "types.h" | |
10 #include "defs.h" | |
11 #include "param.h" | |
12 #include "memlayout.h" | |
13 #include "mmu.h" | |
14 #include "proc.h" | |
15 #include "arm.h" | |
16 #include "mailbox.h" | |
17 | |
18 extern char end[]; // first address after kernel loaded from ELF file | |
19 extern pde_t *kpgdir; | |
20 extern FBI fbinfo; | |
21 extern volatile uint *mailbuffer; | |
22 | |
23 void OkLoop() | |
24 { | |
25 setgpiofunc(16, 1); // gpio 16, set as an output | |
26 while(1){ | |
27 setgpioval(16, 0); | |
28 delay(1000000); | |
29 setgpioval(16, 1); | |
30 delay(1000000); | |
31 } | |
32 } | |
33 | |
34 void NotOkLoop() | |
35 { | |
36 setgpiofunc(16, 1); // gpio 16, set as an output | |
37 while(1){ | |
38 setgpioval(16, 0); | |
39 delay(100000); | |
40 setgpioval(16, 1); | |
41 delay(100000); | |
42 } | |
43 } | |
44 | |
45 void machinit(void) | |
46 { | |
47 memset(cpus, 0, sizeof(struct cpu)*NCPU); | |
48 } | |
49 | |
50 | |
51 void enableirqminiuart(void); | |
52 | |
53 int cmain() | |
54 { | |
55 | |
56 mmuinit1(); | |
57 machinit(); | |
58 uartinit(); | |
59 dsb_barrier(); | |
60 consoleinit(); | |
61 cprintf("\nHello World from xv6\n"); | |
62 kinit1(end, P2V(8*1024*1024)); // reserve 8 pages for PGDIR | |
63 kpgdir=p2v(K_PDX_BASE); | |
64 | |
65 mailboxinit(); | |
66 create_request(mailbuffer, MPI_TAG_GET_ARM_MEMORY, 8, 0, 0); | |
67 writemailbox((uint *)mailbuffer, 8); | |
68 readmailbox(8); | |
69 if(mailbuffer[1] != 0x80000000) cprintf("new error readmailbox\n"); | |
70 else | |
71 cprintf("ARM memory is %x %x\n", mailbuffer[MB_HEADER_LENGTH + TAG_HEADER_LENGTH], mailbuffer[MB_HEADER_LENGTH + TAG_HEADER_LENGTH+1]); | |
72 | |
73 pinit(); | |
74 tvinit(); | |
75 cprintf("it is ok after tvinit\n"); | |
76 binit(); | |
77 cprintf("it is ok after binit\n"); | |
78 fileinit(); | |
79 cprintf("it is ok after fileinit\n"); | |
80 iinit(); | |
81 cprintf("it is ok after iinit\n"); | |
82 ideinit(); | |
83 cprintf("it is ok after ideinit\n"); | |
84 timer3init(); | |
85 kinit2(P2V(8*1024*1024), P2V(PHYSTOP)); | |
86 cprintf("it is ok after kinit2\n"); | |
87 userinit(); | |
88 cprintf("it is ok after userinit\n"); | |
89 scheduler(); | |
90 | |
91 | |
92 NotOkLoop(); | |
93 | |
94 return 0; | |
95 } |