自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (19)
  • 收藏
  • 关注

原创 Linux内核设备驱动学习笔记整理(十四)----内核同步

/***************** * 内核同步的原理 *****************/(1)什么是内核同步所谓的内核同步就是对共享资源进行保护,防止并发访问。如果有多个执行线程(指任何正在执行的代码实例,比如一个在内核执行的进程,一个中断处理程序,或一个内核线程)同时访问和操作共享的数据,就有可能造成进程之间互相覆盖共享数据,造成被访问数据处于不一致的情况。这种错误很难跟踪和调试,但非常重...

2018-03-27 09:18:05 484

原创 Linux内核设备驱动学习笔记整理(十三)----中断处理

-------------------------------------/****************** * 中断处理 ******************/(1)中断和异常的概念 (陷入)中断中断是硬件设备和处理器间的通讯机制,是由外部硬件产生的异步事件。Linux处理中断的方式很大程度上与它在用户空间处理信号是一样的。驱动程序只需要为它自己设备的中断注册一个处理程序,并且在中断到达时进...

2018-03-27 09:02:18 739

原创 Linux内核设备驱动学习笔记整理(十二)----内存管理

-------------------------------------/********************** * linux的内存管理 **********************/到目前为止,内存管理是unix内核中最复杂的活动。我们简单介绍一下内存管理,并通过实例说明如何在内核态获得内存。(1)各种地址对于x86处理器,需要区分以下三种地址:*逻辑地址(logical addres...

2018-03-27 08:56:00 455

原创 Linux内核设备驱动学习笔记整理(十一)----时间管理

/****************** * linux内核的时间管理 ******************/(1)内核中的时间概念时间管理在linux内核中占有非常重要的作用。相对于事件驱动而言,内核中有大量函数是基于时间驱动的。有些函数是周期执行的,比如每10毫秒刷新一次屏幕;有些函数是推后一定时间执行的,比如内核在500毫秒后执行某项任务。要区分:*绝对时间和相对时间*周期性产生的事件和推迟执...

2018-03-27 08:48:39 401

原创 Linux内核设备驱动学习笔记整理(十)----字符设备

/******************** * 字符设备驱动 ********************/(1)字符设备驱动介绍字符设备是指那些按字节流访问的设备,针对字符设备的驱动称为字符设备驱动。此类驱动适合于大多数简单的硬件设备。比如并口打印机,我们通过在/dev下建立一个设备文件(如/dev/printer)来访问它。用户应用程序用标准的open函数打开dev/printer,然后用writ...

2018-03-26 23:55:05 573

原创 Linux内核设备驱动学习笔记整理(九)----虚拟文件系统

/******************** * 虚拟文件系统VFS ********************/(1)VFS介绍虚拟文件系统VFS作为内核的子系统,为用户空间程序提供了文件系统的相关接口。VFS使得用户可以直接使用open()等系统调用而无需考虑具体文件系统和实际物理介质。VFS提供了一个通用的文件系统模型,该模型囊括了我们所能想到的文件系统的常用功能和行为。通过这个抽象层,就可以实...

2018-03-26 23:47:04 368

原创 Linux内核设备驱动学习笔记整理(八)----系统调用

/**************************** *  系统调用 ****************************/SWI(1)什么是系统调用系统调用是内核和应用程序间的接口,应用程序要访问硬件设备和其他操作系统资源,必须通过系统调用来完成。在linux中,系统调用是用户空间访问内核的唯一手段,除异常和中断外,他们是内核唯一的合法入口。系统调用的数量很少,在i386上只有大概30...

2018-03-26 23:43:18 476

原创 Linux内核设备驱动学习笔记整理(七)----Linux内核调试技术

/****************** * 内核的调试技术 ******************/(1)内核源代码中的一些与调试相关的配置选项内核的配置选项中包含了一些与内核调试相关的选项,都集中在"kernel hacking"菜单中。包括:CONFIG_DEBUG_KERNEL使其他的调试选项可用,应该选中,其本身不会打开所有的调试功能。...具体的调试选项说明可参见驱动一书,或通过menuc...

2018-03-26 23:38:39 371

原创 Linux内核设备驱动学习笔记整理(六)----内核中链表的使用

/******************** * 内核中链表的应用 ********************/(1)介绍在Linux内核中使用了大量的链表结构来组织数据,包括设备列表以及各种功能模块中的数据组织。这些链表大多采用在include/linux/list.h实现的一个相当精彩的链表数据结构。链表数据结构的定义很简单:struct list_head {  struct list_head...

2018-03-26 23:33:31 552 3

原创 Linux内核设备驱动学习笔记整理(五)---proc文件系统

/***************** * proc文件系统 *****************/(1)/proc文件系统的特点和/proc文件的说明/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。/proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。也可以通过写/proc文件修改内核...

2018-03-26 23:31:25 439

原创 Linux内核设备驱动学习笔记整理(四)----高级字符设备驱动

/****************** * 高级字符设备驱动 ******************/(1)ioctl除了读取和写入设备外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制。比如弹出介质,改变波特率等等。这些操作通过ioctl方法支持,该方法实现了同名的系统调用。在用户空间,ioctl系统调用的原型是:int ioctl(int fd, unsigned l...

2018-03-26 23:28:45 447

原创 Linux内核设备驱动学习笔记整理(三)----Linux内核模块加载机制

#include <linux/moduleparam.h>1. 模块参数   在驱动定义变量 static int num = 0; //当加载模块不指定num的值时则为0 module_param(变量名, 类型, 权限); 类型: byte, int, uint, short, ushort, long, ulong, bool, charp 权限不能有写的权限   传参数: ...

2018-03-26 23:10:09 358

原创 Linux内核设备驱动学习笔记整理(二)----地址映射

#include <asm/io.h>#define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE)//cookie表示物理地址, size表示映射大小。 ioremap把指定的物理地址映射到空闲的虚拟地址void __iomem *__arm_ioremap(unsigned long phys_addr, s...

2018-03-26 23:01:50 459

原创 Linux内核设备驱动学习笔记整理(一)----Linux内核基础

1. Linux内核驱动模块机制 静态加载, 把驱动模块编进内核, 在内核启动时加载 动态加载, 把驱动模块编为ko, 在内核启动后,需要用时加载2. 编写内核驱动 #include <linux/module.h> #include <linux/init.h> static int __init test_init(void)   { return 0; //返回0...

2018-03-26 22:49:51 942

原创 如何定制ubuntu官网下载的ubuntu系统ISO镜像(以ubuntu16.04 LTS ISO为例)

https://www.linuxidc.com/Linux/2018-01/150491.htmhttps://jingyan.baidu.com/article/e3c78d649d11dc3c4c85f5c9.html参考以上文章,使用Cubic这个软件进行系统定制。在定制的过程中,比如我们需要往从ubuntu官网下载的iso镜像里安装一些软件,或者自己定制一些库等等的操作,都可以直接复制到...

2018-03-16 00:11:16 6236 1

原创 编译内核出现:make: warning: Clock skew detected. Your build may be incomplete.

参考:http://smilejay.com/2012/08/warning-clock-skew/解决方法:ep:设置时间date -s  2018-03-14date -s  15:39:00重新再make即可消除该警告。原因:系统时间比文件修改时间早...

2018-03-14 15:42:13 1062

原创 在Linux下制作一个简单的给ARM开发板使用的文件系统

1.Busybox源码请网上自行下载,编译方法请参考百度。2.交叉编译工具链的设置也请先设置好。如果以上1、2没有问题,那么可以使用以下脚本,制作一个给ARM开发板使用的文件系统。可以自行定制使用,加入自己的Test demo。#!/bin/bash#yuanxin.yang develop 2015-07-05#文件系统和Busybox的路径====>可自己定制FILESYSTE...

2018-03-14 15:13:10 2357

原创 移植新内核到ubuntu系统上的步骤

1、在ubuntu官网下载ubuntu16.04的镜像和对应ubuntu16.04的内核版本源代码,或者在网易镜像源上找:http://mirrors.163.com/2、安装ubuntu16.04到PC主机上接下来执行以下:编译新的Linux内核给X86内核使用出现以下错误:scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: N...

2018-03-14 13:31:44 826

原创 QT5交叉编译出现"undefined reference to `qt_version_tag'"的解决方法

如下图所示:根据交叉编译的配置,我觉得我的qmake版本是没有配置错误的。输出的Complie Output的log如下:22:33:46: Running steps for project untitled...22:33:46: Starting: "/usr/bin/make" cleanrm -f moc_mainwindow.cpprm -f ui_mainwindow.hrm -f ...

2018-03-11 22:53:21 11026 2

原创 Linux下can驱动测试(基于Intel Corei7开发板)

最近要测试一些板卡,所以参考了一些博客,总结CAN的测试方法如下:1.sudo modprobe can加载虚拟can模块2.sudo ip link add dev vcan0 type vcan添加can0网卡3.ifconfig -a 可以查到当前can网络 can0 can1,包括收发包数量、是否有错误等等//ip link set can0 type can --help4.ip lin...

2018-03-06 10:17:34 1279

转载 C语言实现时间差计算

在很多情况下,为了评判某个算法,函数的优劣,特别是比较同一个功能的两个函数的效率高低时,我们经常通过计算耗费时间作为判断标准。C语言中有两个相关的函数用来计算时间差,分别是:time_t time( time_t *t)   与 clock_t clock(void)头文件: time.h计算的时间单位分别为: s   , ms time_t 和 clock_t 是函数库time.h 中定义的用来...

2018-03-01 16:53:05 19980

尚观教育嵌入式4个月培训课堂笔记

主要是当年在尚观学习嵌入式所记的和总结的课堂笔记

2021-03-01

LV3096用户手册(1).pdf

该手册为扫码模块的用户手册,里面有扫码模块的详细说明。

2019-08-23

STM32F103ZET6_AT24C02.rar

提供对AT24C02的一个最基本的测试demo,只涉及读写两个接口。

2019-08-17

freertos_for_Uart_lcd.rar

该例程基于大彩串口屏,用于学习freertos和大彩串口屏。

2019-08-06

7.OLED0.96_SPI.rar

该项目基于stm32cubeMx进行配置,硬件平台使用的是秉火stm32f103zet6平台。

2019-07-13

QT多个按键同时按下的实现方法

多个按键同时按下的实现方法,目前实现了左、右、上、下、Enter按键以及左+上+Enter的实现,读者可以自行拓展该程序。

2018-11-12

Tiny4412应用测试软件源码

该测试软件在Android源码下编译,可以在external下创建一个目录,加入以上代码和Android.mk,然后编译,使用C语言编写,一共有9个测试项目,可以在开机的时候加入init.rc下执行显示,包括RGB测试、按键测试、LED测试、ADC测试、Gsensor测试、编译日期和版本信息、ddr内存测试、SD卡测试、EMMC测试,也可以自己定制。

2018-11-11

敦泰--FT5X06 Android驱动框架分析-杨源鑫.pdf

自己写的关于敦泰电容屏的原理,以及Linux驱动分析的一个文档,分享给学习TP的工程师,如有错误的见解,欢迎各位多多指教。

2018-01-14

嵌入式C开发经验总结

全部整理软件出自于我的CSDN博客: http://blog.csdn.net/morixinguan

2017-02-18

tiny4412按键驱动开发

基于友善之臂的ARM-cotexA9驱动编写,包含按键驱动的驱动代码和测试程序

2016-02-03

tiny4412蜂鸣器驱动源码

基于友善之臂的ARM-cotexA9驱动编写,包含蜂鸣器驱动的驱动代码和测试程序

2016-02-03

tiny4412led驱动编写源码

基于友善之臂的ARM-cotexA9驱动编写,包含led驱动的驱动代码和测试程序

2016-02-03

V4L2最详尽文档

这是V4L2非常好的资料,详尽剖析,深入剖析的文档。

2016-01-31

HI257数据手册

本手册是hi257摄像头的数据手册,网上找不到的,只有我有

2016-01-28

Ov2686摄像头数据手册

该手册为Ov2686的摄像头数据手册,世间少有!!珍品

2016-01-14

安卓编程指南

安卓入门的相关书籍和资料,写得很好很实用

2016-01-09

模拟电子技术基本知识200例

模拟电子技术课程的相关知识点的总结和应用

2016-01-09

空空如也

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

TA关注的人

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