
Linux嵌入式开发-从思想到实践
文章平均质量分 82
从一名LINUX应用开发者向内核开发者转变过程中的思想和实践经验
EniacCheng
80后古板程序员
电子游戏爱好者
展开
-
003-编译、加载、卸载
KERNELPATH ?= /lib/modules/5.8.0-63-generic/buildhellokernel-objs := HelloKernelModule.oobj-m := hellokernel.oall: ${MAKE} -C ${KERNELPATH} M=${PWD} modules;clean: ${MAKE} -C ${KERNELPATH} M=${PWD} clean; rm -f *.koeniac@eniac-ThinkPad-E480:~/T原创 2021-10-25 09:44:57 · 180 阅读 · 0 评论 -
002-第一个内核模块的代码
什么是内核模块内核模块可以简单理解为运行在内核空间的程序。与用户空间的应用程序一样其也有固定的模式。第一个内核模块先来看一个标准的应用程序HelloWorld.c#include "stdio.h"int main(int argc, char** argv){ printf("Hello World!");}以上代码大家一定不会陌生。还记得第一次学习这个程序时的心情么,大多数人可能都不理解它为什么要这么写,只是记住了它的格式而已。那么对于内核模块也是一样的,最开始我们不需要理解那原创 2021-10-23 18:16:41 · 219 阅读 · 0 评论 -
001-从LINUX系统开发转为内核开发的思想转变
前言应用程序开发者(系统开发)和内核开发者对于程序的理解会稍微有些不同,因此在转变的过程中需要先从思想上作一些转变。首先应该先了解一下两者各自的特点,以便理解两者的不同。工作思路上的差异系统开发:理解业务抽象业务逻辑和对象设计程序流程和算法编码:基本上业务逻辑代码需要从0开始构建内核驱动开发理解硬件原理图(硬件的数量和连接方式)必要时需要了解芯片手册和各种bus协议(如USB协议,I2C协议)编码:基本上都有可以参照的代码,基本上都是通过移植和修改来构建两者在工作思路原创 2021-10-07 11:17:03 · 186 阅读 · 0 评论 -
000-初步认知嵌入式计算机体系架构
硬件结构从本质上讲,目前无论是PC还是嵌入式开发板,所有计算机无外乎是两种硬件架构。一种是冯诺依曼架构体系、一种是哈佛架构体系。这两种架构体系对于仅仅从事驱动开发的嵌入式开发者是透明无感的,因此不需要掌握它俩的区别,感兴趣的话可以自行在网上搜索相关内容。但如论是那种架构体系计算机都是由以下基本硬件构成的:cpu、memory、storage、bus、peripheral。 它们之间的关系如下图:...原创 2021-10-07 09:55:09 · 533 阅读 · 0 评论