1、技能多知识面广,熟悉rtos/linux/安卓等系统内核;
2、有pcie/gmac/can/uart/usb/lvds /显示屏/camera/定时器等驱动经验,可根据芯片手册独立编写总线和外设驱动
3、熟悉C++/C/java多种语言,精通 windows/linux多线程多进程复杂QT应用开发,有地铁千万用户体量应用经验
4、熟悉内核线程进程调度/psci电源管理/中断原理/cache一致性,熟悉perf/strace等性能调优工具
5、熟悉x86/armv8架构原理、寄存器以及汇编,手写过小型的类linux操作系统
6、开朗并乐于沟通协作,坚持游泳,实事求是
一、城轨读写器linux应用
**********项目背景**********:
城轨行业一直都为高铁独裁,此次方案为广州地铁打破高铁独霸城轨的第一站,该项目时间赶、需求急,一个月内开发调试测试后正常上线。
**********项目描述**********:
1、在arm-linux平台下用C++开发基于地铁与城际业务的多线程读写器业务应用;
2、基于羊城通、银联卡、全国一卡通、地铁卡等CPU、MI卡,结合地铁与城际业务,进行复杂票卡业务交互。
包括闸机进出闸扣费、人工与自助BOM进行票卡更新等。
3、根据软件业务合理设计应用框架,通过对C++继承、虚函数、设计模式等特性合理抽象票卡对象,设计合理的解耦与易读框架。
4、研究apdu票卡交互指令,处理银联卡PBOC流程,从秘钥交互再到读取55域等不同卡内文件内容;
5、处理现场问题,及时支持项目进度。
二、鸿道工业实时操作系统内核与BSP驱动适配与开发
**********项目背景**********:
鸿道操作系统(intewell OS)基于科银公司研发用于军事的道系统(Delta OS)开发,主要应用于工业领域入工业控制、智能制造、汽车电子、轨道交通、能源电力、半导体、机器人等。
该系统采用弹性微内核架构,有不同虚拟化构型如Type-1和Type-2,已适配有arm64/x86等基于MMU内存管理单元的的芯片平台。
同时鸿道操作系统支持多核异构,也就是说可在同一个芯片平台上做好做好资源隔离,便可与linux或者windows操作系统同时运行,该架构可节省硬件成本。
由于鸿道系统与linux/windows/freeRTOS系统是不同架构的操作系统,有自己的内核API,每适配一个芯片时,内核与驱动需要重新适配或开发。
**********项目描述**********:
(一)实时内核工程师:
1、负责实时内核在arm64/x86架构的适配。
本人适配过的芯片平台,arm64如RK系列有rk3399/rk3568/rk3588,星驰系列有d9360,飞腾系列有E2000D,高铁系列有Q6490,x86板级有j6412。
2、本人主要做虚拟化Type-1构型适配与开发,需在多核芯片上同时运行鸿道与linux系统,则做内核适配如下:
(1)在芯片上做资源隔离,包括CPU/内存/高速缓存cache/驱动/中断等资源隔离;
(2)如果是linux操作系统,则需单独修改linux内核做资源隔离,在psci中添加CPU中断代码以支持虚拟网卡、虚拟串口驱动,实现双系统通讯基础;
(3)适配实时操作系统启动汇编代码,指定实时内核等资源分配表在芯片物理内存上的位置,初始化实时系统使用的物理内存资源;
(4)根据物理内存做好资源分配,比如分配内核态与用户态资源与权限,配置用户不同VM虚拟机的资源,虚拟中断映射表并编译成二进制bin文件;
(5)根据芯片手册,进行实时操作系统的CPU、物理内存与虚拟内存、L3 cache、虚拟中断映射表、APIC/GIC中断、el0-el3特权等级等适配;
(6)配置鸿道与linux或windows操作系统通讯的通道如CPU核间通讯、共享内存、NFS虚拟文件系统、虚拟串口、虚拟网口等;
(7)配置CPU频率/DDR内存频率/隔离L3 cache与内存以提高操作系统实时性;
(8)在实时内核适配完成的基础上,再适配fat文件系统/lwip网络协议栈/NFS文件系统等系统组件;
(8)根据项目经理分配的缺陷修复缺陷
(二)、BSP驱动开发工程师:
1、根据芯片手册,查阅寄存器配置,适配与开发总线驱动,本人主要适配总线驱动有:
GMAC/UART/PCIE/定时器/localbus/CAN驱动。
比如D9360这款芯片官方linux系统并为提供外部定期器驱动,本人则需要根据uboot裸机驱动代码与芯片寄存器手册,根据鸿道内核API开发驱动posix接口如open/ioctrl/read/write等。
2、根据芯片手册,查阅寄存器配置,适配与开发外设驱动,本人主要适配外设驱动有:
基于PCIE SPI的NVRAM铁片存储驱动;
三、软件动态库项目。
**********项目背景**********:
将基于串口、网络通讯的模块产品,封装通讯协议为软件动态库SDK,给到客户以及上层软件工程师开发使用模块。
**********项目角色**********:
动态库驱动开发工程师
**********项目描述**********:
1、根据模块产品协议,使用C++封装不同的串口、网络通讯协议为动态库给到上层软件开发;
2、根据不同同步异步协议内容,抽象为友好的软件接口,提供回调接口;
3、同时根据情况设计合理的软件框架,通过工厂模式、物理逻辑分层等方法进行功能解耦;
4、设计合理的故障排查机制,比如错误码、返回值、日志记录等方式,快速排查与处理客户问题;
5、在windows/linux/android/openharmony都掌握SDK的封装方法,比如在android上封装jni等;
6、接触的模块产品有读写器、纸币硬币、打印机、智能语音、票卡发售回收、闸机、LED条屏等,见识丰富;
二、类linux的小型操作系统
项目介绍:
利用业余时间提升自身基础,通过自学《操作系统真象还原》并多次阅读,从零开始一步步实现操作系统,最终实现了一个小型的类Linux操作系统。
应用技术:
汇编语言、C语言、gdb、Makefile
主要工作:
1. 搭建VirtualBox + CentOS + bochs模拟仿真环境,并在实模式下实现MBR、bootloader;
2. 构建GDT,开启A20总线,进入保护模式,启用内存分页机制,实现特权级并载入内核;
3. 实现中断处理机制,完善内存管理系统,逐步实现内核线程、用户进程,锁、输入输出等机制;
4. 进一步完善内核,实现系统调用,创建文件系统、简单的系统交互等;
项目介绍: 利用业余时间提升自身基础,通过自学《操作系统真象还原》并多次阅读,从零开始一步步实现操作系统,最终实现了一个小型的类Linux操作系统。 应用技术: 汇编语言、C语言、gdb、Makefile 主要工作: 1. 搭建VirtualBox + CentOS +
运用C#,在windows上开发的三维仿真程序,可进行三维建模,并进行相关的三维图形重叠等常见操作,并可设置三维图形参数。