杨绍军
1、熟悉IA-32 intel架构体系及常用指令,理解linux中断机制、内存管理、文件系统、进程/线程调度、信号机制、进程间通信等底层实现原理;理解Linux设备驱动模型,能熟练进行字符设备、块设备、网络设备等驱动程序的开发,熟悉linux常用的驱动开发接口。
2、熟悉ARM-v6架构体系及常用指令,熟悉linux引导初始化原理,能够自行编写引导程序并成功引导linux内核;熟练使用ARM 架构
- 技术能力:
- 工作态度:
- 工作成果:
项目意向
税前7500RMB/月 基本资料
890元
全程集中
-
工作经验:
擅长技能:
平台工作经历
其他工作经历
公司名称
拍档科技电子有限公司(上海)北京研发中心
在职时间
2011-02-01 ~ 2012-03-01
职位名称
Linux嵌入式驱动工程师
薪水
0/月
项目描述
软件/互联网开发/系统集成
个人职责
软件工程师职位级别: 高级职位(非管理类)职责和业绩: 2011/10----2012/01: Linux 设备驱动开发
责任描述: 个人负责开发及调试
项目描述: X86平台POS机USB接口客显驱动开发: 在unbuntu-11和fedora-11操作系统上,根据USB协议规范并按照Linux USB设备驱动模型要求,配置好相关的函数接口和参数,要点:
1、配置驱动支持的设备列表,初始化结构体struct usb_device_id。
2、初始化struct usb_class_driver: 文件打开(open)、数据读写函数(read write)=>初始化struct file_operation结构体=>初始化struct usb_class_driver结构体。
3、读写函数中的urb分配: 创建urb(usb_alloc_usb)=>分配urb缓冲区(usb_buffer_alloc)=>复制用户数据到该缓冲区中(copy_from_user)=>初始化urb(usb_fill_bulk_urb)=>向usb核心提交urb(usb_submit_urb)。
4、探测函数probe: 分配设备空间并初始化,探测设备端点地址和缓冲区大小,把相关信息保存到私有数据结构中,向usb核心注册设备(usb_register_dev函数)。
5、初始化struct usb_driver结构体,并向usb核心注册该驱动(usb_register函数)。
X86平台POS机钱箱驱动(用户态网络驱动,寄存器配置) : Ubuntu操作系统环境下,根据芯片手册在用户态通过系统调用配置相关寄存器,完成钱箱的打开和关闭操作,结果用socket编程通过网络反馈给客户端,并完成客户端钱箱状态的读取,实现网络远程打开钱箱设备的功能。
Arm平台POS机客显驱动(字符设备驱动模型) : 根据芯片手册配置相关寄存器,把客显驱动放在内核级别,根据字符设备模型,实现设备的内核态驱动,并编写上层应用程序测试代码。
2011/08----2011/09: lcd显示屏驱动
软件环境: Linux 2.6.28内核
硬件环境: 飞凌6410主板
开发工具: arm-linux-4.3.2交叉编译工具
责任描述:
1、工作需求: 原有的显示屏最大分辨率为480*272不符合公司要求,更换为800*600分辨率的LCD显示屏。
2、产品型号: Innolux display corporation公司lcd显示屏 800*600分辨率
3、主要工作内容:
a 配置GPIO端口: 主要包括GPICON、 GPJCON寄存器(配置RGB线),GPECON(lcd电源初始化为输出模式)。
b 对照文档PROGRAMER’S MODEL部分配置主要的寄存器端口:
MIFPCON: SEL_BYPASS[3]到显示屏正常模式而不是by-pass模式;
SPCCON: LCD_SEL[1: 0]使用RGB I/F 样式
VIDCON0: 配置视频输出格式和显示器使能:
VIDCON1: RGB I/F控制信号。
VIDTCON0: 水平同步时序配置 HBPD,HFPD,HSPW,硬件时序图
VIDTCON1: 垂直同步时序配置 VBPD,VFBP,VSPW硬件时序图
VIDTCON2: 配置水平及垂直分辨率(800*600)
WINCON0: 设置bpp模式和窗口使能。
VIDOSD0A: 设置窗口的左上角位置(0)。
VIDOSD0B: 设置窗口水平和垂直大小(800*600)
GPEDAT打开lcd电源.
VIDCON0: 打开lcd控制器。
c 配置frambuffer内核驱动参数(在probe探测函数中) :
申请DMA缓冲区并保证和cache的一致性 dma_alloc_coherent
将设备的设备物理地址映射到虚拟地址 ioremap 4KB页对齐
具体的参数配置(颜色配置565、分辨率配置800*600)
d 注册帧缓冲 register_framebuffer
e 注册平台驱动 platform_driver_register
f 驱动调试。
使用技能
无
公司名称
湖南华安科技有限公司
在职时间
2009-03-01 ~ 2010-12-01
职位名称
嵌入式软件工程师
薪水
0/月
项目描述
软件/互联网开发/系统集成
个人职责
软件工程师职位级别: 中级职位(两年以上工作经验)职责和业绩: 2010/04----2010/10: BootLoader引导程序 ARM嵌入式裸板驱动
软件环境: arm-linux-gcc、linux2.6.28 linux 内核
硬件环境: S3C6410(ARM11)
开发工具: Linux、arm汇编、GNU C
责任描述: 嵌入式软件开发工程师,编写底层代码,并调试通过
项目描述: 以ARM11为处理器核的S3C6410x SOC,内核为Linux-2.6.28。使用arm汇编语言实现第一阶段的cpu芯片级初始化,在程序前8k内容中完成cpu时钟初始化、外设初始化、栈初始化等工作,最后将bootloader拷贝到内存中运行。
C语言实现第二阶段的板级初始化。完成内存初始化、UART初始化等。编写网卡的裸机驱动,支持TFP下载,NandFlash裸机驱动,支持NandFlash擦除和烧写,支持裸板程序的测试,能够成功引导linux2.6内核。
该项目属于团队开发,部分代码的调试工作由同事完成。
2009/09----2010/02: 嵌入式远程视频监控系统
软件环境: Linux2.6.28内核 ARM汇编 GNU C
硬件环境: S3C2410处理器核
开发工具: vim编辑器 linux交叉编译工具包 make
责任描述: 团队开发,个人负责服务器端V4L2驱动接口的配置及多线程代码编写和调试。
项目描述: 1、选中V4L2驱动选项并编译内核,按照文档对V4L2驱动接口进行初始化。创建图像采集线程及客户端请求连接线程,实现2+N线程模式。
2、根据内核中对V4L2视频设备的支持,操作/dev/video设备文件,实现视频数据的采集,并建立多线程用于图像数据的采集和对客户端数据的发送。
3、该系统实现远程视频监控,主要用于煤矿、安防等领域。该项目属于团队开发,客户端的程序(在嵌入式设备上运行的代码)由同事完成。
使用技能
无
公司名称
在职时间
1999-07-01 ~ 2009-02-01
职位名称
网络工程师
薪水
0/月
项目描述
IT运维/技术支持
个人职责
网络工程师职位级别: 中级职位(两年以上工作经验)职责和业绩: 公司网络的日常维护工作及系统升级
使用技能
无
教育经历
院校名称
湖南邵阳学院
毕业时间
所学专业
热能工程
最高学历
本科
