- 博客(113)
- 资源 (4)
- 收藏
- 关注
转载 QT Quick 简介
Qt Quick是一个用于帮助开发者设计直观,现代,流畅的用户界面的技术集,近年来被广泛应用于手机,媒体播放器,机顶盒和其他手提设备.Qt Quick中包含了大量的用户界面元素,及描述这些用户界面的陈述性(declarative)语言,和一个语言运行时.在典型的Qt应用程序中有一系列C++ API与这些高层次特性整合.Qt Creator2.1的整合开发环境(IDE)包含了开发Qt Q
2017-04-01 16:42:45
783
原创 Linux 驱动之DMA 子系统
DMA子是CPU中实现数据传输的一种方式,CPU配置好DMA控制器之后发起数据传输,CPU本身不参与数据传输的动作中去。DMA种类: 分为外设DMA和DMA控制器。其中外设DMA实现的为特定的外设与内存之间的数据传输,一般是外设向RAM单向传输数据。而DMA控制器则可以实现任意外设与内存之间的数据传输。此时外设跟CPU控制器之间通过流控制信号来保证传输通道的正常运行。DMA传输的数据宽度不固定。
2017-04-01 15:55:32
12645
转载 详谈C++保护成员和保护继承
protected 与 public 和 private 一样是用来声明成员的访问权限的。由protected声明的成员称为“受保护的成员”,或简称“保护成员”。从类的用户角度来看,保护成员等价于私有成员。但有一点与私有成员不同,保护成员可以被派生类的成员函数引用。如果基类声明了私有成员,那么任何派生类都是不能访问它们的,若希望在派生类中能访问它们,应当把它们声明为保护成员。如果在一个类中
2017-03-31 20:54:04
7151
4
转载 文章标题
在学习第一门编程语言时,就已经介绍了顺序分支、条件分支、循环分支。比如循环分支有for、while、do-while语句。在随后的学校及工作中,如果手工循环一般使用for、while,很少使用do-while,感觉用处不大,但现在看来,do-while大有用途。帮助定义复杂的宏以避免错误 举例来说,假设你需要定义这样一个宏:define DOSOMETHING() foo1(); foo2(
2017-03-31 16:56:33
300
原创 Linux 程序之环境变量
linux 程序内部支持环境变量的设定,获取变量值以及环境变量的取消。环境变量是系统运行时根据其值进行一些对应的操作变化。典型如PATH会改变系统的执行文件的搜索路径。linux 命令行中对环境变量的操作有: variable = value — 设定环境变量的值 export variable — 环境变量生效export variable = value —上面两步同时做echo $v
2017-03-31 16:36:56
532
原创 AlSA驱动中的PCM DMA
ASoC Platform驱动中使用了PCM DMA的构架来实现了申请DMA通道。首先得probe函数中会调用ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); 为设备注册一个dmaengine_pcm。这个调用除了注册同时还注册了一个释放接口。核心是调用了 snd_dmaengine_pcm_register(dev, co
2017-03-31 15:11:27
4661
原创 ASoC Machine驱动
ASoC 体系结构分析已由DroidPhone前辈在博客中分析得很清楚,可以移步到http://blog.csdn.net/DroidPhone/article/category/1118446阅读对应的博客,这里这是针对驱动开发中需要做的一些工作进行详细的阐述。ASoC整个架构被分为了三个部分,分别为Platform,Codec 和Machine. Codec的配置一般通过简单的串行总线如I2C
2017-03-30 17:54:03
1982
原创 QT信号和槽
信号和槽信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性。要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。 信号和槽能携带任意数量和任意类型的参数。我们可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,(当这个信号被发射时
2017-03-30 16:12:59
1060
转载 使用 Yocto Project 构建自定义嵌入式 Linux 发行版
Yocto Project™是一个开源项目,设立该项目是为了使嵌入式 Linux®开发更简单,更易于在不同架构间进行移植。本文将介绍该项目并提供如何开始使用该项目的分步指导。 概述Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux系统,不管硬件架构是什么。我想要告诉那些对 yocto这个名称不甚理解的
2017-03-30 10:16:03
1182
原创 UIO 驱动中断
UIO 是怎么工作的? 一个设备驱动的主要任务有两个: 1. 存取设备的内存 2. 处理设备产生的中断 对于第一个任务,UIO 核心实现了mmap()可以处理物理内存(physical memory),逻辑内存(logical memory), 虚拟内存(virtual memory)。UIO驱动的编写是就不需要再考虑这些繁琐的细节。 第二个任务,对于设备中断的应答必须在内核空间进行。
2017-03-29 16:17:45
3671
原创 UIO 驱动方法
UIO(Userspace I/O)是运行在用户空间的I/O技术。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题.通过UIO的运行原理图可以看出,用户空间下的驱动程序比运行在内核空间的驱动要多得多,UIO框架下运行在内核空
2017-03-29 15:21:49
5288
原创 SoCFPGA overlay 技术
linux 系统中描述硬件的方法为 device tree和 device tree overlay。overlay技术为考虑硬体变更之后需要重新编译新的device tree 文件锁带来的麻烦。device tree 适用于描述系统上的固定硬件资源,,如系统时钟,DMA。而device tree overlay则可以用于系统中需要变更的资源,比如引脚复用。SoCFPGA中的FPGA由于经常需要被动
2017-03-29 14:09:10
2801
原创 ubuntu 64bit 兼容运行32bit 的方法
64bit 机器安装交叉编译链的时候有遇到了错误no such file or directory.但是编译工具确实存在。Ubuntu16.04版本已不支持ia32-libs的软件包,而是使用了lib32ncurses5、lib32z1软件包做为替代,所以在Ubuntu16.04版本当中应该安装执行:apt-get install lib32ncurses5 apt-ge
2017-03-22 19:38:47
8444
转载 用Device tree overlay掌控Beaglebone Black的硬件资源
简介device tree是linux 3.x开始使用的加载硬件资源的方式,这里说的硬件资源既包括片上的诸如GPIO、PWM、I2C、ADC等资源,也包括外部拓展的如FLASH、LCD等。device tree主要作用是将某个硬件外设与相应的驱动程序进行绑定,关于它在实际使用中的地位可以参考我的日志《嵌入式linux如何操作硬件》。使用时首先需要编写一个.dts文件(device
2017-03-22 09:38:30
1389
原创 M051定时器
M051定时器使用步骤选择时钟使能时钟配置模式和计时频率配置中断启动定时器关键寄存器 定时器内部具有一个24-bit的向上计数器,计数器开始工作的时候计数器的值可以通过 TDR读取到。同时如果计数器的值等于 TCMP寄存器的时候,会触发相应的中断动作。示例程序摘取““ //定时器时钟选择并使能 /* Select HXT as the clock source of TIMER0
2017-03-21 16:41:04
1294
原创 QT 交叉编译环境
这里假设已经编译好了qt for arm 的lib, 交叉编译链安装正确。Qt安装无误并且能够正常编译一个简单的app 在PC运行。之后需要把app 跟qt-arm-lib 一起编译了在目标环境下运行。指定交叉编译链进入tools->options,找到compilers 选项卡。添加一个GCC编译链。内容是指定到交叉编译链的G++。指定QT Version顺利编译了qt arm lib 后,都会在
2017-03-16 14:48:14
5449
3
转载 pragma UNROLL的用法
#pragma UNROLL 4在图像处理程序中,你会看到类似于#pragma unroll 4这样的语句(注:在DX中,也许你会见到[unroll(3)] for(int i = 0;i 语法:#pragma UNROLL(n)#pragma UNROLL告诉编译器一个循环中应该展开n次(其实我觉得是告诉编译器循环展开n次是安全的),有助于对那些不容易展
2017-03-16 13:54:28
21922
转载 移动设备中的ALSA(ASoC)
1. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Lin
2017-03-12 17:46:21
505
转载 小波变换通俗解释
从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。下面就按照傅里叶-->短时傅里叶变换-->小波变换的顺序,讲一下为什么会出现小波这个东西、小波究竟是怎样的思路。一、傅里叶变换关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在
2017-03-11 20:35:23
18353
9
原创 Angstorm 自动登陆设定
angstorm 中没有 init.d 文件。但是用户自动登陆的设定方法却比其他文件系统简单一些。主要是编辑/etc/systemd/system/getty.target.wants/serial-getty\@ttyS0.service修改内容为: change the lineExecStart=-/sbin/getty 115200 %I toExecStart=-/sbin/getty
2017-03-08 20:11:53
522
原创 Makefile中的函数
Makefile 中的函数为编写makefile提供了便利,其中以wildcard,notdir 和patsubst 最为常用makefile里的函数makefile里的函数使用,和取变量的值类似,是以一个‘′开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开,像这样return=’开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开,像这样 return =
2017-03-08 20:06:20
324
转载 linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,其实,还有一个方法,那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用。
2017-03-08 16:04:14
1685
原创 Opencl paltform id
通用的opencl platform id 获取方法通常是cl_int clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms)这个命令会得到可用的OpenCL平台的列表。如果参数platforms为NULL,clGetPlatformIDs会返回可用平台数。返回的
2017-03-08 09:19:19
1380
原创 测量OpenCL 执行时间
如何使用OpenCL 自带的API来测量执行时间,因为执行时间很快,无法用秒表测量到执行过程中的时间。OpenCL API 提供了正确的测试内核执行时间的方法。Create Queue with Profiling enabledcommand_queue = clCreateCommandQueue(context, devices[deviceUsed], CL_QUEUE_PROFILING_
2017-02-28 15:08:49
5185
原创 Linux 下Altera SPI驱动使用
配置SPI 关于Clock相位和极性的说明修改device tree的描述spi_0: spi@0x100000100 { compatible = "altr,spi-16.1", "altr,spi-1.0"; reg = <0x00000001 0x00000100 0x00000020>; interrupt-parent = <&hps_0_arm_gic_0>;
2017-02-21 14:51:34
1325
原创 SYs_BIOS swi中断
一、SWI模块概述 在DSP/BIOS内核中,系统管理并运行的线程分为四个等级:硬件中断服务程序、软件中断服务程序、任务和后台空闲函数,优先级依次降低。每个软件中断服务程序都对应一个函数,当然,每个软件中断也可以单独设置优先级。高优先级的软件中断会抢占正在执行的低优先级的软件中断 所有软件中断都是通过DSP/BIOS内核的API调用来启动。
2017-02-09 10:12:03
2120
原创 python translate
Python translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中。语法translate()方法语法:str.translate(table[, deletechars]);参数table -- 翻译表,翻译表是通过maketrans方法转换而来。deletechars -- 字符串中要过滤的字符列表。返回值返回翻
2017-02-08 22:00:45
1187
1
原创 git 使用笔记
git 过滤设定在工作目录新建.gitignore 文件,把需要过滤的文件名按照正则表达式输入编辑到文件中,每行一个类别例:*.[oa]*~*.bkgithub 代码管理 github 上上传本地linux内核代码示例 * 本地新建文件夹作为工作目录 * git init 初始化工作目录 * 复制内核代码到到工作目录 * 建立.gitignore 文件进行过
2017-02-08 17:37:17
244
转载 linux下混杂设备
在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。在内核中用struct miscde
2017-02-06 15:45:02
1106
转载 centos缺少共享库:libstdc++.so.6
当在centos6.2下执行某些命令时,有缺少共享库的报错:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory解决办法:1、执行命令: yum whatprovides libstdc++.s
2017-02-03 16:49:16
1417
转载 拉格朗日对偶理解
1.原始问题假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不用多想),考虑约束最优化问题:称为约束最优化问题的原始问题。现在如果不考虑约束条件,原始问题就是:因为假设其连续可微,利用高中的知识,对求导数,然后令导数为0,就可解出最优解,很easy. 那么,问题来了(呵呵。。。),偏偏有约束条件,好烦啊,要是能想办法把约束条
2017-01-24 10:26:37
3330
1
转载 python扩展实现方法--python与c混和编程
前言需要扩展Python语言的理由:创建Python扩展的步骤1. 创建应用程序代码2. 利用样板来包装代码a. 包含python的头文件b. 为每个模块的每一个函数增加一个型如PyObject* Module_func()的包装函数c. 为每个模块增加一个型如PyMethodDef ModuleMethods[]的数组d. 增加模块初始化函数void initMethod
2017-01-19 12:02:36
426
转载 在Quartus II下产生无源代码网表设计文件方法
从安全角度考虑,我们常希望保证我们设计的私有性。一个有效的方法就是利用QuartusII Exported Partitionfile(.qxp)创建用于综合或布局布线网表文件(不包括源代码。这种增量编译的特点需要一个完整QuartusII 许可的支持(比如免费的web版本的许可不支持的)。 把原始设计作为一个.qxp文件发送的过程在QuartusII 手册的Quartus II In
2017-01-18 11:26:47
1648
转载 神经网络反向传播
原文地址:http://www.hankcs.com/ml/back-propagation-neural-network.html?utm_source=tuicool&utm_medium=referral我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到。直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资料。这份极简入
2017-01-17 11:11:23
517
转载 Softmax 回归
我们知道Logistic回归只能进行二分类,因为它的随机变量的取值只能是0或者1,那么如果我们面对多分类问题怎么办?比如要将一封新收到的邮件分为垃圾邮件,个人邮件,还是工作邮件;根据病人的病情预测病人属于哪种病;对于诸如MNIST手写数字分类(MNIST是一个手写数字识别库,相见:http://yann.lecun.com/exdb/mnist/)。诸如此类问题都涉及到多分
2017-01-13 22:43:23
309
转载 图像处理之gamma矫正
1 gamma校正背景 在电视和图形监视器中,显像管发生的电子束及其生成的图像亮度并不是随显像管的输入电压线性变化,电子流与输入电压相比是按照指数曲线变化的,输入电压的指数要大于电子束的指数。这说明暗区的信号要比实际情况更暗,而亮区要比实际情况更高。所以,要重现摄像机拍摄的画面,电视和监视器必须进行伽玛补偿。这种伽玛校正也可以由摄像机完成。我们对整个电视系统进行伽玛补偿的目的,是使摄像机
2017-01-12 09:25:27
15120
1
转载 udhcp移植到arm-linux
实现DHCP自动获取IP地址 前提:系统已经实现DNS(即使用ping www.baidu.com测试时能ping通)。1. 在内核中添加以下选项:Networking ---> [*] Networking support Networking options ---> Packet socke
2017-01-11 14:09:00
2221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅