文章目录

  • 配置树莓派的Linux内核
  • 树莓派Linux内核编译
  • 文件系统
  • Linux内核驱动基础框架
  • 驱动测试步骤

树莓派学习笔记,本文图片文字皆为转述

配置树莓派的Linux内核

驱动两种加载方式:* 编译进内核  zImage包含了驱动M 模块方式生成驱动文件xxx.ko  系统启动后,通过命令inmosd xxx.ko 加载
内核配置:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig指定ARM架构   指定编译器                      树莓派          主要核心指令

树莓派Linux内核编译

1 编译:ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs指定用多少电脑资源进行编译zImage生成内核镜像modules要生成驱动模块dtbs生成配置文件
2 编译成功后,看到源码树目录多了vmlinux,失败则无此文件成功后,目标zImage镜像arch/arm/boot底下
3 打包zImage成树莓派可用的xxx.img./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img
4 数据拷贝mkdir data1 data2挂载U盘sudo mount /dev/sdb1 data1   一个fat分区,是boot相关的内容,kernel的imgsudo mount /dev/sdb2 data2   一个是ext4分区,也就是系统的根目录分区。安装modules, 设备驱动文件: hdmi usb wifi io ...sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/chenlc/data2 modules_install安装更新 kernel.img 文件,注意镜像名字是kernel7.img先备份cd /home/chenlc/data1cp kernel7.img kernel7OLD.img再把编译新生成的拷贝到data1,起名kernel7.imgcp kernel_new.img /home/chenlc/data1/kernel7.img拷贝配置文件cp arch/arm/boot/dts/.*dtb* /home/chenlc/data1

文件系统

1. 什么是文件系统?常规认知: 根目录文件系统是操作系统用于明确存储设备组织文件的方法。以上说的方法:就是文件管理系统(程序),简称文件系统
2. 文件系统(文件管理系统的方法)的种类有哪些?FAT VFAT NTFS EXT1/2/3/4 HFS ....树莓派查看文件系统的命令: df -Tvfat  :  boot(bootloader, kernel)ext4  :  根目录tmpfs : 内存文件系统
3. 什么是分区?windows: 随意(面向普通用户PC),目录即分区C(装系统的位置)也可以随意在C盘存放文件.    D盘(用户随意发挥)Linux: 按照功能来分区,每个分区严格存放文件(开发者)   嵌入式系统可以分为4个区,分别是bootloader、  启动代码para、        启动代码向内核传递参数的位置kernel、       内核分区根分区等      文件系统结构
4. 什么是文件系统目录结构?常规认知: 根目录,不是分区,和windows不同
5. 什么虚拟文件系统Virtual File System ?vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口,
6. 虚拟文件系统有什么作用?简化应用程序员的开发不管是什么文件类型,不管文件是磁盘还是设备,都只用open read write统一操作

Linux内核驱动基础框架

 a.驱动代码编写,参考pin4test.cb.编译内核1把驱动代码拷贝到driver/char2修改Makefile告诉编译器,要编译该驱动文件3 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make modules

驱动测试步骤

内核驱动装载:sudo insmod xxx.ko内核驱动卸载:sudo rmmod xxx 不需要写ko查看内核模块:lsmod验证步骤:
a.装载驱动
b. 驱动装载后生成设备 比如/dev/pin4,通过sudo chomd 666 dev/pin4 添加访问权限
c.运行测试程序调用驱动
d.内核的printk是内核的printf,通过dmesg查看打印消息

树莓派开发6-配置树莓派的Linux内核相关推荐

  1. 树莓派环境处理_树莓派开发环境配置

    接上篇,准备树莓派开发环境的配置. 买回来的树莓派一般会带一个系统,在这里我建议自己定制系统,以树莓派桌面系统为蓝本搭建开发环境. 你需要准备一张 16G的高速TF卡,用以安装系统. 4B取消了全尺寸 ...

  2. Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)

    开发板:Zynq7030数据采集板 PC平台:Ubuntu-18.04 + MobaXterm 开发环境:Xilinx Vivado + SDK -18.3 交叉编译工具:arm-linux-gnue ...

  3. Linux 驱动开发 三十五:Linux 内核时钟管理

    参考: linux时间管理,时钟中断,系统节拍_u010936265的博客-CSDN博客_系统节拍时钟中断 Linux内核时钟系统和定时器实现_anonymalias的专栏-CSDN博客_linux内 ...

  4. linux内核配置与编译,LINUX内核的配置与编译、安装

    LINUX内核的配置与编译.安装 平台为VM RHEL 5.1 SERVER,所用的内核为linux-2.6.25. 可以到上下载相应的内核版本. 解压压缩包,并进入内核目录.下面是具体的步骤: 1. ...

  5. 【嵌入式Linux驱动开发】二十一、Linux内核自带的KEY驱动探索

      君子应知进退方,时机不到且隐藏.   妆未梳成未见客,势弱稍时敛锋芒.   腹隐良谋待机至,东山再起斗志昂.   遥想曹刘煮酒事,高明刘备扮愚郎. 文章目录 一. Linux 内核自带 KEY 驱 ...

  6. Linux内核配置网口驱动,linux内核编译,配置本机驱动

    1.前言 编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多驱 ...

  7. Linux 驱动开发 三十四:Linux 内核定时器原理

    参考文档: <Cortex -A7 MPCore Technical Reference Manual> 中 Chapter 9:Generic Timer. <ARM ® Arch ...

  8. Linux设备驱动开发详解-Note(5)---Linux 内核及内核编程(1)

    Linux 内核及内核编程(1) 成于坚持,败于止步 Linux 2.6 内核的特点 Linux 2.6 相对于 Linux 2.4 有相当大的改进,主要体现在如下几个方面. 1.新的调度器 2.6 ...

  9. 【树莓派开发】使用树莓派在Linux环境下编写C语言代码

    文章目录 前言 1.创建test.c文件 2.编译运行该文件 3.编译并链接两个源文件 结语 前言 如何使用树莓派编译C语言代码呢? 21年暑假的时候,学习编程的劲头高涨,然后冲动消费买了个树莓派4B ...

最新文章

  1. aiohttp 高并发web服务_【Python入门】50.异步IO之 asyncio实现异步操作
  2. helm的作用及v3版本的架构变化概述
  3. 从Wiesloch火车站到SAP Walldorf总部的交通方式
  4. 技术分享:开源矿工的超频
  5. 深度学习 Caffe 初始化流程理解(数据流建立)
  6. 轻量级.Net Core服务注册工具CodeDi发布啦
  7. usb长包数据结束判断_如何判断南桥好坏 判断南桥好坏方法介绍【详解】
  8. 开放性实践活动微信客服_什么是开放组织中的实践社区?
  9. FCC 基础JavaScript 练习6
  10. 如何理解Beta分布和Dirichlet分布?
  11. Java实习日记(5)
  12. 沉默的潜意识音频Creator软件
  13. 导出的CSV数据中含有身份证并在Excel正确显示方法
  14. html5禁用右侧滚轮条,鼠标滚轮终于不乱跳了,自己动手更换鼠标滚轮编码器 雷柏7100=================...
  15. Tableau制作全球电影数据分析/全球超市利润混合地图
  16. 服务网关 Zuul基本使用
  17. 关于IPv6(超详细讲解)
  18. [转帖]实时协同设计CAD平台
  19. 《编程之美——微软技术面试心得》一摞烙饼的排序初体验
  20. 评分卡模型开发(六)--WOE值计算

热门文章

  1. Complexer-YOLO:基于语义点云的实时三维目标检测与跟踪
  2. 3D点云two-stage目标检测方法优化综述
  3. 基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法
  4. 子域名绑定html,DEDE二级域名(多站点)绑定详解
  5. LeetCode 51. N皇后
  6. 欧几里德结构数据与 非欧几里德结构数据
  7. netty发送数据_【Netty】JAVA IO模型
  8. 零基础入门学习Python(2)
  9. WR:微生物污染源解析中宿主特异性标记物在中国的表现特征
  10. Python使用matplotlib可视化散点图、并在可视化图像的底部和右边添加边缘直方图、自定义边缘直方图的色彩(Marginal Histogram)