自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 问答 (2)
  • 收藏
  • 关注

转载 全面剖析单片机io口的原理与应用技巧

IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理。也是查阅了不少资料,确保内容正确无误,花了很长时间写的。IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了简化方便理解。这样对于以后解决各种IO口相关的问题会有很大的帮助。IO口等效模型是本人独创的方法,通过此模型,能有效的降低对IO口内部结构理解的难度。并且经查阅资料确认,这种模型和实际工作原...

2019-09-06 10:21:21 3387 1

原创 aws-iot控制设备的简单原理

aws-iot可以理解为一个物联网平台,任何硬件都可以加入到这个平台,这样你就可以无处不在的控制相应的设备。本次利用esp32平台接入到aws-iot,目前esp平台内部有支持接入aws-iot的sdk,所以选择这个平台能快速体验aws-iot控制设备。主要由三个模块组成,硬件、硬件平台的aws-iot sdk、aws云服务。aws-iot sdk与aws云服务的通信协议是mqtt,这个协议是怎么...

2018-06-12 11:13:56 1778

原创 学习需要反馈

《刻意练习》这本书描述了一些传统的职业,比如运动员、音乐、艺术、象棋等,这类工作是有一个练习时间限制的,几乎是需要在20岁之前完成10000小时练习的,否则是很难成为行业的佼佼者。为了这个目标就需要在很小的时候就投入到训练中。这里的10000小时不只是一个数字,不是你坚持练习了这么久你就一定能成为一位杰出的人。作者在里面反复强调了刻意两个字,就是带有目的去练习,练习了还要有反馈,反馈是为了指出当前...

2018-06-06 14:39:01 1033

原创 alexa 技能多轮对话的设置

    "alexa, ask NiuNiu open the light." 如果你这样说,但是技能不知道你要开哪个灯,这时候技能就应该提示用户“Which light do you open?”, 接着执行下面的动作,这就是多轮对话。    首先,你需要登录到alexa skill 控制台,创建一个custom skill。在控制台里面设置你的对话模型。对话模型设置完之后,需要接入endpoi...

2018-06-05 13:52:59 1497

原创 ubuntu svn 出现Error validating server certificate for 'https://192.168.1.103:8443'

Error validating server certificate for 'https://192.168.1.103:8443': - The certificate is not issued by a trusted authority. Use the   fingerprint to validate the certificate manually! - The ce

2017-05-13 22:53:48 4430

原创 linphone-3.9.1 无界面版在openwrt上的移植

1、需要安装java环境这里就不介绍了2、下载linphone-3.9.1版http://download.savannah.gnu.org/releases/linphone/3.9.x/sources/下载下来的linphone-3.9.1版本里面看有没有oRTP和mediastreamer2两个子目录,如果没有再分别下载ortp-0.25.0.tar.gz、mediastre

2017-02-09 15:11:59 2500

转载 makefile 中 $@ $^ %< 使用

1.源程序的编译在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器。 下面我们以一个实例来说明如何使用gcc编译器。假设我们有下面一个非常简单的源程序(hello.c):int main(int argc,char **argv){printf("Hello Linux\n");}要编译这个程序,我们只要在命令行下执

2016-10-26 15:59:45 244

转载 makefile分析学习

1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makef

2016-10-26 15:30:17 203

转载 GPIO复用引脚的释放及gpio-leds的注册

一:根据mt7620 datasheet中GPIO pin share schemes和WRTnode gpio引脚特征,可以用来自定义的gpio引脚如以下标注所示:GPIO pin share schemes注:红色框里的是结合WRTnode的接口参数得到的可以释放的gpio复用引脚。二:mt7620n.dtsi里对gpio的注册我

2016-10-08 09:51:52 1479

转载 SMS短信的PDU编码规则

目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发

2016-09-01 14:18:52 569

转载 ALSA中PCM参数配置

步骤如下:1) PCM设备的句柄.2) 指定同时可供回放或截获的PCM流的方向3) 提供一些关于我们想要使用的设置选项的信息,比如缓冲区大小,采样率,PCM数据格式等4) 检查硬件是否支持设置选项.   4.1) 初始化PCM变量   4.2) 分配hwparams结构   4.3) 打开PCM设备   4.4) 以声卡的全部设置选项空间来初始化hwparams

2016-06-19 19:30:19 2315

原创 mt7628 gpio模拟spi驱动si32171

si32171 做从,mt7628做主,si32171的spi时序要求:When using a hardware SPI, the user should configure the port for CPOL=1(SCLK/SPICLK is high when not clocking) and CPHA=1 (SDI/MOSI data change onSCLK/SPICLK falli

2016-04-15 19:46:02 3799 1

原创 mt7620 spi驱动的dts文件修改产生spidev32766.1

在3.2之前版本的内核里spi驱动要先注册spi_board_info结构体,产生spi主控制器设备(platform device),然后匹配spi_master_driver(platform driver,这个文件是spi-rt2880.c).  匹配上之后就会进入probe函数,注册spi主控制器,再查找spi主控制器下有没有挂设备,如果有就创建spi_device. 创建完设备之后再

2016-04-15 18:58:43 6536

转载 mt7620 按键驱动

一:看电路图,查找datasheet以及ProgrammingGuid确定引脚及待时用的寄存器//实际引脚是:GE2_R XD1,  对应GPIO67  二:编码#ifndef __RALINK_GPIO_H__ #define __RALINK_GPIO_H__#include  #include  #include  #inclu

2016-04-15 10:52:14 1208 1

转载 gpio模拟I2C,驱动pcf8574T

一、pcf8574T介绍查看pcf8574T的数据手册,A表示读或写,当A为1的时候表示读,当A为0的时候表示写。现把地址控制线,即A2、A1、A0全部接地,可以得到读控制指令为0x41,写控制指令为0x40。二、I2C介绍参考:http://blog.csdn.net/ce123_zhouwei/article/details/6882221

2016-04-15 10:49:42 3005

转载 Linux设备驱动中得 DTS文件加载过程

原文地址:Linux设备驱动中得 DTS文件加载过程 作者:taiping6365From:http://m.blog.csdn.net/blog/liliyaya/91881931. 在\kernel\of\fdt.c 中有如下初始化函数  注释上:展开设备树,创建device_nodes到全局变量allnodes中void __init unflatten_de

2016-04-07 08:58:21 2627

转载 openwrt pcm driver on mt7620 or rt5350

查看datasheet可以知道,mt7620和rt5350有相通的Audio组件从openwrt14.07的kernel源码中,我们可以找到mt7620 i2s的驱动我们的pcm驱动,可以基于i2s驱动进行改动。pcm驱动已传至github,相关代码可以看这里主要改动了以下几点:driver source codeThis code is based on the mt7620

2016-04-04 22:59:13 1789

转载 Linux服务器开发初步

服务器开发需要考虑的内容很多,比如服务器的架构、稳定性、性能以及负载能力等等。事实上,在开发服务器的过程中,需要综合考虑各种因素,比如就客户端连接时间较短却又比较频繁的服务器(例如HTTP服务器)而言,在可选的服务器结构中,预先派生进/线程的结构就要比并发式结构高效,这一点将在后续的文章中对其进行详细的介绍。然后就是服务器实现方面的细节,比如是否需要支持跨平台的能力、采用什么样的开发语言和开发工具

2015-12-15 10:31:57 1482

转载 Linux 下三种方式设置环境变量

在Linux系统下,如果你下载并安装应用程序,很有可能在键入它的名称的时候出现 “command  not found ” 的提示内容。 如果每次都到安装目录文件夹内,找到可执行文件来进行操作就太繁琐了。 这涉及到环境变量path的设置问题,而Path 的设置也是在Linux下定制环境变量的一个组成部分Linux下环境变量设置的三种方法:如想将一个路径加入到$PATH中,可以像下面

2015-11-07 10:28:50 379

转载 DMA基本概念及mini2440下DMA驱动程序编写与测试

转自:http://blog.techbulo.com/tech/artical/1462.html1、基本概念DMA即Direct Memory Access(直接存储器存取),那么为什么要引入这么个东东呢?它的作用又是什么呢?我们通过一个例子来说明:比 如当我们要往内存里面拷贝一块很大的数据时,由于CPU同一时间只能做一件事情,这样在一段很长的时间里就不能再处理

2015-07-30 15:28:48 1025

转载 mips mplayer移植

pc:ubuntu 13.10开发板:龙芯1Bgcc版本:gcc 4.8.1交叉编译环境:mipsel-linux下载源码包:libmad-0.15.1b.tar.gz、MPlayer-1.0rc2.tar.bz2、yasm-0.8.0.tar.gz1.移植libmad解码器tar zxvf libmad-0.15.1b.tar.gzcd libmad-0

2015-05-28 11:16:04 1051

转载 Linux2.6.32.2移植到Mini2440

前几天一直在移植U-Boot2009.8,基本的移植已经结束,不过的使用tftp下载内核时还是有点问题,现在有点迫不及待的先移植了LInux2.6.32.2内核,先使用友善之臂的supervivi,下载引导Linux内核,算是给自己一点鼓励,成功后再使用U-Boot引导Linux内核。主要参考了友善之臂的移植文档。自从Linux-2.6.31开始,Linux内核就已经官方支持了mini2440

2015-05-23 12:16:40 558

转载 在mipsel-linux平台上的编译应用SQLite-3.5.9

MIPS是一个RISC的处理器体系结构,与之类似的还有x86,arm等,今天我们介绍如何在Ubuntu下搭建MIPS交叉编译环境:1.下载:在 http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2 下载buildroot:tar -jxvf buildroot-snaps

2015-04-28 16:41:29 654

转载 linux消息队列编程实例

转自:linux 消息队列实例前言:   消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数:

2015-04-20 10:38:24 311

转载 Linux信号(signal) 机制分析

【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。【关键字】软中断信号,signal,sigaction,kill,sig

2015-04-17 15:40:23 346

转载 串口termios结构体的详细设置

termios结构体内容:成员 描述-------------------------------------------c_cflag 控制模式标志c_lflag 本地模式标志c_iflag 输入模式标志c_oflag 输出模式标志c_line line disciplinec_cc[NCCS] 控制字符c_ispeed 输入波特率c_ospeed 输出波特率 在te

2015-04-17 15:09:18 1519

转载 IO中同步、异步与阻塞、非阻塞的区别

一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数

2015-04-10 09:06:28 319

转载 netlink机制和udev实例

LINUX netlink机制  用户空间的程序与设备通信的方法,主要有以下几种方式:  1 通过ioperm获取操作IO端口的权限,然后用inb/inw/ inl/ outb/outw/outl等函数,避开设备驱动程序,直接去操作IO端口。(没有用过)  2 用ioctl函数去操作/dev目录下对应的设备,这是设备驱动程序提供的接口。像键盘、鼠标和触摸屏等输入设备一般都是

2015-04-09 16:16:50 2050

转载 PF_NETLINK应用实例:NETLINK_KOBJECT_UEVENT的实现

udev的文档介绍:   1. dynamic replacement for  /dev。作为devfs的替代者,传统的devfs不能动态分配major和minor的值,而major和minor非常有限,很快就会用完了。 udev能够像DHCP动态分配IP地址一样去动态分配major和minor。  2. device naming。提供设备命名持久化的机制。传统设备命名方式不具直观

2015-04-09 16:01:40 1484

转载 struct sockaddr_nl 结构体 由来、含义以及使用——获取Linux路由表

Linux 用户态与内核态的交互  在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了netlink,著名的内核包过滤框架Netfilter在与用户空间的通读,也在最新版本中改变为netlink,无疑,它将是Linux用户态与内核态交流的主要方法之一。它的通信依据是一

2015-04-09 15:25:00 436

转载 C语言中fflush函数的使用方法

此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。函数原型:int fflush(FILE *stream) ;函数功能:清除一个流,即清除文件缓冲区,当文件以写方式打开时,将缓冲区内容写入文件。也就是说,对于ANSI C规定的是缓冲文件系统,函数fflush用于将缓冲区的内容输出到文件中去。函数返回值:如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打

2015-04-09 14:56:41 14680

转载 arm-linux-gcc/ld/objcopy/objdump参数总结

分类: LINUXarm-linux-gcc -wall -O2 -c -o $@ $-o 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件-Wall 指定产生全部的警告信息-O2 编译器对程序提供的编译优化选项,在编译的时候使用该选项,可以使生成的执行文件的执行效率提高-c 表示只要求编译器进行编译,而不要进行链接,生成以源文件的文件名命名但把其后缀由 .c 或

2015-03-01 19:54:49 336

原创 创建子进程时fork()上面的内容为什么在屏幕上只打印一次,而在输出到文件时为什么打印了两次。

有如下代码:#include

2015-01-17 10:46:43 1095

原创 RT3070网卡驱动在ferdora 9中的安装

第一步:下载RT3070的无线网卡驱动;解压得到/opt/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO 第二步:由于是在虚拟机里面安装,所以不存在驱动移植的问题,一般源码包里面就已经支持了,直接make,在/opt/2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5

2015-01-16 10:03:34 1038

转载 RT5350原厂SDK及AP移植步骤详解

标签: rt5350 rt5350ap移植 rt5350原厂sdk编译 rt5350内核编译romfs文件系统分类: ARM_LINUX嵌入式最近想搞一下rt5350,所以找了个原厂的SDK包进行了编译,很快路由器就可以用了,把我的编译操作步骤写了下分享给更多的爱好者,供大家参靠,下一步准备移植摄像头玩玩。

2015-01-09 16:44:26 1392

转载 嵌入式数据库--SQLite简单应用

简介 嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。接

2014-12-31 10:45:09 559

转载 P2P之UDP穿透NAT原理

首先先介绍一些基本概念:    NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。    最开始NAT是运行在路由器上的一个功能模块。    最先提出的是基本的NA

2014-11-28 09:10:21 606

转载 上拉电阻的作用【图文】

单片机上拉电阻作用1. 场效应管的漏极开路门电路如下:图中上拉电阻作用分析如下:管子导通或截止可以理解为单片机的软件时端口置1或0.(1)如果没有上拉电阻(10k),将5V电源直接与场效应管相连。当管子导通时, 管子等效一电阻,大小为1k左右,因此5v电压全部加在此等效电阻上,输出端Vout=5v。当管子截止时,管子等效电阻很高,可以

2014-09-11 22:01:13 453

转载 右左法则——复杂指针解析

首先看看如下一个声明: int* ( *( *fun )( int* ) )[10]; 这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明语法之前,不学习一定的规则,想理解好这类复杂声明是比较困难的。 C/C++所有复杂的声明结构,都是由各种声明嵌套构成的。如何解读复杂指针声明?右左法则是一个很著名、很有效的方法。不过,右左法则其实并不是C/C++标准里面的内容,它...

2014-09-06 21:23:20 307

转载 飞鸽传书(IPMSG)协议(翻译稿)

协议声明:                                             本协议是由日本人Shirouzu Hiroaki (白水 启章)先生编写。                                             wanpengcoder翻译于Mr.Kanazawa英文文档,转载请注明出处。                 

2014-08-23 23:19:21 827

常用3500个简体-繁体字,及对应的unicode码

常用3500个简体-繁体字,及对应的unicode码

2023-12-11

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

TA关注的人

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