自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苏轼圈

梦想有天去放羊~

  • 博客(45)
  • 资源 (19)
  • 问答 (1)
  • 收藏
  • 关注

原创 自动创建设备节点

在成功加载驱动模块之后,还需要使用 mknod命令创建设备节点,才能在/dev目录下创建对应的设备文件。自动创建设备节点的功能需要依赖 mdev 设备管理机制,在使用 buildroot 构建 rootfs 的时候,会默认构建 mdev 的功能,mdev 机制不做深究。对于驱动代码编写来说,一般在驱动注册成功后添加自动创建设备节点的相关代码

2023-05-05 16:03:22 866 1

原创 字符设备驱动

内核起来之后,使用模块加载命令加载.ko文件时,在驱动层便会开始执行宏 module_init 载入的函数,一个基本的字符设备驱动,加载流程分以下几步:确定设备号,可以是动态分配,也可以是静态指定;关联 file_operations 结构体变量,因为里面存放着具体执行动作的函数指针;关联设备号;将字符设备添加到内核。

2023-05-04 19:24:16 1356

原创 vscode 排除头文件搜索路径

vscode 排除头文件搜索路径

2023-04-12 17:03:04 625

原创 deepin 使用问题记录

记录用 deepin 做嵌入式开发时遇到的一些问题

2023-03-17 17:22:52 931

原创 C语言学习笔记

结构体计算要遵循字节对齐原则。结构体默认的字节对齐一般满足以下准则:

2022-09-20 15:39:56 381

原创 WSL2下使用openocd连接外部调试器开发STM32

在linux下搭建STM32的开发环境,通常会用到 openocd 去连接到外部的调试器,如 J-Link,CMSIS-DAP,再提供网路端口给gdb。但由于现阶段 WSL2 访问外部的 USB 设备会存在不足,且WSL2 默认采用了一个NAT网络,如果想要把 WSL2 中的服务直接暴露出来,就不得不考虑做端口转发等问题。 但是 WSL2 给我们留了一条后路,那就是允许在 WSL 里执行 .exe 文件。...

2022-08-14 19:01:15 1455 1

原创 STM32启动文件startup_stm32f407xx.s

在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化。在此阶段,C语言是没法运行的,所以需要用到汇编语言编写的启动文件去构建C语言程序运行的必要环境,然后再跳转到main函数到达C语言的世界。...

2022-07-12 13:52:56 3912

原创 STM32链接脚本STM32F407ZETx_FLASH.ld

STM32F407ZETx_FLASH.ld链接脚本中看出链接脚本大致所做的工作了,和官网描述基本一致,有通过SECTIONS命令描述如何将输入文件中的SECTIONS mapped 到输出文件的SECTIONS中,也有通过MEMORY命令在输出文件中控制内存布局。.........

2022-07-05 17:40:26 2915 1

原创 可执行文件中的段

现在PC平台上流行的可执行文件格式主要是Windows下的PE(Portable Executable)和 linux 下的ELF(Executable Linkable Format),它们都是COFF(Common file format)格式的变种。 下面的讨论只在linux下进行,且使用目标文件.o来进行段的讲解。因为目标文件相较于可执行文件的段会少许多,也不会缺少重要的段,没有链接过程看到的现象也更加直接。 目标文件就是源代码编译后但未进行链接的那些中间文件(Windo

2022-06-30 17:05:27 658

原创 编译和链接

可分解为4个步骤:预处理(Preprocess)、编译(Compile)、汇编(Assembly)和链接(Link)。

2022-06-30 14:17:34 460

原创 buildroot

buildroot

2022-01-30 21:24:34 2661

原创 mplayer 交叉编译及嵌入式设备上使用的问题

参考:mplayer 下载地址环境虚拟机环境:ubuntu16.04mplayer:版本1.0rc3目标架构:ARMV7原计划是打算在开发板上使用 QT 播放视频,QT 的多媒体播放插件从 QT5 开始使用的是 gstreamer。在 PC 上通过 QT + gstreamer 播放视频流畅无卡顿。但在我所使用的嵌入式板卡上就会有明显的卡顿现象。不得以,只能移植 mplayer 来进行播放视频。实测播放同样的视频会比 QT + gstreamer 流畅,但也存在一些问...

2022-01-25 11:43:19 907 1

原创 tslib 交叉编译

参考:tslib 下载地址环境:ubuntu16.04(虚拟机)tslib 版本:1.21目标架构:ARM1:交叉编译进入tslib 解压目录,执行 ./autogen.sh 来生成 Makefile 。需要在虚拟机中安装 autoconf、 automake、 libtool 工具。执行 configure 脚本配置编译属性,我写的如下,仅供参考。 1 #!/bin/bash 2 ./configure \ 3 -prefix=$(pwd)/arm-tsli

2022-01-23 18:59:30 1163

原创 QT 交叉编译 ARM / CSKY

参考:QT 下载地址环境:ubuntu16.04(虚拟机)QT版本:qt-everywhere-src-5.12.9运行架构:ARMV7 / CSKY 下文记录的交叉编译的目标运行架构为 ARMV7,同时也实验过 CSKY 架构,CSKY 架构的交叉编译过程大致一致,些许不同会在文中提出。1:修改 qmake.conf 文件解压 QT 源码包后,其中会包含许多功能包,最基本也是最核心的 qtbase 包肯定是要交叉编译的。首先需要修改或新增 qm...

2022-01-23 17:27:46 3698

原创 linux 制作 ext2 格式根文件系统镜像

参考: https://blog.csdn.net/zgtzqzg2020/article/details/109848251https://blog.csdn.net/zgtzqzg2020/article/details/109848251嵌入式烧写 uboot, kernel, rootfshttps://blog.csdn.net/qq_41867145/article/details/121701728文章内容和参考项中第一篇博客内容相似,只是在其基础上的补充制作 ex...

2022-01-20 11:27:54 2655

原创 QT QProcess 使用及实时输出回显

环境:QT5.6.3 linux 环境在 QT 程序执行时,若想调用其外部的可执行文件。就可以使用 QProcess 类。使用很简单,手册中都有使用例子,但我在使用过程中,关于接管可执行程序中的打印输出功能,还是遇到一些问题,记录如下:在嵌入式中,一般要执行的程序都会有打印输出的功能。当在 QT 中使用 QProcess 类去调用这个内部包含打印输出的程序后,就会接管其打印输出的信息。然后可以通过读取接管的信息,再搭配 textBrowser 这种控件,就可以做到...

2021-12-15 19:26:48 2983 1

原创 linux 挂载 SD 卡

最近需要将板载 rootfs 镜像中的某个可执行文件提取到电脑上。利用 SD 卡可以做到。下面的命令对 EMMC 也适用主要思路是在 rootfs 起来之后通过 mount 命令去挂载 SD 卡的某分区到指定位置,然后复制需要的文件到这个指定位置。再使用 umount 命令解挂 SD 卡。这样,需要的东西就在 SD 卡里面了。在挂载过程中,遇到很多问题,总结步骤如下:1:确保 SD 卡插上后能识别,也就是终端有打印,否则,可能是硬件原因,也有可...

2021-12-13 19:57:27 10659

原创 嵌入式烧写uboot,kernel,dtb,rootfs

目前一般都是使用tftp的方式来加载kernel和设备树,但其实也可以通过nfs来加载,优点就是加载过程更加稳定,由于nfs有一定程度的重连机制,所以在加载过程中由于网络导致的数据错误并不会像tftp一样无法处理。缺点就是速度上相较于tftp会慢许多。这里直接介绍一下加载的具体命令格式:

2021-12-03 17:41:58 1533

原创 LCD 屏幕显示内核打印信息

参考:The Linux Kernel documentation(可能会失效)要想在 LCD 屏幕上显示内核的打印信息,需要确保以下三点1:设备树或者 u-boot 中要去指定 bootargs 的 console 参数。在官网文档描述中,console 是可以多次指定的。eg:bootargs = "console=tty1 console=ttyS0......"上述 tty1 是 LCD 屏幕在 /dev 下的节点名,需要根据实际情况来上述 ttyS0 是串口的节点,需要根据

2021-12-02 15:54:14 1821

原创 QT字体显示

环境: QT 5.631:字体显示大小问题现象在不同分辨率的 LCD 屏幕上进行字体的显示时,会出现大小不一的情况。通常在高分辨率的屏幕上正常大小的字体放到低分辨率屏幕上显示就会看着很小。解决方法记录: 无论是 QLable 控件,各种 button 控件等等,所显示的字体都可以通过 setFont 函数去指定设置好的 QFont 对象。 从而去改变所显示文本的属性 Qt中的字体 QFont 定义字体大小是有两种方式,一...

2021-12-01 14:45:08 1009

原创 uboot,kernel,rootfs之间的关系

目录ubootuboot-SPLlinux kerneldtsrootfsubootU-Boot是一个主要用于嵌入式的引导加载程序,全称为 Universal Boot Loader 。可以想象成 Windows 上的 BIOS 。linux 系统启动时就必须要有一个 bootloader 程序,这段程序会先进行 DDR 等外设的初始工作。然后根据配置将 linux kernel 从指定的 flash 设备(QSPI Flash, SD,...

2021-11-27 16:14:31 7228

原创 STM32启动文件和链接脚本

铺垫sp:栈指针,栈由程序分配,函数的参数传递,存储局部变量,在中断等异常产生时保存处理器状态和寄存器数值。都需要 SP 指引,才能从正确的地址空间取出正确的数据来确保程序执行。在 cortex-M3\4 中,R13 为栈指针。物理上存在两个栈指针,分别是主栈指针 MSP,进程栈指针 PSP。在复位后或处理器处于处理模式时,其 MSP 会被处理器选择使用。大多数情况下,若应用程序不需要嵌入式 OS, 那么 PSP 没必要使用。PSP 的初始值未定义,而 MSP 的初始值则需要在复位流...

2021-09-24 20:02:20 541

原创 linux下STM32开发环境搭建

linux环境下开发STM32

2021-08-27 22:36:01 8871 4

原创 STM32--ADC

平台:STM32F103C8T6最小系统板STM32CUBEMX-V6.1.2-1.8.4版本的F1固件包

2021-06-15 11:44:00 420

原创 STM32CUBEIDE打印浮点数问题

IDE不像MDK5那样默认就可以使用串口输出浮点数。解决办法:右键你的工程,在最下面点击properties 在弹出来的框中点击C/C++ Build 下拉框 在下拉框中点击 Settings 在弹出来的框中最底部找到 Miscellaneous 并点击 在other flags 中点击图标 输入 -u_printf_float ,然后点击ok 最后点击 Apply and close,就可以使用串口打印浮点数了。...

2021-04-21 19:40:21 1657

原创 STM32CUBEIDE配置FreeRTOS

环境:STM32CUBEIDE 版本1.02STM32103C8T6最小系统板F1,1.8.0 版本固件包新建工程,选择芯片,不多做赘述 RCC中选择时钟源为 Crytal/Ceramic Resonator SYS 中Debug 选择为 serial Write,这不很重要,若选择NO debug 则在烧写一次程序后,芯片会锁住变砖。若不小心变砖了,参考这篇文章入口。 SYS 中 Timebase 不能选择为 systick ,因为FreeRTOS 会使用systick 作为时钟.

2021-04-10 20:17:44 2784

原创 STM32串口下载程序

若在使用STM32CUBEMX 生成代码的时候,若配置SYS->Debug 为 No Debug,那么在烧写一次程序后STM32就会变砖,这个时候可以通过 串口下载一次程序来 解锁通过USB转串口将电脑连接到STM32 的 USART1 设置BOOT0 为高电平,BOOT 1 为低电平 ,代码将从ROM区启动,上电都会运行Bootloader,在此过程中可以实现IAP程序的更新,一般通过USART 进行更新 打开串口下载程序的软件,以FlyMcu 为例。配置好之后,点击开始编程。 ...

2021-04-10 19:57:17 928

原创 linux常用命令

常用命令Linux进入root权限的办法

2021-01-20 15:03:47 74

原创 IIC-1602驱动

硬件:STM32103C8T6、LCD1602(带转接板)软件:STTM32MX、HAL库、硬件IICCUBEMX的配置很简单,但是注意要在SYS-Debug中选择调试方式,不然会出现下载一次程序后板子变成砖的情况。配置硬件IIC也很简单,按照如下配置即可,然后生成代码:生成的代码中有一项需要注意的,切记,切记,在调用 HAL_I2C_Master_Transmit 这个函数写IIC-1602的时候,第二个参数是目标设备地址,就是我们使用的1602的地址。这个按具体情况而定。..

2020-11-11 13:03:41 1333 4

原创 STM32+ESP8266获取网络时间和天气

先给出两个可以获取天气和时间的网站https://www.seniverse.com/docs 可以获取天气http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&HTTP/1.1可以获取时间接下来简单说说怎么通过AT指令的方式去获取天气及时间信息...

2020-10-04 21:17:50 12049 6

原创 SRAM数据保存时间

在用原子哥标准库版本跑SRAM例程,没有问题,SRAM容量识别出来是1024k 而再用原子哥HAL版本跑SRAM历程,就出现了问题。读出来的SRAM容量永远只有4K,将两个例程再三比对,发现在SRAM数据保存时间处存在差异FSMC_ReadWriteTim.DataSetupTime=0x08; 标准库版本的将这个时间设置的长一些。后来在HAL库中将其数据保存时间该长一些,问题就解决了。 FSMC_DataSetupTime,控制FSMC的速度,越大越慢 但某些玄学原因,...

2020-09-23 16:42:47 608

原创 HAL库_RTC定时器时间卡住

在使用HAL库驱动RTC的时候,遇到过一个BUG,那就是读出来的时间没有变化,后来找到原因。 那就是在读取RTC时间的时候必须日期和时间一起读,且最好保证先读时间,再读日期。在HAL_RTC_GetDate 这个函数中有如下注释:*@noteYoumustcallHAL_RTC_GetDate()afterHAL_RTC_GetTime()tounlockthevalues*inthehigher-ordercalendarshadow...

2020-09-23 15:41:46 870

原创 STM32--SPI

最近做个项目,用到了SPI,遇到一些问题。 SPI,四根线,MISO,MOSI,SCK,和NSS,这其中NSS用起来最麻烦。NSS是片选线,是用于选择从器件的引脚,可让SPI主器件与从器件进行单独通信,从而避免数据线上的竞争。问题1:从机发送数据给主机 要知道,SPI主机发数据,从机去收。但是从机发数据,主机可以不理会。因为主机控制着SCK线,从机若想要发送数据,只能去通知主机来“读”。怎么通知? 从机若有数据要发送给主机,可以用一根 INT 线来通知,拉低...

2020-09-03 18:17:39 2352 1

原创 FreeRTOS_vApplicationGetIdleTaskMemory

voidvTaskStartScheduler(void){BaseType_txReturn;/*Addtheidletaskatthelowestpriority.*/#if(configSUPPORT_STATIC_ALLOCATION==1){StaticTask_t*pxIdleTaskTCBBuffer=NULL;StackType_t*pxIdleTaskStackBu...

2020-07-31 20:49:27 5142

原创 STM32--bxCAN2

STM32 参考手册中提到:bxCAN 控制器为应用程序提供了 28个位宽可变的、可配置的过 滤器组(0~28))(103只有14个)每个过滤器组的位宽都可以独立配置。可以配置成 16 位或者 32 位。过滤器组还可配置为屏蔽位模式或标识符列表模式。每个过滤器组x由2个32位寄存器,CAN_FxR1和 CAN_FxR2组成先看一个过滤器:如图这里的ID并不是发送数据帧里面的ID,此ID非彼ID,硬件上属于不同的register,这里的ID就是你需要去设置来达到你想要过滤接收某个数据ID的一串

2020-07-28 17:21:33 425

原创 CAN_总线基础二

目录1:CAN帧种类介绍:2:数据帧3:遥控帧4:DLL_错误检测5:CAN_位时序6:同步参考:https://blog.csdn.net/CWLonger/article/details/106768843?biz_id=102&utm_term=CAN%E4%BD%8D%E5%A1%AB%E5%85%85&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~defa

2020-07-28 17:02:01 1041

原创 CAN_总线基础一

目录1:CAN的由来:2:CAN的协议标准:3:CAN的物理层特征1:CAN的由来:德国Bosch公司开发CAN总线的最初目的是解决汽车上数量众多的电子设备之间的通信问题以及减少电子设备之间数量繁多的信号线束,于是设计了一个单一的网络总线,使得所有的外围电子控制单元可以挂接在该总线上。2:CAN的协议标准:2.1:ISO 11898 是CAN 总线规范,对应的是OSI 模型物理层和数据链路层,对于物理层而言,定义了CAN 总线信号在双绞线的电压形式;对于数据链路层而言,

2020-07-28 16:36:47 518

原创 Python中类属性和实例属性的区别

1:下面这段代码,通过对象.类属性,对象.实例属性,还是类.类属性都没有问题class experment(object): a = 1 # 此处为类属性 def __init__(self, value): self.b = value #此处为实例属性 def fuc(self): print(self.b)e1 = experment(100) #创建对象print(e1.a)print(e1.b)print(exper.

2020-07-12 20:11:45 1845 3

原创 Phython 数据类型

1:str(字符串)字符串是Python中最常用的数据类型,我们一般使用引号来创建字符串,创建字符串很简单,只要为变量分配一个值即可...

2020-06-30 15:29:20 729

原创 STM32--bxCAN1

1:CAN简介CAN是Controller Area Network,是一种串行的通信协议,有两标准:ISO11898、ISO11519-2,其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为123Kbps以下的低速通信标准CAN有很多优点,比如多主控制,速度快,距离远,具有错误检测,恢复,连接节点多等功能。所以CAN协议特别适合工业过程监控设备的互联讲下ISO11898标准,物理层特征如下CAN控制器根据CAN_L和C

2020-06-07 21:19:40 616

28BYJ48步进电机 .C .H文件

基于STM32F1(HAL库)的28BYJ48步进电机的.C.H文件,可以设置运行方式(四相四拍\八拍),转动角度,转动方向,转动速度。

2021-05-17

SR_04 .C .H文件

基于STM32F1(HAL库)的SR_04超声波模块 .C .H文件,亲测可用

2021-05-17

OLED .C .H文件

基于STM32F1(HAL库)的 OLED .C .H文件,亲测可用,可显示中文,IIC通信

2021-05-17

NRF24L01 .C .H文件

基于STM32F1(HAL库)的NRF24L01 .C .H文件,亲测可用

2021-05-17

DHT11 .C .H文件

基于STM32F1(HAL库)的DHT11 .C .H文件,亲测可用

2021-05-17

JQ8900语音模块.C.H文件

基于STM32F1(HAL库)的JQ8900 .C .H文件

2021-05-17

搜狗输入法linux版.7z

不知是那个版本的linux版本的搜狗输入法,但亲测ubuntu16.4可用 具体安装步骤参考 https://blog.csdn.net/u013894834/article/details/60357071?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161716752916780271533650%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161716752916780271533650&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-60357071.first_rank_v2_pc_rank_v29&utm_term=ubuntu16.04%E5%AE%89%E8%A3%85%E6%90%9C%E7%8B%97%E8%BE%93%E5%85%A5%E6%B3%95&spm=1018.2226.3001.4187

2021-03-31

IIC_LCD1602 STM32-HAL驱动程序-硬件IIC

STM32F103C8T6驱动LCD(带PCF8574转接板,IIC驱动),利用CUBEMAX生成,HAL库硬件IIC.

2020-11-11

cjosn解析函数库.7z

C语言实现对Cjosn数据的解析,在ESP8266获取网络时间的时候可以用此对接受到的数据进行解析。

2020-10-04

STM32标准库自定义串口打印 log.7z

STM32的串口打印,支持不定长参数,调试时用,可以通过一个宏定义关闭所有的调试信息,方便调试。******************************/

2020-08-25

STM32 F1 AD原理图,元件库封装.7z

STM32F1 AD封装库大全,集合了几乎所有的STM32F1的原理图,PCB封装**********************

2020-07-30

资料-python从0开始学编程.7z

程序员py笔记,很详细

2020-06-26

OV2640资料.7z

OV2640摄像头模块资料,英文的

2020-06-17

AS608光学指纹模块程序

AS608光学指模块程序,用51写的,亲测在51单片机上可以实现搜索指纹,删除指纹,和添加指纹**************************************/

2020-06-14

CAN通信.7zCAN通信入门教程

CAN同行基础知识介绍,中文版本,CAN通信帧介绍,位速率、位时间啥的。

2020-06-07

simulation usart.7z

用单片机定时器模拟串口发,用外部中断模拟串口收。适合在串口资源不够的单片机上做虚拟串口,实测可行

2020-05-13

IIC 1602.7z

一个.C 、.H文件,用于IIC的1602显示屏。并且复位后不会乱码。89C52上完美运行。移植到其它单片机上,根据晶振修改相应的延时即可。

2020-04-30

VC++6.0软件安装包

解压后直接运行安装,安装包只有30M,win7,10都可以安装运行 /***********************************************************************/

2019-04-08

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

TA关注的人

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