嵌入式开发早在10年之前笔者就读本科时,就炒得火热的概念,当时说嵌入式开发将是得到大力发展的行业。一直到最近又有物联网IoT,智能硬件的发展,嵌入式开发再次被推向风口浪尖。下面我们就简单说一下究竟什么是嵌入式开发。
嵌入式开发,一般是指针对某个特定嵌入式系统的开发,嵌入式系统广义上可以认为是功能受限的计算机系统。由于是功能受限的计算机系统,所以一般都是专用的系统,而不像我们平时用的个人电脑(PC)那样是通用计算机,而且由于功能的受限,嵌入式系统一般不支持在线编译功能:即可以在自己平台上编译、运行自己平台上的程序,换句话说有在该平台(HW --> OS --> Compiler)上可以运行的编译器。嵌入式平台开发板各种各样,下图是一个常见的例子。
常见嵌入式开发板
既然不能在嵌入式系统上实现在线编译,那怎么实现针对嵌入式系统功能的编译与调试呢?答案就是在嵌入式开发领域家喻户晓的交叉编译。交叉编译实际是指在一个计算机平台上(Host),编译适用于另一个平台上(Target)运行的程序。Host主机一般就是我们常用的PC机,Target就是各种各样的嵌入式系统,不同的嵌入式系统一般需要不同的交叉编译器,像笔者目前常用的arm-none-eabi-gcc就是针对arm平台的交叉编译器。交叉编译的流程一般如下图:
交叉编译、调试、运行流程框图
本文计划是写一系列的嵌入式开发文章,会从基础的嵌入式概念到具体的嵌入式开发工具技术,最终并计划将笔者之前私下开发的一款RTOS内核(目前仅为学习目的而编写)分析给读者,使读者了解如何从零开发一个麻雀虽小五脏俱全的RTOS,感兴趣的读者可以关注一下。