发布于2026-07-19 阅读(0)
扫一扫,手机访问
就拿嵌入式 Linux 硬件平台(常见的是能跑 Linux 的 ARM 开发板)上的软件开发来说,可以粗线条地分成三类:裸机编程、Linux 驱动编程,以及 Linux 应用编程。这三者各有各的玩法和侧重点,下面逐个拆开说。
裸机编程这个概念其实很好理解。简单讲,就是没有操作系统支撑的编程环境——直接对着硬件写代码,程序直接在硬件上跑,单片机上的开发就是典型例子,比如 STM32 如果不跑 RTOS,基本就是裸机那一套。不过话说回来,很少有人会拿高性能 ARM 板不跑操作系统去搞裸机开发,性价比实在太低,多数时候都是跑个 Linux 系统上去。
Linux 驱动编程,狭义上指的是基于 Linux 内核提供的驱动框架来开发驱动程序。驱动开发工程师通过调用内核接口完成设备驱动的注册,核心工作就是处理好底层硬件操作相关的逻辑。通常 SOC 厂商会基于某个内核版本(比如从 kernel.org 拉下来的主线)做定制修改,然后对外提供改好的内核。如果你的 PCB 设计用了这颗 SOC,还加上了 DRAM、Flash、LED、外接屏等外设,那你就要在这个定制内核的基础上继续改,把新硬件的驱动加进去。反过来,如果你是用现成的开发板来学习,板子厂商也会提供他们改好的内核。总而言之,驱动开发就是围绕 Linux 内核,设计软件让硬件跑起来。
Linux 应用编程(也叫系统编程)则是在操作系统之上干活。应用程序通过调用系统调用 API 来完成功能和逻辑,运行在用户态;内核则跑在内核态。应用编程通常基于 C 语言库,调用库函数即可。在 Linux 下,标准 C 语言库是 GNU C 语言函数库(glibc)。需要注意的是,库函数大多是由系统调用封装而来的(当然不能说所有,有些库函数根本不调用任何系统调用),因此可移植性很好。而且很多操作系统都实现了 C 语言库,不同系统之间接口定义几乎一样,所以库函数在不同操作系统间的可移植性比系统调用更胜一筹。
上一篇:编程基础知识分享——编程开始之前
下一篇:可视化编程和低代码编程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8