随笔分类 - s3c2440
摘要:内核版本:linux 5.2.8 根文件系统:busybox 1.25.0 u-boot:2016.05 开发板:Mini2440 宿主机:Ubuntu 16.04.7 LTS 为实现目标嵌入式平台能够正常运行Qt程序,则需要在目标平台上部署Qt运行环境。 一、Qt编译和安装 1.1 Qt版本介绍
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 在上一节我们已经移植了LCD驱动,那么本节将会移植LCD触摸屏驱动。有关触摸屏的原理,以及硬件接线,我们在linux驱动移植-LCD触摸屏设备驱动章节已经介绍的非常清楚了。同时在这一篇博客,我们也详
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、修改设备树 1.1 硬件接线 在Mini2440裸机开发之LCD基础我们已经介绍了LCD的硬件接线图。使用到的引脚如下: GPIO 功能 GPIO 功能 GPC8 VD0 GPD6 VD14 G
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、修改设备树 1.1 硬件接线 查看Mini2440原理图、S3C2440数据手册,了解如何读取按键的状态。这里粗略介绍一下Mini2440 K1~K6的接线方式: K1~K6依次对应引脚GPG0
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 在前面我们已经介绍了pinctrl subsystem相关的基础知识,这一节我们尝试修改设备树,在pin controller node下添加两个子节点分别用来控制LED1~LED4的全亮/全灭。然
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 上一节我们已经分析了pinctrl subsystem,这一节将会介绍pin controller driver的编写。其主要包含两个步骤: 为SoC的pin controller分配一个pinct
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、IO概述 1.1 硬件功能分类 ARM based SoC的datasheet中总有一个章节叫做GPIO controller(或者I/O ports)的章节来描述如何配置、使用SoC的引脚。虽
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 我们在linux驱动移植-中断子系统执行流程 介绍了中断的执行流程,以及在没有使用设备树的情景下中断控制器的注册流程,其主要流程: 将S3C2440中断资源抽象为一个主中断控制器、两个子中断控制器,
阅读全文
摘要:内核版本: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.0 u-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之前,需要做一些准备工作,比如配置启动参数:
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 这一节我们来分析Mini2440 GPIO控制器驱动的源码,由于GPIO控制器驱动比较简单,所以这一节内容相对来说也是比较少的。 GPIO控制器驱动编写主要包含两个步骤: 为SoC的每个GPIO控制
阅读全文
摘要:内核版本:linux 5.2.8根文件系统:busybox 1.25.0u-boot:2016.05 一、GPIO子系统 1.1 GPIO概述 GPIO(General purpose input/putput)也就是通用输入/输出口,片上系统 (SoC) 处理器对 GPIO 有很大的依赖。在某些情
阅读全文