自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (9)
  • 收藏
  • 关注

原创 STM32简介

STM32命名规则。

2025-02-10 16:31:39 939

原创 Cotex-M系列介绍

ARM公司:只做内核设计和IP授权,不参与芯片设计。

2025-02-10 15:46:09 221

原创 单片机简介

电脑和单片机性能对比。

2025-02-10 15:24:14 1015 1

原创 设备树下的 LED 驱动实验

一、设备树 LED 驱动原理

2025-01-12 13:25:11 42

原创 Linux 设备树

设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等,如图所示:树的主干就是系统总线, IIC 控制器、 GPIO 控制器、 SPI 控制器等都是接 到系统主线上的分支。

2024-12-31 17:21:16 128

原创 Linux--新字符设备驱动实验

Linux 字符设备驱动开发的基本步骤,字符设备驱动开发重点是使用 register_chrdev 函数注册字符设备,当不再使用设备的时候就使用unregister_chrdev 函数注销字符设备,驱动模块加载成功以后还需要手动使用 mknod 命令创建设备节点。register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。

2024-12-31 16:05:00 147

原创 嵌入式 Linux LED 驱动开发实验

一、Linux 下 LED 灯驱动原理a)地址映射在编写驱动之前,我们需要先简单了解一下 MMU 这个神器, MMU 全称叫做 MemoryManage Unit,也就是内存管理单元。在老版本的 Linux 中要求处理器必须有 MMU,但是现在Linux 内核已经支持无 MMU 的处理器了。 MMU 主要完成的功能如下:①、完成虚拟空间到物理空间的映射。②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性。我们重点来看一下第①点,也就是虚拟空间到物理空间的映射,也叫做地址映射。首

2024-12-31 14:55:21 464

原创 Linux驱动开发--字符设备驱动开发

字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。Linux 应用程序对驱动程序的调用如图 所示:在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即可实。

2024-12-24 16:21:47 819

原创 IMX芯片启动方式

BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置。BOOT_MODE0 引脚,这两个引脚对应这 BOOT_MODE[1:0]。而 I.MX6U 有四个 BOOT 模式,这四个 BOOT 模式由 BOOT_MODE[1:0]来控制,也就是。其中 BOOT_MODE1 和 BOOT_MODE0 在芯片内部是有 100KΩ下拉电阻的,所以默认是。为例,当我们把 BOOT_CFG 的第一个开关拨到“ON”的时候,就相当于 BOOT_MODE1 引脚。

2024-12-23 10:13:28 195

原创 裸机按键输入实验

按键就两个状态:按下或弹起,将按键连接到一个 IO 上,通过读取这个 IO 的值就知道按。面几章我们都是讲解 I.MX6U 的 GPIO 作为输出使用,当 GPIO 连接按键的时候就要做为输入。关于 I.MX6U 的 GPIO 已经在第八章详细的讲解了,本章我们的主要工作就是配置按键。键是按下的还是弹起的。来控制开发板上的蜂鸣器,按一下 KEY0 蜂鸣器打开,再按一下蜂鸣器就关闭。所连接的 IO 为输入功能,然后读取这个 IO 的值来判断按键是否按下。

2024-12-22 19:12:51 62

原创 裸机蜂鸣器实验

来控制三极管 Q1 的导通,当 SNVS_TAMPER1 输出低电平的时候 Q1 导通,相当于蜂鸣器的正。极连接到 DCDC_3V3,蜂鸣器形成一个通路,因此蜂鸣器会鸣叫。通过一个 PNP 型的三极管 8550 来驱动蜂鸣器,通过 SNVS_TAMPER1 这个 IO。输出高电平的时候 Q1 不导通,那么蜂鸣器就没有形成一个通路,因此蜂鸣器也就不会鸣叫。有源蜂鸣器和无源蜂鸣器,这里的有“源”不是电源,而是震荡源,有源蜂鸣器内部带有震荡。来的,需要 2K-5K 的方波去驱动。

2024-12-22 16:58:34 71

原创 I.MX6U 启动方式详解

BOOT_MODE0 引脚,这两个引脚对应这 BOOT_MODE[1:0]。BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔。BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置。我们使用的是通过修改 BOOT_MODE[1:0]对应的 GPIO 高低电平。丝),一种是修改相应的 GPIO 高低电平。来选择启动方式,所有的开发板都使用的这种方式, I.MX6U 有一个 BOOT_MODE1 引脚和。

2024-12-20 17:09:27 201

原创 系统移植——文件系统

根文件系统一般也叫做 rootfs,那么什么叫根文件系统?看到“文件系统”这四个字,很多人,包括我第一反应就是 FATFS、 FAT、 EXT4、 YAFFS 和 NTFS 等这样的文件系统。在这里,根文件系统并不是 FATFS 这样的文件系统代码, EXT4 这样的文件系统代码属于 Linux 内核的一部分。Linux 中的根文件系统更像是一个文件夹或者叫做目录(在我看来就是一个文件夹,只不过是特殊的文件夹),在这个目录里面会有很多的子目录。根目录下和子目录中会有很多的文。

2024-12-19 16:11:30 42

原创 系统移植——Linux 内核顶层 Makefile 详解

Linux Kernel网上下载的版本很多NXP等有自己对应的版本。需要从网上直接下载就可以。

2024-12-19 15:56:14 149

原创 系统移植——U-Boot使用实验

Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了, bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核, bootloader 和 Linux 内核的关系。

2024-12-19 15:21:56 41

原创 裸机LED 灯实验

1、GPIO详解

2024-12-17 10:27:47 178

原创 ARM Cortex-A7 MPCore 架构

Cortex-A7 MPcore 处理器支持 1~4 核,通常是和 Cortex-A15 组成 big.LITTLE 架构的,Cortex-A15 作为大核负责高性能运算,比如玩游戏啥的, Cortex-A7 负责普通应用,因为 CortexA7 省电。Cortex-A7 本身性能也不弱,不要看它叫做 Cortex-A7 但是它可是比 Cortex-A8 性能要强大,而且更省电。

2024-12-16 17:46:37 833

原创 裸机开发概述

裸机开发是了解所使用的 CPU 最直接、最简单的方法,比如本教程使用的 I.MX6U,跟。STM32 一样,裸机开发是直接操作 CPU 的寄存器。Linux 驱动开发最终也是操作的寄存器,但。是在操作寄存器之前要先编写一个符合 Linux 驱动的框架。同样一个点灯驱动,裸机可能只需。要十几行代码,但是 Linux 下的驱动就需要几十行代码。

2024-11-21 13:52:41 65

原创 GCC 编译器,Makefile基础 cmake基础

c: 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。-o: 用来指定编译结束以后的输出文件名,如果不使用这个选项的话 GCC 默认编译出来的可执行文件名字为 a.out。-g: 添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编译的时候生成调试所需的符号信息。-O: 对程序进行优化编译,如果使用此选项的话整个源代码在编译、链接的的时候都会进行优化,这样产生的可执行文件执行效率就高。

2024-11-21 10:48:01 865

原创 C 主要函数解析

SEEK_SET: 文件开头SEEK_CUR: 当前位置SEEK_END:简言之:把stream指针移动到离文件开头100字节处;把stream指针移动到离文件当前位置100字节处;把stream指针退回到离文件结尾100字节处。

2024-10-11 18:14:48 504

原创 json 报文

otation(JavaScript 对象表示法)

2024-10-11 08:55:59 1056

原创 C++20主要特性

C++20 极大地丰富了C++语言,提供了更多的现代化编程工具和性能优化,使得C++成为一个更加强大和灵活的编程语言。其他改进: 还包括了其他一些小的语言改进和标准库增强,如对文件系统的支持、数学库的增强等。

2024-10-10 09:18:35 469

原创 C++ 11特性介绍

C++11 带来了许多强大的功能,提高了代码的可读性和性能,并使C++成为一个更现代化的编程语言。

2024-10-10 08:49:24 294

原创 QT类 QPushButton

是任何中最常用的控件。按下(点击)按钮来命令计算机执行某个操作。典型的按钮有“确定”、“应用”、“取消”、“关闭”、“是”、“否”和“帮助”。按钮显示文本标签,可以通过在文本中用和号(&)前缀来指定快捷键;还可以选择性地显示一个小图标。

2024-09-29 14:41:48 460

原创 C++ string

C++ 中,std::string 是用于处理字符串的标准库类。它提供了一系列成员函数和操作符,使得字符串的操作更加方便和灵活。

2024-09-27 14:48:27 501

原创 C++ VECTOR

在 C++ 中,是标准库提供的一个容器类,用于存储动态大小的元素序列(即"动态数组")。它提供了一系列成员函数和操作符,使得元素的访问、插入、删除等操作变得方便和高效。数组适用于大小固定且事先知道元素数量的情况下使用,尤其是数据集较小或需要静态分配内存的场景。vector适用于大小可变的情况,特别是需要动态增长或缩小的场景,并且具有更多的功能和灵活性。

2024-09-27 09:11:49 724

原创 Thread

一、thread类一、thread类创建线程使用std::thread类#include <thread> //必须包含<thread>头文件int main()return 0;在传递参数时,是以的,如果要传递一个左值可以使用std::ref和std::crefconst#include <thread> //必须包含<thread>头文件int main()//使用refreturn 0;

2024-09-25 09:51:50 908

原创 去除^M的方法

可惜,经过上面的处理以后,^M是不存在了,但是换行不成功。所有的东西都在一行上面,看着很费劲。确定 ^M是使用 "CTRL-V CTRL-M" 而不是字面上的 ^M。这个正则式将替换所有回车符前的 ^M为空($是为了保证^M出现在行尾)4、一些linux版本有 dos2unix 程序,可以用来祛除^M。输入 :set notextmode。2. 输入 :%s/^M//g。或 :set nobomb。3、vi: 用vi打开文件。

2024-09-25 08:50:17 924

原创 Linux文件系统

ext3 是在 ext2 的基础上发展起来的文件系统,完全兼容 ext2 文件系统,ext3 是一个日志文 件系统,ext3 支持大文件,ext3 文件系统的特点有如下: 高可靠性:使用 ext3 文件系统的话,即使系统非正常关机、发生死机等情况,恢复 ext3 文 件系统也只需要数十秒。ext4 文件系统是在 ext3 上发展起来的,ext4 相比与 ext3 提供了更佳的性能和可靠性,并且 功能更丰富,ext4 向下兼容 ext3 和 ext2,因此可以将 ext2 和 ext3 挂载为 ext4。

2023-08-17 13:59:32 256

原创 常用英文单词

Integrated Circults 集成电路。variable resistor 可变电阻器。voltage Nodes 电压节点。voltage source 电源。capacitor 电容器。diodes 二极管。Logic Gates 逻辑门。resistor 电阻器。inductor 电感器。batteries 电池。BJTs 双极性晶体管。

2023-08-17 13:38:05 343

原创 汇编语言----CPU指令

汇编主要指令

2023-08-15 14:17:45 467

原创 汇编语言--操作系统入门

操作系统,BSP前提,汇编语言

2023-08-15 14:06:17 328

原创 C++ 深拷贝和浅拷贝

浅拷贝:当编写一个类时,并且没有添加拷贝构造,此时系统会默认添加一个拷贝构造(浅拷贝)。浅拷贝是指:创建一个新对象时,把对象的初始属性都复制一份,若是存在引用类型,则拷贝的是其内存地址,当它的值发生改变时,另一个的值也会受到改变。深拷贝:深拷贝就是将对象从内存中完全拷贝出来,并且重新开辟一片空间来进行存放,当其中一个值发生改变时并不会影响另一个的值,两者互不影响。cout << "析构函数" << endl;cout << "析构函数" << endl;

2023-07-05 15:21:31 187

原创 OPENSSL简介

源码在ssl目录,有客户端(xx_clnt.c)、服务器(xx_srvr.c)、加密实现(xx_enc.c)、记录协议实现(xx_pkt.c)、METHOD方法(xx_meth.c)、双方握手方法(xx_both.c),以及对外函数(xx_lib.c)开源SSL安全工具,包含SSL协议实现,大量软算法(对称/非对称/摘要),非对称算法密钥生成,ASN.1编解码库、证书请求(pscs10) 编解码,数字证书、CRL编解码,OCSP协议,pkcs7标准实现和pkcs12个人数字证书格式实现等功能;

2023-07-05 14:28:02 2729

原创 AUTOSAR CP (文章 2)

autosar 学习笔记 2

2023-07-05 14:02:52 587

原创 Linux shell mkfs.ext4命令参数使用

简单shell命令

2023-07-03 17:44:02 4037

原创 C++11 map

C++ map

2023-03-11 16:55:22 715

原创 C++ 11 pair

C++ 11 功能

2023-03-11 16:29:22 454

原创 C++11 tuple

C++11 部分功能

2023-03-11 15:07:51 470

原创 动态库、静态库的编译,以及使用

动态库,静态库的使用

2022-07-28 15:11:06 917

TBOX 项目 can功能分享

TBOX 项目 can功能分享

2022-03-23

TBOX CALL项目流程

TBOX xcall项目流程解析

2022-03-23

示波器分享,基本示波器的使用和说明。

示波器分享,基本示波器的使用和说明。

2022-02-22

原理图入门分享,基本硬件图片的使用和说明。

原理图入门分享,基本硬件图片的使用和说明。

2022-02-22

驱动实例资源.zip,驱动源码实例,从基础到复杂一步步的进步

驱动开发20例,让您从hello word到驱动高手。

2021-12-12

C++ 两个大数相加.7z

几个小函数,为初学者提供一点点帮助,希望孩子们路越走越好。

2021-11-30

韩语辅音读音与写法.7z

韩语辅音读音与写法附带音频文件,韩语初学者可以使用。

2021-11-27

辅音读音与写法.docx

韩语辅音读音与写法

2021-11-27

韩语workshop3读法和写法.7z

韩语-韩语初学者入门-音频发音

2021-11-17

空空如也

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

TA关注的人

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