自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RK3588平台-ES8388音频芯片驱动解析

ES8388是一款高性能、低功耗、低成本的立体声音频编解码器,它由2-chADC、2-chDAC、麦克风放大器、耳机放大器、数字音效和模拟混频和增益功能组成。

2024-03-06 15:37:18 1541

原创 iptables v1.8.3(legacy): Couldn‘t load match `comment‘:No such file or directory.

iptables 命令运行报错,初步分析是由于该环境下的iptalbes不支持comment,而该程序中调用了i-m comment --comment,所以产生了报错。方案一、不使用comment,即在使用iptables时删除掉-m comment --comment,不建议。注:CONFIG_NETFILTER_XT_MATCH_COMMENT依赖下面红色标记的内核选项。方案二、修改内核配置支持iptables comment。

2023-07-12 16:40:10 1007

原创 [VMware]Ubuntu18.04 网络图标消失

解决vmware将ubuntu系统从挂起恢复后菜单栏上的网络图标消失的问题。虚拟机:VMware® Workstation 16 Pro。系统:ubuntu 18.04.5 LTS。

2023-02-15 18:05:53 1847

原创 mmc子系统分析(二)

mmc子系统的第二篇,介绍mmc host controller driver有关的知识,如何在linux kernel mmc 的框架下,编写和修改mmc控制器的驱动程序。

2022-08-30 18:24:12 1117

原创 mmc子系统分析(一)

本文主要是分析Linux系统中,mmc子系统的框架和实现示。

2022-06-29 19:57:57 1297 1

原创 Linux进程数据结构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、task_struct的定义二、 解析task_struct1.任务ID2.信号处理3.任务状态4.进程调度总结前言进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。Linux 里面,无论是进程,还是线程,到了内核里面,我们统一都叫任务(Task),由一个统一的结构 t.

2022-05-31 19:14:08 630

原创 ubuntu创建服务程序

方式一:创建任务脚本test,放到/etc/init.d目录下test:包含start、stop、stauts、restart示例如下: #!/bin/sh #===启动相关信息=== ### BEGIN INIT INFO # Provides: test # Required-Start: $remote_fs $syslog $time # Required-Stop: $remote_fs $syslog $time # Default-Start

2022-04-30 21:53:23 16791

原创 SPI转can芯片mcp2515

开发环境CPU:RK3399ARCH: aarch64OS:ubuntu18.04mcp2515芯片相关信息修改设备树文件文件路径:kernel/arm64/boot/dts/rockchip/rk3399.dts增加spi节点,具体增加那个spi节点,参考原理图上mcp5215和rk399的连接方式。此处以spi1节点为例。在spi1节点中还需天机can节点,mcp2515需要使用的其它硬件资源,如中断引脚、复位引脚。示例如下:kernel config...

2022-03-31 19:12:31 18110

原创 [RK3399]开启ramoops,查看kernel log

环境CPU:RK3399kernl:Linux 4.4OS::ubuntu 18.04配置方式一:直接修改ipud-next/kernel/arch/arm64/configs/rk3399_linux_defconfig文件CONFIG_PSTORE=yCONFIG_PSTORE_CONSOLE=yCONFIG_PSTORE_RAM=y配置dts增加相关节点:ramoops_mem reserved-memory { #address-cells = <

2022-02-28 17:31:20 16838

原创 linux串口文件传输工具

起因:有块开发板需要调试app程序,但没有网口,编译的app没法传进去。如果采用通过把app打包到文件系统中,然后把文件系统重新刷到板子上的方法,非常的不方便,调试也很麻烦。开发板环境:架构:arm64CPU:px30DDR: 2G系统:ubuntu 18.04所以考虑采用串口传输文件,如果是要自己实现一个串口文件传输工具的话,必然要考虑到传输协议的约定,传输数据的校验等,还是比较麻烦的。后来找到了一个串口文件传输工具:lrzs,实测可用。1、lrzs安装包获取网址:https://ww

2022-01-27 16:10:04 19348

原创 shell脚本:sh、bash、dash的关系

一、释义#!/bin/bash指定脚本使用/bins/bash来解释执行,#!/bin/sh是指定此脚本使用/bin/sh来解释执行。#!是特殊的表示符,后面是脚本解释器程序路径,脚本的内容是由对应的解释器解释的。二、区别GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell),并建议将/bin/sh指向它,以获得

2021-12-26 20:14:31 17722

原创 BUG记录:系统镜像烧写后磁盘占用率100%。

问题描述:新系统镜像文件.img烧入px30后,系统能够正常启动,但磁盘占用率为100%。EXT4-fs error (device mmcblk0p8): ext4_mb_generate_buddy:759: group 17 block bitmap and bg descriptor inconsistent: 2497 vs 2490 free clusters

2021-11-30 19:02:15 17605

原创 px30移植MQTT服务器mosquitto

1、安装包获取mosquitto安装包,必需获取途径:官网https://mosquitto.org/files/source/,如下所示包含了所有的发行版本,可根据需求选择最新的版本。cJSON安装包,选装(取决于mosqitto是否开启支持cJSON)获取途径:git clone https://github.com/DaveGamble/cJSONopenssl安装包,选装(取决于mosquitto是否开启支持openssl)获取途径:官网:https://www.openssl

2021-10-31 14:25:54 14295

原创 基于ROCKCHIP的ubuntu-base根文件系统构建

1、ubuntu根文件系统获取根文件系统下载地址http://cdimage.ubuntu.com/ubuntu-base/releases/Ubuntu 针对不同的 CPU 架构提供相应的 ubuntu base 根文件系统,有 amd64(64 位 X86)、 armhf、 i386(32 位 X86)、 powerpc、 ppc64el 等系统的。首先根据ubuntu系统的版本号确认版本,再根据ROCKCHIP选择ARM版本的文件系统。1:cd /home/xxx/Desktop m

2021-08-30 20:06:33 9145

原创 INFO: rcu_sched detected stalls on CPU/tasks

运行环境:ARCH:ARMKernel:4.4.189内核提示消息:从图上可以看出提示消息:INFO:rcu_sched detected stalls on CPUs/tasks,这个提示是和RCU相关的。第二行:数字4,表示是CPU核4第三行:detected by 0,表示被CPU核0检测到了。第五行:18322 18321 分别是当前进程号和父进程号。关于RCURCU(Read-Copy Update) 是Linux 2.6 内核开始引入的一种新的锁机制,与spinlock、rw

2021-07-01 19:46:15 25941 1

原创 ubuntu 设置虚拟内存 解决内存不足

数据库服务器程序在运行起来之后,系统内存不足。环境:RK3399内核:Linux 4.4系统:ubuntu 18.04在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。1、free -m 命令查看内存情况和swap分区大小 total used free sh

2021-06-06 16:41:53 11449 4

原创 Linux 下路由表的设置

查看路由表通过route命令可以查看Linux内核的路由表。route 和 route -n的区别route和route -n都可以显示Linux内核的路由表,区别在于route可以将地址转换成主机名显示,route -n不进行转换,所以route -n的显示速度会比route要快,推荐使用route -n。route -n3种路由类型主机路由:路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H,且Genmask Flags为255.255.255.255。网络路由:

2021-05-02 22:22:41 2491 1

原创 嵌入式WEB服务器之boa部署(二)

在嵌入式WEB服务器之boa部署(一)中已经讲了如何把boa服务器部署到ubuntu里。在这一篇中主要讲解如何移植boa服务器到目标开发板中。为什么先部署了boa服务器到ubuntu里,然后在移植到目标开发板上呢?从我个人来讲,主要是开发和调试方便,一方面是方便修改html页面和cgi程序,另一方面如果在移植到目标开发板的过程中出现了问题,可以和ubuntu里boa运行的情况进行相互验证。修改Makefile主要是指定交叉编译工具链:CC = gccCPP = gcc -E改为:CC = ar

2021-04-17 13:03:12 1496

原创 Linux之文件查找

常用查找文件命令which命令可用于查找命令位置。whereis可查找命令的位置,手册,源文件等。which和whereis都不能查找内置命令位置。locate优点:查找速度块;缺点:模糊匹配,匹配路径,实时性差。find优点:准确查找,功能丰富;缺点:速度较慢使用grep以文件内容为导向查找grep “xxx” * -nRwhichwhich 在PATH变量指定的路径中,搜索某个系统命令的位置。示例:查看ls命令所在的位置。 $ Which -a ls /bin/ls

2021-03-31 19:21:29 892 1

原创 嵌入式WEB服务器之boa部署(一)

1、下载boa源码可以直接访问官网的连接去下载 。http://www.boa.org/官网发布了一个Released Version 0.94.13和一个Development Version 0.94.14rc21。一般情况下使用发布版本,所以使用boa-0.94.13.tar.gz。但实际在使用时发现,0.94.13版本是无法直接编译通过的需要修改部分源码,而 0.94.14rc21是可以的。2、拷贝压缩包到ubuntu本地,并进行解压 tar -xvf boa-0.94.13

2021-03-31 17:51:38 2103 1

原创 ubuntu 安装adb进行调试

1、adb 驱动安装安装adb驱动到ubuntu系统下:更新一遍软件源:sudo apt-get update安装adb工具:sudo apt-get install android-tools-adb检查安装是否成功:adb version2、列出当前的adb设备sudo adb devices3、添加USB设备到adb配置文件在当前目录下查找.android目录。在.android目录下创建一个adb_usb.ini,touch adb_usb.ini。添加要接入设备的USB

2021-03-08 18:51:28 11376

原创 Linux c 时间相关编程

相关头文件#inlucde <time.h>相关结构体定义<time.h>typedef __time_t time_t;<bits/types.h>#if __WORDSIZE == 32# define __STD_TYPE typedef/* We want __extension__ before typedef's that use nonstandard base types such as `long long' in C89 mo

2021-03-03 10:11:08 761

原创 apt-get update 报错:*** Error in `appstreamcli‘: double free or corruption (fasttop)

环境:ubuntu 16.04在执行apt-get update时直接报错了,错误信息如下:从返回的错误信息可以看出,问题出在“appstreamcli”上。通过以下命令可以解决:sudo apt install appstream/xenial-backportssudo appstreamcli refresh –force亲测可行。...

2021-02-03 17:17:14 1365 1

原创 pthread_kill函数实例

pthread_killpthread_kill函数是用来向线程发送signal。类似于我们在linux下使用kill命令向指定的进程发送signal。函数原型:NAME pthread_kill - send a signal to a threadSYNOPSIS #include <signal.h> int pthread_kill(pthread_t thread, int sig);DESCRIPTION The pthread_kill()

2021-01-25 09:51:21 2062

原创 ssh -T [email protected] Permission denied (publickey).

排查思路查看.ssh下的密钥文件。$cd ~/.ssh$ll 发现有id_ras.pub的公共密钥,那么此时要验证下在git上设置的姓名和邮箱名是否正确。$ git config --global --list结果显示姓名和邮箱也是正确的。那么此时有必要去看一下git hub上公共密钥是不是丢失了。在git hub上登陆自己的账号。最终发现里面的确没有公钥了。只能重新添加了,把id_rsa.pub里的内容添加进去。添加成功后再回git bash里面试一下。 这下终于正常了,输完密码完事

2020-10-16 18:34:31 1286

原创 僵尸进程的产生和清理

僵尸进程的产生通俗的讲就是子进程死了,但是父进程还没有给它收尸,此时子进程就成了僵尸进程。所谓的子进程死了,实际就是指子进程的退出,包括调用exit时的正常退出,或者被kill命令用信号查杀后的异常退出。那么父进程如何给子进程收尸呢?在父进程中调用wait或waitpid接收子进程退出的状态,清理掉子进程的task_struct,释放子进程的PID。僵尸进程的处理子进程一旦成为了僵尸进程...

2019-12-31 18:57:33 1269

原创 exynos4412 时钟系统分析

exynos 4412 时钟域CPU_BLK:内含Cortex-A9 MPCore处理器、L2 cache控制器、CoreSight(调试用)。CMU_CPU用于给这些部件产生时钟。DMC_BLK:内含DRAM内存控制器(DMC)、安全子系统(Security sub system)、通用中断控制器(Generic Interrupt Controller,GIC)。CMU_DMC用于给这些...

2019-08-02 19:00:37 1883

原创 Linux 网络设备驱动(dm9000)

网络设备驱动的分层网络协议接口层 ------------------ 数据链路层网络接口层 ------------------------ 数据链路层设备驱动功能层 ------------------ 数据链路层网络媒介层 ------------------------ 物理层网络协议接口层网络协议接口层给上层协议提供统一的数据包收发接口,无论上层是ARP协议还是IP协议,都通...

2019-06-28 17:51:39 1338

原创 SPI协议及模拟SPI时序

SPI (Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,是一种高速的,全双工,同步的通信总线。SPI相关缩写:SS:Slave Select,选中从设备,片选CKPOL(Clock Polarity) = CPOL = POL = Polarity = (时钟)极性CKPHA(Clock Phase) = CPH...

2019-05-24 18:26:13 6867

原创 CRC校验

CRC16的算法原理:1、根据CRC16的标准选择初值CRCLn的值。2、将数据的第一个字节与CRCLn的高8位异或。3、判断最高位,若该位为0,左移1位,若为1左移一位再与多项式Hex码异或。4、重复3直至8个位全部移位计算结束。5、重复将所有输入数据操作完成以上步骤,所得的16位数即为16位CRC校验码。常见的机组CRC公式:关于数据位序:如果我们的机器是小端模式(低位在后,高位...

2019-04-18 19:34:41 8692 7

原创 Linux内核中关于宏container_of的使用

在Linux内核代码中多处使用了宏container_of,关于container_of 的宏的定义在include/linux/kernel.h/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @typ...

2019-04-03 16:06:36 2334

原创 Linux设备驱动模型(kobject、kset、ktype、udev)

Linux设备驱动模型的核心即是kobject,最初设计kobject模型的目的是为了是为了是实现智能电源管理。后来为了管理日益增加的设备,使得设备在底层都具有同一的接口,使其的得以成为设备驱动模型的核心。每个kobject对象都与与sysfs文件系统紧密相连,每个注册的kobject 都对应sysfs文件系统中的一个目录。首先来分析下kobject ,kobject - kernel obje...

2019-03-28 19:52:32 2991

原创 温度传感器DS18B20应用

DS18B20是由DALLAS半导体公司推出的一种“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、使用电压宽、与微处理器接口简单的数字化温度传感器。一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新概念,测量温度范围为-55~+125度,精度为0.5度。 现场温度直接以“一线总线”的数字方式传输,大大提高了系统...

2019-03-15 09:11:32 17987 3

原创 MDK-5 Keil uVision5 链接时提示空间不够(Error: L6406E)

在项目开发中添加了新的库后导致BUILD工程时提示:Error: L6406E:No space in execution regions with .ANY selector…解决方法一:以更精简短小的C库替代标准库,减小代码大小,打开Project-&gt;Options for Target ''xxx"-&gt;Target,将Use MicroLIB前面的复选框勾上。如下图:修改...

2019-02-23 10:22:38 7397 1

原创 RFID射频卡分类及标准

射频卡分类1、 按照供电方式分为有源卡和无源卡。有源指卡内有电池提供电源,所以其作用距离叫远,但寿命受限,体积较大,成本也高,不适应在恶劣条件下工作;无源卡内部不电源,利用波束供电技术将接收到的射频能量转化为直流电源为卡内电路供电,所以作用距离较短,但使用寿命长对工作环境要求不高。2、 按载波频率分为低频(LF)射频卡、高频(HF)射频卡、超高频(UHF)射频卡、微波(MW)射频卡。低频射频卡...

2019-02-20 19:38:09 9722

音频解码芯片ES8388 数据手册

音频解码芯片ES8388 数据手册

2024-03-06

Linux 性能优化工具资料包.rar

Linux性能优化大纲,可参照进行系统性能分析,常用分析工具介绍,包括网络性能工具,文件系统和磁盘I/O性能工具,CPU性能工具,内存性能工具。

2021-03-26

SDRAM操作时序

DDR2_SDRAM的操作时序,在DDR2内存的驱动编写时,对各种时序参数的设置很有帮助

2019-02-20

三星Exunos4412芯片手册完整版

Exunos4412芯片用户手册,完整版本,50多兆,共计2858页

2018-12-20

Linux 环境下的VIM编辑插件

VIM编译查件,编辑行高亮显示、行号、自动补全、代码追踪等功能

2018-12-20

SAMSUNG DDR3 芯片手册

三星DDR3的芯片手册

2017-08-16

空空如也

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

TA关注的人

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