同学,看了你的问题,让我有种感觉,你还没有自己的职业规划,你现在是嵌入式专业的学生,学习的语言应该是C/C++,而JAVA应该是你专业不学的,但中国有句古话“360行行行出状元”,不管你学那方面的,只要学到一定深度,都可以很轻松的找到理想的工作。所以说你现在应该做的是选定你的职业方向,而不紧紧是羡慕你的同学做了一些项目。相信你也想像他们一样做一些项目,那就赶快动手吧。
就从你的专业来说吧,嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。学软件的人对硬件原理和接口通常难以有较好的掌握,最多也只能写部分BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头”可做的),所以搞软件的人完全不用担心自己在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
所以说你想学好自己的专业,那就从C/C++开始吧,注意多动手,别停留在纸上谈兵就行。你需要学习的东西还很多。
往底层走的话(和内核和硬件打交道),即bootloader,文件系统,内核这三者的移植剪裁,还有各种设备的驱动. 首先你c语言得非常非常扎实,特别是指针,结构体得吃透. 另外各种常用数据结构得了明于心(各种表). 这两者你OK的话,内核源码中的局部代码勉强可以看懂. 其次要熟悉整个内核框架的话还得了解操作系统原理(内核的各种处理机制),当然系统编程,网络编程这些知识也是必要的,特别是多线程多进程的思想和套接字的实现,另外当前最流行的ARM架构你也得了解(工作模式啊,ARM指令等....),最后适当的硬件知识也得具备,起码和硬件工程师沟通没多大障碍.
往应用层(只管调用底层的接口,对用户负责即可)走的话无非就是java和c++吧, java语言安卓用的到,安卓里面各种界面就是用java实现的.c++ 对嵌入式而言多应用于QT,很多UI都是QT实现的.