自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何使用跳表法取代switch...case

跳表法要实现起来很简单,定义一个函数指针,有多少个case我们就定义一个多大的函数指针数组就好了,这里我把自己在实际用用到的一个案例拿出来说一下,这个是根据片源分辨率和屏幕参数然后给底层设置比例模式的一个算法,我们可以先看看原始的代码.#define LOG_NDEBUG 0#define LOG_TAG "HWC_WIDEMODE"#include <utils/Log.h>#include <widemode.h>int32_t rtk_zoom_get...

2020-10-08 16:30:53 472

转载 音视频编解码基础概念

视频编解码基础概念https://www.cnblogs.com/leisure_chn/p/10285829.html音频编解码基础讲解https://blog.csdn.net/impingo/article/details/103797078

2020-03-26 21:24:51 365

转载 C++11新特性之std::function与std::bind

类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。通常std::function是...

2020-03-08 19:08:45 590

转载 C++ 11 Lambda表达式

C++ 11 Lambda表达式C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda...

2020-03-08 11:42:27 147

转载 从4行代码看右值引用

从4行代码看右值引用概述  右值引用的概念有些读者可能会感到陌生,其实他和C++98/03中的左值引用有些类似,例如,c++98/03中的左值引用是这样的:int i = 0;int& j = i;  这里的int&是对左值进行绑定(但是int&却不能绑定右值)...

2020-03-08 10:29:10 225 1

原创 FFmpeg系列(一) 如何在linux下编译可以在Android环境中使用的ffmpeg可执行程序

因为工作的关系,接触到音视屏方面的。而音视频就离不开开源FFmpeg,之前一直有写博客,一年的沉淀,还是要把博客继续下去,也算是一个总结。 要想学习FFmpeg,首先要学会编译FFmpeg,其实很多不是从事音视频的人,很可能没有继续研究,就是倒在第一大关第一小关上面。 雷神博客https://blog.csdn.net/leixiaohua1020/article...

2019-09-29 20:27:31 617

转载 linux下svn常用命令

1、将文件checkout到本地svn checkout path(path是服务器的目录)例如 :svn checkout svn://192.168.1.1/pro/domain2、往版本库中添加新的文件svn add filename例如:svn add test.cpp3、将改动的文件提交到版本库svn commit -m "注释" [-N] [--no-unl...

2018-10-15 18:02:31 140

原创 错题集

       

2018-09-20 22:54:32 329

转载 stm32学习笔记---ADC电压采集

 1.  ①电压输入范围ADC 输入范围为:VREF- ≤ VIN ≤ VREF+。由 VREF-、VREF+ 、VDDA 、VSSA、这四个外部引脚决定。我们在设计原理图的时候一般把 VSSA 和 VREF-接地,把 VREF+和 VDDA 接 3V3,得到ADC 的输入电压范围为:0~3.3V。如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可以在外...

2018-09-12 22:03:05 122948 24

转载 网络通信---epoll

#include "head.h"/*功能:将传入的文件描述符进行非阻塞处理 *newfd:需要处理发文件描述符 *返回值:空 */void set_nonblock(int newfd){ int flags = fcntl(newfd,F_GETFL); flags |= O_NONBLOCK; fcntl(newfd,F_SETFL,flags); ...

2018-09-12 21:17:02 177

原创 stm32学习笔记---DMA直接存储区访问

                 #include "bsp_dma_mtm.h"/* 定义aSRC_Const_Buffer数组作为DMA传输数据源 * const关键字将aSRC_Const_Buffer数组变量定义为常量类型 * 表示数据存储在内部的FLASH中 */const uint32_t aSR...

2018-09-11 22:27:31 1085

原创 stm32学习笔记---中断与事件的区别以及外部中断

 中断与事件的区别 这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,...

2018-08-28 20:23:58 11371 6

原创 stm学习笔记---stm32工程的创建

1.新建工程文件夹在Doc中创建readme.txt文档,说明工程的内容,概述Libraries文件夹直接从事例工程中复制Project为空文件夹User中从事例工程STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下复制头文件与.c文件 2.创建工程打开keil5,点击创建...

2018-08-28 10:14:34 296

原创 如何在交叉编译链中链接json库

下载源码wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz tar xvf json-c-0.9.tar.gz  cd json-c-0.9/./configure --prefix=$PWD/tmp CC=/opt/toolchain/toolchain-4.5.1-farsight/bin/arm-non...

2018-08-24 21:25:02 943

转载 PuTTY在Windows中向Linux上传文件

PSCP工具PuTTY小巧方便。但若需要向网络中的Linux系统上传文件,则可以使用PuTTY官方提供的PSCP工具来实现上传。PSCP基于ssh协议实现,其用法与SCP命令非常类似。获取PSCP工具在PuTTY官方网站的下载页中,找到PSCP,下载。下载后,习惯性的将pscp.exe与Putty.exe文件放在一起。首先需要保证在命令行下可以访问到pscp.exe。可以通...

2018-08-22 19:17:41 977

原创 c语言中如何使用json

json: 为了避免不同平台下的字节对齐、类型大小不统一的问题,json库把数据封装成具有一定格式的字符流数据,进行传输。 json格式:把数据与键值一一对应,数据传输双方约定好同一键值,使用接口API根据键值操作jason对象(jason_object)存储或取得数据。一般使用:数据-》(封装)jason对象-》String格式-》。。。传输。。。-》String格式-》(解...

2018-08-22 19:07:49 4091

转载 java中怎么使用json

1.一般我们在进行客户端和服务端交换数据的时候,会使用Json来进行数据的传输,即转换成字符串类型的json数据来进行数据的交换。2.Json类型的数据一般是 JSONObject(对象),JSONArray(数组)。一般来说二组的区别在于,对象是无序的,而数组是有序的,看具体需求选择使用。import org.json.simple.JSONArray;import org.json...

2018-08-22 14:24:26 1801

转载 linux系统中使C程序脱离终端运行(后台运行)

你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半个小时就会前功尽弃,你非常气愤……在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了shell命令之后必须要关闭终端软件(例如S...

2018-08-20 21:16:31 5056 1

原创 linux驱动学习笔记---输入子系统框架(十一)

1.input core层中初始化input_dev_list链表与input_handler_list链表  2.初始化input_handler对象,并注册到内核链表中注册之后会匹配一次通过结构体中的node成员连接起来构成input_handler链表 注册时,会将handler对象加入到input_table数组中 3.初始化input_...

2018-08-19 22:40:14 242

原创 ubunt 14.04 linux基本配置

1. 更新 apt 源sudo apt-get update3. 安装 SSHsudo apt-get install ssh4. 安装 xchmsudo apt-get install -y xchm5. 安装 GCCsudo apt-get install -y g++-4.4 gcc-4.4 cpp g++-4.4-multilib gcc-4.4-multilib g+...

2018-08-17 18:27:03 828 2

转载 Ubuntu 12.04 linux环境配置

tftp服务器的安装与配置tftp主要用于嵌入式交叉开发环境的搭建,传输文件。0、创建tftp的工作目录,并修改权限sudo mkdir /tftpbootsudo chmod 777 /tftpboot1、安装:sudo apt-get install tftp tftpd openbsd-inetd2、打开配置文件 /etc/inetd.conf :sudo v...

2018-08-17 17:19:25 1368

转载 Ubuntu 12.04/14.04 linux环境配置

Ubuntu 12.04/14.04 linux环境配置 1. vi功能增强1.1  VI中不能正确使用上下箭头解决方法sudo apt-get install vim  (安装完整版本的 VI) 1.2  ubuntu里面颜色 VI的个性设置新建 /etc/vim/vimrc.local,里面添加内容如下(仅供参考):set nuset nocpset r...

2018-08-17 16:48:34 446

原创 linux驱动学习笔记---杂项设备注册和ioctl+gpio库函数使用以及平台自定义数据(十)

平台自定义数据 在pdev中创建自定义对象 在pdrv中声明,接收平台自定义数据  使用平台自定义数据  释放平台自定义数据 杂项设备注册 pdev端驱动代码 #include &lt;linux/init.h&gt;#include &lt;linux/module.h&gt;#include &lt;linu...

2018-08-15 21:47:06 982

原创 linux驱动学习笔记---平台总线框架(九)

平台总线的需求由来 平台总线的模型 一.初始化device链表与device_driver链表struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; /* initial name of the de...

2018-08-15 21:20:10 667

原创 linux驱动学习笔记---内存映射(八)

 使用内存映射的好处是可以加快我们应用与内核数据传送的速度,一般的调用需要在应用层申请空间,同时需要在内核申请空间,有内存映射就可以只申请一个空间就可以. 加载函数中申请空间 //分配内存 key_dev-&gt;virt_mem = kzalloc(PAGE_SIZE, GFP_KERNEL);卸载函数中释放空间kfree(key_dev-&gt;virt_mem...

2018-08-12 20:25:06 768 1

原创 linux驱动学习笔记---实现中断下半部以及驱动编写规范(七)

中断下半部:tasklet :struct tasklet_struct{    struct tasklet_struct *next;    unsigned long state;    atomic_t count;        void (*func)(unsigned long); //下半部要执行的代码    unsigned long data; // 传递给...

2018-08-12 19:20:22 527 1

原创 linux驱动学习笔记---多路复用实现所有按键中断以及非阻塞的实现(六)

1,文件io模型: 阻塞, 非阻塞, 多路复用2,文件io中的ioctl和mmap接口3, 中断下半部:softirq, tasklet, workqueue4, 驱动中出错判断(驱动编写的规范)----------------------------------------------非阻塞: 因为linux文件io都是阻塞, 需要非阻塞的话,就需要进行            应...

2018-08-12 16:44:38 678

原创 linux驱动学习笔记---文件IO调用框架(五)

1.创建cdev对象在申请设备号时,我们会创建cdev对象,这个对象中实现了fops,以及我们所申请的主次设备号2.注册cdev到内核链表中这一步中我们将申请的设备号注册到了内核链表中3.创建设备节点,设备节点中有我们的主次设备号设备节点中存有主次设备号 struct inode { /* RCU path lookup touches follow...

2018-08-11 20:55:35 251

原创 linux驱动学习笔记---按键中断程序(四)

如何申请中断中断的产生原理 在加载函数中申请中断 irqno = IRQ_EINT(1); //参数1--中断号码 //获取中断号码的方法: 1,外部中断IRQ_EINT(x) // 2, 头文件 #include &lt;mach/irqs.h&gt; #include &lt;plat/irqs.h&gt; //参数2--中断的处理方法 //参数3--...

2018-08-11 19:38:00 2122

原创 linux驱动学习笔记---点亮一个led灯(三)

led硬件地址映射和操作1.点亮s5pv210的led灯首先需要知道其所用引脚,以及引脚所对应的状态寄存器与数据寄存器根据外围电路图可知两个灯所用的引脚分别为gpc0_3与gpc0_4,找到其引脚所对应的寄存器  状态寄存器 5位的数据寄存器在驱动模块加载中做地址映射,映射的地址为8个字节64位(包括状态寄存器与数据寄存器)gpc0con + 1(一个寄存器...

2018-08-11 15:48:46 3648

原创 linux驱动学习笔记---如何写一个简单的驱动程序(二)

设备号:包含两个部分:主设备号和次设备crw--w----  1 root tty       4,  10 Jul 26 06:05 tty10crw--w----  1 root tty       4,  11 Jul 26 06:05 tty11crw--w----  1 root tty       4,  12 Jul 26 06:05 tty12主设备号(整数) : 表示...

2018-08-11 14:14:44 2241

原创 linux驱动学习笔记---s5pv210(一)

1,解压内核源码tar -xvf linux-3.0.8.tar.bz22,内核的编译步骤:    a,设置交叉工具链--目标文件运行在arm处理上, 修改Makefile         195 ARCH            ?= arm         196 CROSS_COMPILE   ?= arm-none-linux-gnueabi-               ...

2018-08-06 18:40:22 717

原创 ARM学习笔记---S5PV210硬件操作方法以及裸机点灯程序(三)

U-Boot 1.3.4 (Jul 11 2018 - 10:53:57) for FS210CPU:  S5PV210@1000MHz(OK)        APLL = 1000MHz, HclkMsys = 200MHz, PclkMsys = 100MHz        MPLL = 667MHz, EPLL = 96MHz                       Hcl...

2018-08-04 16:49:41 1137

原创 ARM学习笔记---ARM指令(二)

           汇编代码练习 area mytexcode, code, readonly;一般异常向量表都在最前面 b reset ; ldr pc, reset_space ; 0x0 undefined_exception b undefined_exception ; 0x4swi_exception...

2018-08-04 14:42:06 651

原创 内核链表-中文版

#ifndef _LINUX_LIST_H_#define _LINUX_LIST_H_//Linux双向循环链表库文件//指针域struct list_head{ struct list_head *next,*prev;};//两个安全位置#define LIST_POISON1 ((void *) 0x00100100)#define LIST_POISON2 ...

2018-08-04 12:57:54 168

原创 ARM学习笔记---arm工作模式指令以及arm指令(一)

目录 ARM工作模式  ARM处理器的工作原理  ARM的指令格式和寻址方式  ARM版本与指令集  大端模式与小端模式  ARM core中的寄存器 ARM工作模式  ARM处理器的工作原理    ARM的指令格式和寻址方式 ldr r0,[r1]实际上是在r1寄存器中找到地址,再找到这个地址中所对应的数据,放入r0寄存器中 ...

2018-08-02 21:11:13 596

原创 stm32学习笔记--SPI通信以及OLED屏幕显示

    SPI中沿变化,导致寄存器与数据线的数据进行交互;iic中高电平时寄存器与数据线进行交互/*********************************iBoxV300********************************* ...

2018-07-29 21:04:41 23796 6

原创 stm32学习笔记---IIC通信以及用IIC实现EEPROM的读写

  IIC通信#include "i2c_driver.h"#include "systick_driver.h"#define GPIO_PORT_I2C GPIOB /* GPIO端口 */#define RCC_I2C_PORT RCC_APB2Periph_GPIOB /* GPIO端口时钟 */#define I2C_SCL_PIN GPIO_Pin_6...

2018-07-27 21:35:04 5942 2

原创 stm32学习笔记---PWM实现控制呼吸灯

   void tim3_init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct;/***************************¶¨Ê±Æ÷»ù±¾¹¦ÄÜ************************************/...

2018-07-23 22:07:44 14241

原创 stm32学习笔记---计数器定时中断(1s)

 #include "tim_driver.h"//tim2³õʼ»¯:1ÃëÖÓ¸üÐÂÊý¾Ývoid tim2_init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; //ʹÄÜʱÖÓ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); ...

2018-07-23 21:24:29 8755 1

空空如也

空空如也

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

TA关注的人

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