- 博客(14)
- 资源 (13)
- 收藏
- 关注

原创 解析设备树(DTS)获取属性信息
解析DTS获取属性信息前言节点表示查节点of_find_node_by_name()函数of_find_compatible_node()函数查节点的属性值of_find_property()函数of_property_read_u32()函数of_property_read_u32_array()函数of_property_read_string()函数前言查属性所在的节点查节点的属性值节点表示/include/linux/of.hstruct device_node { cons
2021-11-10 16:10:10
1070

原创 插件设备树
Device Tree Overlays:"插件"设备树传统设备树批量管理硬件资源,机制僵化"插件"设备树模块化管理硬件资源,灵活定制使用前提内核配置CONFIG_OF_OVERLAY = yCONFIG_OF_CONFIGFS = y挂载ConfigFSmount x /sys/kernel/config -t configfs案例说明设备树:foo.dts / { compatible = "corp,foo"; /* On chip periph
2021-11-04 20:51:25
501
4

原创 基于单片机的modbus从机程序
基于新唐M031的modbus从机程序一 、开发思路我这里开发的平台是新唐M031,它是Cortex-M0的内核、32位单片机。因为要和上位机进行RS485通讯,所以选用了Modbus-RTU来作为通讯协议。我这是用串口接收中断+定时器中断来接收一帧数据,然后modbus从机程序自己手撸。二、 Modbus介绍modbus没什么好介绍的,熟悉下功能码就ok了。上链接 https://www.cnblogs.com/endv/p/8650491.html三、 串口初始化及...
2020-08-15 01:26:53
5918
5
原创 Linux互斥锁
Linux互斥锁信号量与互斥锁的比较信号量互斥锁自旋锁与互斥锁的比较自旋锁互斥锁互斥锁相关API定义互斥锁初始化互斥锁互斥锁加锁尝试获取互斥锁互斥锁解锁信号量与互斥锁的比较是同步还是独占?信号量强调信号机制(同步)生产者–消费者模型获取信号量失败,触发上下文调度互斥锁强调互斥机制独占共享资源获取互斥锁失败,触发上下文调度总结服务于多个线程间的执行的逻辑顺序的选信号量服务于共享资源的选互斥锁自旋锁与互斥锁的比较是休眠还是“忙等待”?自旋锁加锁成本低,
2021-11-10 20:12:21
448
原创 Linux信号量
Linux信号量信号量本质信号量特点信号量相关API定义信号量初始化信号量获取信号量尝试获取信号量释放信号量信号量本质计数器,用来控制对公共资源的访问信号量特点长时期的资源占用获取信号量失败,触发上下文调度当前进程(线程)陷入休眠,系统开销大信号量相关API定义信号量struct semaphore sem;初始化信号量static inline void sema_init(struct semaphore *sem, int val)参数:sem:指定要初始化的信号量
2021-11-10 19:55:26
1031
原创 Linux自旋锁
Linux自旋锁原子操作自旋锁存在问题解决方案CAS 函数PAUSE 指令自旋锁原理自旋锁相关API定义自旋锁初始化自旋锁获取自旋锁函数尝试获取自旋锁函数释放自旋锁原子操作简单易用只能作计数操作,保护的东西太少自旋锁主要用于多核处理器短时期的轻量级加锁加锁失败时,原地打转、忙等待避免上下文调度、系统开销较小加锁步骤:查看锁的状态,如果锁是空闲的将锁设置为当前线程持有存在问题在没有 CAS 函数前,多个线程同时执行这 2 个步骤是会出错的。解决方案CAS
2021-11-10 19:17:08
1416
原创 硬件原子操作
硬件原子操作并发的根源并发对程序的不良影响硬件同步原语案例原子整型操作接口原子整型变量ATOMIC_INIT()atomic_set()atomic_read()atomic_add()/atomic_sub()atomic_inc()/atomic_dec()位原子操作函数set_bit()clear_bit()change_bit()并发的根源多线程、多进程调度各种中断并发对程序的不良影响篡改共享数据动作不完整同步、死锁、数据竞争、系统调度开销…硬件同步原语由计算机硬件提供的一
2021-11-10 16:45:52
1850
原创 Linux下构建一个deb软件安装包
Linux下构建一个deb软件安装包了解Linux软件包的组成deb包概念rpm包概念dpkg工具概念常用命令deb包文件结构分析构建一个helloworld的deb包apt命令和apt-get命令了解Linux软件包的组成文件类型保存目录普通程序/usr/binroot权限程序/usr/sbin程序配置文件/etc日志文件/var/log文档文件/usr/share/docLinux软件包源码包优点:开源免费自由裁剪功能修改源代
2021-11-10 15:43:39
491
原创 Git简介和项目资料获取
这里写目录标题Git是什么?Git与GitHub、Gitee安装Git项目资料下载远程仓库克隆仓库仓库更新其他学习资料:Git是什么?版本控制工具Git与GitHub、Gitee本地仓库/远程仓库安装Gitwindows:https://gitforwindows.orgUbuntu:sudo apt install git -y项目资料下载远程仓库GitHub仓库地址:https://github.com/Embdefire/embed_linux_tutorialGitee
2021-11-10 15:25:53
606
原创 linux环境变量
linux环境变量文章目录linux环境变量全局变量VS环境变量Shell 配置文件Shell 执行顺序修改配置文件shell启动方式对变量的影响全局变量VS环境变量直接定义exportShell 配置文件与 Bash Shell 有关的配置文件主要有/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc/etc/bashrc/etc/bash.bashrc/etc/profile.d/*.shShell
2021-11-09 22:44:02
74
原创 Linux系统中查看设备树
Linux系统中查看设备树ls /sys/firmware/devicetree/base或者ls /proc/device-tree
2021-11-03 21:36:42
10835
原创 Ubuntu下完全卸载source insight
Ubuntu下完全卸载Source Insight完全卸载方法参考#kill自己所有进程killall -u itcode#卸载Source Insight并删除用户数据rm -rf ~/Documents/Source\ Insight/rm -rf ~/.wine
2021-10-26 17:31:18
1300
原创 使用PF_PACKET发送自定义type以太网数据包
目标利用PF_PACKET 和SOCK_RAW创建套接字发送一个任意的以太网帧背景以太网是一个链路层协议。大多数网络程序员关注网络栈的传输层及以上,所以不需要直接处理以太网帧,但是某些场景下关注传输层以下也是有必要的。如:1)实现网络协议栈里面没有内置的以太网协议类型2)为测试目的,产生一个畸形或者其它非常规帧使用场景已知发送方和接收方的mac地址,就可以使用这个以太网协议发送接收数据。编程使用PF_PACKET 和SOCK_RAW创建套接字 if((fd = soc
2020-10-17 12:34:02
2421
2
原创 Linux Samba共享配置教程
Linux Samba共享配置教程一、 samba介绍linux与windows共享文件一般的方法就是设置共享文件夹和搭建samba服务器。samba服务器作可以windows和linux交互的媒介,可以让windows用户轻松地在电脑上使用图形界面访问linux文件系统,并可以设置写入权限,实用性极佳。二、 samba安装首先需要安装samba程序,部分Ubuntu镜像已经自带;执行如下命令即可 sudo apt-get install samba sudo apt-get ins
2020-08-07 10:42:52
1660
1
ble_mesh文档资料.zip
2021-02-02
tinyxml.zip
2020-12-04
PID控制算法的C语言实现(完整版).pdf
2019-06-12
基于stm32的交流异步电机控制系统的设计
2019-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人