Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

Microprocessor Debugging: 1980–2016 – Een Uitgebreide Geschiedenis

Sinds de dageraad van elektronica-ontwerp zijn bugs onvermijdelijk, en debugging is de essentiële discipline om fouten en errors te worstelen om te bepalen welke zal prevaleren – en hoe grondig.

Debugging-technologie is even fascinerend geëvolueerd als de ontwerpen die het ondersteunt. Van simpele stimulus-response-observe benaderingen tot de huidige gesofisticeerde tools, apparatuur, en methodologieën, is het veld gegroeid in tandem met steeds complexere systemen. In 2017 begon een nieuw tijdperk met de introductie van debug over functionele I/O, wat nog grotere efficiëntie en capaciteit belooft.

Na decennia van wereldwijde innovatie ben ik sinds 1984 betrokken bij debugging. Om de paradigmashift die we nu ervaren te waarderen, is het nuttig de mijlpalens te herbezoeken die de industrie vormden.

1970s–1980s
Systeemontwerp verschilde toen merkbaar van vandaag. Een typisch board bestond uit een CPU, (EP)ROM, RAM, en perifere ICs zoals PICs, UARTs, DMA-controllers, timers, en I/O-apparaten, elk geïmplementeerd op aparte chips.

1980s single-board computer (SBC)
(Bron: https://oldcomputers.net/ampro-little-board.html)

Ontwikkelaars schreven code in assembly of C, compileerden, linkten, en produceerden een HEX-bestand voor de ROM-image. Het proces omvatte handmatig EPROM's wissen met een UV-wisser, ze programmeren via een seriële of parallele interface, en de chips terugplaatsen op het board. Als het programma niet gedraagde als verwacht, waren diverse debugging-technieken beschikbaar.

Code Inspectie: De meest fundamentele benadering, nog steeds gebruikt door velen, omvat het stap-voor-stap doorlopen van code mentaal of met een teksteditor, een vaardigheid die waardevol blijft wanneer tools onbeschikbaar of te duur zijn.

LEDs: Een klassieke methode gebruikt on-board LEDs of andere indicatoren om programmastate te signaleren. Door LED-toggles op sleutelpunten in te voegen, kunnen ontwikkelaars de uitvoeringsstroom visueel traceren. Wanneer additionele I/O-pinnen en een logic analyzer beschikbaar zijn, wordt real-time state tracing mogelijk.

On-target Monitor: Boards met een seriële poort en voldoende geheugen konden een kleine monitor-programma hosten. Door in deze monitor te springen, kon een ontwikkelaar stap-voor-stap door assembly gaan, registers en geheugen inspecteren via RS‑232 commando's zoals s (stap) of m 83C4,16 (geheugen tonen).

In-Circuit Emulator (ICE): Voor wie het zich kon permitteren, was de ICE de ultieme debugger. Het verving de CPU met een emulatie-circuit dat interne signalen kon observeren en controleren. Hoewel groot en duur – vaak duizenden dollars kostend – booden ICE's geavanceerde breakpoints, trace, en de mogelijkheid om EPROM's te ruilen met emulatie-RAM, wat de noodzaak om te wissen en re-flashen tijdens ontwikkeling elimineerde.

Motorola Exorciser ICE
(Bron: https://www.exorciser.net/personal/exorciser/Original%20Files/exorciser.jpg)

Intel MDS ICE
(Bron: https://www.computinghistory.org.uk/userdata/images/large/PRODPIC-731.jpg)

1982–1990
Drie sleutelveranderingen ontstonden voor embedded ontwikkelaars:

  • Geïntegreerde ICs: CPU's begonnen peripherals te omvatten – bijv. de Intel 80186/80188 (evolutie van de 8086/8088), Zilog Z180 (van de Z80), en Motorola CPU32 familie (bijv. 68302) van de 68000.
  • Betaalbare ICE's: Fabrikanten produceerden lagere-cost ICE's zonder bond-out chips, wat de prijs onder $10.000 bracht voor een 80186 ICE.
  • Kloksnelheid-uitdagingen: Stijgende CPU-snelheden spannen ICE-kabels en controllogica. De oplossing was on-chip debug circuitry (OCD), wat single-step, register-toegang, en breakpoints bij volle CPU-snelheid bood, hoewel vroege implementaties volledige trace-capaciteit misten.

OCD-toegang gebruikte typisch proprietaire interfaces zoals Background Debug Mode (BDM) of de meer gangbare JTAG, traditioneel gebruikt voor productietest. Terwijl sommige tools geheugen konden benaderen terwijl de CPU draaide, konden anderen dat niet, wat leidde tot variatie across implementaties.

1990–2000
Externe trace werd onpraktisch door hoge kloksnelheden en interne cache. In plaats daarvan introduceerden fabrikanten gecomprimeerde core trace data – alleen non-sequentiële program counter veranderingen vastlegend en comprimeren voor off-chip transport. Dit stelde de debugger in staat uitvoeringspaden te reconstrueren met kennis van het draaiende programma. Sleutelarchitecturen omvatten IBM's PowerPC, Motorola's ColdFire, en ARM's 7TDMI cores.

2000–2010
Gecomprimeerde trace datasets enabled on-chip trace buffers zoals ARM's Embedded Trace Buffer (ETB), toegankelijk via JTAG. De buffer-grootte kon geconfigureerd worden, balancerend silicium-oppervlakte tegen trace-prestaties. Multi-core SoCs introduceerden nieuwe uitdagingen: JTAG scan chains verdwenen als cores powered down. ARM's CoreSight architectuur loste dit op door een enkele JTAG-based debug access port te bieden die alle memory-mapped CoreSight componenten kon bereiken, inclusief meerdere cores die onafhankelijk konden power-cyclen.

2010–Heden
Met de opkomst van 64-bit cores en wijdverspreid Linux/Android gebruik, won on-device debug tractie. Kernel drivers exponeren nu CoreSight componenten, wat on-target trace-capture via de perf-subsysteem mogelijk maakt. De ARM Embedded Logic Analyzer (ELA) brengt de rijkdom van vroege ICE's terug, biedend complexe breakpoints, triggers, en interne SoC signaal-toegang – allemaal binnen het silicium.

Na 40 jaar onophoudelijke innovatie staat het veld op de rand van een nieuw hoofdstuk: debuggen en traceren over bestaande functionele I/O. Deze shift belooft leanere oplossingen die ontwikkeltijd en -kosten verminderen terwijl capaciteit verbetert, de lange oorlog tegen bugs voortzettend.

Ingebed

  1. De Evolutie van SPICE: Van CANCER-wortels tot Moderne Schakelingssimulatie
  2. Microprocessor programmeringsfundamenten
  3. Makino: Pionier van Japans Eerste NC-Freesmachine en Bewerkingscentrum
  4. Gene Haas: Een CNC-Erfenis en Motorsports Imperium Bouwen
  5. Mazak Corporation: Van 1919 Stichting tot Mondiale Werktuigleider
  6. CNC Programmering Basis: Stapsgewijze Tutorials & Voorbeeldcode
  7. Cadence onthult Cloud Passport Partner Program voor versnelde cloud-migratie voor chip-ontwerp
  8. Geschiedenis van wolframdraad: van Edisons koolstof filamenten tot moderne AKS legeringen
  9. C++ comments: best practices voor leesbare, onderhoudbare code
  10. C-programmastructuur begrijpen: Een beginnergids
  11. C# Programma Structuur: Kerncomponenten & Hello World Voorbeeld