自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Git 使用教程

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

2024-07-31 23:03:24 885

转载 第 3 章 深入探究文件 I/O

竞争冒险不但存在于 Linux 应用层、也存在于 Linux 内核驱动层。操作共享资源的两个进程(或线程),其操作之后的所得到的结果往往是不可预期的,因为每个进程(或线程)去操作文件的顺序是不可预期的,即这些进程获得 CPU 使用权的先后顺序是不可预期的,完全由操作系统调配,这就是所谓的竞争状态。

2024-07-31 22:44:09 908

原创 第 2 章 文件 I/O 基础

文件 I/O(Input、Outout),文件 I/O 指的是对文件的输入/输出操作,说白了就是对文件的读写操作。Linux 下一切皆文件,文件作为 Linux 系统设计思想的核心理念,在 Linux 系统下显得尤为重要,所以对文件的 I/O 操作既是基础也是最重要的部分。

2024-07-28 22:26:59 1046

原创 第 1 章 应用编程概念

系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入内核的入口。不止 Linux 系统,所有的操作系统都会向应用层提供系统调用,应用程序通过系统调用来使用操作系统提供的各种服务。通过系统调用,Linux 应用程序可以请求内核以自己的名义执行某些事情,譬如打开磁盘中的文件、读写文件、关闭文件以及控制其它硬件外设。通过系统调用 API,应用层可以实现与内核的交互。

2024-07-28 22:19:48 418

原创 第 3 章 处理数据

C++的基本类型分为两组:一组由存储为整数的值组成,另一组由存储为浮点格式的值组成。整型之间通过存储值时使用的内存量及有无符号来区分。整型从最小到最大依次是:bool、char、signed char、unsigned char、short、unsigned short、int、unsigned int、long、unsigned long 以及 C++11 新增的 long long 和 unsigned long long。还有一种 wchar_t 类型,它在这个序列中的位置取决于实现。

2024-07-28 16:29:14 1052

原创 第 2 章 开始学习 C++

类是 C++面向对象编程(OOP)的核心概念之一。什么是类?类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息和可对数据执行什么操作。数据格式及其用法,而对象则是根据数据格式规范创建的实体。两个类cin类对于库函数,在使用之前必须提供其原型,通常把原型放在 main()定义之前。一个函数头 + 花括号的函数体。int count;"

2024-07-28 10:34:04 1079

原创 第 1 章 预备知识

C++继承了 C 语言高效、简洁、快速和可移植性的传统。C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂程度不断提高的现代编程任务而设计的。C++的模板特性提供了另一种全新的编程方法——泛型编程。C++融合了 3 种不同的编程方式:C 语言代表的过程性语言、C++在 C 语言基础上添加的类代表的面向对象语言、C++模板支持的泛型编程。2、

2024-07-27 22:47:45 937

原创 ARM工作模式及寄存器资源

ARM处理器7种工作模式(特权模式 特权模式异常模式)

2024-02-26 23:15:56 2642 1

原创 Linux学习之ARM(IMX6U)裸机篇之汇编LED驱动实验

arm-linux-gnueabihf-objcopy 格式转换 arm-linux-gnueabihf-objcopy 更像一个格式转换工具,我们需要用它将 led.elf 文件转换为leds.bin 文件。arm-linux-gnueabihf-ld 用来将众多的.o 文件链接到一个指定的链接位置。然后用交叉编译器 arm-linux-gnueabihf-gcc 编译文件 将.s文件编译成.o文件。用vscode打开文件夹1_leds,然后在1_leds工作区下建立leds.s汇编文件。

2024-02-19 00:05:50 541 1

原创 gcc编译过程和Makefile基础

这条规则的目标是 main,main.o、input.o 和 calcu.o 是生成 main 的依赖文件,如果要更新目标 main,就必须先更新它的所有依赖文件,如果依赖文件中的任何一个有更新,那么目标也必须更新,“更新”就是执行一遍规则中的命令列表。模式规则中,至少在规则的目标定定义中要包涵“%”,否则就是一般规则,目标中的“%”表示对文件名的匹配,“%”表示长度任意的非空字符串,比如“%.c”就是所有的以.c 结尾的文件,类似与通配符,a.%.c 就表示以 a.开头,以.c 结束的所有文件。

2024-02-17 19:01:40 1598 1

原创 Linux常用命令

rmdir -p [directory_1]/[directory_2]/[directory_3] 递归删除空目录[directory_1]/[directory_2]/[directory_3]-type:查找某一类型的文件,诸如:f-普通文件、d-目录、c-字符文件、b-块设备、p-管道文件、l-符号连接。-mtime -n +n:按照文件的修改时间来查找,-n文件更改时间距现在n天以内,+n文件更改时间距现在n天以前。当使用 sudo 命令的时候是需要输入密码的,这里要注意输。

2024-02-17 17:00:17 1665 1

原创 FreeRTOS的任务挂起与恢复

调度器没有运行,判断挂起任务数是否等于任务总数,是:当前控制块赋值为。在运行,更新下一次阻塞时间,防止被挂起任务为下一次阻塞超时任务。无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复。如果挂起的是任务自身,且调度器正在运行,需要进行一次任务切换。是:就会将该任务在挂起列表中移除, 将该任务添加到就绪列表中。挂起:挂起任务类似暂停,可恢复;删除任务,无法恢复。将待挂起任务的任务状态列表项插入到挂起态任务列表末尾。通过传入的任务句柄,判断所需要挂起哪个任务,,则代表挂起任务自身(当前正在运行的任务)

2024-02-05 11:18:24 1015 1

原创 FreeRTOS的任务创建和删除

描述动态方式创建任务静态方式创建任务删除任务动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS从FreeRTOS管理的堆中分配静态创建任务:任务的任务控制块以及任务的栈空间所需的内存,需用户分配提供pdPASS任务创建成功任务创建失败动态创建任务步骤1、将宏配置为12、定义函数入口参数3、编写任务函数此函数创建的任务会立刻进入就绪态,由任务调度器调度运行动态创建任务函数内部实现1、申请堆栈内存任务控制块内存2TCB。

2024-02-05 10:31:54 933 1

原创 FreeRTOS移植

FreeRTOS官网:https://www.freertos.org/对FreeRTOS的功能进行配置和裁剪,以及API函数的使能等。建立Middlewares文件夹存放FreeRTOS源码。将FreeRTOS源码添加至基础工程、头文件路径等。修改Systick中断、SVC中断、PendSV中断。添加FreeRTOSConfig.h 配置文件。source文件夹下是FreeRTOS源码。配置FreeRTOS中可选的API函数。完成FreeRTOS的功能配置和裁剪。PendSV宏定义、SVC宏定义。

2024-02-05 10:00:33 431 1

原创 FreeRTOS基础知识

3、Task3运行过程中(还不到一个时间片),Task3阻塞了(系统延时或等待信号量等),此时直接切换到下一个任务Task1。3、Task3运行过程中,Task3阻塞了(系统延时或等待信号量等),此时就绪态中,优先级最高的任务Task2执行。1、首先Task1在运行中,在这个过程中Task2就绪了,在抢占式调度器的作用下Task2会抢占Task1的运行。2、Task2运行过程中,Task3就绪了,在抢占式调度器的作用下Task3会抢占Task2的运行。

2024-02-04 17:16:29 886 1

原创 数据结构线性表之双向链表

双向链表也叫双链表,是链表的一种,它的每个数据。

2024-02-04 15:09:45 395 1

原创 在易兆微YC1136上调试FM17580模块

最近在做NFC的读卡写卡,第一次使用复旦微的FM17580这个芯片,下面分享一下我的调试过程首先配置硬件和底层通信接口函数主控芯片YC1136通过SPI的方式与FM17580通讯。YC1136再用一个IO口来控制FM17580的NRST引脚来控制FM17580的硬件复位。下面是配置SPI,通过SPI给FM17580发送命令、配置寄存器以及硬件复位的函数void SPI_Config(void){ GPIO_SetOutput(GPIO_39); GPIO_SetOutput

2024-02-02 17:17:20 2085 1

原创 数据结构线性表之单链表

单链表是一种链式存取的数据结构。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。对于链表的每一个结点,我们使用结构体()进行设计,其主要内容有:其中,DATA数据元素,可以为你想要储存的任何数据格式,可以是数组,可以是int,甚至可以是结构体(这就是传说中的结构体套结构体)

2024-01-28 09:32:43 360

原创 数据结构线性表之顺序表

线性表是包含若干数据元素的一个线性序列记为: L=(a0, ...... ai-1, ai, ai+1 ...... an-1)L为表名,ai (0≤i≤n-1)为数据元素;n为表长,n>0 时,线性表L为非空表,否则为空表。

2024-01-27 12:23:39 340

原创 数据结构基础

数据(Data)是信息的载体,是可以被计算机识别,存储并加工处理的描述客观事物的信息符号的总称。数据不仅仅包括了整形,浮点数等数值类型,还包括了字符甚至声音,视频,图像等非数值的类型。

2024-01-27 11:38:33 383

原创 PY32F071配置进入USB升级方式

由于普冉官方给的例程没有明确的进入USB程序的方式,于是我根据需求修改了官方的IAP升级程序。这里有两个程序,要先烧录IAP升级程序,然后才能用USB升级的方式烧写用户程序。如果没有按下按键,直接跳转到用户程序的地址,开始跑用户程序,如果按住按键再插USB,电脑端显示进入升级模式。根据原理图,PB12是一个按键,我们需要按下Triangle按键再上电进入升级模式。然后在keil中设置使用外部工具,添加工具路径,就可以在keil中直接点击下载。然后在IAP程序中写进入升级的方式。

2024-01-25 16:59:43 760 1

原创 普冉PY32F071移植FreeRTOS

首先建立工程文件夹,可以按照自己的风格和习惯建立自己的工程文件夹Drivers文件夹下存放官方固件库、官方BSP、启动文件、内核相关文件。Middlewares存放中间层驱动和代码如FreeRTOS,USB等。Output存放编译、链接产生的相关文件以及Hex文件。Project用于keil建立工程时存放路径。System存放系统相关的文件。User存放用户编写的代码。

2024-01-25 11:34:35 1343 2

原创 芯片产业链及ARM核介绍

CPU又叫中央处理器,其主要功能是进行运算和逻辑运算,内部结构大概可以分为控制单元、算术逻辑单元和存储单元等几个部分。按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等等。cpu厂家主要工作:机器码设计、主频、高速缓存(cache)、多核集成、硬件浮点运算、数据运算。功耗等。CISC: Complex Instruction Set Computer, 复杂指令集计算机;

2024-01-24 22:10:23 635 1

linux学习资料,linux应用编程,linux驱动

linux学习资料,linux应用编程,linux驱动

2024-08-07

分享学习资源RK3568学习指南

分享学习资源RK3568学习指南

2024-08-05

空空如也

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

TA关注的人

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