自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学一点IOT

嵌入式Linux在物联网,智能家居中的开发应用

  • 博客(37)
  • 资源 (8)
  • 收藏
  • 关注

原创 C语言程序编译过程中自动添加编译时间等相关信息

在程序代码中自动添加编译时间等信息的几种方法

2022-08-09 14:50:41 2929 2

原创 Linux程序coredump地址显示问号的调试方法 - 基于map文件

coredump即Linux系统上,应用程序崩溃时的运行栈快照,已便于定位崩溃问题正确使用coredump需要几个条件:第一,coredump本身的配置设置coredump文件路径及名称 echo "$dir/core-%e-%p-%t" > /proc/sys/kernel/core_pattern记录pid echo 1 > /proc/sys/kernel/core_uses_pid设置coredump文件大小:ulimit -c unlimited

2022-04-22 10:13:54 4365

原创 linux 核间通讯rpmsg架构分析

以imx8为例在最底层硬件上,A核和M核通讯是靠硬件来进行的,称为MU,如图Linux RPMsg 是在virtio framework上实现的一个消息传递机制VirtIO 是一个用来实现“虚拟IO”的通用框架,典型虚拟的pci,网卡,磁盘等虚拟设备,kvm等都使用了这个技术与virtio对应的还有一个virtio-ring,其实现了 virtio 的具体通信机制和数据流程。virtio 层属于控制层,负责前后端之间的通知机制(kick,notify)和控制流程,而 virtio-v

2022-03-04 17:12:30 8880 7

原创 Linux Mutex机制与死锁分析

在Linux系统上,Mutex机制相比于信号量,实现更加简单和高效,但使用也更加严格1. 任何时刻只有一个任务可以持有Mutex2. 谁上锁谁解锁3. 不允许递归地上锁和解锁4. 当进程持有一个Mutex时,不允许退出5. Mutex只能通过相关API来管理,不可被拷贝,手动初始化或重复初始化在应用层来说,一般Mutex多用于多线程间的同步,本文针对第四点"当进程持有一个Mutex时,不允许退出"来做一些探讨和测试关于多进程使用Mutex,有一个很经典的场景,即共享内存通讯两

2021-12-08 16:00:00 2932

原创 Openwrt按键检测分析-窥探Linux内核与用户空间通讯机制netlink使用

首先看一下Openwrt系统中关于按键功能的使用和修改,以18.06版本为例按键功能实现在脚本中, 比如18.06/package/base-files/files/etc/rc.button/reset#!/bin/sh. /lib/functions.shOVERLAY="$( grep ' /overlay ' /proc/mounts )"case "$ACTION" inpressed) [ -z "$OVERLAY" ] && return 0 re

2021-09-14 09:01:50 1712

原创 Openwrt系统初始时间

一般Openwrt系统较多用于网络方面的产品,比如路由器,但路由器几乎都没有硬件RTC,因此系统初始时间不准.在Openwrt系统中,初始时间可以认为有2个, 固件编译时间和文件系统加载后的初始时间关于固件编译时间,即为Linux kernel 编译时间, 即是/proc/version内容,比如:root@UVCOSS:~# cat /proc/versionLinux version 4.14.221 (xxxx) (gcc version 7.5.0 (OpenWrt GCC 7.5.

2021-08-31 16:12:16 2554

原创 ARM GIC简介与Linux中断处理分析

先简单说明一下GIC(具体详尽的介绍请查阅ARM GIC相关文档)GIC即general interrupt controller。它是一个架构,版本历经了GICv1(已弃用),GICv2,GICv3,GICv4。对于不同的GIC版本,arm公司设计了对应的GIC IPGIC的核心功能:对soc中外设的中断源的管理,并且提供给软件,配置以及控制这些中断源。下面一张ARM GICv2 的图中断源类型说明:SGI(Software-generated interrupt):范围0

2021-08-10 18:15:21 1241

原创 记最近Linux中遇到cpu使用率低loadavg高的分析过程

首先明确一下CPU使用率和loadavg这两个概念:CPU使用率指当前CPU正在执行指令的繁忙程度,越高表面CPU正在执行很多指令即有进程一直在cpu上运行着Loadavg指的是CPU负载程度,表明的是CPU当前正在运行的任务以及等待运行的任务统计,是一种趋势的体现;更详细一点来说是R和D状态的进程数量统计分析此问题的起因是前一段时间购买的开发板,使用最新的SDK跑起来后,几乎没有什么任务在运行,CPU 100% idle,但是loadavg一直在1以上(cpu是双核A7),对比之前使用

2021-07-22 17:14:31 2226

原创 Linux 信号可靠性,同步,异步,多线程信号等介绍

鉴于网上超多关于Linux信号处理相关的文章,本篇关于基本的信号知识不再普及,只提出一些平时不常关注或者关注不到的一些方面:1. 信号可靠性:此可靠指的是信号是否会排队,并不是指信号会丢失(其实在也可以理解为不排队的信号就会丢失)。SIGRTMIN以下的信号不会被排队处理,即只传递一次,如果进程已经有信号还未被处理,后面再来同样的信号即丢失,其他的不同信号还是进入排队处理。SIGRTMIN以上的信号,都会进入队列2. 信号异步处理:进程注册的信号处理函数将在进程内核态返回用户态时被调用,相对于进程主

2021-07-15 13:16:35 716 2

原创 linux CMA使用机制分析--基于SigmaStar SSD202

前一篇文档提到CMA相关的内容Linux虚拟内存映射分析以及CMA测试 - 以SSD202为例,

2021-05-28 15:51:51 846

原创 Linux虚拟内存映射分析以及CMA测试 - 以SSD202为例

在开始之前,先看一下SSD202的内存使用范围硬件上SSD202内置128MB内存,其中有一部分预留给MMA,MMAP以及CMA具体的大小设置在bootargs 中bootargs = "wt_board=WT2022 console=ttyS0,115200 rootfstype=squashfs,ubifs rootwait=1cma=8MLX_MEM=0x7f00000 mma_heap=mma_heap_name0,miu=0,sz=0x1000000mma_membloc

2021-05-27 18:13:59 2168

原创 SigmaStar SSD202 openwrt 系统下ubi根文件系统挂载过程

关于UBI介绍可以参考官方文档http://www.linux-mtd.infradead.org/doc/ubifs.html下面是一张简介图,大概的介绍就是UBIFS依赖kernel UBI子系统,运行在MTD设备之上,应用上UBI可做自己的分区管理SSD202的简介可以参考我另一篇博文目前国内有几个厂家在推广使用且出了相关的核心板,我目前使用的是启明云端的开发板(启明云端已移植好openwrt系统,我在此之上进行相关分析)首先看系统分区:root@wireless-tag

2021-05-25 12:10:59 3730 2

原创 CPU方案简介SSD201 - 智能网关中控

目录简介架构图特点应用场景软件环境低功耗配置简介SSD201是SigmaStar公司的一颗高度集成的嵌入式SOC芯片。它基于armCortex-A7双核1.2GHz,集成了硬件H.264/H.265视频解码器、内置了DDR,内置2D图形引擎、支持TTL/mipi屏显示驱动接口内置了以太网mac和PHY等,主要应用于智能楼宇室内机,智能家居中控,86盒家庭中控,电梯楼层显示器,IP网络广播设备等等架构图特点1. 双核A7, 能效比高2. 内置DDR,成.

2021-04-13 14:21:19 2439

原创 CPU方案简介UIS8190 - LTE CAT.1模块

目录简介优势架构图特点应用场景软件环境简介Cat.1的全称是LTE UE-Category 1,其中UE是指User Equipment,是对于LTE网络下用户终端设备的无线性能的一种分类。根据3GPP的定义,将UE-Category划分为1-15共15个等级。Cat.1是 4G LTE 网络的一个类别,可以称为“低配版”的 4G 终端,上行峰值速率5Mbit/s,下行峰值速率10Mbit/s,属于蜂窝物联网,是广域网.优势1. Cat.1更具成本优势:例如网络.

2021-04-08 10:46:04 29188 5

原创 CPU方案简介ATS3609D - 智能故事机

目录简介架构图特点应用场景软件环境简介1. ATS3609 (D) 是一款超低功耗的全集成多模态交互芯片平台,多Mic拾音,支持全场景唤醒打断、手指点读, AI伴读,GUI 反馈2. 双核异构架构,集成 Cortex-A5 CPU 和 CEVA-X2 DSP,拥有足够的算力3. 集成 PMU,支持低功耗和自适应动态电源管理架构架构图特点1. 单核A5,高能效比2. 集成DSP,专门跑语音算法,缓解CPU压力3. 集成VAD4. 内置RAM.

2021-04-07 15:39:27 1064 1

原创 CPU方案简介 RK3308 - 智能音响

目录简介架构图特点主流语音算法支持应用场景软件环境SDK框图系统软件层次系统软件成熟度简介1. 对专门音频和IoT应用而设计的主控芯片,省去了GPU、视频编解码以及部分显示接口,增加了CODEC以及音频相关模块,性价比高架构图特点1. 集成Codec,支持最大8通道模拟MIC阵列+回采2. 内置RAM3. 支持VAD4. 集成主流数字音频输入输出接口主流语音算法支持1. 百度2. 科大讯飞3. 思必驰4. 云知声应用场

2021-04-07 14:40:59 1489

原创 Linux睡眠唤醒机制分析--以IMX6UL为例

鉴于当前做的项目中有低功耗的需求,因此查探了一番Linux的睡眠及唤醒的机制。当前网络上已经有很多关于睡眠唤醒的分析文章,有的分析也非常透彻,因此本文只从寄存器以及汇编处理和CPU架构方面来补充一下。睡眠总体上可以分为浅睡及深睡眠,从PM管理上来说,主要是电源域和时钟控制的不同,如下IMX6介绍:Linux进入睡眠的方式,在应用层可以直接操作/sys/power/state文件,cat此文件可以查看支持睡眠的种类,我的imx6开发板只有3种模式:root@mys6ull14x14:~#

2020-10-07 15:45:14 2670

原创 IMX8QXP内部M4移植rt-thread

最近研究了一段时间的rt-thread,相对来说还是算比较有追求的设计。从风格上讲,与Linux类似,很多设计思想也是借鉴Linux,比如设备驱动;从设计上来说,精简,高效易扩展,做了很多不错的中间件。当然最主要的工作还是集中于IMX8QXP,A核就不多说了,都是Linux的传统内容,开发也都搞定了。对其内部的M核比较感兴趣,就想着尝试移植一下rt-thread,一来挑战一下,二来检验一下学习成果。虽然之前在STM32上移植过rt-thread,不过太过easy,感觉没什么意思。移植前,首先看一下I

2020-08-17 16:29:03 1929 3

原创 rt-thread 自动初始化机制分析-关于编译链接及段信息

本来我的工作主要集中于嵌入式Linux这一块,关于RTOS,虽然之前也有用UcosII做过一两个项目并量产,但并不是主要发力点,感觉相对与Linux来说,RTOS太过“easy”,能研究的东西并不多。最新闲来看到Rtthread发展挺不错,文档更新也比较多,也出了专用的IDE,加之“中美大战”,“国产”、“爱国”等情怀也被炒至高点,因此动了心思来研究研究。因为之前用过ucos,所以研究路线即定为:改用rtthread实现之前ucos项目的所有功能。经过一周的时间,项目基本移植完成并正常使用,此过

2020-06-16 10:44:02 1839

原创 GPSD架构介绍及交叉编译和使用

一、功能介绍GPSD是一系列管理GPS设备和其他用于导航与精确计时的传感器的工具,包括航海自动识别系统(marine AIS (Automatic Identification System))的无线电广播设备和电子罗盘。其中最主要的程序是一个叫做gpsd的服务守护进程,它管理这这些传感器,并且在TCP/IP端口生成JSON流报告。其他的程序包括用来展示代码模型和各种诊断工具的客户端。特点: 自动探测并识别GPS协议,同时支持多个GPS设备,并且可以动态进行设备控制 支持PPS并且与

2020-06-11 13:24:39 6935 2

原创 关于GPS的1PPS时间同步功能探索与测试

最近在研究GPSD相关信息,查阅到GPSD可以与NTPD相配合实现高精度时间同步功能,因此才涉及到此主题。目前手头用的是Ublox F9P模块,UART输出NEMA数据,另外一个GPIO输出1PPS脉冲首先看一张时序图:1. NEMA中包含有时间信息,一般是秒级别,也有部分带有毫秒2. 1PPS即每秒输出一个脉冲,图中以高电平触发为例(没画下降沿),接收及处理1PPS脉冲的时间也在ns级别3. 因为NEMA是通过串口发送和接收,而且一次NEMA数据量也有KB级别大小,处理时间远比1P

2020-06-11 10:46:01 24396 7

原创 完整适配LUCI界面的Openwrt中EC20的QMI拨号

目前4G模块应用已经非常普及,跟之前的3G不同,3G基本使用ppp拨号,usbserial驱动,Linux内核自带支持,此应用非常简单。4G模块由于速率较高,usbserial驱动性能满足不了,因此4G的拨号方式就发生了变化。基本方式有,PPP,NDIS,QMI等。此文介绍QMI方式,所谓QMI即Qualcomm Message Interface,因此只限于使用高通芯片的4G模块。工...

2019-11-14 16:05:45 7245

原创 移植MT76x8 私有WIFI驱动V4.1.0.0到Openwrt 18.06所遇到的坑

Openwrt系统,路由或者IOT网关方面,市面上能供个人或者小团队甚至小企业 ,可玩性高的也就MT76xx系列路由芯片了,其中很大一部分原因主要在于MTK的WIFI驱动管控不是很严格,相对较容易获取其WIFI驱动源码。目前市场上的MT76x8板子,带私有WIFI驱动且性能较好的,大多停留都在Openwrt 15.05分支,内核相对来说较低(其实完全够用)。随着Openwrt与LEDE的战...

2019-04-01 14:36:48 6058 4

原创 项目中用到的语音识别方案 硬件/软件相关介绍

自从Amazon Alexa音箱发布以来,各大厂家开始陆续发布自家的音箱,完善自家的生态系统。从以前的路由器,手机到现在的音箱,一个个被认为或曾被认为是智能家居的入口,总会在市场上掀起一番风浪。有幸在2018年完成了一款以语音交互为核心功能的产品,也算跟了一场大潮,对语音方面也有些相关的探索和思考。语音识别主要有三大组成,语义识别平台,cpu主控,以及MIC阵列;目前国内大的语音平台主...

2019-01-07 13:03:55 5148

原创 Openwrt中MT7628/MT7688的全部GPIO复用配置及常用接口DTS配置总结

Openwrt的不同版本中关于MT7628,MT7688的GPIO配置,存在或多或少的一些小问题下面将以MT7628AN为基础,介绍其全部的GPIO功能复用配置,以及需要注意的地方MT76x8一个就47个可作为GPIO引脚,如下 关于其全部的功能复用表可以参考MTK官方的开发demo版Linkit 在这全部的引脚中,需要特别注意的是:1. 网口模式,因为MTK的设计...

2018-10-11 16:53:12 16323 2

原创 一种简单快速的Openwrt内核patch制作方式

openwrt的patch机制非常不错,应用的很广泛,从内核到应用都有涉及,patch机制也方便了多个用户之间的功能同步及差异控制。在openwrt上常用的patch生成及修改方式为QUILT工具,应用此工具可以修改现有补丁以及生成新的补丁,但个人认为也有一定局限性;以普通的开发方式来看,一般我们都会在build_dir中修改现有代码,然后重新编译,再测试功能直到功能OK。在此过程中,...

2018-10-10 15:01:35 3086

原创 MT7688 坑爹的 SPI Master 半双工全双工问题

MTK的东西便宜是真的便宜,好用也相对比较好用,但是总有那么几个地方,让人用着心里就窝火,就MT76x8来说,第一个窝火的地方就是启动跳线选择,非得把串口用作启动跳线,导致调试起来非常麻烦,第二个就是本文要说的SPI问题,此问题分析和测试了很久,主要是关于spi 半双工和全双工的问题。首先,来看下datesheet关于SPI Master的描述:一共就这么几个寄存器:关于半双工和全...

2018-10-10 14:15:32 7498

原创 MT7628/MT7688 修改串口2作为调试串口 所踩的坑

MTK的芯片设计有些让人搞不懂,非得将串口作为启动选择引脚;MT76x8 参考其datesheet,TXD0 启动时必须为低电平,TXD1启动时必须保持高电平;一共最多3个串口,唯独UART2不影响启动;但是UART2与 NET PORT2是复用的;使用uart2必须牺牲1个网口;准确来说是牺牲所有网口(PORT0除外),因此MT76x8 要么作为单网口使用要么作为5网口使用,没有中间

2017-12-19 15:35:22 8879 1

原创 nodogsplash的内部机制分析

目前的广告路由器,或多或少都跟wifidog相关,而nodogsplash就是与wifidog一样功能,除了没有远程服务器认证之外。对于其内部分析,以nodogsplash开始较为方便。其本质为:标记包,然后针对标记的包做防火墙规则更新。主要用到iptables几个方面:MARK,NAT 和 MANGLE首先我们看看iptables的包处理流向:想要在连接的客户端访

2017-11-01 14:45:31 838

原创 Openwrt 安全模式failsafe分析

failsafe安全模式作用:只加载基本的文件系统,可以修改密码,网络配置等,可以进行升级系统,Uboot等操作;

2017-09-25 16:16:21 7943

原创 MT76x8的多网口与GPIO复用配置

MT7628与MT7688除了WIFI之外,其他几乎一样,没有区别;至少在网口方面是一样的;本文将介绍Openwrt中多网口与其复用为GPIO的方式关于模式:只有单网口以及5网口的两种,没有中间方案;这一点需要留意;首先看datasheet配置关于寄存器配置,可以在两个地方进行:其一Uboot中设定drivers/rt2880_eth.c, 宏定义CONFIG_

2017-09-24 13:50:19 3766

原创 i.mx6ul 移植Openwrt

一直在使用Openwrt很多年,从路由到IOT终端,网关等,相对于其他开发环境或者厂家SDK来说,openwrt确实很便捷,其内部的Lua,ubox,ubus,rpc等一些机制,能在开发中带来很大的便捷,而且功能也非常稳定;鉴于Yocto的庞大,复杂 和 buildroot的相对那么不便捷,最近在考虑把Openwrt移植到i.mx6ul中,为后续开发带来更多的便捷性;移植前的思考:

2017-09-20 08:42:23 10124 8

原创 Openwrt中ppp拨号总结

前段时间做完一个是视频数据传输终端,使用4G模块拨号,接上摄像头,当一个路由器来传输视频信号;以及本身会带一些远程管理功能;当然这不是本文的重点;在此仅重点介绍4G拨号相关的内容,因为从开发到上线到量产过程中,拨号稳定性一直是一个考验;设备使用的是openwrt系统,Ulong9300 LTE模块,MiniPcie接口,其实就是usb;首先介绍几个相关的工具:comgt:主要是发送AT

2017-09-16 19:06:13 7190 3

原创 使用Buildroot为Nxp i.mx6ul制作文件系统

随着神U s3c2440,6410的停产,NXP 针对中国市场推出低成本方案i.mx6ul,可用于商业级和工业级应用,10年超长供货周期,市场很有潜力。官方只支持Yocto,但个人感觉Yocto太多庞大且太复杂,而工业市场业务并不是特别负责,需要用到的软件包有限,且在特定的一个范围。工业市场对稳定性要求较高,并不需很大的灵活度。本文将介绍使用Buildroot为i.mx6制作文件系统,

2017-09-15 10:19:56 3896

原创 对于ARM的启动,系统升级,烧写过程和文件系统等方面的总结分析

ARM,Uboot,Kernel,启动参数,文件系统,烧写升级

2017-09-14 07:58:10 3817 4

原创 对于dts的理解和分析

DTS是Linux下对于设备资源的一种描述方式,相对于之前platform的描述方式,可以大大节省Linux内核代码,主要是驱动描述方面。DTS文件将被编译成DTB文件,与编译生成的kernel文件打包在一起,一般放在头部。kernel在加载时,会将dtb文件导入到内存,驱动代码使用标准的API访问dtb资源并加载驱动。

2017-06-11 14:30:56 4472

原创 开篇第一章<简要IOT技术栈分析>

个人理解的IOT相关重要技术模块统计

2017-06-11 14:08:08 934

Cortex R7架构描述

ARM® Cortex®-R7 MPCore 技术描述文档,是学习Cortex R7核必不可少的文档

2020-10-08

ARM GIC中断架构描述

ARM Generic Interrupt Controller描述文档,对于想了解ARM 中断控制器原理的同学比较有帮助

2020-10-08

NRSEC3000加密芯片手册

NRSEC3000 加密芯片 NRSEC3000NRSEC3000安全芯片提供 安全芯片提供 RSARSARSA、SM1 SM1、SM2SM2SM2算法 等功能,支持 ISO7816 ISO7816ISO7816接口 和 SPI SPI接口 通信。采用“一问答”方式,即户发送命令给 通信。采用“一问答”方式,即户发送命令给 通信。采用“一问答”方式,即户发送命令给 通信。采用“一问答”方式,即户发送命令给 通信。采用“一问答”方式,即户发送命令给 通信。采用“一问答”方式,即户发送命令给 NRSEC3000 芯 片, 芯片返回应答结果。

2018-10-10

Openwrt UBUS介绍

Openwrt ubus通讯框架介绍 ubus是类似Linux桌面系统上dbus一种通讯框架,为进程间通信提供支持,并支持消息回调,非常强大好用

2015-06-05

BSD Socket

BSD socket 详细介绍,全英文版,适合学习

2015-06-05

s3c6410 pdf

s3c6410文档,详细全面,很适合做参考文档

2013-04-23

openwrt 与 mini6410

openwrt的编译及其在s3c6410上的移植

2013-04-23

Ralink 3352

Ralink 3352 路由芯片文档全面介绍

2012-06-27

空空如也

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

TA关注的人

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