驱动开发--内核添加新功能

Ubuntu下这个文件为开发板ls命令的结果

内核的内容:

mm:内存管理

fs:文件系统

net:网络协议栈

drivers:驱动设备

arch与init:跟启动相关

kernel与ipc:任务,进程相关

向内核增加新功能(静)--编译到uImage

1.新功能源码与Linux内核源码在同一目录结构下

在linux-3.14/driver/char/目录下编写myhello.c

2.给新功能代码配置Kconfig

3.给新功能代码改写Makefile

4.make menuconfig 界面里将新功能对应的那项选择成<*>

内核动态加载--在同一目录下

即新功能源码与内核其它源码不一起编译,而是独立编译成内核的插件(被称为内核模块)文件.ko

a、新功能源码与Linux内核源码在同一目录结构下时

  1. 给新功能代码配置Kconfig

  2. 给新功能代码改写Makefile

  3. make menuconfig 界面里将新功能对应的那项选择成<M>

  4. make uImage

  5. cp arch/arm/boot/uImage /tftpboot

  6. make modules

    make modules会在新功能源码的同级目录下生成相应的同名.ko文件(生成的ko文件只适用于开发板linux)

    注意此命令执行前,开发板的内核源码已被编译

、新功能源码与Linux内核源码--不在同一目录结构下

  1. cd ~/fs4412

  2. mkdir mydrivercode

  3. cd mydrivercode

  4. cp ../linux-3.14/drivers/char/myhello.c .

  5. vim Makefile

  6. make (生成的ko文件适用于主机ubuntu linux)

  7. make ARCH=arm (生成的ko文件适用于开发板linux,注意此命令执行前,开发板的内核源码已被编译)

相关推荐
杰克崔3 小时前
内核里的__private变量的使用及sparse
linux·运维·服务器·车载系统
杜子不疼.3 小时前
【Linux】基础IO(一):C 接口文件讲解
linux·c语言·开发语言·人工智能
每次学一点3 小时前
如何将网吧电脑加入ZeroTier虚拟局域网
运维·服务器·网络
勉灬之3 小时前
基于 Node.js + mysql2 的实用同步助手,适合开发/测试环境下快速对齐表数据
服务器·网络·node.js
很㗊3 小时前
Linux --- tar命令常见用法
linux·运维·服务器
2501_941329723 小时前
气压表智能读数检测:基于YOLOv8的指针与刻度识别实现自动化读数
运维·yolo·自动化
飞凌嵌入式3 小时前
嵌入式AI领域的主控选择
linux·arm开发·人工智能·嵌入式硬件
RisunJan3 小时前
Linux命令-ld(将目标文件连接为可执行程序)
linux·运维·服务器
猫猫的小茶馆3 小时前
【Linux 驱动开发】四. 平台总线驱动
linux·c语言·arm开发·驱动开发·嵌入式硬件·mcu·物联网
济6173 小时前
linux--Cortex-A7架构-- Ubuntu20.04
linux·运维·架构