• 等级
  • 137892 访问
  • 51 原创
  • 48 转发
  • 28617 排名
  • 21 评论
  • 16 获赞

Linux thread_info 和 current task_struct

对每个进程,Linux内核都把两个不同的数据结构紧凑的存放在一个单独为进程分配的内存区域中:一个是内核态的进程堆栈,另一个是紧挨着进程描述符的小数据结构thread_info,叫做线程描述符。在较新的内核代码中,这个存储区域的大小通常为8192个字节(两个页框)。在linux/arch/x86/include/asm/page_32_types.h中, #define THREAD_SIZE_O

2017-12-07 08:59:15

c++ 桥接模式实例

桥接模式的UML如下图 为了解决多个变量存在的时候出现的耦合问题,类按照自己的因素抽象出接口,同时在Abstraction类中存在Impletor 抽象类的指针, Abstraction的具体实现中调用该指针的接口 函数。现有下问题,图像吸收的能量跟图形的颜色有关,同时跟图形的面积相关。假设有红色和黑色的矩形和圆,要分别计算在给定一个颜色能量因子的时候他的能量大小。首先定义一个抽象类shap

2017-11-14 18:03:03

图像插值

在图像的基本仿射变换中,经常会碰到经过旋转、缩放后灰度值如何赋值的问题。因为变换之后,图像的坐标位置有可能是小数,所以就需要插值算法来确定到底将该像素赋予哪个位置。 1、最邻近插值法(Nearest Interpolation) 这是最简单的一种插值方法,不需要计算。在待求像素的四邻像素中,将距离待求像素最近的邻接像素灰度值赋予待求像素。设i+u, j+v(i, j为正整数, u, v

2017-11-03 11:51:56

ucos 获取查找最高优先级任务算法

全局变量OSRdyGrpOSRdyTbl其中OSRdyGrp是一个8bit的全局变量,标志哪一个分组的任务就绪 OSRdyTbl是一个全局数组,标志组内的任务对应位是否就绪然后通过一个数组来查找最低位所在的位置。数组具体为:INT8U const OSUnMapTbl[256] = { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,

2017-09-27 15:13:59

stm32 systick

cortex-m 系列cpu都有一个systick 模块,这是arm 设计中的组件,方便了软件在同系列的arm cpu上的移植以stm32f4xx的单片机为例,systick 可以被配置位两种时钟源, AHB总线时钟或者, AHB总线时钟的8分频。systick的load寄存器实现计数器的重装 systick的value寄存器表示当前的计数值每次计数满了的情况下会产生一个 SysTick_Hand

2017-09-26 14:05:49

Linux RCU 实现

RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相应修改数据并不多的情景,例如

2017-09-14 09:56:42

Qt 防止进程多开

从github上下载qt solution工程,https://github.com/qtproject/qt-solutions把其中的\qtsingleapplication添加到自己的工程,改写主程序:// Original int main(int argc, char **argv) { QApplication app(argc, argv);

2017-08-10 10:20:13

FPGA串行被动配置

原理框图: 外部主机通过下拉PROG_B启动配置并检测INIT_B 电平,当INIT_B 为高时,表明FPGA 做好准备,开始接收数据。此时,主机开始提供数据和时钟信号直到FPGA 配置完毕且DONE 管脚为高,或者INIT_B 变低表明发生配置错误才停止。整个过程需要比配置文件大小更多的时钟周期,这是由于部分时钟用于时序建立,特别当FPGA 被配置为等待DCM锁存其时钟输入 图中标记信号需要接

2017-08-10 10:18:39

qt文件清空方法

#include <QtGui/QApplication> #include "mainwindow.h" #include <QDebug> #include <QFile> #include <iostream> //效果:打开当前目录下的file文件读出里面的内容并将其内容清空置1 int main(int argc, char *argv[]) { QApplication a(ar

2017-08-10 09:37:48

Qt IP输入控件

Qt 本身不带IP输入控件,刚开始使用的代码发现位置调整有问题。最后找到了一个写得很好的代码,加上自己的修改:head_file#include <QFrame> #include <QLineEdit> #include <QIntValidator> //#include "stdint.h" #include <QHBoxLayout> #include <QFont> #include <Q

2017-08-07 17:49:59

MarkdownPad2 不能渲染的问题解决方法

在win10上安装MarkdownPad2 时,出现如下的错误信息:HTML渲染组出错,这个问题可以通过安装某个缺失组件来解决,是否想要了解详细信息? MarkdownPad 的FAQ文档中给出了解决办法:http://markdownpad.com/faq.html#livepreview-directx LivePreview is not working - it d

2017-07-14 10:18:27

线上实用工具大全

http://tool.520101.com/calculator/jsq/  实用工具大全 很多实用工具

2017-06-06 16:37:10

Linux 下Altera SPI驱动使用note

配置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-06-06 15:49:42

Qsys中部分IP在svd文件中没有描述的问题

有人反应在Qsys中加了IP之后,在svd 中没有看到相关的描述信息,这样在DS-5中调试也看不到寄存器信息,我试图找出这个问题的原因。也提出一点自己的解决思路。首先看下文档: https://documentation.altera.com/#/00088891-NT$NT00064410里面有一节的标题是:include an Internal Register Map Description

2017-06-06 15:47:47

nand flash 使用

以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用。 1. 概述         MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来传输数据、地址、指令。5个命令脚(CLE、ALE、CE#、WE#)实现NAND命令总线接口规程。3个附加的脚用作: 控制硬件写保护(WP#)、监视芯片状态(R/B#),和发起上电自动读特征(PRE-仅3V芯片

2017-06-02 17:47:10

基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门

一、简介 TI的达芬奇架构嵌入式应用处理器使用DSP与ARM结合的非对称多核结构,当然现在也有管脚全兼容的单核。本文要介绍的就是其中的一款低功耗处理器OMAP L138。 OMAP L138包括一个主频300M的ARM9处理器内核和一个300M的C6748DSP内核(均是32位处理器)。此外还有大量外设在此不做说明,与通用的ARM与DSP内核相比有如下一些不同点: 1.内存映

2017-06-02 11:31:49

C++ 策略模式

策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets th

2017-05-24 09:26:26

C++笔试题目大全

1.new 、 delete 、 malloc 、 free 关系 delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数。 malloc 与 free 是 C++/C 语言的标准库函数, new/delete 是 C++ 的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象

2017-05-17 16:50:06

Qt学习之路(37): Qt容器类之关联存储容器

http://devbean.blog.51cto.com/448512/248373 今天我们来说说Qt容器类中的关联存储容器。所谓关联存储容器,就是容器中存储的一般是二元组,而不是单个的对象。二元组一般表述为,也就是“键-值对”。   首先,我们看看数组的概念。数组可以看成是一种形式的键-值对,它的Key只能是int,而值的类型是Object,也就是任意类型(

2017-05-09 17:19:48

qt 代码中简化槽的代码量

在某些情况下代码的重复性很高,需要简化代码写法,可以把每个信号连接到同一个槽,然后在槽函数中通过qobject_cast 实例: 1、在Qt creator中拖拽出如下界面: 2、添加槽函数。 [cpp] view plain copy  print? private slots:       void 

2017-05-09 09:45:05

King-Five

关注
  • 中国
奖章
  • 持之以恒