自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 rk3568PCIE30x2 调试

fdc60000: 00000022 GPIO1A2 为GPIO模式 非PCIEreset。reset-gpios就是gpio1 RK_PA2配成gpio模式。修改tl3568-evm.dts 正确配置复位。不需要修改rk3568-pinctrl.dts。电压1.8V不稳定,改完后成功link。硬件电路为PCIE30x1。

2024-04-10 13:54:05 1008

转载 linux mtd层ecc详解

ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法。如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page(例如512Bytes)中只有一个或几个bit出错。ECC能纠正1个比特错误和检测2个比特错误,而且计算速度很快,但对1比特以上的错误无

2016-06-24 16:17:44 819

转载 IORESOURCE_IO和IORESOURCE_MEM

内核中有很多资源,但属于IO资源的有:#define IORESOURCE_IO 0x00000100 /* Resource type */#define IORESOURCE_MEM 0x00000200#define IORESOURCE_IRQ 0x00000400#define IORESOURCE_DMA 0x00000800本文我主要研究IORESOURCE_IO IORESOURC

2015-01-08 09:18:14 2792

转载 - RPATH RUNPATH 和 LD_LIBRARY_PATH

Linux 下链接编译和Windows 绝对有很大的区别。比如应用程序如何加载一个so?为什么我当前目录下有so 加载不上能?怎么着我的应用程序就加载到别的路径的so了呢?我们从加载讨论起:影响加载的东西:首先是ELF 中的变量 RPATH 和 RUNPATH然后是环境变量 LD_PRELOAD 和 LD_LIBRARY_PATHLD_PRELOAD 属于强制加载,有点

2014-01-17 20:23:20 3504 1

转载 如何在linux C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理(转)

我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理,包括创建数据库、创建表格、插入数据、查询数据、删除数据等。1.说明这里我们假设你已经编译好了sqlite的库文件 :libsqlite3.a  libsqlite3.la  libsqlite3.so libsqlite3.so.0  libsqlite3.so.0.8.

2014-01-15 19:42:38 1131

转载 [调用.so动态链接库]Linux Makefile介绍使用的环境深入浅出

Linux Makefile已被广泛应用但是也在不断的更新,这里介绍Linux Makefile安装设置使用,帮助大家安装更新Linux Makefile系统。作为Linux下的程序开发人员,大家一定都遇到过Linux Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Linux Makefile,如果要想写出一个符合自由软件惯例的Linux Mak

2014-01-15 19:37:48 1001

转载 【转】linux下解压命令大全

.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf

2013-11-22 18:30:49 555

原创 Linux 网络编程

Tcp/ip四层模型:应用层,传输层,网络层,网络接口层Udp非连接的不可靠的协议 Socket三中类型:流式(tcp):stream数据报(udp):dgram原始(ip):raw 网络地址Struct sockaddr/struct sockaddr_in 用于记录网络地址Struct sockaddr{U_short sa_family;//协

2013-11-22 11:37:31 550

原创 进程理论与编程

进程和程序区别:进程可以看成运行起来的程序,具有动态,并发,独立,异步性。具有三态:就绪,执行,诸塞 进程互斥:若干进程使用共享资源时,最多只允许一个进程使用。进程同步:并发进程按一定顺序执行的过程称为进程间的同步。进程调度:按一定算法,从一组待运行的进程中选出一个来占有CPU运行。调度方式:抢占和非抢占调度算法:先来先服务;短进程先调度;优先级调度;时间片轮寻。临界资

2013-11-19 11:28:19 581

原创 多线程理论与编程

和进程相比,线程更节俭。进程必须分配独立的地址空间,建立众多的数据表维护其代码段,堆栈段和数据段。统一进程下的线程共享数据空间。遵循POSIX线程接口,称Pthread.需要使用头文件Pthread.h和库文件Pthread.a.创建线程Int pthread_create(pthread_t *tidp,const pthread_attr_t * attr, void *(*s

2013-11-19 10:24:50 577

转载 printf()函数输出格式

printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为转换说明.因为它们指定了如何不数据转换成可显示的形式.下列列出的是ANSI C标准peintf()提供的各种转换说明.           转换说明及作为结果的打印输出%a                浮点数、十六进制数字和p

2013-11-18 19:29:08 723

原创 C#总结1

C#2013.11.14数组的定义方式String][] a=new string[10]Int [] i ={2,3,4}Int [] i = new int [3] 声明有三个变量二维,多维数组初始化Int [,] i = new int[3,2]{{1,2},{3,2},{1,5}}Int [,] i = new int[,]{{1,2},{3,2},{1,5}}

2013-11-16 09:36:32 672

转载 Uboot在S3C2440上的移植

摘   要: 通过分析Uboot的文件结构及其启动流程,详细给出了Uboot在基于ARM920T开发板上的移植方案,包括编译、调试全过程,最终能够在Uboot命令方式下加载映像文件,完成Linux内核与yaffs映像文件的调试,具有Bootloader移植的通用性。 关键词: Uboot; S3C2440; ARM920T; 引导过程; 启动代码 1 Uboot移植环境准摘   要:ong

2013-10-27 13:58:24 910

转载 Windows 7 & Windows vista 刷机教程 【转自塞班手机网】

Windows 7 & Windows vista 刷机教程一、驱动安装其实win7下无法完成刷机和在vista下的原因一样,是由于刷机软件AmoiFlash不支持微软提供的新型‘Microsoft USB Sync'驱动,解决的办法就是用从 Activesync 4.5 RTM 中提取的usb驱动把新驱动替代掉替代掉,具体操作步骤如下首先安装Microsoft_Windows_Mob

2013-09-30 12:33:12 1129

转载 嵌入式Linux视频服务器1

嵌入式LINUX视频服务器 /*采用H.264对视频数据进行编码,并且利用网络进行实时传输(UDP)*/#include #include #include #include #include #include #include #include #include #include #include #include #i

2013-08-21 23:39:42 633

转载 STM32 CAN 过滤器总结

STM32 CAN 过滤器总结在STM32互联型产品中,CAN1和CAN2分享28个过滤器组,其它STM32F103xx系列产品中有14个过滤器组,用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。这些过滤器相当于关卡,每当收到一条报文时,CAN要先将收到的报文从这些过滤器上"过"一下,能通过的报文是有效报文,收进相关联

2013-05-17 23:52:51 1398 1

转载 STM32 CAN

1. 几个重要的结构体: typedef struct { FunctionnalState CAN_TTCM;使能或者失能时间触发通讯模式 FunctionnalState CAN_ABOM;使能或者失能自动离线管FunctionnalState CAN_AWUM;使能或者失能自动唤醒模式FunctionnalState CAN_NART;使能或者失能非自动重传输模式 F

2013-05-17 23:32:12 1445

翻译 Stm32 DMA

两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(请求0优先于请求1,依此类推)独立数据源和目标数据区的传输宽度(字节、半字、全字),模拟打包和

2013-05-12 20:49:03 2773

转载 STM32时钟初始化函数SystemInit()详解[转]

花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出):使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz函数调用顺序:startup_stm32f10x_cl.s(启动文件) → SystemInit()

2013-05-09 23:23:46 1824

原创 交叉编译内核模块的Makefile范本

obj-m := XXX.o DIR := /linux-2.6.22.6/ 这里要改成内核路径/usr/src/...或改为/lib/modules/$(shell -uname -r)/build //自己添加PWD:= $(shell pwd)CROSS_ARCH := ARCH=arm CROSS_COMPILE=arm-linux-#ARCH =arm#CROSS

2013-03-05 00:55:17 911

转载 通用Makefile讲解【转】

Makefle实质是一系列命令的集合,使用Makefile是为了提高效率!Linux C肯定离不开Makefile,小工程也好大工程也罢,哪里都离不开Makefile;即使拥有强大IDE也不能像在Windows下编程一样完全不理会run按钮背后的动作!1 一个简单的Makefile从源代码到可执行程序,一般要经过预处理,编译,汇编和链接。如有如下工程,msg.c中定义了一个打印

2013-03-05 00:53:40 680

转载 Linux内存与I/O访问

内存和I/O我们知道,在X86中,有I/O空间的概念,I/O空间是相对于内存空间的概念,它通过特定的指令in,out来访问。端口号标识了外设的寄存器地址。而巧的是Arm等嵌入式控制器中并不提供I/O空间,所以我们就不考虑了,我们重点放在内存空间。   内存空间可以通过地址,指针来访问,在C语言中的表现就是通过指针来操作,如在186处理器中:   unsigned char *p = (

2013-03-05 00:51:49 777

原创 Linux异步通知fasync与异步I/O

异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信号与与一个函数对应,当接收到这个信号就会调用相应的函数。 一、什么是异步通知个人认为,异步通知类似于中断的机制,如下面的将要举例的程序,当设备可写时,设备驱动函数发送一个信号给内核,告知内核有数据可读,在条件不满足之前,并不会造成阻塞。而不像

2013-03-05 00:49:00 796

原创 Linux设备驱动中的阻塞与非阻塞I/O

阻塞与非阻塞I/O阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。因为阻塞的进程会进入休眠状态,因此,必须确保有一个地方能够唤醒休眠的进程。唤醒进程的地方最大可能发生在中断里面,因为硬件资源获得的同时往往伴随着一个中断。 注意:驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。 休眠(被阻塞

2013-03-05 00:47:15 570

转载 linux设备模型详解【转】

Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。2.6设备模型提供了这个抽象.现在它用在内核来支持广泛的任务,包括:电源管理和系统关机这些需要

2013-03-05 00:45:45 365

原创 Linux中的并发 竞态控制

因为程序的并发执行而导致的竞态是Linux内核中一个非常复杂的方面。对于设备的驱动程序开发者而言,熟悉Linux内核提供的并发互斥的处理机制相当重要。所谓竞态,简而言之,是多个内核线程有可能对同一资源进行操作时可能导致的内核数据紊乱的行为。共享数据是并发的根本原因。并发的来源—我把并发来源分为两个大的方面来分别进行讨论:单处理器和多处理器。1.单处理器对于单处理器而言,并发主要来自

2013-03-05 00:43:43 673

原创 Linux应用程序编译,模块编译

内核模块编译过程  内核模块的编译模块(module)是可以安装需求加载或卸载到系统内核中,扩展了内核的功能而不需要重启或重新编译内核。没有模块,我就要建立一个完整内核,而且直接添加入内核镜像中,这样就会显的非常臃肿。你可以通过运行lsmod或打开/proc/modules来查看加载到内核中的模块。那么如何编译内核模块,模块如何加载到内核当中呢?下面我们就写一个简单的程序看看这

2013-03-05 00:41:45 1194

转载 module_param与MODULE_PARM_DESC

#include #include static int watchdog = 5000;/* watdog默认值是5000, 但是可以通过 insmod hello.ko watchdog=1000设置非默认值 */module_param(watchdog, int, 0644);/* 对模块的参数进行描述 */MODULE_PARM_DESC(watchdog

2013-03-05 00:39:58 967

原创 Arm嵌入式开发之USB主机与设备驱动

USB驱动层次结构由上到下:USB设备驱动-USB核心-USB主机控制器驱动-USB控制器硬件USB核心为USB驱动程序提供了一个用于访问和控制USB硬件的接口,而不必考虑系统当前存在的各种不同类型的USB硬件控制器。USB设备包括配置(configuration)、接口(interface)和端点(endpoint),USB设备绑定到接口上,而不是整个USB设备。如下图所示:

2013-03-05 00:37:43 977

原创 Arm嵌入式开发之Flash文件系统建立

Flash转换层Flash无法重复在同一块存储位置做写入操作(要擦除),硬盘上的文件系统沿用时要通过一层转换层:FTL用于NOR Flash,NFTL用于NAND Flash。但其效率不高,尽量避免使用依赖于转换层的文件系统。CramfsCramfs是一种压缩的只读文件系统,当浏览Flash中的目录或读取文件时,Cramfs文件系统会动态地计算出压缩后的数据所存储的位置,实时的解压

2013-03-05 00:35:34 925

原创 Arm嵌入式开发之Flash设备驱动

Linux MTD系统层次引入了MTD后,linux中的flash设备驱动及接口分为四个层,从上到下:设备节点,MTD设备层,MTD原始设备层,硬件驱动层。1.硬件驱动层:FLASH硬件驱动层负责FLASH硬件设备的读、写、擦出,LINUX MTD设备的NOR FLASH驱动位于/driver/mtd/chips子目录下,NAND FLASH驱动则位于/driver/mtd/n

2013-03-05 00:33:47 919

原创 Arm嵌入式开发之LCD驱动

一、Framebuffer是linux系统为显示设备提供的一个接口,允许上层应用程序直接对其读写,而不必关心物理缓冲区的具体位置和存放方式。只要在显示缓冲区中与对应的区域写入颜色值,对应的颜色就会在屏上显示。、帧缓冲区为标准字符设备,主设备号为29,对应/dev/fb%d。Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Li

2013-03-05 00:32:25 1380

原创 arm嵌入式开发之linux音频设备

linux音频设备两种框架:OSS(有两个最基本的音频设备mixer和dsp),ALSA。音频设备硬件接口:1. PCM由时钟BLCK,帧同步信号FS,接收数据DR,发送数据DX组成。在FS上升沿,数据从MSB开始,FS等于采样频率。2. IIS当LRCLK为高时,左声道数据被传输;当LRCLK为低时,右声道数据被传输。3. AC97AC97采用AC-lin

2013-03-05 00:30:23 2954

原创 Arm嵌入式开发之网络设备驱动

网络设备完成用户数据包在网络媒介上发送和接收,将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递到上层协议。其不对应/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。网络设备4个层次:网络协议接口层,网络设备接口层,提供实际功能的设备驱动层,网络设备与媒介层。网络协议接口层:向网络层协议提供统一的数据包收发接口,不论arp,还是ip,都通过d

2013-03-05 00:28:26 876

原创 Arm嵌入式开发之I2C总线

Linux内核源码中drivers目录下包含i2c的目录,其中含有如下文件和文件夹:1.      i2c-core.c 实现i2c核心功能和/proc/bus/i2c*接口2.      i2c-dev.c 实现i2c适配器设备文件的功能。主设备号为89,次设备号0~255。提供了通用的read()、write()、close()等接口。3.      chips文件

2013-03-05 00:26:51 992

原创 arm嵌入式开发之终端设备

1.linux系统中终端是一种字符设备,用tty来简称。有几类:串行端口终端/dev/ttySn  计算机把每个串口作为一个字符设备,这些端口所对应的设备名称为/dev/ttyS0或/dev/tts/0等设备号为(4,0);伪终端/dev/pty 是成对的逻辑终端设备/dev/ptyp /dev/ttyp 登录程序与telnet就是通过其进行通信的;控制台终端 /dev/ttyn,/d

2013-03-05 00:25:00 1012

原创 arm嵌入式开发之ramdisk与IDE驱动

1.ramdisk (ram)是一种虚拟磁盘,对应设备文件一般为:/dev/ram%d。使用下面命令创建和挂载:mkdir /tmp/ramdisk0mke2fs /dev/ram0mount /dev/ram0 /tmp/ramdisk0设备模块加载和卸载函数:rd_init() rd_cleanup()设备驱动block_device_operations及成员函数op

2013-03-05 00:22:43 770

QUICC Engine Block Reference Manual with Protocol Interworking

QUICC Engine Block Reference Manual with Protocol Interworking

2018-11-15

电磁波与电磁场课后习题答案

事隔多年设备采购寻常百姓那么苍白饿虎帝女芳魂报道说那就好簇拥 上的份额

2009-10-27

空空如也

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

TA关注的人

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