嵌入式内核及驱动开发(初级)

本文介绍了嵌入式内核及驱动开发的基础知识,包括设备环境搭建、驱动开发、字符设备驱动和中断驱动编程。内容涵盖内存与设备树、驱动代码编写、内核参数传递、字符设备与块设备的区别、中断处理机制以及平台总线模型的应用。
摘要由CSDN通过智能技术生成

嵌入式内核及驱动开发(初级)


一、设备环境的搭建

在这里插入图片描述

内存里面是运行代码的

dtb文件(设备树:描述设备信息 )在加载内核的时候也会加载到内存DDR里面,内核在运行的时候会读取设备树,知道产品开发板有哪些设备,供驱动驱使
在这里插入图片描述

tfftp加载内核文件传输

nfs挂载根文件系统(文件共享)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置uboot参数,内核启动方式。
1 先将服务器ip和客户端ip设置

2 tftp是服务器将主机上面的UImage和.dtb文件下载到后面的对应地址。bootm是启动内核,启动后面的地址里面的程序 -是预留位置不是之间的地址

3 挂载根文件系统,内核才能启动否则崩溃
在这里插入图片描述

二、驱动开发

在这里插入图片描述
驱动代码的编写主要是对uImage和KO模块的编写

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述首先对内核和设备树进行相关配置和修改,内核在make menuconfig图形界面里面进行配置。相关驱动信息的修改在设备树种去配置,然后Makefile之后再复制到tftpboot里面去

在这里插入图片描述
module_init是ko模块嵌入驱动
module_exit是ko模块撤销驱动

在这里插入图片描述
主要是内核源码的位置和指定编译的代码

装载KO到内核中insmod hello.ko

卸载rmmod hello(文件夹)

lsmod显示有哪些装载的ko
在这里插入图片描述
内核传参的时候需要加入传参函数

在这里插入图片描述
驱动代码在应用层写好然后在insmod装载到内核层。但是内核驱动的装载和卸载是有很多的,所以需要统一的一个对ko模块驱动的管理库。用链表做一个可以到处,删除,查询的独立模块用于维护和管理

三、字符设备驱动开发

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值