自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 bootstrap

image_info 结构体:struct image_info{ unsigned int offset; unsigned int length; char *filename; unsigned char *dest;};dest : 目的地址,加载到内存中的地址,必选;offset + length : 从flash启动时使用,和filename二选

2015-08-23 22:06:28 288

转载 linux延时函数

在linux下,延时可以采用如下函数:1.unsigned int sleep(unsigned int seconds);    sleep()会使当前程序休眠seconds秒。如果sleep()没有睡饱,它将会返回还需要补眠的时间,否则一般返回零。  2.void usleep(unsigned long usec);    usleep与s

2015-08-23 22:03:19 383

转载 linux修改环境变量

方法一:/etc/profile:        对所有用户生效,永久有效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置。        例如:        编辑/etc/profile文件,        # vi /etc/profile        添加一行:export

2015-08-23 22:02:22 300

转载 linux内核编译

一:清除内核中间件、配置文件:    make clean    make mrproper    make distclean二:选择参考配置文件    cp *** ./.config三:在参考文件的基础上配置内核    make menuconfig (x86)    make menuconfig ARCH=arm CROSS_COMPI

2015-08-23 22:00:57 342

转载 linux驱动程序 硬件访问

尽管摆弄scull以及其他的一些玩具程序对理解linux设备驱动程序的软件接口很有帮助,但是实现真正的设备仍要涉及实际的硬件。设备驱动程序是软件概念和硬件电路之间的一个抽象层。好,下面我们介绍驱动程序在linux平台上如何在保持可移植性的前提下访问io端口和io内存。为此,我们的谈谈什么是io端口和io内存。每种外设都是通过读写寄存器进行控制。大部分外设都有几个寄存器,不管是在内存

2015-08-23 21:59:46 724

转载 字符设备驱动

//头文件包含#include //变量定义#define GPGCONADDR 0x56000060//硬件中断号定义#define KEY1_IRQ IRQ_EINT5#define KEY2_IRQ IRQ_EINT3//设备名定义#define DEVNAME "mykey"//主设备号、cdev定义 -需全局使用int

2015-08-23 21:58:58 266

转载 杂项设备驱动

//头文件包含#include #define DEVICE_NAME "mydev"#define GPGCONADDR 0x56000060volatile unsigned int *GPFCON;//file_operations 方法编写static int xxx_ioctl( struct inode *inode, struct fi

2015-08-23 21:58:18 358

转载 大小端模式

大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。下面这

2015-08-23 21:57:28 284

转载 __main() 和 main()

因为我们通常在BOOTLOADER中都已做好了比较细致的初始化工作,包括代码的搬运,所以我们最好别再调用库函数__main(),因为__main()作为ADS集成好的库函数,会对系统进行初始化设置,可能会与我们的初始化发生冲突,故在我们做好初始化后最好别调用__main()。仿真时若调了__main()且没设置entry会报警告,__main()库函数代码不太了解,估计跟ADS初始化有关,库函数_

2015-08-23 21:56:31 369

转载 printk

printk是内核态信息打印函数,功能和标准C库的printf类似。printk还有信息打印级别。 函数原型:int printk(const char *fmt, ...) 需要的头文件: #include消息打印级别:fmt----消息级别:#defineKERN_EMERG    ""#defineKERN_ALERT    ""#

2015-08-23 21:55:46 415

转载 处理器内核

#处理器内核 -> cache -> 写缓冲器 -> 主存 -> 辅助存储器#写操作,对内核而言非迫切,所以加一个写缓冲器很好。#cache可放在处理器内核与MMU之间(逻辑 cache,主流),也可放在MMU与主存之间(物理 cache)。#对存储器中相同或相邻数据和代码的反复使用,是cache改善性能的主要原因。#cache同时使用了时间和空间的局部性原理。#cac

2015-08-23 21:54:55 477

转载 Makefile自动变量

所谓自动化变量,就是这种变量会把模式中所定义的一系列文件自动挨个取出,直至所有符合模式的文件都取完。自动化变量只应出现在规则的命令中。下面是所有的自动化变量及其说明: $@表示规则中的目标文件。如果目标中有函数库文件,则代表目标中的函数库文件。$%当目标中有函数库文件时使用,表示目标中的非函数库成员。例如,如果一个目标是"foo.a(bar.o)",那么,"

2015-08-23 21:54:08 453

转载 linux驱动概述

内核主要包括以下功能:进程管理、内存管理、文件系统、设备控制、网络功能。进程管理:创建和销毁进程,处理进程的输入输出,实现不同进程之间的通信,进程调度Linux将设备分成三种基本类型:字符设备、块设备、网络设备内核运行时不依赖C库,也不能依赖C库,因此不能使用printf等printk不支持浮点数,内核代码也不能实现浮点数运算。编译内核模

2015-08-23 21:53:13 315

转载 块设备驱动

块设备与字符设备I/O操作的不同如下:1、块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位。2、块设备对于I/O请求有对应的缓冲区,因此可以选择以什么顺序进行响应;字符设备无须缓冲且被直接读写。3、块设备可以随机访问,字符设备只能顺序读写。Linux 块设备驱动结构块设备操作集合struct block_device_operatio

2015-08-23 21:52:29 257

转载 flash设备驱动

MTD  :内存技术设备Flash 设备驱动层次:设备节点 ==》MTD设备层,包括MTD字符设备和MTD块设备==》MTD原始设备层==》Flash硬件驱动层描述MTD原始设备的数据结构是mtd_info 。每一个分区被认为是一个mtd_info, 例如,如果有两个mtd原始设备,而每个上有3个分区,在系统中将有6个mtd_info结构体,这些mtd_info的指针被存放

2015-08-23 21:51:24 460

转载 struct file和struct inode

struct file:代表一个打开的文件描述符,系统中每一个打开的文件在内核中都有一个关联的struct file。它由内核在open时创建,并传递给在文件上操作的任何函数,直到最后关闭。当文件的所有实例都关闭之后,内核释放这个数据结构。struct inode:用来记录文件的物理信息。它和代表打开的file结构是不同的。一个文件可以对应多个file结构,但只有一个inode结构

2015-08-23 21:50:35 520

转载 应用程序和VFS之间的接口是系统调用

应用程序和VFS之间的接口是系统调用,而VFS与磁盘文件系统以及普通设备之间的接口是file_operatioons结构体成员函数,这个结构体包含对文件进行打开、关闭、读写、控制等一系列成员函数。由于字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由设备驱动提供了,因此file_operaion也是字符设备驱动的核心。而对于块设备而言,ext2、fat、j

2015-08-23 21:48:43 1280

转载 linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()

linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()IS_ERR宏定义在include/linux/err.h,如下所示:#define MAX_ERRNO 4095//判断x是不是在(0xfffff000,0xffffffff)之间,注意这里用unlikely()的用意#define IS_ERR_VALUE(x) unlik

2015-08-23 21:47:04 11748 3

原创 Linux并发控制方式

1、屏蔽中断 应用范围:单CPU原理:屏蔽中断后,中断无法处理,不存在竞态;屏蔽中断后,进程无法调度,只能执行本进程,因此也不存在竟态。使用方法:local_irq_disable()    //屏蔽中断local_irq_enable()    //开中断2、原子操作自旋锁的基础3、自旋锁原理是原子操作,获不得自旋锁的进程将会原地打转spi

2015-08-23 21:45:17 358

空空如也

空空如也

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

TA关注的人

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