zoukankan      html  css  js  c++  java
  • 嵌入式开发者技能

      合格的嵌入式开发者应是多面手,应具备各方面的技能,包括从硬件到软件到应用(电力系统保护,自动化,控制,人工智能,机器学习等),从单板到系统整机,从技术到管理,甚至吹拉弹唱也需要了解一点,做项目管理时可以提升团队气氛和丰富业余生活。

      嵌入式知识和技能体系庞大,样样精通者凤毛鳞角,一般都是一专多能,各类技能多少都能说上一点。按照嵌入式开发层次关系,整理嵌入式开发者技能大全如下。

     

    1、处理器

      MCU架构及开发。MCU(Microcontroller Unit),俗称单片机(Single Chip Microcomputer),把中央处理器(CentralProcess Unit,CPU)的频率和规格作适当删减,并将内存(Memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD等驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同的组合控制。常见的MCU包括Intel的C51/C8051F系列,Motorola的68K系列,MicroChip的PIC系列等。

      MPU架构及开发。MPC指微处理单元,一般不带外围器件(如存储器阵列等),是高度集成的通用结构的处理器。典型如Intel的X86系列、飞思卡尔的PowerPC系列、P1系列,ARM架构处理器等。

      DSP架构及开发。DSP采用哈佛结构,同一个时钟周期内可以多次访问存储器,多级指令执行流水结构提高了系统的执行效率,DSP芯片常用于复杂的运算,典型如TI的TMS CXX系列,ADI的SHARC系列、Blackfin系列等。

     

    2、CPLD&FPGA架构及开发

      CPLD&FPGA作为专用集成电路(ASIC)领域中的一种半定制电路而出现,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。通过可编程逻辑单元实现各种算法和组合逻辑。 

      基于CPLD&FPGA实现程序开发。包括RTL门级逻辑图设计,VerilogHDL程序设计,VHDL程序设计,XILINX编译软件使用,ALTERA编译软件使用,低速串、并行通信控制器设计,高速串行通信控制器设计。

     

    3、电路设计和分析

      包括模拟电路和数字电路设计,包括器件DataSheet阅读,原理图及PCB阅读等。

     

    4、原理图/PCB设计工具

      Cadence,Altium,PADS,DXP等。

     

    5、电路仿真工具使用

      Multisim,Pspice,ADS,MATLAB等。

     

    6、分立类电子元器件工作原理和选型

      电路防护类器件,阻容器件,电感磁珠,DC/DC,晶振,二极管,三极管,稳压管,光耦,MOS管,IGBT,继电器,开关和按键,LED指示灯,PCB板用接线端子,交流互感器等。

     

    7、集成类电子元器件工作原理和选型

      AD,逻辑器件,DA,运放,计数器,触发器,锁存器,译码器,SRAM,SDRAM,DDR,FLASH,EEPROM,接口芯片等。

     

    8、失效分析与可靠性

      物料的构造与工作原理,金相切片,显微观察,PCB形变测量,HALT实验技术,可靠性计算等。

     

    9、硬件测试(器件、模件、整机)

      元器件测试方法,模件、整机测试方法,元器件、模件、整机测试问题分析,国标、行标理解,EMC问题分析和解决等。

     

    10、操作系统架构及开发环境

      了解操作系统原理及基本编译原理。操作系统提供CPU资源管理、外设驱动、内存管理、线程/进程管理、文件系统、网络通讯、安全机制、界面管理等。嵌入式实时操作系统的基本特征是事件响应的快速性和确定性,在嵌入式系统中广泛应用。

      通用操作系统包括windows、Unix、LInux等。目前在嵌入式领域广泛使用的操作系统包括:嵌入式实时操作系统µC/OS-II、嵌入式Linux、WindowsEmbedded、VxWorks、FreeRTOS、QNX等,以及应用在智能手机和平板电脑的Android、iOS等。

     

    11、底层驱动开发

      VxWorks操作系统驱动开发,Linux移植,Linux开发,单板DTS配置以及根文件系统生成(Buildroot),U-BOOT移植和开发,C语言开发,Python语言开发,Makefile编写,GNU编译器及工具链的使用,Linux操作系统使用。

      具体包括以太网驱动,SPI驱动,I2C驱动,文件系统驱动,CAN驱动等。

     

    12、系统软件设计

      面向对象,设计模式,UML,嵌入式多任务开发,重构,多核开发等。了解常用的开发过程,如敏捷编程,测试驱动开发等。

     

    13、系统软件开发

      熟悉开发语言,包括:C,C++,C#,QT,Python,JAVA,等。熟悉WEB 开发,开发规范等。

     

    14、数据结构与算法

      常用数据结构和算法,图论算法,数字信号处理算法,小波算法等。

     

    15、网络与通信

      计算机网络原理,TCP/IP协议原理及分析,IEC61850规约(建模,MMS,SV,GOOSE等),103规约,104规约,DNP规约,Modbus协议,物联网Zigbee协议,bluetooth,wireshark等报文分析工具,环网HSR协议,网络安全等。

     

    16、数据库

      数据库原理与设计,SQLite/Access/MySQL/SQLServer/Oracle/大数据hadoop等。

     

    17、界面和图形库。

      Zinc,UGL,QT,SVG,MiniGUI等。

     

    18、应用知识(以电力系统自动化为例)

      电力系统常识,继电保护知识,测控知识;智能变电站网络架构,网分,故障录波器,保信,远动等。

     

    19、调试和测试

      软件测试基础,61850规约测试,网络测试,时间管理测试,应用功能测试(继电保护功能等),ATS测试开发与使用,Labview测试程序开发等。

     

    20、项目管理

      配置管理如版本管理工具Git使用等,项目计划与任务划分,项目进度跟踪,项目协调等。

  • 相关阅读:
    STL之vector
    STL之string
    STL之map
    STL之queue
    STL之set
    Ubuntu 12.04 输入法托盘图标消失
    Hibernate:No row with the given identifier exists
    Java 数组
    Oracle 简单备份 批处理(BAT)
    Oracle DataBase Link
  • 原文地址:https://www.cnblogs.com/enki-fang/p/9317873.html
Copyright © 2011-2022 走看看