自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(149)
  • 收藏
  • 关注

原创 【ESP32_FreeRTOS篇】

FreeRTOS 是一款 “开源免费”的实时操作系统,遵循的是 GPLv2+的许可协议。这里说 到的开源,指的是你可以免费得获取到 FreeRTOS 的源代码,且当你的产品使用了 FreeRTOS 且没有修改 FreeRTOS 内核源码的时候,你的产品的全部代码都可以闭源,不用开源,但是当 你修改了 FreeRTOS 内核源码的时候,就必须将修改的这部分开源,反馈给社区,其它应用部 分不用开源。免费的意思是无论你是个人还是公司,都可以免费地使用,不需要掏一分钱。

2022-11-25 23:45:43 2001 15

原创 【ESP32_8266_MQTT篇】

MQTT协议是当今世界上最受欢迎的物联网协议。它已广泛应用于车联网、智能家居、即时聊天应用和工业互联网等领域。目前通过MQTT协议连接的设备已经过亿,这些都得益于MQTT 协议为设备提供了稳定、可靠、易用的通信基础。本篇将从最基础的知识开始,向您讲解MQTT协议的应用。通过本篇的学习,您将学会MQTT协议开发物联网项目。

2022-11-22 22:17:53 1712

原创 【ESP32_8266_BT篇】

ESP32是一款集成双模蓝牙和wifi的国产芯片,特别适合做物联网开发,此芯片采用的是谷歌开源的bluedroid蓝牙协议栈。内容包括蓝牙协议栈里的GAP通用访问应用、GATT框架应用、蓝牙设备配对原理。BLE蓝牙键盘、蓝牙鼠标、蓝牙手机自拍杆等HID控制项目,以及经典蓝牙音箱项目。

2022-11-07 23:35:44 1436

原创 【ESP32_8266_WiFi篇】

在本篇中,您将学习物联网和互联网的基础知识,以及如何通过ESP8266物联网开发板实现基本物联网应用。假如您想要开始学习物联网知识,那么请从这里开始学习。

2022-11-06 23:20:03 1477 2

原创 【Linux系统编程】

系统编程就是利用操作系统提供的系统调用(system call,即所谓的接口、函数)进行编程,以达到操作各种计算机硬件资源(如磁盘、终端、网络等)的目的。

2022-09-27 20:37:51 1867 1

原创 【Linux网络编程】

linux使用的网络模型是TCP/UP四层网络模型,主要由应用程序、传输层、网络层、网络接口层组成。与OSI七层模型不同,但是又相互对应。OSI模型的应用层、表示层、会话层对应着TCP/IP模型的应用层,传输层对应传输层,网络层对应网络互连层,数据链路层和物理层对应主机到网络层(网络接口层)。linux中的网卡驱动属于7层模型中的数据链路层,属于四层模型中的最底层的网络接口层。

2022-09-01 11:43:14 1911

原创 【Linux 驱动篇(四)】设备树

设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如 CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等。

2023-07-07 15:51:39 1469 1

原创 【Linux 驱动篇(三)】新字符设备驱动

字符设备驱动开发重点是使用 register_chrdev 函数注册字符设备,当不再使用设备的时候就使用 unregister_chrdev 函数注销字符设备,驱动模块加载成功以后还需要手动使用 mknod 命令创建设备节点。 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。本节我们就来学习一下如何编写新字符设备驱动,并且在驱动模块加载的时候自动创建设备

2023-06-28 15:04:06 1035

原创 【Linux 驱动篇(二)】LED 驱动开发

Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。

2023-06-27 16:44:13 1739

原创 【Linux 驱动篇(一)】字符设备驱动开发

字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。

2023-06-25 21:05:38 2498

原创 【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多其它的功能,比如输入捕获、 PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一项功能!至于输入捕获、 PWM 输出等这些功能, I.MX6U由其它的外设来完成。

2023-04-30 12:00:00 1032 2

原创 【Linux 裸机篇(七)】I.MX6U 中断系统

CortexA7 内核有 8 个异常中断,这 8 个异常中断的中断向量表如表所示:中断向量表里面都是中断服务函数的入口地址,因此一款芯片有什么中断都是可以从中断向量表看出来的。Cortex-A7 一共有 8 个中断,而且还有一个中断向量未使用,实际只有 7 个中断,其中Cortex-A 内核 CPU 的所有外部中断都放置在 IRQ 中断里,当任意一个外部中断发生的时候都会触发 IRQ 中断。在 IRQ 中断服务函数里面就可以读取指定的寄存器来判断发生的具体是什么中断,进而根据具体的中断做出相应的处理。

2023-04-24 22:17:45 1030

原创 【Linux 裸机篇(六)】I.MX6U 主频和时钟配置

I.MX6U 的所有外设时钟源都是从这 7 路 PLL 和有些 PLL 的 PFD 而来的。图中一共有三部分: CLOCK_SWITCHER、 CLOCK ROOT GENERATOR 和 SYSTEM CLOCKS。其中左边的 CLOCK_SWITCHER 就是 7 路 PLL 和 8 路 PFD,右边的 SYSTEM CLOCKS 就是芯片外设,中间的 CLOCK ROOT GENERATOR 是最复杂的!

2023-04-22 22:36:21 622

原创 【Linux 裸机篇(五)】I.MX6ULL BSP工程管理下的 Makefile编写、链接脚本

上面的例子中,指明了我们的目标从$object 中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量$object 集合的模式,而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。而命令中的“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是“foo.c bar.c”), “$@”表示目标集(也就是“foo.o bar.o”)。

2023-04-22 21:36:45 594

原创 【Linux 裸机篇(五)】I.MX6ULL BSP工程管理下的 Makefile编写、链接脚本

【代码】【Linux 裸机篇(五)】I.MX6ULL BSP工程管理下的 Makefile编写、链接脚本。

2023-04-19 21:03:39 734 1

原创 【Linux 裸机篇(四)】I.MX6ULL C语言 LED 驱动

链接脚本的语法很简单,就是编写一系列的命令,这些命令组成了链接脚本,每个命令是一个带有参数的关键字或者一个对符号的赋值,可以使用分号分隔命令。像文件名之类的字符串可以直接键入,也可以使用通配符“*”。最简单的链接脚本可以只包含一个命令“SECTIONS”,我们可以在这一个“SECTIONS”里面来描述输出文件的内存布局。

2023-04-18 20:16:19 480

原创 【散文诗】单片机程序基础

当程序执行到一个函数调用时,它会将当前的指令地址和寄存器等现场信息保存到堆栈中,并跳转到函数的入口处继续执行。每个外设都有一个或多个中断请求引脚(IRQ),每个IRQ又对应一个特定的中断服务函数(ISR),当外设需要向CPU发出请求时,就改变IRQ引脚的电平状态。虽然回调函数和中断函数都是在事件发生时被调用的,但由于回调函数是普通的程序代码而非由硬件或操作系统直接触发,因此其实现上更加灵活和可控。在执行主程序时,突然接收到一个中断信号后,立即暂停当前的任务,转而去处理该中断信号所对应的中断服务函数任务。

2023-04-17 13:23:01 682

原创 【散文诗】单片机运行下和非运行下的 ROM 和 RAM

哈佛结构和冯.诺依曼结构都是一种存储器结构。哈佛结构是将指令存储器和数据存储器分开的一种存储器结构;而冯.诺依曼结构将指令存储器和数据存储器合在一起的存储器结构。冯·诺依曼结构的计算机程序和数据区域在同一个存储器上它们物理上是连续的,即程序空间不封闭,程序空间的数据在运行时理论上是可以被修改,此外程序一旦跑飞也有可能运行到数据区,虽然都是一些不常见的特殊情况下。哈佛结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,从而大大提高了运算能力。哈佛总线技术应用是以DSP和ARM为代表的。

2023-04-17 12:14:54 669

原创 【Linux 裸机篇(三)】I.MX6ULL 启动方式

当 BOOT_MODE1 为 1, BOOT_MODE0 为 0 的时候此模式使能,在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。这三个数据块是有指定格式的,我们必须按照格式填写,然后将其放到.bin 文件前面,最终合成的才是可以直接烧写到 SD 卡中的文件。一般是重新设置到我们用户代码的开始地方。

2023-04-16 21:21:29 594 2

原创 VMware中ubuntu系统出现花屏和蓝屏的解决方案

VMware虚拟机中打开的ubuntu系统,由于暴力关机或某些原因突然死机,关闭VMware软件后,再次启动ubuntu系统,进入后出现花屏和蓝屏的现象。

2023-04-16 17:33:58 2043 3

原创 【Linux 裸机篇(二)】I.MX6ULL 汇编 LED 驱动

使用 imxdownload 工具向 SD 卡烧写 led.bin 文件,工具会在 bin 文件前面添加一些数据头生成 load.imx 文件,最终将 load.imx 文件烧入 SD 卡中。有时候需要查看其汇编代码来调试代码,因此就需要进行反汇编,一般可以将 elf 文件反汇编。将众多的 .o 文件链接到一个指定的链接位置,本实验链接地址为:0X87800000。:指定链接生成的 elf 文件名,命名为 led.elf。将 led.s 编译为对应的 .o 文件。将 .elf 文件转换为 .bin 文件。

2023-04-15 22:40:00 573 10

原创 【Linux 裸机篇(一)】ARM Cortex-A 架构基础、汇编基础

所有的处理器模式都共用一个 CPSR 必然会导致冲突,为此,除了 User 和 Sys 这两个模式以外,其他 7 个模式每个都配备了一个专用的物理状态寄存器,叫做 SPSR(备份程序状态寄存器),当特定的异常中断发生时, SPSR 寄存器用来保存当前程序状态寄存器(CPSR)的值,当异常退出以后可以用 SPSR 中保存的值来恢复 CPSR。但是用户模式是不能直接进行切换的,用户模式下需要借助异常来完成模式切换,当要切换模式的时候,应用程序可以产生异常,在异常的处理过程中完成处理器模式切换。

2023-04-15 18:20:00 1125 6

原创 【Linux 入门篇(三)】Vim、Gcc、Make、Makefile、Shell

Linux下的 Vim、Gcc、Make、Makefile、Shell 基础使用

2023-04-09 21:10:23 1425 9

原创 【Linux 入门篇(二)】Ubuntu使用基础

Linux使用基础

2023-04-08 22:39:25 882 9

原创 【Linux 入门篇(一)】VMware安装、Ubuntu创建

VMware安装、Ubuntu创建

2023-04-08 17:55:11 120

原创 【lwIP(第十四章)】Socket

类似于文件操作的一种网络连接接口,通常将其称之为“套接字”。lwIP的Socket接口兼容BSD Socket接口,但只实现完整Socket的部分功能。

2023-03-30 19:26:42 580

原创 【lwIP(第十三章)】WebServer协议

Web Server 就是提供 Web 服务的 Server。主要功能是:存储,处理和传递网页给客户端,它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

2023-03-30 17:03:43 849 1

原创 【lwIP(第十二章)】TCP协议

TCP协议,是一种面向连接,可靠的、基于字节流的传输层通信协议

2023-03-30 16:55:20 558

原创 【lwIP(第十一章)】UDP协议

基于lwIP下的UDP协议简述

2023-03-29 19:30:30 852

原创 【lwIP(第十章)】传输层协议

TCP和UDP简述

2023-03-29 17:47:22 198

原创 【lwIP(第九章)】ICMP协议

ICMP协议是一个网络层协议。 一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。因此我们需要ICMP协议来完成这样的功能

2023-03-29 17:03:11 600

原创 【lwIP(第八章)】IP协议

IP协议是TCP/IP协议族中最为核心的协议,TCP、UDP、ICMP、IGMP数据都以IP数据报格式传输(IPv4、IPv6)IP协议的作用与IP协议配套使用的还有三个协议:ARP、ICMP、IGMP协议MAC地址与IP地址区别物理地址是数据链路层和物理层使用的地址;IP地址是网络层及其以上层使用的地址为什么需要MAC地址和IP地址?MAC地址用来数据转发,而IP地址用来确认路标。

2023-03-28 19:18:06 336

原创 【lwIP(第七章)】ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议

2023-03-28 16:52:43 578 5

原创 【lwIP(第六章)】超时事件处理

为每个与外界网络连接的任务都设定了timeout属性,即等待超时时间,例如TCP建立连接超时、ARP缓存表项的时间管理等,都需要超时操作来处理

2023-03-28 15:07:20 338

原创 【lwIP(第五章)】网络数据包

TCP/IP是一种数据通信机制,因此,协议栈的实现本质上就是对数据包进行处理,为了实现高效的效率,lwIP数据包管理要提供一种高效处理的机制。协议栈各层能对数据包进行灵活的处理,同时减少数据在各层间传递时的时间与空间开销,这是提高协议栈工作效率的关键点。在lwIP中它称之为pbuf。pbuf用于lwIP各层间的数据传递,避免了各层间拷贝数据。

2023-03-27 20:05:12 1751 1

原创 【lwIP(第四章)】网络接口

lwIP协议栈支持多种不同的网络接口(网卡),由于网卡是直接和硬件平台打交道,硬件不同则处理也是不同的,所以由用户提供最底层的接口函数,lwIP提供统一的接口,但是底层的实现需要用户自己去完成。

2023-03-27 09:32:34 2673 7

原创 【lwIP(第三章)】内存管理

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。

2023-03-26 18:16:54 2177 15

原创 【lwIP(第二章)】以太网DMA

以太网DMA发送:不需要CPU的参与下,把描述符指向的缓冲区数据传输到Tx FIFO当中接收:不需要CPU的参与下,将Rx FIFO中的数据传输到描述符指向的缓冲区当中

2023-03-24 15:42:59 2701 10

原创 【lwIP(第一章)】lwIP入门

lwIP是一个小型开源的TCP/IP协议栈(阉割的TCP/IP协议),适用于云台接入、无线网关、远程模块、工控控制器、嵌入式NAT无线路由器、网络摄像头………

2023-03-23 21:13:49 5870 12

原创 【数据结构(四)】树

树是n(n>=0)个结点的有限集,树除了根节点外,任何一个结点都有且仅有一个前驱

2023-02-28 19:30:56 1381

根据数据动态增加QTableView QTableView数据可勾选导出

根据数据动态增加QTableView QTableView数据可勾选导出

2022-11-24

基于BK3633-QFN32 2.4G收发

BK3633_QFN32自定义2.4G频点进行收发

2022-11-24

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

TA关注的人

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