摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 在linux驱动移植-LED字符设备驱动中,我们直接使用ioremap函数进行内存映射,得到GPIO有关寄存器的虚拟地址,然后操作寄存器对应的虚拟地址控制GPIO的目的。 这一节,我们将采用设备树向 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 前面几节内容我们介绍了设备树的结构,以及在linux内核中移植设备树。这一节将对linux内核源码进行介绍,分析内核对设备的处理逻辑。 一、汇编阶段 1.1 uboot引导内核启动 在linux设备 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 在Linux内核采用设备树之后,驱动程序需要获取设备树的属性。Linux内核为驱动程序提供了一系列API函数,用于获取设备树的属性值。在Linux内核中,以“of_”开头的函数是设备树API函数。 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、修改设备树s3c2440.dtsi s3c2440.dtsi设备树存放的是s3c2440这个SoC跟其他s3c24xx系列不同的一些硬件信息,如clock控制器、串口等等; 修改arch/arm 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、linux内核启动 我们回顾一下uboot引导linux内核启动过程, uboot通过执行bootcmd命令启动内核: bootcmd="nand read 0x30000000 kernel; 阅读全文
摘要:
一、介绍 1.1 为什么引入设备树 我们首先回顾一下我们之前学习过的驱动程序。比如: linux驱动移植-lcd驱动基础;在arch/arm/plat-samsung/devs.c文件中定义了platform设备s3c_device_lcd,在arch/arm/mach-s3c24xx/mach-s 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、printk介绍 我们在学习C语言的时候,经常使用printf函数将内容输出到控制台,printf 是格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf是C语言标准库函数, 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、RTC框架 1.1 RTC概述 RTC,英文全称Real Time Clock,中文就是实时时钟,是一个可以为系统提供精确的时间基准的元器件,主要是用来计时,产生闹钟等。 RTC一般可以使用备份 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、UART驱动框架 UART设备驱动框架如下图所示,下图是来自其他博客,仅供参考: 上图展示了四种注册UART设备驱动的方式,分别为case A到case D,这张图主要由4个部分组成: char 阅读全文
摘要:
内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、终端(tty) 1.1 回顾 还记的在Mini2440之uboot移植流程之linux内核启动分析(六)小节中,我们介绍过u-boot在启动linux之前,需要做一些准备工作,比如配置启动参数: 阅读全文