自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (6)
  • 收藏
  • 关注

转载 编译某基于openwrt的sdk

由于自己的linux系统比较新,导致编译个基于openwrt的sdk问题多多,在此记录解决过程1.问题:freadahead.c: In function 'freadahead':freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report

2021-10-15 17:47:54 1245

转载 证书与签名是什么

1.  鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2.  鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。 4.   鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。5.  鲍勃给苏珊回信,决定采用”数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。...

2021-08-06 17:55:17 857

转载 uC/OS-III&FreeRTOS区别

在阅读完uC/OS-III(V3.03.01)和FreeRTOS(V10.0.1)的源码后,我对RTOS有了较深的认识。现将它们之间的一些区别总结出来,有利于大家理解这两个RTOS。1、uCOS-III中所有的内核对象(如任务控制块、消息队列、信号量等)都是静态创建的,需要用户提供。FreeRTOS中的内核对象支持动态和静态两种创建方法。(PS: 其实系统提不提供动态创建功能并不那么重要,因为在静态创建的方法的基础上加入内存管理机制,就能自已封装实现动态创建函数)2、uCOS-III中的任.

2021-05-20 14:04:55 1381

转载 RSA ~ 非对称加密算法

RSA:非对称加密,加密与解密使用的密钥不是同一密钥,对中一个对外公开,称为公钥,另一个只有所有者知道,称为私钥。用公钥加密的信息只有私钥才能解开,反之,用私钥加密的信息只有公钥才能解开(签名验签)。代表:RSA算法。速度慢,适合少量数据加密。对称加密算法不能实现签名,因此签名只能非对称算法。RSA算法非常简单,概述如下:找两素数p和q取n=p*q取t=(p-1)*(q-1)取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)...

2021-04-25 18:03:31 917

转载 C++利用mongoose搭建web服务器

0、前言Mongoose是c语言写成的网络库。它为TCP、UDP、HTTP、WebSocket、CoAP、MQTT实现了事件驱动型的非阻塞api。其具有以下特性:跨平台:可在linux/unix macos QNX eCos Windows Android Iphone FreeRtos上运行;原生支持PicoTCP的嵌入式tcp/ip协议栈,支持LWIP嵌入式tcp/ip协议栈;单线程,异步,非阻塞核心与简单的基于事件的API。...

2021-04-25 16:59:40 2145 1

转载 __attribute__((section(x))) 使用详解

无论是GNU还是ARM的编译器,都支持__attribute__所指定的编译属性,这里着重讲解一下在KEIL环境下__attribute__中的section的使用方法。section关键字可以将变量定义到指定的输入段中,下面以具体的例子来讲解section的使用方法. #define SECTION(level) __attribute__((used,__section__(".fn_cmd."level))) #define CMD_START_EXPORT(...

2020-12-16 19:13:38 1686

转载 WAV文件格式详解

.概述Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的),它采用RIFF(Resource Interchange File Format)文件格式结构。通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。但是严格意义上来讲,WAV也可以存储其它压缩格式的音频数据。常见的声音文件主要有两种,分别对应于单声道(11.025KHz 采样率、8Bit 的采样值)和双声道(44.1KHz 采样率、16Bit 的采样值)。采样率是...

2020-12-06 16:11:50 8308

转载 wps原理及实现

这篇文章基于《Wi-Fi Simple Configuration Technical Specification Version 2.0.5》文档, 更详细的内容请直接参考文档,这里只将自己的想法做一些简单的记录。一、WSC的三种实现 WSC(wifi simple configuration),一看这名字就知道这个协议是用来偷懒用的,所以我将它翻译为“快速接入无线网”协议,这个协议主要包括三种快速连接方式: 1. WPS: 看这篇文章的人,应该会知道wps是干嘛用的,但是相信也...

2020-10-15 17:59:51 6406 8

转载 智能家居Zigbee和蓝牙哪个发展潜力更大?

今年的CES Asia 2019展几乎就是智能家居、智慧城市、智能生活的天下,只不过不同智能家居设备制造商的产品标准、生态不同。小米、华为、苹果、亚马逊这样的平台本来就在构建自己的智能家居生态,Signify、小燕科技这些智能家居制造商也在组建各自的生态。更重要的是,无论是平台还是制造商,所用的无线通讯标准还各不一样:比如小燕科技以Zigbee为主,而BroadLink则强调Wi-Fi,米家有越来越多BLE Mesh设备。这些看来碎片化的状况,可能会让普通人不知从哪里入手;或者这种碎片化是否对行业本身的

2020-07-31 19:46:32 4230 1

转载 Diffie-Hellman密钥交换

DH密钥交换是一种安全协议,它可以让双方在不安全的信道上创建一个密钥。双方互相发送的数据就算被第三方知晓,也无法知道加密信息的密钥。其解决问题的主要思想可以用下图来解释:Alice和Bob想要协商出一个只有它们两人知道的颜色,不能让第三方知道,怎么办呢?解决办法如下:先从它们共同拥有的颜色(图中为黄色)开始,这个黄色是大家都知道的,第三方知道也没有关系。Alice选了一个只有自己知道的颜色(图中为红色),并将之混入大家知道的黄色中,形成新的颜色(图中为棕色)。Bob也选了一个只有自己知道的

2020-07-14 17:27:18 494

转载 OPENWRT启动流程分析

先来看框图 OPENWRT 系统启动流程框图:既 Linux 内核从 flash 中读取,再看 MT7628AN 的 Flash 分区布局:

2020-06-05 19:48:07 370

转载 人声分离攻破“鸡尾酒会”效应,将为语音识别带来哪些新可能?

“时隔65年,在近日Google Research软件工程师Inbar Mosseri和Oran Lang发表的论文《Looking to Listen at the Cocktail Party》中,采用了一个全新的视听模型为“鸡尾酒会”问题提供了一个合适的解决之道,这一突破为语音识别不仅带来了更多新可能,同时也成为该领域一个划时代的分水岭。”在嘈杂的室内环境中,比如在鸡尾酒会中,同时存...

2020-05-07 19:30:58 2124

原创 MCU小型调度OS之四:调度OS与RTOS的本质区别

一、RTOS原理与机制: 图1 如上图1,这个是UCOSII,大同小异,RTOS一般都是很多任务并行运行,如何切换任务呢,一般是在一个信号量pending或者OSTimeDly的时候切换,不然一个任务一直抢占着资源,优先级低的任务永远不能执行。如果OSTimeDly之后,切换到其他任务工作,待会儿该任务就绪,又重新把当前任务的临时变量、PC指针等环境资源重新恢复到当...

2020-01-16 16:33:36 937

原创 MCU小型调度OS之三:任务调度机制

一、结构体类型: 图1 图2 如上图1,task_list是任务节点的结构体,具体参数如下: 1、task_id是任务ID,一般对某个任务操作时用来区分具体哪个任务; 2、stat是任务的当前状态,状态类型如图2,三种状态依次为挂起休眠,就绪运行,超时; 3、pointer是当前运行指针...

2020-01-14 15:21:54 1923

原创 MCU小型调度OS之二:定时器

一、结构体类型: 如上图所示,timer_list就是定时器的结构体,其中timer_id是定时器ID;enable是该定时器是否启动;expires是定时时间长度,function是定时器超时函数,p_arg是定时器传参数;next是下一个定时器节点。二、硬定时器: 定时器分为硬定时器和软定时器,区别为: 1、硬定时器超时直接...

2020-01-13 15:07:57 909

原创 MCU小型调度OS之一:由ODM项目引起跨平台、跨系统的兼容、可移植

项目背景: 最近公司在做一个ODM项目,需要把公司内部的协议栈交互与加密方式封装成一个SDK,提供给ODM厂家调用,达到其他公司只做适配BSP,而核心业务由我们自己掌控,达到ODM厂家更换任意平台芯片,任意RTOS或者逻辑,我们都能适配,因为公司协议栈内部有交互(设备与APP之间有命令交互和阻塞等待超时等场景),因此需要制作一个跨平台的调度机制,又能保证性能和兼容性...

2020-01-03 10:43:06 1069

原创 Zigbee疑难问题定位以及思路方法分享 (四)

接着上回继续分析公司遗留的问题四,问题四的需求就是,假如其中一个网关坏了,拿了一个新的网关,能够替换接管旧网关下面的所有设备,由于搞ZigBee也有两个月了,802.15协议以及ZigBee协议也蛮熟悉了,抓包也抓过了,对ZigBee通讯多少有些了解。 实现该问题思路有几点:1、理论上,入网成功后,设备通讯都是短地址,网关时0x0000,数据包里面有panID,推...

2019-07-12 19:16:34 769

原创 Zigbee疑难问题定位以及思路方法分享 (三)

接着上回继续分析公司遗留的问题三分析,问题三就蛮棘手的,因为是隐性问题,不容易复现,有时候,一个月才复现一次,出现这样的问题给定位带来了很大的困难,首先说一下我们产品的掉线、重连机制。 产品掉线重连机制:设备正常通信的时候倒还好,如果出NWK_ERROR_ASSOC_CNF_DENIED情况,也就是失网的情况下,停止设备上报数据,初始化网络,进入NLME_Orph...

2019-07-12 18:22:54 978

原创 Zigbee疑难问题定位以及思路方法分享 (二)

接着上回继续分析公司遗留的问题二分析,问题二就是入网速度慢、入网后概率性的掉线。先普及一下我们入网的流程,因为不同的网络有不同的PANID,因此目前入网的方式有三种:1、每个设备出厂时候读取它的MAC地址,生成二维码贴在设备上,入网之前用手机扫描一下,把MAC地址导入到网关端,因此尝试关联的时候网络允许其关联;2、每个设备上做一个NFC标签,设备可以通过I2C等总线读取NFC标签...

2019-07-12 15:27:26 473

原创 Zigbee疑难问题定位以及思路方法分享 (一)

最近换了家新公司,花了两个月从不懂ZigBee到解决了不少遗留偶发BUG,有了不少心得体会,下面分享下自己定位思路,以及分析问题的方法。 刚进公司,接手了另一个工程师做的ZigBee项目(采用CC2530方案),遗留不少问题BUG,前两周看代码,熟悉ZigBee协议,当前遗留了有不少BUG,其中丢包率高、经常性的掉线并且不能自恢复、入网速度慢、入网后概率性的掉线这...

2019-07-05 19:13:52 1123 4

转载 程序员专用接私活,靠谱的七个平台

程序员除了在公司上班之外,有时候也需要接私活赚些外快补贴家用,那么国内有哪些渠道可以提供大量的职位呢? 我寻找了一些靠谱的方法推荐给大家,以下是几个国内主流并且不同业务类型的平台,供大家筛选1、程序员客栈:程序员的经纪人2、快码众包-让互联网产品开发更快速!认准域名Kuai.ma3、Coding 码市 - 基于云技术的软件外包服务平台 coding码市4、开源中国众...

2019-04-18 14:46:49 2745

转载 从一个普通程序猿到CTO,要经历哪几个阶段?

不想当CTO的技术开发,不是好程序员,那么从一个普通程序员到顶级的CTO都要经历哪些关键阶段,又都需要具备怎样的工作能力呢?今天小编就给大家分享一篇关于程序员进阶历程的文章,希望对你未来的职业规划有所帮助。1.程序员程序员,英文名 coder/programmer,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可用的软件产品。此职位为执行级别。另外因为经验较少,一般需要求...

2019-04-18 14:44:58 284

原创 嵌入式产品偶发性问题定位总结

本人从事嵌入式研发多年,从有线到无线都略有涉及,下面谈谈我对关于嵌入式产品问题定位的思路和方法。因为普通软件的话,通过打印、仿真、屏蔽二分法都可以判断出来,今天就不多说了,今天分享下一些隐形问题或偶发性问题的定位思路。 一、有线类 第一步,查看总线硬件特性。顾名思义,有线类产品分为uart、spi、i2c、sdio、usb等等,如果出现问题,由...

2019-04-18 12:02:51 522

原创 Linux ALSA声卡驱动之四:machine和dai_link的作用和实现

一、模块化管理 alsa音频驱动模块化管理,是linux驱动比较典型的代码架构,app调用snd_pcm_open、snd_pcm_writei、snd_pcm_readi等接口到alsa_lib后,也根据一系列的操作(具体详细调用以及设备节点的操作下节会详细解释)后,调用到alsa_soc,这也是alsa驱动架构的核心,一般情况下,这个alsa_soc基本不会变,从而调用到...

2019-03-14 15:13:34 7023 1

原创 Linux ALSA声卡驱动之三:component、dai、codec以及platform之间的关系

一、背景概述 上节说到platform_device加载,触发mt76xx_i2s_driver、soc_driver、mt76xx_pcm_driver驱动程序的probe,这里面做了哪些工作,如下图二、snd_soc_component与snd_soc_dai的关系1、mt76xx_i2s_drv_probe的实现 在...

2019-03-12 18:32:17 9596 4

原创 Linux ALSA声卡驱动之二:音频设备与驱动的衔接、注册

1、背景概述 本方案基本MT7628平台,wm8960为codecs,i2s总线播放,相关代码随后上传,结合代码进行分析会更清晰2、设备注册与驱动触发综上所述,soc_mtk_i2s_dev、mt76xx_audio_device、soc_mtk_pcm_dev、设备挂载到platform平台上,从而触发mt76xx_i2s_driver、soc_driver...

2019-03-08 18:21:49 3669 2

原创 Linux ALSA声卡驱动之一:ALSA架构概述

一、概述1、硬件由上可见,播放音频时,通常CPU通过总线传送给CODEC音频PCM数据,然后CODEC进行DA转换、放大、增益等一系列处理,最后传送给speaker,录音流程反之。2、软件架构用户空间的alsa库对应用程序提供统一的API接口,这样可以隐藏了驱动层的实现细节,简化了应用程序的实现难度。内核空间中,alsasoc其实是对alsa驱动的封装统一,为了兼容不同平台的驱动,同时风格更...

2019-03-08 16:29:33 2851

原创 openwrt编译问题解决

make V=99make[3]: Leaving directory '/home/louis/Code/mt7628/openwrt-3.10.14/package/libs/ocf-crypto-headers'make[3]: Entering directory '/home/louis/Code/mt7628/openwrt-3.10.14/package/libs/ope

2017-10-28 10:07:46 5114

基于MCU小型调度OS(跨平台、占用资源小)

最近公司在做一款我们自己核心代码以及协议栈的SDK封装,无缝接入对方平台,对方平台可能是运行RTOS或者裸奔,刚好做了这样一套调度机制,可以跨平台,另外把这套调度机制跑在8位机或者32位机都没问题,特此分享该代码,随后会有一些文章来解释与分享该代码核心架构与思想

2020-01-02

基于mt7628和wm8960的alsa音频驱动

结合我之前写的Linux ALSA声卡驱动章节看,会领悟比较深刻,这个是基于mt7628平台,wm8960为codecs的代码

2019-03-14

openwrt在STA模式(中继模式下动态切换信道关联热点

基于MT7628平台的openwrt,支持AP模式和STA模式同时存在,但是在STA模式下,已关联的热点更换信道,openwrt不能自动切换信道,因此制作了下面一个程序,不会占用资源与性能,里面有使用说明

2018-07-20

MFC选择并通过串口传输文件

该代码包含有串口库,弹出一个窗口选择文件,并打开串口传输文件

2017-06-27

STM32F051 SPI DMA操作智能插座

使用DMA映射SPI,发现非常好用,节省不少CPU资源,SPI操作智能插座例程,统计电量、功率、电压等

2017-03-16

嵌入式实时操作系统uCOS-II

不错的ucos学习资料,非常详细,非常细致,有了它,可以很快的学懂ucos

2014-01-08

空空如也

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

TA关注的人

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