求上海嵌入式面试机会
lz二流本科,2014届毕业生,面试了几家,一看还没毕业就pass了,还有一家面试时,学校被鄙视了。感觉还是会一点东西的啊。。。
1、熟悉linux操作平台、熟练使用vim, gcc编程开发
2、熟练掌握C语言,熟悉数据结构(链表、栈、队列、二叉树等)及基本算法(快速排序,哈希查找,基数排序以及树的遍历等)
3、熟悉系统IO、进程、线程、信号、锁机制、套接字等,能够在linux下熟练使用POSIX或System V标准库函数编写程序,了解软件开发流程
4、熟悉linux内核及相关数据结构,理解内存管理、进程管理、中断处理机制
5、熟悉ARM汇编语言,熟练掌握arm-linux-gcc交叉编译工具的使用,能用c和汇编完成嵌入式软件的开发
6、熟悉ARM嵌入式系统内核原理,ARM嵌入式系统GPIO接口,存储器控制,内存管理单元,NANDFLASH控制器,中断机制,UART,LCD,ADC和触摸屏等
7、熟练掌握嵌入式ARM平台上的开发流程,包括uboot移植,内核移植,文件系统移植
项目经验
一、虚拟内存管理系统
本系统简单的模拟了内存管理的机制,使用了三个链表分别表示可用内存,已用内存,以及
内存的使用信息
二、学生管理系统
该系统实现了学生管理机制。学生信息存储在文件中,系统启动时从文件中读取学生信息形成链表,可以对信息链表实现删除,添加,查询,打印,修改,保存等功能。在此系统中大量使用了函数指针,数据结构等,使用C语言实现了面向对象的机制
三、基于ncurses的俄罗斯方块
进程版:使用循环队列存储操作类型(w,s,a,d)等,队列,信号量,条件变量存储在共享内存中,通过三个进程分别完成方块正常下移,用户操作(前两步将操作存储到队列中)从队列中读出操作进行相应操作,使用信号量实现对循环队列的互斥操作,使用条件变量实现实时操作。
四、简单的文件传输协议(ftp)
本系统是基于client/server模式的,server和client通过tcp协议连接,server有一个recv进程接受命令通过管道传递给del进程,del进程为每一个用户创建一个子进程,通过消息队列传递消息,用户信息表存在共享内存中。Server端将处理结果通过结构体传递个Cient端。此系统使用了多种进程间通信机制。
五、局域网的邮件传输协议
本系统是基于client/server模式的,server和client使用tcp协议连接。client端使用了GTK实现图形界面,有发送信息,查看信息,删除信息,添加附件等功能。server端使用多线程实现,主线程轮询等待用户请求,为每一个用户创建一个服务线程。Server和client之间使用使用结构体,共用体等实现信息的传递。
六、bootloader实现
bootloader实现了对系统的引导,参考s3c6410芯片手册,利用芯片的异常机制中的restart实现启动时引导系统。通过arm汇编语言完成关闭看门狗(watchdog),cpu倍频,内存初始化,设置栈指针,nandflash初始化等,之后使用c语言从nandflash中的整个bootloader读到初始化好的内存中,之后将制作好的系统映像从nandflash中拷贝到内存相应位置从而实现bootloader。