Câu hỏi này chắc là bạn muốn hỏi cách tự học, Đạt sẽ trả lời theo hướng tự học.
Học embedded không khó, cái khó là nó yêu cầu nhiều kiến thức ban đầu để có thể bắt đầu làm việc. Đạt làm Embedded Linux nên chỉ có thể đưa ra một số tài liệu có thể tự học Embedded Linux như sau.
Để làm Embedded Linux thì bạn cần phải hiểu về Linux, chọn một distro linux nào đấy mà bạn thấy thích rồi dùng thử. Đạt có viết một trả lời về việc cài đặt Linux cho người lần đầu tiên mới sử dụng.
Để tăng tốc độ học Linux và cũng là một yêu cầu cơ bản để trở thành một Embedded Linux Developer bạn phải biết sử dụng command line và viết Shell Script. Quyển The Linux Command Line hướng dẫn bạn rất chi tiết và cơ bản về cách sử dụng Linux Command Linux, chính xác là trên Ubuntu.
Để hình dung công việc của một Embedded Linux Programmer phải làm hàng ngày bạn nên đọc Embedded Linux Primer: A Practical Real-World Approach (2nd Edition). Quyển này cho bạn khái niệm cơ bản về thế giới Embedded Linux bao gồm Linux cơ bản, cách hệ thống boot, các script được gọi, cách load firmware, cách debug và một số vấn đề chi tiết nho nhỏ khác.
Bạn cần phải biết cách build một hệ thống nhúng, cách tốt nhất là sở hữu một cái board và thực hành. Mình may mắn được học Embedded thông qua công việc hàng ngày nên không phải mua board về thực tập. Để tự học thì bạn có thể mua BeagleBone và thực thành với Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux
Sau khi build được hệ thống, bạn phải viết chương trình cho hệ thống nhúng. Tùy vào mức độ công việc mà bạn cần những kỹ năng khác nhau. Nhưng về cơ bản, bạn cần phải biết C. Nếu bạn chưa biết gì về C thì nên đọc C Primer Plus (6th Edition) (Developer’s Library), nếu bạn đã có cơ bản về lập trình, đọc thêm quyển The C Programming Language
Để lập trình trên Linux, đặt biệt là Embedded Linux có bao gồm Device Driver, bạn phải hiểu cách Kernel hoạt động. Linux Kernel Development (3rd Edition) sẽ cho bạn kiến thức về Kernel, bên cạnh đó một số quyển sách sau sẽ bổ sung thêm kiến thức cho bạn
Hoặc học khóa học CS6210: Advanced Operating Systems
Học Embedded Linux không khó, nó chỉ khó ban đầu
Học Android sẽ dễ hơn ở bước đầu, bạn không cần nhiều kiến thức về Android vẫn có thể viết ứng dụng đầu tiên, sau đó độ khó sẽ tăng dần. Để master, bạn phải bỏ ra rất nhiều công sức.
Học Embedded Linux sẽ khó hơn, vì bạn cần phải hiểu rất nhiều thứ mới có thể viết được “hello world”. Có thể thấy bước đầu sẽ khó, nhưng về sau sẽ dễ hơn.
Nhưng không có nghĩa là Android hay các ngành khác dễ hơn, nếu có thì chỉ là dễ hơn lúc đầu.