自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(60)
  • 收藏
  • 关注

原创 【无标题】

上述流程主要是生成了一个物理ID和逻辑ID并把对应关系加入表中方便后续查询。在devicemanager层创建了一个sensorcontroller(对于hardwarename)便于后续操作设备文件。在hostservice层创建了一个CameraDeviceImpl(对应逻辑ID)给上层设备调用提供实例。最后还自动为此设备填充了metadata数据作为参数以便后续使用。至此在HDF-camera中USB设备插入初始化流程结束。

2023-08-10 16:57:57 324 3

原创 【基于openharmony的多路摄像头功能:USB设备插拔检测】

最近项目接触的模块比较繁多而杂,因此开始写文章记录下用以总结。目前在做的是基于openharmony3.2的多camera功能主要涉及HDF(HAL)层与framework层。本文章涉及多路摄像头功能的第一步:支持USB摄像头插拔检测。

2023-08-08 15:26:18 1186

转载 使用IO内存控制硬件点亮LED灯

Linux中控制GPIO点亮LED的方法有好几种。一种是使用内核提供的专门用来控制GPIO的函数来点亮LED,如:s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]);              s3c2410_gpio_setpin(led_table[i], 0);一种是通过IO内存获取硬件地址从而控制GPIO来点亮LED,如:

2014-05-09 14:17:35 550

转载 GPIO-API for ARM

函数原型:s3c2410_gpio_cfgpin(unsigned int pin,unsigned int function)位置:/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c函数内容:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){void __i

2014-05-09 10:21:13 395

转载 S3C2440 LED驱动

S3C2440 LED驱动//头文件#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2014-04-28 16:27:37 418

转载 linux驱动-GPIO借鉴文章

今天完成了嵌入式linux的第一个驱动的编写和测试,虽然是个简单的程序,但是麻雀虽小,五脏俱全,希望可以给刚开始接触驱动编写的人一些提示,共同进步。源代码:分析如下: 下面是我的驱动程序:#include //配置头文件#include /*内核头文件,作为系统核心的一部分,设备驱动程序在申请和释放内存时,不是调用malloc和free,而是调用kmalloc和kfree*/#include //

2014-04-21 15:51:30 271

转载 内核模块Makefile

obj-m := hello.oKDIR:=/lib/modules/$(shell uname -r)/build# PWD=$(shell pwd)all:        make -C $(KDIR) M=$(PWD) modulesclean:        make -C $(KDIR) M=$(PWD) cleanob

2014-04-18 12:42:57 446

转载 EXPORT_SYMBOL

在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL()这样的宏定义,通过网上查阅,它的作用大致总结如下:1、定义说明     把内核函数的符号导出,也可以理解成将函数名作为符号导出;符号的意思就是函数的入口地址,或者说是把这些符号和对应的地址保存起来的,在内核运行的过程中,可以找到这些符号对应的地址的。2、相关处理     (1)、对编译所得的.ko进

2014-04-18 11:33:27 316

转载 C语言内存管理

ccppQt121主题0好友1102积分大家网大学二年级积分1102帖子243精华8经验770 点威望0 点金币716 发消息电梯直达1楼发表于 2009-10-26 22:12|只看该作者|倒序浏览  伟大的Bill Ga

2014-04-17 17:00:01 249

转载 linux设备模型之Kobject与Kset

以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LDD3》上有教程,有时还要自己研究它的子系统构架,甚至要自己添

2014-03-25 16:54:41 350

转载 GPIO in linux详解

原文地址 http://blog.csdn.net/llxmedici/article/details/6282372打算跟着友善之臂的《mini2440 linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以及函数/宏的

2014-03-21 12:05:31 866

转载 linux之进程空间等内存空间

作者:李强,华清远见嵌入式学院讲师。有这么几个问题,在上驱动课程的时候,我感觉一直困扰着同学们:●    用户程序编译连接形成的地址空间在什么范围内?        ●    内核编译后地址空间在什么范围内?        ●    要对外设进行访问,I/O的地址空间又是什么样的?于是就有了这篇文章,从大概上把内存相关知识点介绍一下,减少同学们在驱动课时对内存的困惑先回答第

2014-03-20 16:50:55 407

转载 linux驱动之LED

mini2440上LED对应的IO:LED1GPB5LED2GPB6LED3GPB7LED4GPB8低电平有效(点亮)寄存器:GPxCON设置端口功能(00表示输入,01表示输出,10表示特殊功能,11保留不用)

2014-03-20 16:43:43 351

转载 linux驱动之内存与IO

MMU停供虚拟地址和物理地址的映射、内存访问权限保护和Cache缓存控制等硬件支持。操作系统内核借助MMU,可以让用户感觉到好像程序可以使用非常大的内存空间,从而使得编程人员在写程序时不用考虑计算机的物理内存的实际容量 如图,当ARM要访问存储器时,MMU先查找TLB中的虚拟地址表。如果ARM的结构支持分开的数据TLB(DTLB)和指令TLB(ITLB),则除去指令使用的ITLB外,其他的

2014-03-20 16:18:56 461

转载 linux设备驱动作用

Linux设备驱动程序的作用简介设备 驱动程序就像一个个的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。  大多数编程可以分为两个部分:机制:需要提供

2014-03-18 14:09:17 1645

转载 linux内核头文件

#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include在linux-2.6.31_

2014-03-18 14:05:40 464

转载 对linux字符设备的理解(整体架构)

主要数据结构:struct cdev {struct kobject kobj; //内嵌的kobj,对象管理用struct module *owner; //模块const struct file_operations *ops; //文件操作struct list_head list;dev_t dev; //起始设备号unsigned int count; /

2014-03-17 10:47:34 437

转载 linux cdev详解

linux cdev详解谨以此文纪念过往的岁月一.前言以前对于cdev仅仅是知其然,而不知其所以然。在本文中,将深入理解cdev的架构以及具体的实现。二.真实的cdev2.1 设备号搞驱动的都应该知道的东西,在写gpio驱动时,往往会用到以下两个函数。alloc_chrdev_region     --自动分配设备号register_

2014-03-14 16:41:10 450

转载 linux驱动学习过程

了解linux驱动程序技巧学习的方法很重要,学习linux操作系统时,你可能会遇到关于驱动方面的问题,这里将介绍学习linux驱动程序的方法,在这里拿出来和大家分享一下。  1.学会写简单的makefile  2.编一应用程序,可以用makefile跑起来  3.学会写linux驱动程序的makefile  4.写一简单char驱动,makefile编译通过,可以insmod,ls

2014-03-07 13:27:24 410

转载 linux 头文件以及库的路径

原来在编译的时候可以指定执行时去哪里找需要的lib文件,长知识了本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题。另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题。本文包含了很多的例子,具有很强的操作性,希望读者自己去走一遍。一.#include #include #include “”先到源文件所在文件夹去找

2014-02-19 16:14:53 305

转载 ARM经典300问

TEL:400-606-1411   公司简介 - 委托交易 - 收费标准 - 汇款方式 - 联系我们 - 免责申明 - 站点地图 设为桌面图标 |设为首页 |加入收藏夹 | 中文版 | 黑名单供货PDF资料IC价格求购热门型号:DAC8806IDBDAC9331-1

2013-12-26 16:43:21 940

转载 MMU工作原理以及S3C2440的MMU

MMU,全称Memory Manage Unit, 中文名——存储器管理单元。许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面 前,那就是应用程序太大以至

2013-12-26 16:31:26 299

转载 ROM、SDRAM、RAM、DRAM、SRAM、FLASH的区别

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。    RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂

2013-12-23 10:22:54 417 1

原创 触摸屏步骤及注意事项

触摸屏中断实现步骤1.TC初始化a.ADCCON设置,主要设置prs分频大小,且第一位为0不启动ADC。b.ADCTSC设置,开始为等待(按下)中断状态0xd3。注意事项:此处为一般模式,设置为等待中断,不要跟AUTO模式混淆。c.ADCLDY设置,设置采样延时时间。d.中断设置。清除SUB中的ADC\TC中断状态,后清除ADC中断状态。主要防止中断开启就进入中断,被之

2013-12-19 16:35:54 418

转载 触摸屏事例

触摸屏可分为矢量压力传感式、电阻式、电容式、红外式和表面声波式等,我用的是最普遍的-四线电阻式。 s3c2440集成了4线制电阻式的触摸屏接口,触点坐标的检测是通过A/D转换来实现的。s3c2440提供8路A/D模拟输入,其中有4路是与触摸屏复用的,s3c2440比s3c2410改进的地方是片内部加入了开关用的MOS管,在设计电路时,直接将4路触摸屏引出外加一路基准电压(3.3v)就可以了

2013-12-19 14:37:55 417

转载 串口与服务器

作者:Steven YangE-mail:mqyoung@gmail.com 很多场合需要用到串口调试,本文介绍串口配置过程:(沿用惯语,我用的机器ubuntu 9.10称为开发系统[Developer],需要调试的Debian称为目标系统[Target]) 首先是内核支持:一般来说,Debian、Ubuntu等发行版的官方内核都支持,如果自己编译的内核,确保如下选项打

2013-12-17 10:26:30 298

转载 S3C2440-LCD图片显示

原文章出处http://blog.csdn.net/woshixingaaa/archive/2010/12/23/6093448.aspx折腾了几日,终于可以将图片显示在LCD上了,我使用的东华的WXCAT35-TG3#001 TFT LCD。首先使用PHOTOSHOP软件将图片改成宽320,高240,注意不要反了。然后用Image2Lcd_32软件提取出数组。我选的是24位真彩。所以一

2013-12-12 14:50:01 365

原创 TFT屏LCD学习心得

1.s3c2440处理LCD的时钟源是HCLK。LCD显示可看成是在内存中先虚拟排列一个矩阵再通过LCDWCDMA拿到VD上,扫描到屏幕上去。而s3c2440支持1-24BPP。对于本文的16BPP来说,每个像素点用16位来存储颜色显示。对于RGB比为5:6:5的16PBB来说,其内存分布如下图:

2013-12-11 13:11:56 913

原创 补上之前未写的循环点亮LED灯程序

LED灯连接原理图如图所示,控制对应IO口输出低电平则LED灯点亮。其中LED灯连接IO口为GPB5、6、7、8。程序如下:#define GPBCON (*(volatile unsigned int *)0x56000010) //GPB三个IO寄存器宏定义#define GPBDAT (*(volatile unsigned int *)0x56000014)#def

2013-12-11 09:18:55 396

转载 s3c2440的内存管理机制

1.     Nand Flash、Nor Flash、SDRAM地址区别Nand Flash:ROM,容量大,适用于数据存储,ARM不能从Nand中直接启动,需要把程序从Nand的前4k空间中拷贝到SDRAM,然后再从SDRAM中启动。Nor Flash:ROM,容量小,适用于程序存储,ARM可以从Nor Flash中直接启动。SDRAM: RAM,容量大,操作系统等大型软件都运行在

2013-12-10 17:06:41 427

转载 s3c2440 LCD及触摸屏的学习笔记

所用的LCD为TopPoly-TD035STED4(TFT)型号,240*320的其VCLK为6.39MHz。 根据s3c2440手册s3c2440处理LCD的时钟源是HCLK,通过寄存器LCDCON1中的CLKVAL可以调整VCLK频率大小,它的公式为:VCLK=HCLK÷[(CLKVAL+1)×2],程序的内部分频为FCLK=400MHz、HCLK=100MHz、PCLK=50MH

2013-12-10 17:05:11 501

转载 见过的最好的一篇讲S32440中断的文章,受益匪浅!

++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6556258++++++++++++++++++++++++++++++++++++++++++ 中断源按照硬件位置分为外部中断源和内部中断源,外部中断

2013-12-09 15:25:44 452

原创 S3c2440 中断学习

S3c2440有60个中断源,而S32440是32位芯片,故一个寄存器无法一次满足所有源配置,而导致某些源共用一个位,就有了子中断源的存在。其基本过程如下图:中断控制器:1>程序状态控制器。PSRPSR的F位置一则CPU不可以接收FIQ,PSR的L位置一则不可以接收FIQ。故要相应的清0。2>

2013-12-09 10:33:47 474

原创 结构体与函数指针变量

#include typedef void (*func)();//函数指针变量一般用typedef来简单化void fun1();typedef struct s{func f;结构体成员变量想作为函数时,可定义函数指针变量} strc;func fun2(strc *p){return p->f;}int main()

2013-12-07 00:08:59 392

原创 自写冒泡排序法

#include    #define N 10    void swap(char *a,char *b)    {        char t;        t=*a;        *a=*b;        *b=t;    }    int main()    {    char i=0,j=0;    char a[N];

2013-12-05 10:36:40 337

原创 APUE之IO

1.open,create,write,close,lseek。fcntl.h、unistd.h中等无缓冲IO函数,打开的文件是在内核中用int类型的文件描述符来标识由open系统调用获得,write,close,lseek等系统调用要用到文件描述符。其中惯例是0为标准输入STDIN_FILENO,1为标准输出STDOUT_FILENO,2为标准错误STDERR_FILENO.格式

2013-12-04 15:21:13 338

原创 APUE学习之IO

1.open,create,write,close,lseek。fcntl.h、unistd.h中等无缓冲IO函数,打开的文件是在内核中用int类型的文件描述符来标识由open系统调用获得,write,close,lseek等系统调用要用到文件描述符。其中惯例是0为标准输入STDIN_FILENO,1为标准输出STDOUT_FILENO,2为标准错误STDERR_FILENO.格式

2013-12-04 14:05:17 75

转载 C语言运算符优先级和口诀

一共有十五个优先级: 1   ()  []  .  ->2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / %4   + - 5   >> 6   > >= 7   == !=   8   &  9   ^   10  |   11  &&12  ||13  ?

2013-12-03 16:33:13 331

原创 APUE-UNIX高级环境编程

1.重写ls指令,用到了dirent.h头文件,一个目录有关的头文件,可以用man查看有2个结构体DIR与struct dirent,目录结构体与当前目录下文件/目录结构体代码如下#include #include typedef struct dirent dirct;intmain(int argc,char *argv[]){DIR *pdir;d

2013-12-02 15:01:26 440

转载 linux 编程书籍

《UNIX环境高级编程》,推荐指数:★★★★★《UNIX环境高级编程》是 Unix/ Linux 程序员案头必备的一本书籍。可以说,Linux 程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很难让人理解的。这本书概括了 Linux 编程所需的一切理论框架、主要系统函数、多进程编程、乃至 Linux 网络通信。对于初学者,如果你能将《操作系统》这门课程结合着这本书来学习,试着用

2013-11-29 13:27:17 380

空空如也

空空如也

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

TA关注的人

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