嵌入式 Linux C 原生应用程序开发
嵌入式 Linux 是将日益流行的 Linux 操作系统进行裁剪与修改,使之能在嵌入式硬件上运行的一种操作系统,拥有许多开源的参考与移植,也出现了 RTLinux 等实时性更强的发行版本。嵌入式 Linux 应用开发过程当中,会大量运用到 C 语言去开发原生的 Linux 应用程序,从而获得较小的存储空间占用,以及更高的执行效率,并且能够兼顾较好的代码维护效率。
本文首先会介绍文件 IO
、进程与进程间通信
、多线程
、网络编程
等
Linux
原生应用程序开发的内容,然后分门别类的对串口
、GPIO
、SPI
、I2C
等常用的协议开发进行了介绍。阅读本文前需要具备 C 编程语言基础,并且理解
GNU 编译器、链接器、调试器的相关概念。
Kernel
Linux 是一款由C语言编写,符合POSIX(可移植操作系统接口,Portable Operating System Interface)标准,并遵循GPL开源协议的多任务多用户类UNIX操作系统,其内核源代码使用Git托管在作者 Linus 创建的Linux Kernel 官方仓库当中,Linux 内核采用一体化的宏内核架构(VxWorks 和 Windows 属于微内核架构),集成了大量的设备驱动;同时采用模块化设计,可以在内核运行时进行模块的热加载/卸载。嵌入式开发当中,Linux 内核移植大致分为:体系结构级别、处理器级别、板级移植 3 个层次,其中板级移植较为常见。
内核版本
Linux 内核版本号通常由三段数字组成,以 2019 年 3 月 27
日释出的4.19.32
版本内核为例,其中4
为主版本号,6
为次版本号(奇数表示开发版,偶数表示稳定版),28
为修订号。
文件结构
文件 IO
进程
进程间通信
多线程
网络编程
GPIO
串口
SPI
I2C
嵌入式 Linux C 原生应用程序开发