自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 (十一)看门狗驱动设计

目录一 、S5P6818看门狗的功能二、看门狗的系统框图三、看门狗的寄存器四、看门狗驱动的设计注意一 、S5P6818看门狗的功能1、产生复位信号:当系统由于受到噪声或干扰而出现了死机,看门狗可以让系统复位,重新开始工作。2、普通定时器:产生周期性的中断,16bits的定时器 二、看门狗的系统框图思考:1、如果看门狗的复位时间设置10s,第一分频值、第二次分频值、计数值应该如何设置?1)第一次分频值(255+1) <= 256 ----->7812502)第二次

2020-10-19 21:14:07 488

原创 (十)linux内核时钟

目录一、什么是内核时钟二、HZ三、jiffies四、linux中的延时函数四、内核的动态定时器五、附录一、什么是内核时钟1、内核时钟操作系统的内核都需要一个系统时钟才可以工作,这个系统时钟是硬件提供的,操作系统用该时钟进行计时,如sleep()、时间片轮转。操作系统内核使用的时钟,叫内核时钟,也叫滴答时钟。STM32F407 + uC/OS-III ---->操作系统内核时钟频率:OS_TICKS_PER_SEC = 200S5P6818 + linux ---->操作系统内核时钟频

2020-10-19 15:38:11 2972

原创 (九)linux内核中的内存分配

目录一、内核启动过程中,关于内存的信息二、内核中如何分配内存三、kmalloc()和vmalloc()的区别四、MMU一、内核启动过程中,关于内存的信息1、内核分区[ 0.000000] Memory: 1024MB = 1024MB total ---->内存的大小是1GB[ 0.000000] Memory: 810820k/810820k available, 237756k reserved, 272384K highmem[ 0.000000] Virtual

2020-10-19 11:29:07 629

原创 (八)linux中断实现

目录一、linux中中断的实现二、中断号三、中断的标志四、中断源对应的中断服务程序五、中断服务程序与原子上下文六、等待队列一、linux中中断的实现#include <linux/interrupt.h>linux系统针对底层的中断处理过程做了封装,使用linux提供函数,可以实现中断的响应和处理。1、申请中断int __must_checkrequest_irq(unsigned int irq, irq_handler_t handler, unsigned long flag

2020-10-16 17:51:01 597

原创 (七)将驱动程序编译进内核

目录一、驱动程序存在的形式二、如何将一个驱动程序编译进内核一、驱动程序存在的形式1、将驱动成编译成一个ko,ko是一个独立的module驱动程序安装:#insmod led_drv.ko驱动程序卸载:#rmmod led_drv.ko2、如何开机自动安装驱动,运行应用程序。/test/led_drv.ko /test/test修改/etc/profile:#vi /etc/profilecd /testinsmod led_drv.ko./test &cd /3、将驱动程

2020-10-16 15:59:52 1004

原创 (六)混杂设备miscdevices

目录一、什么是混杂设备二、查看一下系统中的混杂设备二、混杂设备的设计过程三、混杂设备的设计模型四、附录一、什么是混杂设备混杂设备也叫杂项设备,是普通字符设备驱动(struct cdev)的一个封装,可以简化一个普通字符设备驱动的设计流程。混杂设备的特点:1)主设备号10,次设备号不同。2)简化cdev的设计流程3)使用上和cdev是没有差异。 二、查看一下系统中的混杂设备[root@GEC6818 /]#cat /proc/devicesCharacter devices:

2020-10-16 14:24:48 548

原创 如何制作一张启动卡

1.在linux下找到sd卡及读卡器#cat /proc/partitions一般SD卡的设备文件节点是:/dev/sdb2.删除sd卡分区#sudo fdisk /dev/sdbcommand(m for help):输入:d, 删除所有分区,返回:selected partition 1command(m for help):输入:w并回车,保存已经修改的分区信息,返回:the partitions table has been altered!calling ioctl() t

2020-10-16 10:18:41 231

原创 (五)GPIO标准接口函数

目录一、什么是GPIO的标准接口函数二、GPIO标准接口函数三、GPIO口号四、出错的解决方法:五、编译内核出错一、什么是GPIO的标准接口函数前面访问GPIO的方法:request_mem_region()申请GPIO寄存器的物理内存区---->ioremap()IO内存的动态映射,得到虚拟地址---->访问虚拟地址。需要查找CPU的使用手册。后面的简单的GPIO访问方法:GPIO是嵌入式平台最常见的一个硬件模块,所以linux内核将GPIO的访问过程封装成了标准的接口函数,这些接

2020-10-16 10:07:46 704

原创 (四)ioctl函数的使用

目录一、IOCTL函数的原型二、IOCTL的命令一、IOCTL函数的原型1.应用程序的ioctl()—>linux的系统IO函数 #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...);经常使用的函数原型:int ioctl(int fd, unsigned int cmd, unsigned long args);int ioctl(int fd, unsigned int cmd);应

2020-10-15 11:42:40 763 1

原创 (一)linux系统运行过程

目录一、嵌入式linux系统的启动过程二、分析uboot三、linux内核四、rootfs五、执行应用程序一、嵌入式linux系统的启动过程上电–>U-boot—>加载linux内核—>挂载rootfs—>执行应用程序 二、分析uboot1、什么是u-bootu-boot是一个通用的bootloader。boot—>完成硬件的初始化,启动硬件平台loader—>初始化硬件结束后,加载操作系统bios也是一种bootloader。ftp://f

2020-10-15 11:35:46 768

原创 (二)内核模块

目录一、什么是内核模块二、使用source insght创建一个工程三、设计一个最简单的module四、驱动程序和应用程序的区别五、Makefile六、驱动的调试七、编译驱动时,对内核源码的要求八、printk九、内核符号表十、__init 和 __exit一、什么是内核模块1.linux kernel module驱动程序在内核中,都是独立的模块,例如:beep驱动和LED驱动,beep和led之间没有任何联系,可以通过应用程序将两个驱动联系在一起。beep驱动和led驱动各自是独立的module。

2020-10-15 11:14:26 471 1

原创 (三)字符设备

一、linux设备驱动的分类1、字符设备—c应用程序和驱动程序之间进行数据读写的时候,数据是以“字节”为单位。数据交互的时候,是按照固定的顺序传输的;数据是实时传输的,是没有缓存的。字符设备是没有文件系统的。绝大部分设备驱动是字符设备:LED、BEEP、按键、键盘、触摸屏、摄像头、液晶屏、声卡、IIC、SPI、…应用程序:系统IO函数open("/dev/led_drv", O_RDWR)read()write()ioctl()mmap()close()2、块设备—b应用程序和驱动

2020-10-14 16:50:23 4848

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除