/
main.c
62 lines (51 loc) · 1.24 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "rpi_lib/rpi.h"
#include <stdio.h>
#include <stdint.h>
void swi_hello(uint32_t *reg){
printf("swi called\n");
printf("swi_hello: cpsr = %08x\n",getmode());
printf("sp_irq: %08x\n",*reg++);
printf("r0: %08x\n",*reg++);
printf("r1: %08x\n",*reg++);
printf("r2: %08x\n",*reg++);
printf("r3: %08x\n",*reg++);
printf("r4: %08x\n",*reg++);
printf("r5: %08x\n",*reg++);
printf("r6: %08x\n",*reg++);
printf("r7: %08x\n",*reg++);
printf("r8: %08x\n",*reg++);
printf("r9: %08x\n",*reg++);
printf("r10: %08x\n",*reg++);
printf("r11: %08x\n",*reg++);
printf("r12: %08x\n",*reg++);
// 割り込み時にlrに突っ込まれる値は割り込み発生時のpc+4
printf("pc: %08x\n",*(reg+13) - 4);
// while(1);
}
int main(void){
rpi_init();
// JTAG用設定
// 3.3V : ARM_VREF
// GPIO22 (ALT4): ARM_TRST
// GPIO4 (ALT5): ARM_TDI
// GPIO27 (ALT4): ARM_TMS
// GPIO25 (ALT4): ARM_TCK
// GPIO24 (ALT4): ARM_TDO
// GND : ARM_GND
pinMode(22, ALT4);
pinMode(4, ALT5);
pinMode(27, ALT4);
pinMode(25, ALT4);
pinMode(24, ALT4);
// LED init
pinMode(47,OUTPUT);
printf("main: cpsr = %08x\n",getmode());
while(1){
digitalWrite(47, HIGH);
delay(1000);
digitalWrite(47, LOW);
delay(1000);
_swi_caller(10);
}
return 0;
}