info of me

2019-07-13 03:21发布

这里写图片描述

基本信息

github

姓名 出生 学历 兴趣 杨礼林 1993.04.26 本科 linux,FPGA 电话 民族 专业 语言 邮箱 18408244522 汉族 17届微电子 linux C,python,shell 1657301947@qq.com

INFO

求职意向:嵌入式linux开发工程师

自我评价:

  • 自学能力强,主动接受并理解新知识、新事物,能不停评价自己(觉得自己有一定知识广度,但是深度不够,所以到华清深入学习)。
  • 在学校学习以实践居多,主动了解或学习学习最新知识.
  • 具备电子技术、信息技术和计算机网络方面的知识素养,具有熟练的计算机操作技术。
  • 热衷于FPGA技术和linux,拥有无穷的热情和折腾精神,遇到技术障碍不会被击溃,能坚持到解决问题。
  • 喜欢开源精神,信奉python的“轮子”哲学,linux的“一切皆文件”哲学。
  • 动手能力强,linux装机不下50次,windows更多,能长期只用linux,主要用linux mint.

知识体系

1.知识
  • 精通:linux C , linux使用,verilog,vim
    • 能用c编写并发服务器,epoll多路复用模型服务器,能做arm linux驱动开发,用c做51,stm32,nionsII,freeRTOS开发等.
    • 能长期只用linux,会正则表达式及相关工具(grep,sed,awk),能编写shell脚本做一些自动化。
    • 能在linux下安装配置各种开发环境,服务器LNMP/LAMP环境,能修复一些linux问题如grub引导等等,使用过(kali,ubuntu,mint,openSuse,CentOS等),主要使用mint
  • 熟练:verilog, java,github,markdown
    能做FPGA的小项目开发,简单安卓APP开发,能用git对代码进行版本控制,在github查找有用开源项目,开源库,能用markdown快速编写文档
  • 熟悉:python,shell,mysql,sqlite,uboot开发,示波器使用,json解析,xml解析
    能用anaconda(一种python集成环境)代替matlab做科学计算,做一些小型辅助工具,能简单使用mysql,sqlite及一些前端软件如phpmydamin,研究过树莓派,S3C2440开发板uboot移植(自学),exynos4412开发(华清学习)
  • 了解: C++,QT,pyqt
  • 熟悉的开发环境:
    eclipse neon,Quartus 15,android studio2.1,anaconda2.4,matlab,keil,cubeMX

工作项目经验

2015.7-2015.8 郫县富士康暑假工 ipad iair2液晶面板检测

  • 在幕布围起来的屏幕检测台上放置多台待测ipad air2液晶面板,使面板显示多种单光
    、条带光。
  • 检测其是否有亮点,暗点,并将非正常的面板交于维修人员。

2016.3-2016.4 寝室 基于树莓派与PC机的服务器负载均衡(独立完成)

  • 在PC和树莓派2B+机上搭建LNMP服务器环境(PC系统是linux mint 17.3,树莓派是debian wheezy,同一个TPlink路由)
  • 配置分别两机的nginx配置文件,配置方向代理,将输煤派做主机,pc机作为均衡服务器
  • 用python编写一个简易并发网页GET网页请求,测试负载均衡
这里写图片描述
这里写图片描述

2016.4-2016.5 电子设计竞赛(寝室完成) 基于FPGA、niosII的声音传输数据(独立完成)

由于精力和资金有限,取消声音耦合,采用导线直接耦合DA和AD

1、调制
  • 用verilog设计DDS正弦发生器,并下载到开发板
  • 将DDS模块包装成带FIFO缓存的FSK调制器,用了两个频率的正弦波12kHz,16kHz。
  • 配置niosII模块,并用c语言编写驱动,使ASCII码经经调制器转为信号。
  • 连接焊接DA模块,滤波电路,将数字正弦转为模拟正弦信号
2、解调
  • 焊接AD模块,连接FPGA开发板
  • 用verilog编写将数字正弦信号转换为二进制信号(分离高低频率为二进制,fifo积分法)
  • 用c写好niosII驱动,将二进制信号转ASCII码(搜索并同步,按八位对齐)
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

2016.7-2016.7 华清远见 多功能并发服务器

  • 完成一个TCP并发服务器
  • 支持网页”GET /”语法
  • 支持远程密码登陆后使用,并有常用ls,cd,cat等等指令
  • 统一接口,便于增添功能
  • 采用增加拓展英汉词典,用sqlite3保存登陆信息和单词元信息
这里写图片描述
这里写图片描述

2016.8-2016.8 华清远见 android多功能APP

  • 成员各完成一个小功能,我选择音乐播放器功能
  • 在github上找一个快速高斯模糊库导入模块供调用
  • 用gimp剪切一些图备用
  • 使用fragment滑动页面并完成和美化专辑界面,音乐列表界面,和各按键监听事件
  • 将包交给组长完成合并各功能模块
    这里写图片描述

2016.9-2016.9 华清远见 设备树类型驱动和播放器

  • 用的内核版本是3.*的,所以支持设备树,可采用反射机制于设备树构建
  • 用PWM调频来调音 {MOD},用PWM调脉宽来实现身心幅度调节
  • 实现更据乐谱音乐播放

社团活动

  • 大一参加学院学生会,易班工作室。

技能证书

一.证书

1. 通过CET4,能查阅技术类文档资料,各种datasheet。
2. 获得院级奖学金,多次获得助学金,大多用于购买开发板及周边工具。
3. 通过计算机等级二级,计算机操作熟练,没有继续考其他的,认为自己不止二级的知识。

二.技能

  • 学习和折腾51单片机,FPGA,树莓派,三星S3C2440开发板,帮助多个同学完成过课程设计如(51矩阵键盘与数码管显示,51串口通信,51转速测量仪,基于fpga的dds,基于fpga的调制和解调),独立做过一些嵌入式小课题
  • 有两年linux使用时间,linux mint做主用系统(用过ubuntu,openSuse,CentOS,debian等),linux装机超过50次,借和使用过老师的刀片服务器
  • 会编写linux驱动,并且写过一些驱动(ioremap法,mmap法),会arm汇编
  • 知道jpg压缩算法,DCT,rgb->yuv,zigzag,huffman变长编码,预测
  • 了解过视频传输协议onvif,看过一些文档
  • 搭建LAMP、LNMP多次,对负载均衡,大数据hadoop,openstack,docker和几种linux文件系统有点认识。
  • 知道常见国内镜像源和使用
  • 爱逛github,stackoverflow,喜欢开源精神
  • zigzag算法
/* * name:lilin * */ #include #include #include #include typedef struct{ unsigned char b; unsigned char g; unsigned char r; //unsigned char a; }PIX_t; #define DATA_t int enum DIRECT_t{u,d,l,r,ul,ur,dl,dr}; typedef struct{ int x; int y; DATA_t data; enum DIRECT_t dir; }POINT_t; int init_point(POINT_t *pnt,int x,int y,enum DIRECT_t d); DATA_t *init_arr(DATA_t d00,int l); int display_arr(DATA_t *arr,int l); int zigzag_step(DATA_t *arr,POINT_t *pnt,int l); int zigzag_all(DATA_t *arr,POINT_t *pnt,int l); int zigzag_handle(); int main(int argc, char const* argv[]) { int len; if(argc>1){ len=atoi(argv[1]); }else{ len=15; } POINT_t pnt; init_point(&pnt,0,0,r); DATA_t *arr=init_arr(pnt.data,len); zigzag_all(arr,&pnt,len); return 0; } int init_point(POINT_t *pnt,int x,int y,enum DIRECT_t dir) { pnt->x=x; pnt->y=y; pnt->dir=dir; pnt->data=0; return 0; } DATA_t *init_arr(DATA_t d00,int l) { DATA_t *arr=(DATA_t *)malloc(l*l*sizeof(DATA_t)); memset(arr,0,l*l*sizeof(DATA_t)); *arr=d00; return arr; } int display_arr(DATA_t *arr,int l) { int i,j; for(i=0;ifor(j=0;jprintf("%-3d ",*(arr+i*l+j)); } putchar(' '); putchar(' '); } return 0; } int zigzag_step(DATA_t *arr,POINT_t *pnt,int len) { switch (pnt->dir) { case d: printf("d "); if(pnt->x==0){ pnt->y++; pnt->dir=ur; } break; case r: printf("r "); if(pnt->y==0){ pnt->x++; pnt->dir=dl; } break; case dl: printf("dl "); if(pnt->y==(len-1)){ pnt->dir=ur; pnt->x++; }else if(pnt->x==0){ pnt->dir=ur; pnt->y++; }else{ pnt->x--; pnt->y++; } break; case ur: printf("ur "); if(pnt->x==(len-1)){ pnt->dir=dl; pnt->y++; }else if(pnt->y==0){ pnt->dir=dl; pnt->x++; }else{ pnt->x++; pnt->y--; } break; } *(arr+len*(pnt->y)+pnt->x)=(++ pnt->data); if(pnt->x==(len-1) && pnt->y==(len-1)) return 0; return -1; } int zigzag_all(DATA_t *arr,POINT_t *pnt,int l) { while(zigzag_step(arr,pnt,l)!=0){ printf("pnt[%d][%d]=%d ",pnt->x,pnt->y,pnt->data); display_arr(arr,l); usleep(50000); system("clear"); } printf("pnt[%d][%d]=%d ",pnt->x,pnt->y,pnt->data); display_arr(arr,l); return 0; } 效果: dl pnt[5][6]=72 0 1 5 6 14 15 27 28 44 45 65 66 0 0 0 2 4 7 13 16 26 29 43 46 64 67 0 0 0 0 3 8 12 17 25 30 42 47 63 68 0 0 0 0 0 9 11 18 24 31 41 48 62 69 0 0 0 0 0 0 10 19 23 32 40 49 61 70 0 0 0 0 0 0 0 20 22 33 39 50 60 71 0 0 0 0 0 0 0 0 21 34 38 51 59 72 0 0 0 0 0 0 0 0 0 35 37 52 58 0 0 0 0 0 0 0 0 0 0 0 36 53 57 0 0 0 0 0 0 0 0 0 0 0 0 54 56 0 0 0 0 0 0 0 0 0 0 0 0 0 55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

教育背景

2013.9-2017.7 西华大学 微电子科学于工程 本科

  • 主要课程:数字电路、模拟电路、固体物理、verilog硬件描述语言