分为软件和硬件两大块。软件需要学C和汇编。硬件需要学单片机构架、外围电路。至于更深层次的知识,可能会涉及到C语言、编译原理、数据结构、面向对象设计、数字电路、模拟电路、电路理论、EMC设计、EMI设计、计算机原理等等。至于工具,你需要熟悉一个软件的开发平台,一般用keil就行了,硬件开发平台用protel吧。其他看你自己了。
想学习单片机,你可以先买一块单片机开发板,然后在上面编些程序;
如果想学习硬件设计,必须熟悉数字逻辑电路,掌握一种电路板设计软件,如PROTEL, PADS等
基础知识是必备的,数电模电,c语言和一些必备的开发工具软件如KEIL ;剩下的就是先入门,建议买书看看,最好是清华大学出版的,详细。然后在网上找个视频看看,最后再买学习板。