Preface |
|
x | |
|
|
1 | (18) |
|
What Is the Hardware/Firmware Interface? |
|
|
2 | (5) |
|
What Are Hardware, Chips, and Blocks? |
|
|
2 | (4) |
|
What Are Firmware and Device Drivers? |
|
|
6 | (1) |
|
|
7 | (3) |
|
|
9 | (1) |
|
Benefits of Principles and Practices |
|
|
10 | (1) |
|
``First Time Right'' Also Means |
|
|
10 | (3) |
|
|
11 | (1) |
|
|
11 | (1) |
|
Easier to Work around Defects |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
13 | (1) |
|
|
13 | (1) |
|
This Book in a University Setting |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
15 | (2) |
|
Monochrome Video Block in the Unity ASIC |
|
|
15 | (2) |
|
A Case Study of a Good Example? |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (12) |
|
Seven Principles of Hardware/Firmware Interface Design |
|
|
19 | (11) |
|
Collaborate on the Design |
|
|
20 | (1) |
|
Set and Adhere to Standards |
|
|
21 | (2) |
|
|
23 | (2) |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
27 | (2) |
|
|
29 | (1) |
|
|
30 | (1) |
|
|
31 | (20) |
|
|
31 | (4) |
|
|
31 | (3) |
|
|
34 | (1) |
|
|
35 | (9) |
|
|
35 | (2) |
|
|
37 | (1) |
|
Co-Development Techniques |
|
|
38 | (2) |
|
End-Game Hardware Support |
|
|
40 | (1) |
|
|
41 | (3) |
|
|
44 | (4) |
|
Formal Organizational Structure |
|
|
44 | (1) |
|
Hardware Engineers' Initiative |
|
|
45 | (1) |
|
Firmware Engineers' Initiative |
|
|
46 | (1) |
|
Collaborative Problem Solving |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
49 | (2) |
|
|
51 | (22) |
|
|
51 | (5) |
|
|
52 | (1) |
|
Implementing the Standard |
|
|
53 | (2) |
|
Derivations or New Creations |
|
|
55 | (1) |
|
|
56 | (2) |
|
|
58 | (3) |
|
Range of Backward and Forward Compatibility |
|
|
59 | (1) |
|
Combinations of Old vs. New |
|
|
60 | (1) |
|
|
61 | (5) |
|
|
61 | (2) |
|
|
63 | (2) |
|
Test Plan to Look for Defects |
|
|
65 | (1) |
|
|
66 | (4) |
|
|
66 | (1) |
|
|
67 | (1) |
|
Hardware/Firmware Interactions |
|
|
67 | (2) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
71 | (2) |
|
|
72 | (1) |
|
|
73 | (50) |
|
|
74 | (5) |
|
Level and Types of Documentation |
|
|
74 | (1) |
|
Chip-Level vs. Block-Level Documentation |
|
|
75 | (2) |
|
Supported vs. Unsupported Documentation |
|
|
77 | (2) |
|
|
79 | (4) |
|
|
79 | (1) |
|
|
80 | (1) |
|
|
81 | (2) |
|
|
83 | (4) |
|
|
83 | (1) |
|
Tracking Documentation Changes |
|
|
84 | (1) |
|
Firmware Engineers' Responsibilities Regarding Reviews |
|
|
85 | (2) |
|
|
87 | (8) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
89 | (2) |
|
|
91 | (1) |
|
|
92 | (2) |
|
|
94 | (1) |
|
|
95 | (8) |
|
|
95 | (1) |
|
|
96 | (4) |
|
|
100 | (1) |
|
Register Details and Description |
|
|
101 | (2) |
|
|
103 | (5) |
|
|
103 | (1) |
|
Bit Positions, Types, and Defaults |
|
|
104 | (2) |
|
|
106 | (1) |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
108 | (3) |
|
Edge- vs. Level-Triggered |
|
|
108 | (1) |
|
Enabling and Acknowledging Interrupts |
|
|
109 | (1) |
|
Interrupts Not Quite Done |
|
|
110 | (1) |
|
Interrupts Repeating without Intervention |
|
|
110 | (1) |
|
|
111 | (3) |
|
|
111 | (2) |
|
|
113 | (1) |
|
|
114 | (5) |
|
|
115 | (1) |
|
Copious Information about the Errors |
|
|
116 | (1) |
|
State of the Block after an Error |
|
|
117 | (1) |
|
Firmware Steps to Recover |
|
|
118 | (1) |
|
|
119 | (2) |
|
|
119 | (1) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
121 | (2) |
|
|
122 | (1) |
|
|
123 | (26) |
|
|
123 | (8) |
|
|
124 | (1) |
|
Reasons for Having Unused Logic |
|
|
124 | (5) |
|
Reasons against Having Unused Logic |
|
|
129 | (2) |
|
|
131 | (6) |
|
|
131 | (2) |
|
|
133 | (1) |
|
|
133 | (2) |
|
|
135 | (2) |
|
Superblock Version Number |
|
|
137 | (1) |
|
|
137 | (2) |
|
|
139 | (7) |
|
Reducing the Silicon Space |
|
|
139 | (1) |
|
Minimizing Parameterization Risks |
|
|
140 | (2) |
|
Parameterization Information for Firmware |
|
|
142 | (3) |
|
Optional vs. Fixed Registers and Bits |
|
|
145 | (1) |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
147 | (2) |
|
|
149 | (22) |
|
|
149 | (8) |
|
|
150 | (1) |
|
|
151 | (2) |
|
|
153 | (2) |
|
|
155 | (2) |
|
|
157 | (4) |
|
|
158 | (1) |
|
|
159 | (1) |
|
|
160 | (1) |
|
|
161 | (1) |
|
|
161 | (3) |
|
|
161 | (2) |
|
Power-On State of I/O Lines |
|
|
163 | (1) |
|
Block-Level Power Control |
|
|
163 | (1) |
|
Communication and Control |
|
|
164 | (5) |
|
|
164 | (1) |
|
|
164 | (2) |
|
|
166 | (1) |
|
Hiding Implementation Details |
|
|
167 | (2) |
|
|
169 | (2) |
|
|
170 | (1) |
|
|
171 | (52) |
|
|
172 | (11) |
|
|
172 | (3) |
|
|
175 | (1) |
|
Block Offset and Base Addresses |
|
|
176 | (2) |
|
Register Offset Addresses |
|
|
178 | (1) |
|
|
179 | (1) |
|
|
179 | (1) |
|
|
180 | (1) |
|
|
181 | (2) |
|
|
183 | (16) |
|
|
183 | (2) |
|
|
185 | (2) |
|
|
187 | (1) |
|
|
188 | (1) |
|
Changes in the Next Revision |
|
|
189 | (3) |
|
|
192 | (3) |
|
|
195 | (2) |
|
Grouping by Operational Mode |
|
|
197 | (1) |
|
Multiple Instantiations of a Block |
|
|
198 | (1) |
|
|
199 | (8) |
|
|
200 | (1) |
|
|
201 | (4) |
|
|
205 | (2) |
|
|
207 | (1) |
|
|
207 | (3) |
|
|
208 | (1) |
|
|
209 | (1) |
|
Communication and Control |
|
|
210 | (11) |
|
|
210 | (1) |
|
Queuing Tasks in the Block |
|
|
211 | (5) |
|
Coherent Register Contents |
|
|
216 | (1) |
|
|
217 | (4) |
|
|
221 | (2) |
|
|
222 | (1) |
|
|
223 | (40) |
|
|
224 | (12) |
|
|
224 | (2) |
|
Hierarchical Interrupt Structure |
|
|
226 | (2) |
|
|
228 | (2) |
|
|
230 | (1) |
|
Types of Interrupt Triggers |
|
|
231 | (5) |
|
|
236 | (4) |
|
Acknowledging an Interrupt |
|
|
236 | (3) |
|
Order of Interrupt Positions |
|
|
239 | (1) |
|
|
240 | (3) |
|
A 1 Enables the Interrupt |
|
|
241 | (1) |
|
Enable Controls Interrupt |
|
|
241 | (2) |
|
Default Settings for Enable |
|
|
243 | (1) |
|
|
243 | (5) |
|
|
243 | (2) |
|
|
245 | (1) |
|
Atomic Enable/Disable Registers |
|
|
245 | (1) |
|
|
246 | (1) |
|
|
246 | (1) |
|
Addresses of Optional Registers |
|
|
247 | (1) |
|
|
248 | (5) |
|
|
249 | (2) |
|
|
251 | (1) |
|
|
252 | (1) |
|
|
253 | (4) |
|
Use Two Interrupt Channels |
|
|
253 | (2) |
|
Channel Positions of Leading and Trailing Interrupts |
|
|
255 | (2) |
|
Using the Interrupt Module |
|
|
257 | (3) |
|
When to Allocate an Interrupt Channel |
|
|
257 | (2) |
|
|
259 | (1) |
|
|
259 | (1) |
|
|
260 | (3) |
|
|
261 | (2) |
|
|
263 | (14) |
|
|
263 | (2) |
|
|
265 | (1) |
|
|
266 | (2) |
|
|
268 | (7) |
|
|
268 | (2) |
|
Firmware's Interaction with Aborts |
|
|
270 | (2) |
|
|
272 | (2) |
|
Abort Interactions between Blocks |
|
|
274 | (1) |
|
|
275 | (2) |
|
|
276 | (1) |
|
|
277 | (24) |
|
|
278 | (3) |
|
|
279 | (1) |
|
|
279 | (1) |
|
Looking for Potential Problem Areas |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
281 | (6) |
|
|
281 | (1) |
|
|
282 | (1) |
|
|
283 | (2) |
|
|
285 | (2) |
|
|
287 | (2) |
|
Destructive Reads and Writes |
|
|
287 | (1) |
|
|
288 | (1) |
|
|
289 | (1) |
|
|
289 | (4) |
|
|
289 | (2) |
|
|
291 | (1) |
|
|
292 | (1) |
|
|
293 | (5) |
|
|
293 | (2) |
|
Extra Resources for Test and Debug |
|
|
295 | (2) |
|
|
297 | (1) |
|
|
298 | (3) |
|
|
299 | (2) |
|
|
301 | (6) |
|
|
301 | (1) |
|
|
302 | (1) |
|
Seven Principles of Hardware/Firmware Interface Design |
|
|
302 | (1) |
|
It Finally Works! Let's Ship It! |
|
|
303 | (4) |
Appendix A: Best Practices |
|
307 | (20) |
Appendix B: Bicycle Controller Specification |
|
327 | (18) |
Appendix C: elsevierdirect.com/companions/9781856176057 or garystringham.com/hwfwbook |
|
Appendix D: Glossary |
|
345 | (4) |
Index |
|
349 | |