24
votes
\$\begingroup\$

I do a lot of firmware work at my job, but I'm looking for more advanced books on the topic. Things not like the basics of "what is an interrupt". I'm reading the O'Reilly book on embedded systems development which is OK, but not advanced enough. For instance, its rare for books to discuss things like Flash pages (which can be really useful), how to put a section of code in a specific area of memory.

Perhaps something with some tips and tricks. I do primarily PIC programming.

\$\endgroup\$

locked by Kortuk Apr 16 '12 at 5:52

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. See the help center for guidance on writing a good question.

Read more about locked posts here.

15
votes
\$\begingroup\$

Jack Ganssle's The Firmware Handbook has some good bits and pieces. Best of all you can find a lot of the good parts from the book (and more) on his website.

\$\endgroup\$
  • \$\begingroup\$ Nice link, have enjoyed my first 10 minutes of reading. \$\endgroup\$ – Kortuk Nov 24 '09 at 12:11
  • \$\begingroup\$ Make that the first few days of reading. Excellent writer and engineer. \$\endgroup\$ – Kortuk Nov 30 '09 at 12:55
  • \$\begingroup\$ He has a great course too. \$\endgroup\$ – Daniel Grillo Jul 10 '10 at 13:30
  • \$\begingroup\$ I have heard of his course, but my company has less than 10 employees and only three firmware guys, not feasible. My school is just tight with money without a large enough firmware department. \$\endgroup\$ – Kortuk Jul 14 '10 at 19:03
6
votes
\$\begingroup\$

I wish I had a good suggestion, I will watch the thread hoping a great book shows up.

As a side not, the manual that comes with your compiler is one of the most important books you can read. In general this is where you learn the nitty-gritty of placing code in certain areas.

Learning about how to use flash at a basic level, like what pages are, you can learn from the datasheet. If you need to learn more advanced topics, well, I guess looking for a good book is the right way to go.

I will let you know that there is a very very large amount of educational materials on the microchip website. Most microcomputer sites put a lot of material up to help boost new users to learn their system.

\$\endgroup\$
  • \$\begingroup\$ Someone downvoted me, if they could tell me why I could try to improve my posting style. \$\endgroup\$ – Kortuk Nov 25 '09 at 7:46
  • 1
    \$\begingroup\$ +1 - I think you did a good job of talking about places that people tend to ignore due to Google-syndrome. \$\endgroup\$ – J. Polfer Jul 14 '10 at 12:58
  • \$\begingroup\$ @Kortuk - probably because your "answer" did not answer anything. Your text would be perfectly suited for a comment to the question. \$\endgroup\$ – Trygve Laugstøl Mar 18 '11 at 16:25
  • \$\begingroup\$ @trygvis, this is from a SE 1.0 site and when I was just getting involved in the site. I did not know better at the time. I hope you got a laugh out of it. \$\endgroup\$ – Kortuk Mar 18 '11 at 23:07
  • \$\begingroup\$ @Kortuk, hehe. I just wanted to answer the question for future reference as the question is good (and popular!). \$\endgroup\$ – Trygve Laugstøl Mar 19 '11 at 8:43
3
votes
\$\begingroup\$

I like "Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems" by Miro Samek. The previous edition was called "Practical Statecharts in C/C++: Quantum Programming for Embedded Systems." I read the previous edition of this book cover to cover, and in some ways I prefer that edition because it was more C++ based. The latest edition is more C based, which makes sense for embedded development because even the smallest micros have a C compiler. Don't be scared by the UML part. The important thing to learn is how to use state machines to make your code more robust and reliable. UML is just one way to express a state machine, and the subset of UML required is very minimal.

\$\endgroup\$
2
votes
\$\begingroup\$

For the 16-bit PICs, I recommend "Microcontrollers: From Assembly Language to C Using the PIC24 Bit Family" by R. Reese, J. Bruce and B. Jones, ISBN 978-1584505839. It has a lot of hardware (including schematics) mixed in with the firmware discussions and is not just a rehash of datasheets.

If you're using one of the newer 8-bit PICs (PIC18F family) the following book looks fairly good: "Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC 18F Series" by D. Ibrahim, ISBN 978-1584503781. I don't have that one myself though. Both books are quite recent (published in 2008).

-- Tom

\$\endgroup\$
2
votes
\$\begingroup\$

Linkers and Loaders by John R. Levine (ISBN 1-55860-496-0) is quite good. It's about the low-level details of memory, code relocation, symbol management, and the like, but not exclusively for embedded development. Still, it's the best book on such low-level details that I know of. At this point, it might be a little dated-- I don't think it has anything about modern Flash file systems, for example.

\$\endgroup\$
2
votes
\$\begingroup\$

For ARM chips I have learned a lot from: ARM System-on-chip architecture by Steve Furber

It is a well-written book with a lot of technical background and will probably be useful even if you work on other architectures.

I had a PIC32 book which is ok and focuses on PIC: Programming 32 bit Microcontrollers in C

\$\endgroup\$
1
vote
\$\begingroup\$

An Embedded Software Primer and Programming Embedded Systems in C and C++

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.