![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 70
魔动山霸
欢迎多多交流嵌入式
展开
-
嵌入式相关开源项目、库、资料(转发)
嵌入式相关开源项目、库、资料------持续更新中学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库。有好的嵌入式相关资源的朋友欢迎做贡献,利人利己。收录公开资料仅为了方便大家进行学习。如果你认为本仓库的一些文件侵犯了您的权益,请 向我反馈 。我将会从仓库中彻底清除这些文件。以下为最新资料汇总:1、OS鸿蒙OS: 一款面向全场景的开源分布式操作系统。原创 2022-05-10 19:57:06 · 769 阅读 · 0 评论 -
RT-Thread HSE时钟改为HSI时钟方法
知道这个文件修改,这个是针对与KEIL5的版本修改方法void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSC原创 2021-12-23 15:50:33 · 395 阅读 · 0 评论 -
树莓派数据手册(BCM2835)GPIO剖析
树莓派简介Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI) [1] 是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。 [2] 随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。 [3]自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“芯”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。 [4]1.资源介绍BCM2835包含下面的外围原创 2021-11-23 11:01:29 · 1874 阅读 · 1 评论 -
Linux下串口的编程使用
Linux发烧友Linux下串口的使用串口对应的API1.引脚号的设置2.打开串口3.串口的设置4.向串口发送一个字符5.向串口接收一个字符6.关闭串口Linux下串口的使用一般我们使用串口有两种方式,一是自己编写驱动程序通过操作寄存器的方式,然后编译进Linux中供应用层调用,二是直接使用Linux提供的设备系统来进行编程,绝大多数的人都采取第二种方式,,他是基于TTY的驱动程序框架来进行编程串口对应的API在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。原创 2021-11-14 19:09:22 · 2243 阅读 · 7 评论 -
详细剖析Linux和RTOS(RT-Thread)的时钟和定时器的使用
Linux发烧友1.RTOS篇1.1RT-Thread简介1.2时钟管理1.2.1时钟节拍1.3获取系统节拍1.4定时器分类1.5定时器源码分析1.6定时器相关函数1.61动态创建一个定时器和删除定时器1.7初始化和脱离定时器1.8启动和停止定时器1.9高精度延时1.10实战篇:RTOS定时器代码演示2Linux篇2.1Linux简介2.2Linux定时器机制2.3alarm类定时器2.4进程接收到信号后的处理方式2.5实战篇1:alarm定时器代码演示2.6setitimer定时器的设置2.7实战篇2:s原创 2021-11-14 17:00:09 · 2369 阅读 · 3 评论 -
一起剖析Linux和RTOS的线程机制
文章目录????1.Linux线程篇????1.1Linux简介????1.2线程和进程的比较????1.3线程工作机制????1.3.1创建线程????1.3.2线程等待????1.3.3线程的分离????1.3.4线程的退出????1.3.5线程的取消????1.4线程池的概念????1.5实战篇:Linux线程代码演示????2.RTOS线程篇????2.1RT-Thread简介????2.2线程管理的特点????2.3线程工作机制????2.3.1线程控制块 struct rt_thread????原创 2021-11-13 21:41:21 · 1494 阅读 · 10 评论 -
内核的移植
环境介绍1、 kernel环境: linux-3.4.1102、 ext4文件系统源码包3、 交叉编译器 arm-linux-4.3.2二、修改编译内核.解压 linux-3.4.110源码包,可以从Linux官网上下载,对应的是你自己内核的版本修改内核根目录下的makefile文件,修改成下面信息修改板子的支持复制原内核(kernel-3.4.39) arch/arm 下的(palt-s5p6818 和 mach-s5p6818)两个文件夹到新内核(kernel-3.4.110)对原创 2021-11-11 15:48:15 · 1821 阅读 · 0 评论 -
超级详细讲解根文件系统rootfs的制作
文章目录????1 下载工具☕2 构建目录????3 使用busybox4 ????补全lib库5 ????生成etc配置文件6 ????修改 etc/init.d/rcS 文件????6.1.根据 fstab 配置文件挂载相应的文件系统????6.2.配置 telnetd 服务器的时候需要以下文件夹及文件系统????6.3.启动需要以下文件夹????6.4.在 lib 下创建相应文件夹(与当前内核版本相同),为驱动模块加载作准备????6.5.自动在/dev 下创建设备节点????7 修改 etc/fst原创 2021-11-10 19:21:42 · 8850 阅读 · 6 评论 -
Bootloader的启动与功能
Bootloader介绍Bootloader可以解释为启动引导程序,相当于我们用windows的电脑开机时都会有一段启动的时间,在windows上被称为BIOS启动,。Bootloader在不同的CPU架构和不同的操作系统有不同的标准,如针对X86架构的LILO,针对ARM架构的armboot等,下面以一款arm板子讲解,一通百通S5P6818启动过程(一通百通)查看数据手册可知道芯片一共有五种启动设备的方式具体启动方式由我们自己配置一共寄存器,RST_CFG寄存器,这个寄存器里面的值和芯片引脚原创 2021-11-09 16:57:30 · 1944 阅读 · 2 评论 -
RS232&RS485协议原理和应用
文章目录????RS232协议原理☕TTL电平是什么意思????RS232电平转换????RS232存在的问题????RS485协议原理(RS232加强版)????RS485电平转换⌛RS485的优势♐RS485的编程理解????RS232协议原理RS232总线其实是在串口层上进行改进,在电气层做了一些优化,串口只是对发送的时序做了规定,并没有定义接口的电气特性,不同器件之间通过UART通信时连接很不方便,串口还存在抗干扰能力差,通信距离短,所以衍生出了RS232协议■接口该标准规定采用一个25引脚原创 2021-11-08 22:31:40 · 4997 阅读 · 1 评论 -
嵌入式系统的开发概述(三星s5p6818系统为例)
文章目录♐1.嵌入式系统的组成☕2.S5p6818系统资源介绍????3.s5p6818试验仪????4.s5p6818寻址空间♐1.嵌入式系统的组成==嵌入式系统可以分为软件层和硬件层软件层又可以分为应用层,os层,驱动层应用层:应用程序/文件系统,交互界面等os层:操作系统/windows,Linux等,嵌入式系统多为Linux驱动层:设备驱动,HAL,BSP硬件层硬件层可以理解为都是一些实体的硬件设备几乎所有的嵌入式系统都会有处理器,MMU./Cache虚拟内存设备管理,和内存,片上原创 2021-11-08 10:13:07 · 2459 阅读 · 7 评论 -
Linux下输入系统编程,随手笔记,有点乱
这是触摸屏点击的信息定义一个结构体 用来存储以下信息:struct input_id id;可以获得版本号啥的,对应上图的Istruct input_id { __u16 bustype; __u16 vendor; __u16 product; __u16 version;};使用ioctl把信息从驱动程序里面存到指定的idiotcl(fd,EVIOCGID,&id)EVIOCGID信息如下,其实就是一个宏,对应IOR(‘E’, 0x02, struct input_id..原创 2021-11-03 14:20:01 · 267 阅读 · 0 评论 -
Framebuffer编程总结,希望人人都能学会
????Linux发烧友????0.FrameBuffer的引入☕1.LCD如何显示的原理⌛2.如何修改LCD指定的像素呢♐3.获取framebuffer基地址????4.像素绝对地址的计算????5.像素的颜色的表示????6,LCD参数的获取????7.设备的打开????8.framebuffer完整代码演示????0.FrameBuffer的引入FrameBuffer是出现在 2.2.xx 内核当中的一种驱动程序接口。在Linux系统中通过Framebuffer驱动程序来控制LCD。Frame是帧原创 2021-11-02 22:24:48 · 2974 阅读 · 5 评论 -
Linux下的内核线程threaded irq机制分析与应用
⭐Linux发烧友????threaded irq的引入☁️使用哪一个中断函数⌛内核机制实现♐编程要点分析????完整驱动代码演示????基础应用层代码演示????threaded irq的引入我们知道,工作队列可以用来处理中断的一些耗时的事情,但是他又一个缺点,就是如果有多个事件同时放入工作队列中,如果前面的事件处理得太久,那么就会影响到后面的事件的执行,因为内核线程事一个个依次执行的,如果一个事件真的非常耗时间,那么我们可以用 threaded irq来处理,大概意思就是中断上半部不变,中断的下半原创 2021-11-02 17:57:49 · 1099 阅读 · 6 评论 -
Linux内核下的工作队列workqueue应用与扩展
这里写自定义目录标题⌚1.工作队列的引入????2.如何使用工作队列????2.1把一个函数放入工作队列中????2.2工作队列常用的函数合集????开发流程讲解????完整驱动代码演示⌚1.工作队列的引入我们平常在使用定时器或者下半部tasklet时都是通过中断的上下文来执行,我们知道中断是无法休眠的,如果休眠了就没有人来调用相应的函数了。如果一个事件非常的耗时,会让系统变得很卡,这时可以通过内核线程来解决,因为线程可以休眠,在内核中线程的创建可以使用工作队列(workqueue),当有一个你想要执行原创 2021-11-02 16:56:01 · 619 阅读 · 8 评论 -
Linux内核中断(上半部和下半部tasklet)
文章目录????中断的概念????中断下半部tasklet????tasklet_struct结构体的定义????使用tasklet⌛销毁tasklet(下半部)⚡️实战篇:重点代码分析♐终极篇: 完整代码演示????中断的概念中断是整个系统的核心,用来事件的切换或者响应。在Linux内核下又分为上半部中断和下半部中断,他们都遵循以下两个规律。① 不能嵌套;② 越快越好。在上半部处理紧急的事情,在上半部的处理过程中,中断是被禁止的;在下半部处理耗时的事情,在下半部的处理过程中,中断是使能的。原创 2021-11-02 15:50:47 · 1345 阅读 · 3 评论 -
Linux内核下的异步通知(信号,platform_driver)
文章目录功能机制工作流程具体分析设备树如何编写确定引脚修改设备树驱动程序的编写确定入口,出口函数probe里面做得事中断函数里面做什么异步通知的使用方法环形缓冲区的定义remove函数里面做什么应用层的编写驱动程序总体代码编写功能机制功能:Linux开发板按下按键应用层程序将会调用产生的信号并执行相对应的函数知识点:内核,用户的信号量,进程,文件io,platform_driver,环形缓冲区,中断,等待队列,poll机制,设备树工作流程通过更改设备树来改变相对应的io引脚的作用,如更改按键所对原创 2021-11-02 11:34:47 · 366 阅读 · 2 评论 -
❤️⭐浅谈蓝牙模块的AT指令的使用(以JDY–10M型号为例)⭐❤️
这里写自定义目录标题1.蓝牙模块的概念2.AT指令3.JDY–10M BLE 多功能组网模块4.AT指令的使用4.1注意事项4.2查询版本号4.3蓝牙mac地址查询4.4设置/查询-蓝牙名4.5设置/查询-蓝牙名4.6设置/查询-设备类型4.7 设置/查询-组网 ID4.7设置/查询—组网短地址4.8串口MESH无线控制指令5.调试1.蓝牙模块的概念现在的蓝牙模块的协议栈已经开发到了5.2的版本,它距离上一个版本更加的快,远,低功耗,最新的技术具有如下几个特点1、据传输速度不同:蓝牙5.2相比蓝牙5原创 2021-10-25 09:45:45 · 4948 阅读 · 4 评论 -
⭐❤️STM32之玩转看门狗(IWDG与WWDG)❤️⭐
文章目录看门狗概念独立看门狗相关寄存器(IWDG)独立看门狗功能框图键寄存器预分频寄存器重装载寄存器状态寄存器代码演示效果窗口看门狗相关寄存器(WWDG)窗口看门狗功能框图控制寄存器配置寄存器状态寄存器窗口看门狗代码演示实验效果看门狗概念STM32里面有两个看门狗,本质上是一个倒计数的定时器,我们先定义个初值,如果我们没有及时去喂狗,那么当前的CPU会复位,从头开始运行,正常情况下我们不希望他复位,通常有个喂狗操作,放在main函数的while循环内,如果我们的cpu在恶劣的环境下程序跑飞脱离了whil原创 2021-10-22 11:45:55 · 350 阅读 · 5 评论 -
⭐❤️STM32之玩转定时器TIMX❤️⭐
定时器概念是一个 负责定时的片上外设,片上外设就是CPU旁边搭载的一些其他功能,如串口,iic等等,简称MCU。每个stm32的拥有的定时器不同,STM32F103RC芯片一共有8个定时器,TIM1 TIM8是STM32的高级定时器,TIM6,TIM7为基本定时器,其他为通用定时器基本定时器TIM6和TIM7定时器的主要功能包括:● 16位自动重装载累加计数器● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值分频● 触发DAC的同步电路● 在更新事原创 2021-10-22 10:32:17 · 452 阅读 · 3 评论 -
⭐❤️STM32串口的使用(寄存器与标准库的比较)❤️⭐
stm32串口的引入串口,在STM32F10x芯片一共有5个串口,USART1 2 3 UART4 5 一共5个串口每一个串口真正发挥作用,2个脚,数据从芯片里出去,另外数据进入到芯片里面去 TX (trasimt) RX (receive)串口1 USART1 TX PA9 PA10,原理图是这样。是从芯片的使用说明 datasheet看的,是从数据手册引脚描述表格找到的。UART1的开发流程开启APB2时钟开相关片上外设时钟,USART1 GPIOA,串口除了串口1挂在AP原创 2021-10-21 17:35:39 · 2901 阅读 · 2 评论 -
❤️⭐stm32f103的GPIO八种工作模式 (推挽输出 开漏输出 浮空输入等等)⭐❤️
输入一共有四种模式:模拟输入:多用在ADC转换或者DAC转换,或者配置一些闲时io口时进行省电上拉输入 :根据外部电路而来,给他一个上拉电阻,让这个模块默认电平为高下拉输入:浮空输入加一个下拉电阻闭合,默认低电平浮空输入:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。注意:上拉输入 下拉输入 浮空输入 都要经过施密特触发器,当任何波形的信号进入电路时,输出在正、负饱和之间跳动,产生方波或脉波输出。输出一共有四.原创 2021-10-21 14:47:41 · 2266 阅读 · 1 评论 -
⭐❤️zigbee无线通信模块的深入浅出❤️⭐
这里写自定义目录标题zigbee是什么zigbee模块的选择zigbee是什么类似于蓝牙或者lora等等,属于物联网终端得一种无线通信技术。蓝牙:距离较短,功耗低,组网数量不错,数据传输不大。WiFi:数据量比较大,功耗比较大,比较耗电,无线局域网得数量不大。zigbee:功耗低,休眠几个ua,也可以进行组网,单网络组网数目比较大。这三种无线模块的载波都是2.4G频率,穿透能力较差zigbee模块的选择一般来说,TI公司和silicon公司的zigbee模块做得比较好TI:芯片特点是原创 2021-10-19 21:38:14 · 3578 阅读 · 9 评论 -
⭐❤️NFS网络文件系统的安装和使用❤️⭐
ubuntu安装nfs网络文件系统:sudo apt-get install nfs-kernel-server nfs-common设置需要共享的目录:假设需要共享 /home/edu/nfs_share这个文件夹,打开 vim /etc/exports文件夹重新启动服务sudo service nfs-kernel-server restart在板子上执行挂载命令 mount -t nfs -o nolock,vers=3 10.36.145.173:/home/edu/n..原创 2021-10-18 11:43:01 · 457 阅读 · 2 评论 -
⭐❤️如何安装ARM交叉编译工具链❤️⭐
下载arm-linux-gcc-4.3.2.tar.bz2的压缩包sudo mkdir /usr/local/arm/sudo tar jxvf arm-linux-gcc-4.3.2.tar.bz2 -C /usr/local/arm打开配置文件添加环境变量sudo vi ~/.bashrc在配置文件里面添加export PATH=/usr/local/arm/4.3.2/bin:$PATH更新配置文件 source ~/.bashrc使用 #arm-linux-..原创 2021-10-18 10:32:45 · 415 阅读 · 3 评论 -
❤️⭐万字长文玩转总线设备驱动platform_device与platform_driver⭐❤️
文章目录前言一、Linux总线的重要函数1.1注册与销毁函数1.2获得资源1.3获得中断1.4通过名字获得资源或者中断1.5同时注册多个dev二、总线设备里面含有什么结构体?1.1从platform_device 开始1.1.2 struct resource资源存储1.2与platform_driver结合1.3platform_driver与platform_device 如何进行关联1.3.1比对规则1.4 匹配成功后三.代码示范3.1平台设备案例3.2资源设备案例前言总线设备驱动的引入是主要解原创 2021-10-10 17:17:56 · 364 阅读 · 4 评论 -
⭐❤️SPI协议的学习笔记之SPI简介(一)❤️⭐
文章目录SPI协议的简介spi物理层的简介SPI协议层SPI协议的简介 SPI是一种通信协议,串行外围设备的接口是一种高速的全双工的通信总线,广泛应用在一些外设与mcu需要高速传输数据的场合。全双工的意思:同时发送和接收如spi半双工:通信的时候只能发送或者通信,不可同时进行,如iicspi物理层的简介野火的图解一个主机可以挂载多个从机,也是一种通信总线,同一个通信总线可以挂载多个设备,挂载多少个也没有限制SS:从设备选择信号线,防止干扰并选中某个设备。SCK:时钟信号线,用于通信数据原创 2021-10-07 12:52:38 · 212 阅读 · 2 评论 -
❤️imx6ull按键的唤醒与休眠升级版,通过socket与外界通信❤️
运行效果通过按键控制灯的亮灭,并通过网络编程把按键的状态传到外界,驱动代码运用到了中断,还有唤醒与休眠机制,当没有数据产生时,app会进入到休眠状态,直到按键产生了数据,这个时候就会唤醒app。可减少cpu的工作效率驱动代码#include <linux/module.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/miscdevice.h>#include &l原创 2021-09-10 13:15:57 · 445 阅读 · 0 评论 -
⭐❤️万字长文带你了解Linux最核心的部分--中断❤️⭐
系列文章目录文章目录系列文章目录前言一、Linux中断发生的条件二、Linux内核对中断如何处理1.中断的处理流程2.异常向量表3.Linux内核对中断如何处理3.1中断处理的核心-栈3.2.中断在Linux中的演进3.3使用tasklet处理下半部3.4中断上半部和下半部的关系中断下半部使用work_queue(工作队列)总结![请添加图片描述](https://img-blog.csdnimg.cn/6ddb65baba224123ae6d133daed10b2e.gif)前言中断是指原创 2021-09-06 00:03:59 · 596 阅读 · 2 评论 -
❤️终于有人把进程概念讲清楚了❤️
程序和进程有什么区别呢程序是硬盘上是死的程序,而进程是把程序搬运到内存上,如果一个程序被多次执行,就有多个进程,每个进程都有自己的进程号单道、多道程序单道程序设计 所有进程一个一个排队执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现是必然的。所有这种模型在系统资源利用上及其不合理,在计算机发展历史上存在不久,大部分便被淘汰了。 2 多道程序设计 在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。 在计.原创 2021-09-03 16:14:22 · 2790 阅读 · 4 评论 -
❤️你见过Linux下内核的应用程序hellowolrd吗?你说你会用c语言写hellowolrd?我不信❤️
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-08-31 17:36:56 · 3781 阅读 · 10 评论 -
用QT实现一个系统计算器 图文并茂,详细的教学方式
先看动态图,该计算器实现了按钮点击或者是手写的方式计算出结果,其中用户所输入的数字也会在输出结果框上进行实时显示,基本满足了计算器所拥有的的功能。完整的代码将会在文章下方给出。下面进行代码讲解: 如果你是新手,可以跟着从头开始建项目,首先你必须要先下载好QT。跟着视频来先创建一个项目。创建好项目后在widget.app下编写程序 首先包含头文件。这是该计算器包含的头文件,其实只用到了”widget.h“,"QLineEdit","QPushButton", 分别是窗体的头文件,编辑框的头文件.原创 2021-08-24 15:44:13 · 3012 阅读 · 18 评论 -
驱动之路碰到的小挫折-[ 3020.965438] ------------[ cut here ]------------ [ 3020.970112] WARNING: CPU: 0 PID: 3
今天在做led驱动点灯的时候碰到了以下错误调试了半天都调试不出来是什么原因,奈何网上又没有这种原因的解析,所以把我的解决办法告诉大家。[ 3020.965438] ------------[ cut here ]------------[ 3020.970112] WARNING: CPU: 0 PID: 30545 at fs/namei.c:3394 path_openat+0x19c/0x1120[ 3020.979301] Modules linked in: led_drv(O) inv_原创 2021-08-21 11:08:50 · 1622 阅读 · 6 评论 -
当我们在linux下碰到不懂得命令或者函数该怎么办--跟着韦东山老师学习(1)
当我们碰到有不懂的命令或者是不知道这个函数怎么用时,linux下为我们提供了三种方法来帮助我们:help,man,info通过help来查找某个命令的使用方法可以这样,比如查看ls的使用方法ls --help通过man手册来查看命令和函数,这是我们在linux开发中最常用的方法,他分了九部分,每一个部分对应一个数字:1 Executable programs or shell commands // 命令2 System calls (functions provide原创 2021-08-15 13:35:31 · 996 阅读 · 0 评论