Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. A good book on programming embedded systems

A good book on programming embedded systems

Scheduled Pinned Locked Moved The Lounge
csharplinuxhardwaretoolstutorial
14 Posts 12 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lutoslaw

    Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

    Greetings, Jacek

    M Offline
    M Offline
    Member 10733895
    wrote on last edited by
    #5

    I, like you, have spent most of my career in higher-level languages, although I have also worked in assembly and C. Earlier this year I took a MOOC on embedded systems programming offered via the EdX - https://www.edx.org/course/utaustinx/utaustinx-ut-6-02x-embedded-systems-4806[^]. The course is free, but the hardware kit costs some money (you don't absolutely need the hardware, you can run with an emulator, but it is helpful to actually do the hardware part). It was a good course, I thought. I had fun, and learned quite a bit. They are re-offering it in January. Per the Linux thing, the (free) IDE they recommended used Windows, but I seem to remember some chatter on the message boards about getting it to work under Wine. Anyway, the textbook is an ebook that is free (aimed at the board they use for the class), the videos are all online on Youtube, so you could check it out before registering.

    1 Reply Last reply
    0
    • L Lutoslaw

      Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

      Greetings, Jacek

      T Offline
      T Offline
      tom1443
      wrote on last edited by
      #6

      That is sort of like asking "what is the best book to learn about PC programming?". There isn't one because the field is broad. If you feel pretty good about C especially pointers and bit operations you are probably fine there. Frankly very little is done with assembly these days. Many embedded programmers are actually Electrical Engineers (I am). I think the one thing that defines embedded programmers is a deeper understanding of computer architecture and operating systems. Every RTOS implements the same things differently so without knowing what one you will use understanding POSIX is a good start. I'm not an embedded Linux fan. You'll probably want some type of background in serial communications or networking. You also need to think about the domain you want to go after. A motor control guy is much different that a video processing expert. Same with processors. If I had to pick a good processor to learn it would be ARM because that architecture is used in many applications. There are lots of embedded book lists out there. Try www.ganssle.com/bkreviews.htm Another thing to think about is debug tools. Debugging generally is not like it is for a PC. Baseline is JTAG debugging but a good embedded guy can also use a multimeter and oscilloscope. A great one can use a logic analyzer. Once you narrow your focus a bit I would go research the relevant technologies that you are interested in. I'd also go buy myself a SBC Development kit preferably one with a good manual and a prototyping area to play around with, maybe even a JTAG interface. PIC kits are fun and there is lots of learning info out there but don't expect to find lots of jobs with them. Good luck.

      1 Reply Last reply
      0
      • L Lutoslaw

        Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

        Greetings, Jacek

        S Offline
        S Offline
        SLareau
        wrote on last edited by
        #7

        A good start to help decide what your needs are and go from there. http://en.m.wikipedia.org/wiki/Embedded_system[^]

        1 Reply Last reply
        0
        • S Steve 2

          "The book". BEEEEP. Wrong question ;-) I very much doubt that you'll find a book that has "languages for various devices/instruction sets." in it - well, current, modern ones anyway. The programming guide on the ARM cortex M3 is a rather thick book already - and that's only generic onformation, not talking about the custom peripherals of any of the different hardware implementers at all. One book, or even many books by themselves won't turn you into an "embedded C developer". What do you mean by "C embedded"? I'm doing some embedded work only for a few years now, but I think some sort of restricted C for embedded stuff is a thing of the past. Even most commercial embedded IDEs at least for the ARM world use GCC, well and then there's the ARM compiler that comes with Keil, also standard C. If you mean "c programminc concepts best suitezd in embedded world", hrm, maybe look at the book called "design patterns for embedded systems in C", although reviewers found some flaws with the way the book is made / usability, albeit good content wise. There are quite some very different architectures on the market. I doubt a book can cover them all well enough for you to become proficient. You need to do stuff and gain experience. Sounds obvious, yeah. But maybe pick one popular architecture, and try to understand that one and actually do projects with it, fail and learn why, learn by doing. There may be a book teahcing general concepts - but then again, take just the GPIO (general purpose input / output) - what they are and can do also differs between architectures. Yeah, I'd definitley suggest that you find some clever way of findong out what are well in-demand "hot" platforms / architectures right now and then pick one that may be the most beginner friendly one from freely available resources - you'd have to ask for that specifically then. I know that e.g. AVR is supposed to be simple, and they even offer a free to use VisualStudio based IDE I think. For some, AVR is too simple / not capable enough. (the small AVR, not the AVR32 anyway) I like the STMicro electronics based ARM cortex chips since they have some nice ranges which cover my project needs better than other ARM implementors I checked out so far, or other platforms. But some people think this is harder to get into micro controllers than other MCU types. They are option-packed & lots of stuff needs to be set up. Ok my overall view of MCU platforms is limited, let's see what other people have to say. Maybe you should look for a dedicat

          L Offline
          L Offline
          Lutoslaw
          wrote on last edited by
          #8

          Well, maybe my suppositions were wrong. I know I should learn by trying things, but need something to begin with... Like an introduction to the topic written for an engineer.

          1 Reply Last reply
          0
          • L Lutoslaw

            Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

            Greetings, Jacek

            R Offline
            R Offline
            RTek23
            wrote on last edited by
            #9

            Jacek Gajek wrote:

            Could you recommend me a proper book on embedded systems?

            The answer as other's have said is "it depends", mostly on the flavor of the unit you are going to work with. There is a nice selection of boards out there such as the Raspberry Pi, Beagle bone Black, which are fairly close in capability, both run stripped Linux builds. At the lower end, the Arduino is a fun board to play with and start building some skills. It uses an IDE with a C like syntax with versions for Linux (not sure which flavour). Microchip also has a number of demo boards to get you up and running (and a fairly decent free C based tool chain)...I think there are builds for Linux now... In my experience, I have found the boards are the least of the problems, it's finding the low cost tool chains that are compatible (which tends to take out the higher stuff i.e. TI, Motorola, STM etc which have some very nice boards), unless your being funded. Most offer a limited use tool chain for demo, normally either size locked, time locked or other restriction. Ken

            1 Reply Last reply
            0
            • L Lutoslaw

              Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

              Greetings, Jacek

              U Offline
              U Offline
              User 3760773
              wrote on last edited by
              #10

              I don't think you could lift a book that went into all that in any kind of detail. When making the transition from Windows device drivers to 'embedded systems' I found the book "MicroC OS II" by Jean J. Labrosse very helpful (on Amazon here http://tinyurl.com/pgluzvd[^]) There is a newer version of the book but I have not read it and I don't think it's as good because the OS is closed source. Jean has another book, "Embedded Systems Building Blocks" where he goes into interfacing with devices ( [on Amazon here:]) This is geared towards smaller systems. There are 2 basic types of embedded systems, "super loop" and using some sort of embedded OS (such as uCOS/II.) Most of the engineers that I have worked with struggle with the concurrency issues. Get a handle on these first and you will be a step ahead of most people. Wayne

              1 Reply Last reply
              0
              • L Lutoslaw

                Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

                Greetings, Jacek

                A Offline
                A Offline
                Al Chak
                wrote on last edited by
                #11

                Experience only :sigh:

                1 Reply Last reply
                0
                • L Lutoslaw

                  Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

                  Greetings, Jacek

                  R Offline
                  R Offline
                  R Erasmus
                  wrote on last edited by
                  #12

                  I'm a embedded software developer and I use the following technologies on a day to day basis: - Continues Integration - Agile - Waterfall - RISC - Safety Critical Software - Object Oriented design in C - UML Modelling - Make - Unix - Scripting language (like perl) - Requirement management - Revision control systems - Testing and the various types of testing - Static analysis - Processors in general (One piece of hardware I always work with) - C Compilers The hardware technologies I work with I learn as I have to. The chance you going to use your asm experience is very little. If you want to do something to get you familiar embedded systems, buy a pic and program it (nothing hectic required here).

                  "Program testing can be used to show the presence of bugs, but never to show their absence." << please vote!! >>

                  L 1 Reply Last reply
                  0
                  • R R Erasmus

                    I'm a embedded software developer and I use the following technologies on a day to day basis: - Continues Integration - Agile - Waterfall - RISC - Safety Critical Software - Object Oriented design in C - UML Modelling - Make - Unix - Scripting language (like perl) - Requirement management - Revision control systems - Testing and the various types of testing - Static analysis - Processors in general (One piece of hardware I always work with) - C Compilers The hardware technologies I work with I learn as I have to. The chance you going to use your asm experience is very little. If you want to do something to get you familiar embedded systems, buy a pic and program it (nothing hectic required here).

                    "Program testing can be used to show the presence of bugs, but never to show their absence." << please vote!! >>

                    L Offline
                    L Offline
                    Lutoslaw
                    wrote on last edited by
                    #13

                    That was informative, thanks.

                    1 Reply Last reply
                    0
                    • L Lutoslaw

                      Hello! Could you recommend me a proper book on embedded systems? There are so many of them and everyone is "the best". I wish to gain skill required to apply to a job for an "Embedded C Developer". I've been coding in (very)high-level languages like C#, but I know basics of C too. I was writing simple verilog and asm stuff for FPGA and controllers back in a university but it was long time ago. I suppose that the book should cover such topic as: - detailed introduction to embedded programming, how devices work etc. - how to use development tools/IDEs in a Linux environment - C embedded - assembler languages for various devices/instruction sets. A price is an important factor, too.

                      Greetings, Jacek

                      D Offline
                      D Offline
                      Dominic Amann
                      wrote on last edited by
                      #14

                      I am using the O'Reilly book Linux System Programming by Robert Love. http://www.amazon.com/dp/1449339530/ref=pe_385040_121528360_TE_dp_4.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups