(1) C language is the strong in all programming languages, single-chip microcomputer, DSP, similar to the various kinds of ARM chip programming can be done in C language, it must be very skilled master.
Recommended books: "The C programming language" This classic textbook is written by foreigners, there are also Chinese version.
(2) Operating system principle, is necessary, if it is a computer professional graduation that also does not matter, if is non-computer professional must find a relatively simple computer principles books to see, what called "Process" "Thread" "System scheduling" and so on the basic issues clear.
(3) (3) The Linux operating system is written in C language, so should also learn the Linux programming, only the application, in order to understand the essence of the kernel in close step.
Recommended Books: Advanced Programming for the UNIX Environment (2nd edition)
(4) Understanding of ARM architecture, principles, and its assembly instructions, in embedded development, generally rarely to write a compilation, but the minimum requirement is to be able to read the arm assembly.
(5) When the system is migrated, it needs to start from the lowest bootloader, then the kernel porting, the file system porting and so on. The migration of this part of the hardware relies on a very large, and its configuration steps are relatively complex, and there is not much detailed information.
(6) Drive development
Linux driver design is both a challenging area and a profound content.
Linux driver programming is essentially a Linux kernel programming category, so it is required for Linux kernel and kernel programming. Before learning to understand the composition of the Linux kernel, because each part of the detailed study is enough to expand into a thick book.
Also recommended to the major bookstore library to see the huaqing vision of the best-selling embedded professional books, I believe it will be helpful.
ARM Linux kernel source analysis
Recommended books for Learning embedded Linux