Linux上设备类属性

1.设备类属性

在Linux上,设备类属性(sysfs)是一种用于访问和修改设备属性的机制,sysfs提供了 一个虚拟文件系统,它代表了内核中的设备树,通过这个文件系统,可以查看和修改设备 及其属性状态,在硬件调试阶段非常实用。 再简化理解: class_attribute是一种用于向用户空间暴露设备类(class)属性的机制, 它允许内核驱动将设备类的特定信息,导出到/sys/class/目录下,供用户空间程序读取或修改。

2.class_attribute使用API接口

class_attribute结构体构成:

struct class_attribute {
    struct at

Read more

Android Handler的使用

1.描述

本文主要是快速记录一下Handler的使用,大体了解一下Handler类,使用该类监听来自其它线程的消息。 通过这种方式,实现类间的线程安全通信,尤其适合需要跨线程更新UI或者执行异步任务的场景。

2.流程

主要使用流程,创建Handler类,重写,调用。详细:

2.1 定义Handler类

在类中创建Handler实例,重写handleMessage方法

2.2 发送消息

其它线程通过该Handler发送消息

2.3 处理消息

Handler在其绑定的线程中调用handleMessage处理消息。

3.注意事项

在类中创建Handler本身不创建新线程,它只是用于在已有线程中处理消

Read more

Kicad绘制电路板总结

1.简介

  以Kicad绘制全志F1c200s开发板为例子,包含原理图绘制+PCB设计,
电路主要涵盖:电源电路,主芯片电路,音频电路,lcd接口,摄像头接口等。

2.工程结构说明

主要是原理图+PCB图,当然生成的话会有gerber图纸+BOM器件清单(对于正规生成,尽量要标识清楚器件详情规格)。

3.原理图设计

4.PCB

5.3D

6.说明

因为使用过程中,可能遇到,输入法兼容性问题导致卡死。 KiCad跟微软拼音有冲突,如果不用微软拼音,直接卸载掉就好。如果要用,就设置为兼容以前的模式。

Read more

Linux驱动之设备树

1.简介

本wiki主要记录一下设备树的使用,简单介绍内容涵盖,设备树dts作用,解析原理,常见语法。

2.设备树概念

设备树,作用,早期linux上驱动,有很多相关代码,后续开发中为了替换driver中过多的platform_device部分的 静态资源,从而将硬件资源抽象出来,由系统统一解析,这样可以有效避免各驱动中对硬件资源的大量重复定义。 设备树中的节点目标是转换成platform_device结构,在驱动开发时,只需要添加相应的platform driver部分进行 匹配。 流程: DTS--> DTB-->device_node --> platform_de

Read more

pkg-config工具使用

工具作用简述

Linux下,一个用户获取某个库、模块的所有编译相关信息的工具,作用在于可以通过 该工具,轻松获取库、模块的头文件路径信息、动态链接库路径信息。极大的提升了 开发过程中,指明使用的库、模块的各种信息。

pkg-config工具获取

对于部分Linux环境,默认有,对于没有,可以使用源码进行安装pkg-config工具。

pkg-config工作机制

第一种:获取系统/usr/lib下所有的*.pc 文件(文件里面含有库、模块信息) 第二种:PKG_CONFIG_PATH环境变量所指向的路径下的所有*.pc 文件 以opencv 的 pc文件示例: '''

Package Info

Read more

搭建和部署django服务器

本文主要是记录简单的创建一个基于django的webserver服务器。

0.环境搭建

python安装

下载python3代码,以下纪录从源码安装 默认源码没有ssl模块,需要先安装好openssl组件 将python3源码中

django安装

安装django,比较麻烦的是对应的requirement

1.django工程创建

django-admin startproject djtest
创建好的工程目录结构
创建的工程在workspace下面
/djtest        #新创建的工程
manage.py  #manage.py 工程管理文件
djtest     #创建的第一个a

Read more

glibc和uclibc

1.说明

ANSI C是基本的C语言函数库,包含了C语言最基本的函数库。 1)glibc 是Linux下GNU C的函数库 常见的桌面和服务器GNC/Linux类的系统,都是用C语言标准库,其实现了常见的C库函数,支持多种系统平台,功能很全。 2)uclibc是一个小型C标准库,主要用于嵌入式linux。 uclibc比glibc小很多,它是独立的,为了应用于嵌入式系统,和glibc在源码结构和二进制上,都不兼容。

2.差异说明

2.1)glibc 这是gnu发布的libc库,也是c运行库,主要提供了如下: string,字符串处理 signal,信号处理 dlfcn,管理共享库的动态加载 d

Read more

ASAN分析内存相关问题

1.简介

  在使用ASAN(Address Sanitizer,也就是地址消毒技术)之前,很多内存检查都使用valgrind,通过valgrind工具,检查内存问题,例如:堆栈溢出,段错误等等。 ASAN可以用来检查内存问题,例如:堆栈溢出,悬空指针的非法访问等。并且相比Valgrind工具,使用ASAN作为内存错误监测工具对程序性能损耗也非常低。 对比Valgrind只能检测到堆内存的越界访问和悬空指针的访问,ASAN不仅可以检测到堆内存的越界和悬空指针的访问,还能检测到栈和全局对象的越界访问。 所以ASAN成为目前较优秀的内存检测工具。   简单原

Read more

qemu构建linux模拟环境

1.内核编译

内核编译是为了生成zImage文件。 我们通过编译vexpress_defconfig进行示例。

export PATH=$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4

编译内核需要关注两个产物,一个是内核产物zImage, 一个设备树产物*.dtb。

2.根文件系统

Read more

RT-Thread系统任务调度(最高优先级任务查找)

1.实时系统调度说明

  RTOS实时系统,实时的体现在于,每条命令执行完全可控可预期,市场上较为广泛的有rtthread,threadX等,
其中各类实时系统,任务优先级查找调度,是系统实现实时的一个核心。只有在固定周期内找到最高优先级,才能符合实时要求。

2.实时系统的具体体现

  rtthread内核调度采用位图算法,好处是实现O(1)调度,就是每次调度的时间都是固定的,
无论线程中存在多少个线程,多少优先级,系统可以在一个恒定的时间内选择出最高优先级的线程。要解决固定时间内寻找最高优先级,先解决线程数据结构的存储。

a、每个线程的信息使用线程控制

Read more