1
1

00:00:03,120  -->  00:00:08,590
所以我要禁用它，
2

2

00:00:06,819  -->  00:00:11,830
然後單擊此處返回調試視圖
3

3

00:00:08,590  -->  00:00:17,260
看到我們的記憶，我們的記憶視圖
4

4

00:00:11,830  -->  00:00:20,620
調試器，看看我的調試器是否運行
5

5

00:00:17,260  -->  00:00:22,600
是的，所以我們要做的是
6

6

00:00:20,620  -->  00:00:25,390
我們要運行代碼，然後輸入
7

7

00:00:22,600  -->  00:00:28,180
一個例外，看看那確實在哪裡
8

8

00:00:25,390  -->  00:00:31,590
八個寄存器被推到
9

9

00:00:28,180  -->  00:00:35,620
堆疊我要做的當然是
10

10

00:00:31,590  -->  00:00:37,329
我將顯示我的寄存器，然後我將
11

11

00:00:35,620  -->  00:00:39,640
運行我要單擊的代碼
12

12

00:00:37,329  -->  00:00:41,920
在這裡，隨著代碼的運行，我正在
13

13

00:00:39,640  -->  00:00:44,859
進入囊腫，然後放一個
14

14

00:00:41,920  -->  00:00:47,320
斷點，以便當我們到達
15

15

00:00:44,859  -->  00:00:51,010
囊狀的當中斷發生時我們可以
16

16

00:00:47,320  -->  00:00:53,170
休息，然後做我們正確的觀察
17

17

00:00:51,010  -->  00:00:56,940
在這個中斷中，所以我將
18

18

00:00:53,170  -->  00:01:00,489
斷點，然後它將停止
19

19

00:00:56,940  -->  00:01:03,460
這就是我們在
20

20

00:01:00,489  -->  00:01:05,409
cortex m4通用用戶指南為了
21

21

00:01:03,460  -->  00:01:07,420
使它與手臂匹配的方式
22

22

00:01:05,409  -->  00:01:11,410
內存視圖顯示內存
23

23

00:01:07,420  -->  00:01:13,750
我要在其中翻轉的位置
24

24

00:01:11,410  -->  00:01:15,970
記錄寄存器的排列
25

25

00:01:13,750  -->  00:01:18,460
最高的內存位置到最低的內存
26

26

00:01:15,970  -->  00:01:20,710
此指示的位置
27

27

00:01:18,460  -->  00:01:24,220
這裡的箭頭說減少
28

28

00:01:20,710  -->  00:01:26,320
內存地址中的內存視圖
29

29

00:01:24,220  -->  00:01:28,090
另一方面，調試器顯示
30

30

00:01:26,320  -->  00:01:30,790
最低的內存地址到最高的
31

31

00:01:28,090  -->  00:01:33,220
內存地址，所以通過翻轉堆棧
32

32

00:01:30,790  -->  00:01:37,480
框架我們可以匹配顯示的內容
33

33

00:01:33,220  -->  00:01:43,180
內存視圖，所以我們有八個
34

34

00:01:37,480  -->  00:01:46,720
寄存器，我們在這裡找到0 R 1 R 2 R 3
35

35

00:01:43,180  -->  00:01:48,730
R 12鏈接註冊程序
36

36

00:01:46,720  -->  00:01:55,470
櫃檯註冊和XPS我們的
37

37

00:01:48,730  -->  00:01:58,630
註冊這些第一7 1 2 3 4 5 6 7
38

38

00:01:55,470  -->  00:02:01,540
所以只是回顧一下這裡存儲的值
39

39

00:01:58,630  -->  00:02:04,390
在這8個存儲位置中
40

40

00:02:01,540  -->  00:02:06,520
這8個內存中存在的值
41

41

00:02:04,390  -->  00:02:10,509
實際皮層的位置
42

42

00:02:06,520  -->  00:02:13,180
發生中斷時進行註冊，因此
43

43

00:02:10,509  -->  00:02:15,640
為了使處理器能夠
44

44

00:02:13,180  -->  00:02:17,890
在中斷的地方繼續excel
45

45

00:02:15,640  -->  00:02:20,200
一旦完成服務併中斷
46

46

00:02:17,890  -->  00:02:24,310
它必須存儲這些值
47

47

00:02:20,200  -->  00:02:26,350
將八個寄存器保存在安全的地方
48

48

00:02:24,310  -->  00:02:29,170
他們，並把它們放回他們
49

49

00:02:26,350  -->  00:02:31,780
相應的cortex-m寄存器一旦
50

50

00:02:29,170  -->  00:02:33,730
中斷已經結束，例如我們知道
51

51

00:02:31,780  -->  00:02:35,470
程序計數器總是寄存器
52

52

00:02:33,730  -->  00:02:38,350
保留下一個的地址
53

53

00:02:35,470  -->  00:02:39,880
要執行的指令，所以下一個
54

54

00:02:38,350  -->  00:02:42,880
本應執行的指令
55

55

00:02:39,880  -->  00:02:45,010
在中斷之前可以嗎
56

56

00:02:42,880  -->  00:02:47,920
在這裡發言，因為我們知道這一點
57

57

00:02:45,010  -->  00:02:50,350
對應於的PC寄存器
58

58

00:02:47,920  -->  00:02:52,180
堆棧框架正確的原因僅在於
59

59

00:02:50,350  -->  00:02:54,190
這是當時的價值
60

60

00:02:52,180  -->  00:02:56,800
代碼的程序計數器寄存器
61

61

00:02:54,190  -->  00:02:57,730
文字M寄存器Bank中斷時
62

62

00:02:56,800  -->  00:03:01,030
發生了
63

63

00:02:57,730  -->  00:03:03,190
因此它被推到堆棧上
64

64

00:03:01,030  -->  00:03:05,830
當處理器從
65

65

00:03:03,190  -->  00:03:07,989
中斷它要執行這個
66

66

00:03:05,830  -->  00:03:10,690
首先講課，我們實際上可以
67

67

00:03:07,989  -->  00:03:12,820
測試當前的地址和
68

68

00:03:10,690  -->  00:03:16,840
程序計數器寄存器是這個
69

69

00:03:12,820  -->  00:03:19,239
在這裡，這個以2fe結尾的意思
70

70

00:03:16,840  -->  00:03:21,910
一旦我們從中斷返回
71

71

00:03:19,239  -->  00:03:25,780
第一條要執行的指令是在這裡
72

72

00:03:21,910  -->  00:03:28,980
地址，當我單擊執行時
73

73

00:03:25,780  -->  00:03:31,959
我點擊這裡執行pxl我們
74

74

00:03:28,980  -->  00:03:34,030
可以讓我返回的指令
75

75

00:03:31,959  -->  00:03:36,480
從中斷中我們意識到
76

76

00:03:34,030  -->  00:03:40,150
下一條指令排隊執行
77

77

00:03:36,480  -->  00:03:43,480
將是2fe將是一個將結束
78

78

00:03:40,150  -->  00:03:45,580
這個值為2f e，所以讓我點擊
79

79

00:03:43,480  -->  00:03:47,890
這，讓我們看看我的確是
80

80

00:03:45,580  -->  00:03:50,170
將要還原的內容
81

81

00:03:47,890  -->  00:03:54,700
程序註冊，我們將不得不
82

82

00:03:50,170  -->  00:03:57,519
在這裡看到Fe，所以我將在這裡單擊
83

83

00:03:54,700  -->  00:04:00,400
您可以看到該地址已被帶到F
84

84

00:03:57,519  -->  00:04:03,010
E，就像你看到的那樣
85

85

00:04:00,400  -->  00:04:05,680
並註冊從中加載的銀行
86

86

00:04:03,010  -->  00:04:09,580
上下文是堆棧中的
87

87

00:04:05,680  -->  00:04:11,080
向Fe註冊銀行，希望您能
88

88

00:04:09,580  -->  00:04:14,049
關於這裡發生的事情的想法
89

89

00:04:11,080  -->  00:04:17,049
意思是如果我們輸入一個例外
90

90

00:04:14,049  -->  00:04:20,769
在該異常內，我們找到了一種方法
91

91

00:04:17,049  -->  00:04:23,890
更改程序中存儲的值
92

92

00:04:20,769  -->  00:04:26,680
然後堆棧幀的計數器寄存器
93

93

00:04:23,890  -->  00:04:28,960
當我們退出異常時，我們可以
94

94

00:04:26,680  -->  00:04:31,600
處理器跳到你知道的
95

95

00:04:28,960  -->  00:04:34,479
內存地址，而不是跳轉到
96

96

00:04:31,600  -->  00:04:37,539
異常期間保存在哪裡
97

97

00:04:34,479  -->  00:04:41,139
目前是的，程序偷了這個
98

98

00:04:37,539  -->  00:04:44,470
值在堆棧指針中，所以如果我要
99

99

00:04:41,139  -->  00:04:46,599
單擊此處執行BX LR，然後
100

100

00:04:44,470  -->  00:04:49,750
我要退出的例外是
101

101

00:04:46,599  -->  00:04:51,940
通過執行此繼續，但是如果我發現
102

102

00:04:49,750  -->  00:04:54,880
一種將地址更改為我的地址的方法
103

103

00:04:51,940  -->  00:04:57,520
首選地址，然後我出來
104

104

00:04:54,880  -->  00:05:00,039
處理器要運行的異常
105

105

00:04:57,520  -->  00:05:01,900
從我的首選地址繼續
106

106

00:05:00,039  -->  00:05:05,050
因為程序計數器寄存器
107

107

00:05:01,900  -->  00:05:07,630
總是存儲下一個的地址
108

108

00:05:05,050  -->  00:05:09,580
要執行的指令和
109

109

00:05:07,630  -->  00:05:12,280
堆棧的程序計數器寄存器
110

110

00:05:09,580  -->  00:05:15,039
框架將被放入實際
111

111

00:05:12,280  -->  00:05:18,070
皮質程序計數器寄存器
112

112

00:05:15,039  -->  00:05:20,380
和微處理器，一旦我們離開
113

113

00:05:18,070  -->  00:05:22,960
例外，所以我要做的是
114

114

00:05:20,380  -->  00:05:25,270
我將獲得主要地址
115

115

00:05:22,960  -->  00:05:27,190
橙色功能，我要放它
116

116

00:05:25,270  -->  00:05:29,800
在程序計數器寄存器中
117

117

00:05:27,190  -->  00:05:33,009
堆棧框，然後我要退出
118

118

00:05:29,800  -->  00:05:35,110
例外，然後我怎麼期望
119

119

00:05:33,009  -->  00:05:38,130
要加載到實際地址中
120

120

00:05:35,110  -->  00:05:40,630
Kotex的程序計數器寄存器
121

121

00:05:38,130  -->  00:05:42,430
微處理器，我希望看到
122

122

00:05:40,630  -->  00:05:44,710
橙色LED空白
123

123

00:05:42,430  -->  00:05:47,320
我希望看到手臂的內容
124

124

00:05:44,710  -->  00:05:50,620
該功能必須作為LED執行
125

125

00:05:47,320  -->  00:05:52,960
眨眼，所以我可以得到這個地址
126

126

00:05:50,620  -->  00:05:55,240
只需單擊並突出顯示即可
127

127

00:05:52,960  -->  00:05:58,840
在這裡，您可以看到地址
128

128

00:05:55,240  -->  00:06:02,949
是5，所以我知道，我知道
129

129

00:05:58,840  -->  00:06:05,800
手臂在這裡的第七項是
130

130

00:06:02,949  -->  00:06:07,599
程序計數器寄存器因此通過更改
131

131

00:06:05,800  -->  00:06:10,449
然後把這個地址放在那裡
132

132

00:06:07,599  -->  00:06:12,699
那這是我想要處理器的地方
133

133

00:06:10,449  -->  00:06:15,940
這就是為什麼我要處理器
134

134

00:06:12,699  -->  00:06:17,560
退出異常時繼續
135

135

00:06:15,940  -->  00:06:21,820
我要像這樣來到這裡
136

136

00:06:17,560  -->  00:06:24,039
然後加載5 4 0，然後一次
137

137

00:06:21,820  -->  00:06:27,789
我要做的是我要去
138

138

00:06:24,039  -->  00:06:32,080
在這裡禁用Cystic，然後我
139

139

00:06:27,789  -->  00:06:34,659
要點擊此處退出
140

140

00:06:32,080  -->  00:06:37,930
您可以看到我是個例外
141

141

00:06:34,659  -->  00:06:40,449
直接帶到這個地址
142

142

00:06:37,930  -->  00:06:42,370
我加載了，你可以看到這雙重
143

143

00:06:40,449  -->  00:06:42,880
滴答聲表明這是我去過的地方
144

144

00:06:42,370  -->  00:06:44,500
bro
145

145

00:06:42,880  -->  00:06:46,570
所以我接下來要做的就是
146

146

00:06:44,500  -->  00:06:49,120
要按你的代碼來運行
147

147

00:06:46,570  -->  00:06:53,020
我們希望看到橙色LED閃爍
148

148

00:06:49,120  -->  00:06:57,700
讓我們來看看，就像你看到的橙色
149

149

00:06:53,020  -->  00:06:59,530
LED就這樣閃爍，讓我們
150

150

00:06:57,700  -->  00:07:01,930
繼續我們接下來要做的是
151

151

00:06:59,530  -->  00:07:04,780
我們只是要在其中設置一個斷點
152

152

00:07:01,930  -->  00:07:07,570
再次進入囊性異常
153

153

00:07:04,780  -->  00:07:09,730
它生成堆棧框架，現在
154

154

00:07:07,570  -->  00:07:12,610
我們將把
155

155

00:07:09,730  -->  00:07:14,560
程序計數器中的藍色主
156

156

00:07:12,610  -->  00:07:17,110
堆棧幀的寄存器，然後我們
157

157

00:07:14,560  -->  00:07:19,660
走出異常，我們期望
158

158

00:07:17,110  -->  00:07:21,100
看到藍色的LED也閃爍
159

159

00:07:19,660  -->  00:07:22,780
看到我們到達那裡
160

160

00:07:21,100  -->  00:07:25,660
我們進入到你實際上
161

161

00:07:22,780  -->  00:07:28,960
了解實時內核
162

162

00:07:25,660  -->  00:07:31,510
系統工作真的非常重要
163

163

00:07:28,960  -->  00:07:34,780
所以囊腫在哪裡
164

164

00:07:31,510  -->  00:07:36,640
令人興奮的是或否，所以我把這個
165

165

00:07:34,780  -->  00:07:42,430
在這裡像這樣作為斷點
166

166

00:07:36,640  -->  00:07:44,560
對，是的，正如我們所見，我們擁有
167

167

00:07:42,430  -->  00:07:46,990
八個寄存器具有的堆棧幀
168

168

00:07:44,560  -->  00:07:49,930
被保存，我們知道第七項
169

169

00:07:46,990  -->  00:07:52,360
是程序計數器寄存器，因此
170

170

00:07:49,930  -->  00:07:54,490
一旦我們執行了什麼
171

171

00:07:52,360  -->  00:07:57,130
毫無例外，但我們沒有
172

172

00:07:54,490  -->  00:08:00,430
想要執行此操作，我們想要的是
173

173

00:07:57,130  -->  00:08:01,720
執行藍色主體，所以我
174

174

00:08:00,430  -->  00:08:03,880
我要做的是
175

175

00:08:01,720  -->  00:08:06,490
該特定功能的地址，以及
176

176

00:08:03,880  -->  00:08:08,470
我這樣做的方式和方式是
177

177

00:08:06,490  -->  00:08:11,610
像以前一樣單擊此處，然後
178

178

00:08:08,470  -->  00:08:14,620
該函數的地址，所以是4
179

179

00:08:11,610  -->  00:08:20,100
d4，這樣我就可以進入程序了
180

180

00:08:14,620  -->  00:08:20,100
在其中安裝d4的計數器寄存器
181

181

00:08:20,130  -->  00:08:28,420
對於d4一旦完成，我就去
182

182

00:08:25,720  -->  00:08:31,690
在這裡禁用它，然後我要去
183

183

00:08:28,420  -->  00:08:34,330
執行BX LR，如您所見
184

184

00:08:31,690  -->  00:08:36,250
被加工成藍色的
185

185

00:08:34,330  -->  00:08:38,349
我們輸入庫存的地址
186

186

00:08:36,250  -->  00:08:40,660
堆棧幀程序計數器寄存器
187

187

00:08:38,349  -->  00:08:44,430
我將要單擊此處運行
188

188

00:08:40,660  -->  00:08:49,750
代碼，如您所見，藍色LED
189

189

00:08:44,430  -->  00:08:52,710
有些在眨眼，就這樣，現在我們
190

190

00:08:49,750  -->  00:08:52,710
進入下一步
