![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
itop4412学习记录
snaking616
闻道有先后,术业有专攻
展开
-
25_ioremap控制GPIO寄存器
1. GPL2寄存器1.1 官方手册查询(1)GPL2CON: 0x11000100GPL2CON共32bit,每个IO脚的配置由4bit数据控制。GPL2(0)对应的控制位为bit0~bit3,设置为输出时需要使bit0=1,bit1=bit2=bit3=0。(2)GPL2DAT:0x11000104GPL2DAT共8bit,控制的bit0的值,即可完成GPL2(0)...原创 2020-02-28 05:06:56 · 1055 阅读 · 0 评论 -
24_GPIO读
itop4412学习记录本章的目的:掌握gpio的申请、配置、取值和释放。(1)gpio申请:gpio_request(2)gpio配置-设置为输入:s3c_gpio_cfgpin(EXYNOS4_GPC0(3),S3C_GPIO_INPUT);(3)gpio配置-设置为非上下拉:s3c_gpio_setpull(EXYNOS4_GPC0(3),S3C_GPIO_PU...原创 2020-02-26 03:12:36 · 461 阅读 · 0 评论 -
23_proc文件系统
Linux 系统上的/proc 目录是一种文件系统,即 proc 文件系统。与其它常见的文件系统不同的是,/proc 是一种伪文件系统(也即虚拟文件系统) ,存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc 文件系统如上所述的特殊性,其内的文件也常被称作虚...原创 2020-02-25 23:26:01 · 299 阅读 · 0 评论 -
22_字符类GPIO
itop4412学习记录_网络_瓜儿不甜的博客-CSDN博客本章实际上是对第14章LED驱动的巩固,14章链接如下:14 LED驱动_瓜儿不甜的博客-CSDN博客 1. 主要知识点(1)GPIO头文件#include <linux/gpio.h>/*Linux中申请GPIO的头文件位置:include/linux/gpio.hgpio_request...原创 2020-02-24 16:41:15 · 258 阅读 · 0 评论 -
21-字符驱动
itop4412学习记录_网络_瓜儿不甜的博客-CSDN博客 1. 本章知识点学习结构体file_operations的结构与成员函数的赋值:(1)所在目录file_operations结构所在头文件目录:include/linux/fs.h,如何引用:#include <linux/fs.h>(2)常用函数有• int (*open) (struct ...原创 2020-02-24 00:44:37 · 149 阅读 · 0 评论 -
20_给字符设备添加设备节点
本章目标:在第19章的基础上,给cdev字符类设备添加设备节点,再编写应用程序访问设备节点。1. 代码设计思路1.1 字符设备驱动设计流程(1)模块内部新建class类型结构体变量,使用class_creat来完成初始化:static struct class *my_class;my_class = class_create(THIS_MODULE,DEVICE_NAME);(...原创 2020-02-19 19:34:10 · 440 阅读 · 1 评论 -
19_注册字符类设备
本章的目标:给自定义的reg_dev类型结构体my_devices分配内存空间,需要分配内存的具体单元有:(1)字符设备结构体成员变量char_dev;(2) 长度大小为size的字符缓存区*data。struct reg_dev{ char *data; unsigned long size; struct cdev char_dev;};struct reg_dev...原创 2020-02-17 23:11:15 · 470 阅读 · 0 评论 -
itop4412学习记录
iTOP4412驱动模块调试记录原创 2020-02-16 16:49:05 · 391 阅读 · 0 评论 -
17-18_静态和动态申请字符类设备号
1. 相关头文件与函数(1)头文件字符设备函数在文件“include/linux/fs.h”中内核提供了三个函数来注册一组字符设备编号,这三个函数分别是– register_chrdev_region()– alloc_chrdev_region()– register_chrdev()• register_chrdev_region()是提前知道设备的主次设备号,再去申请设备号...原创 2020-02-16 01:10:48 · 304 阅读 · 0 评论 -
16_驱动模块传参数
1. 相关头文件与函数内核模块传参的头文件:“include/linux/moduleparam.h”(1)module_param用来传单个参数module_param(name,type,perm)– name:模块参数的名称– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)– perm: 模块参数的访问权限(S_I...原创 2020-02-15 23:44:04 · 168 阅读 · 0 评论 -
15_LED驱动二
本章的主要目的是,对4412的32组IO口进行相同的配置操作,配合LED灯的状态和 万用表电压来检测IO口的好坏。1. 32组IO口信息将32组IO的虚拟地址宏进行整理如下:static int led_gpios[] = { EXYNOS4_GPL2(0),EXYNOS4_GPK1(1), EXYNOS4_GPD0(0), EXYNOS4_GPX1(0),EXYNOS...原创 2020-02-15 22:58:56 · 290 阅读 · 0 评论 -
14 LED驱动
1. iTOP4412 LED硬件原理LED2的控制脚为KP_COL0,对应SOC GPL2_0,对应虚拟地址宏为:EXYNOS4_GPL2(0)LED3的控制脚为VDD50_EN,对应GPK1_1,对应虚拟地址宏为:EXYNOS4_GPK1(1)2.LED管脚的调用、赋值以及配置//(1)驱动模块所需头文件#include <linux/init.h>#i...原创 2020-02-15 21:23:40 · 729 阅读 · 1 评论 -
13_GPIO初始化
这两期视频教程的目的• 让大家能够接受或者理解下面的内容– 对宏定义EXYNOS4_GPL2(0)的操作就是对4412芯片管脚AC21寄存器的操作。• 上层程序员(包括驱动工程师)不用关心物理地址和虚拟地址具体是多少,只需要对一组宏定义操作,就是对4412内部寄存器操作。1.GPIO的初始化1.1 查看模块gpioexynos4在内核源码目录下使用命令“ls drivers...原创 2020-02-14 17:09:40 · 963 阅读 · 0 评论 -
09_编写简单的应用程序调用驱动
09_编写简单的应用程序调用驱动9.1目标•编写简单应用调用驱动–调用HELLO_CTL123设备节点9.2头文件•打印头文件–include<stdio.h>调用打印函数printf•应用中调用文件需要的头文件–#include<sys/types.h>基本系统数据类型。系统的基本数据类型在32编译环境中保持为...原创 2020-02-04 21:46:14 · 253 阅读 · 0 评论 -
08_生成设备节点
08_生成设备节点8.1申明•Linux到2.6版本的时候,改动巨大,网上有些资料是针对以前的版本的,大家看到老版本相关的资料,直接跳过即可。•现在2.6版本以前的基本都废弃了,不用管了,学了也没有。学习要“以始为终”,学了之后是为了在实际工作中应用的,那么工作中已经用不到的知识就不要浪费时间了。8.2杂项设备(1)为什么用杂项设备•杂项设备可以说是对一部分字...原创 2020-02-04 21:41:55 · 205 阅读 · 0 评论 -
07_驱动注册
07_驱动注册7.1驱动注册(1)头文件•驱动注册使用结构体platform_driver,该结构体在头文件“viminclude/linux/platform_device.h”中•驱动注册platform_driver_register,驱动卸载函数platform_driver_unregister也在这个头文件中–这两个函数的参数都只有结构体platform_...原创 2020-02-04 21:36:55 · 238 阅读 · 0 评论 -
06_设备注册
06_设备注册6.1注册设备•注册设备使用结构体platform_device,该结构体在头文件“viminclude/linux/platform_device.h”中。头文件中也有注册设备和卸载设备的函数,了解即可。6.2注册设备实验•操作过程–注册设备。将设备结构体放到平台文件中,会自动注册设备,不用去调用注册设备的函数。编辑/home/topee...原创 2020-02-04 21:25:42 · 242 阅读 · 0 评论 -
05_总线_设备_驱动注册流程
05_总线_设备_驱动注册流程5.1Linux总线–查看总线的命令#ls/sys/bus/[root@iTOP-4412]#ls/sys/bus/hidmdio_busmmcscsiseriousbi2cmediaplatformsdios...原创 2020-02-04 21:23:46 · 298 阅读 · 0 评论 -
04_Makefile编译
04_Makefile编译4.1编译器路径设置•拿到源码后一般需要设置一下编译器路径,在源码目录Makefile文件中可以设置编译路径“CROSS_COMPILE”•前面编译环境搭建的时候,解压arm-2009q3的目录和这里对应4.2Makefile编译文件(1)强制编译•强制编译–源码开发者强制要求编译进内核的文件•打开drivers/Make...原创 2020-02-04 21:21:54 · 332 阅读 · 0 评论 -
03_Menuconfig_Kconfig
3.1Menuconfig的操作•Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉•menuconfig是生成.config的一个工具•在Linux发展过程中,配置内核可以使用一下命令:–#makeconfig(基于文本的最为传统的配置界面,不推荐使用)–#makemenuconfig(基于文本菜单的配置界面)–#makexco...原创 2020-02-04 21:16:56 · 248 阅读 · 0 评论 -
02_DriverModule
2.1最简Linux驱动(1)最简Linux驱动——必备的头文件•Linux头文件位置–类似#include<linux/module.h>的头文件,它们是在Linux源码目录下的include/linux/module.h•#include<linux/module.h>头文件–所有的Linux代码必须遵循GPL协议,如果不...原创 2020-02-04 21:10:56 · 293 阅读 · 0 评论 -
01_内核开发基础
01_内核开发基础1.1Linux体系结构Linux体系结构由用户空间和内核空间构成,为什么Linux体系要分为用户空间和内核空间?•从程序员的角度分析–将linux底层和应用分开,做应用的做应用,做底层的做底层,各干各的。经济学的原理是,分工产生效率。•从安全性的角度分析,为了保护内核。现代CPU通常都实现了不同的工作模式。以ARM为例:A...原创 2020-02-04 21:01:41 · 204 阅读 · 0 评论 -
iTOP4412开发板Drivermodule调试记录
1.主要步骤(1)hell world驱动程序:itop4412_hello.c#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("TOPEET");static int hello_init(void){ ...原创 2019-08-14 01:16:22 · 306 阅读 · 0 评论 -
iTOP4412-TFTP传输与NFS网络文件系统调试小结
1. tftp传输1.1 tftp安装$ sudo -# apt-get install xinetd tftpd tftp1.2 tftp配置# vi/etc/xinetd.d/tftp填写如下内容:service tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /u...原创 2019-07-28 20:26:02 · 478 阅读 · 0 评论 -
itop4412调试记录
【记录4】驱动教程——视频9 编写应用程序调用驱动 出现 Segmentationfault【发生时间】2020.02.04【解决思路】驱动程序中.unlocked_ioctl赋值为1是错误的,需要改正为:.unlocked_ioctl=hello_ioctlstaticstructfile_operationshello_ops={.owner=TH...原创 2019-07-22 00:30:27 · 395 阅读 · 0 评论 -
使用fastboot命令完成itop4412开发板Android4.0.3文件系统镜像的烧写
一、开发环境电脑:win10 64位putty:putty0.71usb_otg_driver:android_drv_90000_64.exeADB:platform-tools二、fastboot烧写命令(1)将需要烧写的镜像拷贝到“USB_fastboot_tool”-->“platform-tools”文件夹下面。(2)启动开发板,进入Uboot 模...原创 2019-06-23 20:05:46 · 1486 阅读 · 1 评论