![]() Breaking the system into the right building blocks and having the most sensible interfaces between them is a huge deal and making it simple and elegant takes work and iterations. It also has the huge benefit of clarifying your own thoughts, and often the process of explaining things in simple terms throws up a surprising amount of questions and subtle issues. The idea is not to go into gory details, but just give a total newcomer a decent idea of what is going on. This should be written early on and maintained. I was taught that you should be able to give a decent high level overview of a system, what it is trying to do and how it aims to do it, in 5 to 20 pages of well written text, with a few diagrams. ![]() In my early days as an EE, before I turned to software, I was taught a really invaluable and simple skill, which I've found to be often overlooked. ![]() I personally think human language is really important. Hi Jack - you hit the nail on the head again with your note on language. Kaiwan kindly sent both books for this month's giveaway.ĭaniel McBrearty responds to the last issue's note on maintainability: His follow-on book Linux Kernel Programming Part 2 - Char Device Drivers and Kernel Synchronization is about creating user-kernel interfaces, work with peripheral I/O, and handle hardware interrupts. If you've never built the kernel he goes through the process step by step. The book is very well-written and Kaiwan makes working on the kernel crystal clear, starting with basic concepts and giving detailed examples. Kaiwan N Billimoria has a new book out named Linux Kernel Programming, and it's a heck of a volume. An advantage of using tracing tools is that they allow for visualizing the data, which makes it easier to understand the data and spot anomalies in the event patterns. the "dump" command in gdb), allowing you to see the most recent history of the system execution, up to the current state (an error handler, or similar). When halted on a breakpoint, a snapshot is taken from the ring-buffer using the normal debugger connection (e.g. This can be used during debug sessions in basically any IDE. In our tool Percepio Tracealyzer we call it "snapshot mode", and the same approach is also offered by e.g. This approach is actually provided by several trace tools, so you don't need to implement it yourself. Regarding the debugging tip by Todd Mizenko - ring-buffer event logging. In response to an article in the last Muse, Johan Kraft writes: Here are the tool reviews submitted in the past. Please submit clever ideas or thoughts about tools, techniques and resources you love or hate. But it's far better to pinpoint the exact location of a bug, making reproduction and finding and fixing fast and deterministic, than let a sporadic unreproducible bug escape into the field." John Carter's Law: "Arguably a check can be buggy and hence fire unnecessarily. If you include the phrase "embedded muse" in the subject line your email will wend its weighty way to me. ![]() Tip for sending me email: My email filters are super aggressive and I no longer look at the spam mailbox. For commercial use contact To subscribe or unsubscribe go here or drop Jack an email. Editor: Jack Ganssle, may redistribute this newsletter for non-commercial purposes.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |