自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ADC读取数据进入死循环

ADC读取,死循环

2023-10-26 18:59:21 338

原创 C语言编程常用操作

C语言编程常用操作

2022-10-28 16:44:23 516

原创 STM32无限循环进入i2c事件中断卡死线程调度

在开发项目中遇到RTT线程不调度的问题,现象是出现i2c报错,线程不调度,只响应中断。问题是随机小概率出现,我们提出的几个推测点:1.栈溢出2.最高优先级的线程中有死循环3.进入临界区关了调度锁4.死锁5.关RT中断注:不要因为看了标题而先入为主1.栈溢出因为RTT没有FreeRTOS那样的API接口(或许我们没有找到),只能打印线程信息,栈起始地址、sp指针(可知道已使用栈大小)、优先级(担心优先级反转),时间片等。void rt_memory_info(rt

2022-05-30 18:21:16 3045 2

原创 STM32进入HardFault快速定位问题

基于RT-thread,STM32硬件平台。在项目开发过程中遇到了程序进入hard fault的异常,通过查看pc寄存器和lr寄存器快速定位到出问题位置(函数)。STM32出现硬件错误可能有以下原因:1.内存溢出,访问越界;2.堆栈溢出;3.中断处理错误;在RTT系统中,当系统出现hard fault异常时,程序会进入RTT提供的下面这个接口void rt_hw_hard_fault_exception(struct exception_info *exception_info)

2022-05-30 16:07:15 1861

原创 使用Wi-Fi实现ESP32与手机网络助手进行TCP数据收发

在ESP32板块,开发环境搭建完成的基础上,做一个简单的TCP客户端与服务器端的数据收发实验,开发环境是基于乐鑫官方IDF,Linux环境下发开,本实验有助于对例程的理解和应用。实验前期准备:在手机上下载一个“网络调试助手”APP,并做如下设置。1.Server地址为自动分配2.设置手机为Server3.设置端口号8080,可设置其他实验总体概述:Step1:ESP32 Wi-Fi设置为STA模式,将其连接到路由器(AP)上Step2:使用IPv4,TCP协议,ESP32作为

2020-05-25 17:57:14 8515 1

原创 驱动开发之始,(六)Linux内核时间,延迟操作

时钟中断由系统定时硬件周期性的间隔产生,这个间隔由内核根据HZ的值设定,HZ是一个与体系结构有关的常数。定义在<asm-genric/param.h>中(每个人下载的内核版本不同可能位于不同的文件下)。每次当时钟中断发生时,内核内部计数器的值就增加一。这个计数器的值在系统引导时被初始化为0。因此,它的值就是自上次操作系统引导以来的时钟滴答数,成为“jiffies_64”。1.使用j...

2020-04-06 17:28:48 234

原创 驱动开发之始,(五)异步通知

情形分析:一个进程需要从外设读取采集到的数据进行处理,如果有新的数据到来,应用程序可以周期性地调用poll来检查数据,但是这样做的效率并不高。因此,通过使用异步通知,应用程序可以在数据可用时收到一个信号,转而进行处理,而不需要不停的使用查询的方式来检查有无新数据的到来。为了启用文件的异步通知机制,应用程序执行以下三个步骤:step1:指定一个进程作为文件的“属主(owner)”(在file...

2020-04-06 14:07:34 105

原创 驱动开发之始,(四)阻塞型I/O,进程休眠

在前面的章节中,我们讲述了read和write方法。当数据不可用时,用户调用read,或者用户使用写入数据,但输出缓冲区已满,驱动程序该如何相应呢?在这种情况下,驱动程序应该(默认)阻塞该进程,将其置入休眠状态直到请求可继续。1.休眠(sleep)当一个进程被置入休眠时,它会被标记为一种特殊状态并从调度器的运行队列中移走,休眠中的进程会被搁置在一边,等待将来的某个事件发生,直到某些情况下修...

2020-04-05 20:52:07 292

原创 驱动开发之始,(三)并发与竞态,信号量与自旋锁

1.并发与竞态在单处理器结构中,各个进程从宏观上看是并行的,因为处理器执行速度非常快,但从微观上看进程是串行执行,因为在一个时刻只有一个进程能被处理器运行,称为并发。换句话说,在一段时间内,处理器能够同时做多件事。举个例子,A进程先在CPU上得到执行,突然被B进程打断(硬件中断或拥有更高优先级),CPU此刻暂时放下A进程,转而为B进程服务,当B进程服务完成后,在接着执行A进程,从这一段时...

2020-04-05 17:03:34 141

原创 驱动开发之始,(二)字符设备驱动——Part3 简单的字符驱动实例

通过前面两章的知识汇总,我们了解字符设备驱动框架及其涉及的几个重要数据结构,为了加深理解,本章用一个简单的实例来演示字符设备驱动的开发过程,因为没有实际接硬件,并未实现对驱动进行复杂操作,在此只做一个初步认识,在后续的进阶部分,笔者再通过实际的字符驱动来进一步分析。1.字符设备驱动 hello_module.c#include <linux/init.h>#include ...

2020-04-04 18:18:56 167

原创 驱动开发之始,(二)字符设备驱动——Part2 file_operations,file和inode结构

上一章中,讲到字符设备驱动模型,了解了字符驱动的框架。为了更好的理解驱动程序,本章讲述其中涉及的三个重要数据结构,file_operations、file和inode结构。1.文件操作file_operationsfile_operations结构是用来建立驱动程序与设备间的连接,该结构定义在<linux/fs.h>,其中包含了一组函数指针。每个打开的文件(在内部由一个file...

2020-04-04 16:11:47 184

原创 驱动开发之始,(二)字符设备驱动——Part1驱动模型

字符设备驱动将会分为三个部分,Part1:宏观上了解驱动模型,Part2:具体分析其中重要的三个数据结构,文件操作集file_operations,文件file以及inode结构。Part3:用一个简单的实例来演示字符设备驱动的实现字符设备是面向字节流的方式,一个字节一个字节传输数据的设备,通常是按照先后顺序传递,常见的字符设备有鼠标、键盘、串口等设备。对字符设备的访问是通过文件系统内的设...

2020-04-01 21:29:22 164

原创 驱动开发之始,(一)Hello World内核模块

在上一篇中,我们编译了自己的主线内核,建议读者在source insight中建立内核源码工程。现在我们开始学习第一个内核模块,有一个初步的感性认识。驱动程序在Linux内核里扮演着特殊的角色,它们就像“黑盒子”, 操作底层硬件而定义好的内部接口,它们完全隐藏了设备工作的细节。用户的活动通过一套标准化的调用来进行;设备驱动的角色就是将这些调用映射到作用于实际硬件的和设备相关的操作上。Hel...

2020-03-28 14:24:42 222

原创 驱动开发之始,简单的编译自己的主线内核

从kernel.org的镜像网站上获得一个“主线”内核,并安装到自己的系统中,下面为kernel网址https://www.kernel.org/在Linux系统下查看自己的内核版本,尽量采用一致的版本,避免后续带来各种suprise。使用uname -r命令查看解压内核文件,下面是解压后的内核源码目录树使用make menuconfig配置内核配置完成后,使用ma...

2020-03-25 11:15:28 209

原创 C++实现单链表创建、插入、删除等

本文通过C++编程实现对单链表的创建、插入、删除等操作#include <iostream>#include <string>using namespace std;/* Link struct body*/typedef struct Node{ int data; struct Node *next;}LinkList;Lin...

2020-03-25 10:15:19 2496

原创 insmod加载内核模块后报错,Invalid module format

在使用insmod加载模块时报错:Invalid module format原因分析:使用dmesg | grep module 查看Ubuntu系统版本与内核版本不一致造成,接下来查看系统版本,使用uname –r查看若版本不一致,请重新下载编译内核版本。同时,可参考该Makefile文件:重新加载hello_module.ko,问题已解决!...

2020-03-07 14:20:41 11229

原创 ESP32 Linux开发环境配置

1.开发环境说明1.1 使用Ubuntu 16.04搭建ESP32开发环境1.2 使用ESP_IDF v3.3版本,参考官方手册“Read the Docs Template esp_idf v3.3”2.准备工作开发 ESP32 应用程序需要准备:1.PC:Linux操作系统2.工具链:用于编译 ESP32 应用程序3.ESP-IDF:包含 ESP32 API 和用于...

2020-03-05 20:57:24 1313

原创 VMware Machine Ubuntu Dual-VMnet Configuration

VMwareMachine Ubuntu Dual-VMnet Configuration    该文档配置为双网卡模式,目的是分别通过eth0使用NFS挂载ARM板进行开发,通过eth1使用Samba与Windows共享文件。首先在Windows启动命令窗口:win+R,接着键入ipconfig,查看IP地址1.     Bridged(桥接模式)    桥接模式就是将主机网卡与虚拟机虚拟的网卡...

2018-04-22 22:45:25 77

原创 Ubuntu Samba Configuration

Ubuntu Samba Configuration1.Ubuntu 出现apt-get: Package has no installation candidate问题解决方法如下:# sudo apt-get update# sudo apt-get upgrade这样就可以正常使用apt-get了一.samba的安装:sudoapt-getinstall...

2018-04-22 22:37:17 504

空空如也

空空如也

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

TA关注的人

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