学单片机之前需要的基础知识:10年从业经历总结高级单片机程序员应该熟悉内容
学单片机之前需要的基础知识:10年从业经历总结高级单片机程序员应该熟悉内容此处也是主要指单片机上的小嵌入式系统。主要涉及内容包括操作系统的时间管理,存储管理,任务管理。根据相关原理最好自己能够写出个类操作系统运行机制。操作系统原理除此之外,需要了解一些硬件的基础。如led指示灯控制电路,按键检测电路,三极管或者mos管控制电路。裸机开发与上系统开发区别裸机开发程序的运行走向是完全透明的。但上系统的开发,此处主要指单片机上的小嵌入式系统,如freeRTOS uCOS OSAL(虚拟操作系统)。程序的运行包括操作处理的一些不透明的部分,影响一些强实时性操作。如操作系统中一些临界区保护机制。
13年毕业,一直从事单片机软硬件开发工作,经历了多次换工作的面试,也为公司招人技术面了很多个人,总结了高级单片机程序员应该熟练掌握的内容。
概括总结包括:基础知识;裸机开发与上系统主要区别;操作系统原理;程序模块及框架结构化设计;单片机启动过程;程序升级设计;程序设计面向对象的思想。
基础知识
单片机的开发所用语言主要是c语言,此处主要是c语言相关的基础知识。包括编译与预编译,宏定义及条件编译使用;关键字static const使用;结构体与指针的用法;回调函数的用法;基本通信接口uart iic spi的用法。
除此之外,需要了解一些硬件的基础。如led指示灯控制电路,按键检测电路,三极管或者mos管控制电路。
裸机开发与上系统开发区别
裸机开发程序的运行走向是完全透明的。但上系统的开发,此处主要指单片机上的小嵌入式系统,如freeRTOS uCOS OSAL(虚拟操作系统)。程序的运行包括操作处理的一些不透明的部分,影响一些强实时性操作。如操作系统中一些临界区保护机制。
操作系统原理
此处也是主要指单片机上的小嵌入式系统。主要涉及内容包括操作系统的时间管理,存储管理,任务管理。根据相关原理最好自己能够写出个类操作系统运行机制。
程序模块及框架结构化设计
为了程序的可读性,可维护性。在功能需求实现的基础上,需要具有程序设计的模块及分层的设计思想。面试中会让你分享你以往项目程序设计中是怎么处理的,以了解面试者是否具有这方面的意识与概念。
单片机启动过程
作为单片机的应用设计开发,对于初级单片机程序员来说,不需要具体了解单片机是如何启动的,只需要知道c语言程序的入口main即可。但作为高级单片机程序员,你是需要熟悉单片机复位到main执行的这段过程基本处理逻辑,也即是单片机的启动过程。
程序升级设计
程序的升级包括无线ota空中升级,有线升级。升级设计相关知识内容会包括bootloader,程序存储,程序跳转切换。
程序设计面向对象的思想
单片机的应用开发主要是c语言的开发,c语言实际是面向过程的开发。初级开发设计是面向过程的流程化思想,一定进阶后,需要掌握使用c实现面向对象设计思想。所以若是有java,c 开发的基本了解就更好了。面向对象主要思想点是对象的行为与属性,使用c语言的结构体包装管理对象的行为与属性
总结
以上均粗略的概括各方面相关内容,并没有具体展开,后续文章会慢慢进一步细说,欢迎大家一起沟通交流。