自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DS18B20

DS18B20

2024-02-26 16:25:51 866

原创 QT-文件

QDataStream::ByteOrder枚举类型常量。

2023-07-17 10:18:20 640

原创 组件-utest

utest组件

2022-11-04 16:21:27 1331 1

原创 组件-ulog

注:关闭使能后,断言的日志将不会被编译到 ROM 中。

2022-11-03 14:04:26 2639 1

原创 内核-内核移植

注:PRIMASK:1 bit寄存器。注:此汇编代码会设置 PendSV 异常优先级为最低优先级,并将MSP设置为SCB_VTOR(向量表放的第一个元素是sp)线程环境下,如果调用 rt_hw_context_switch() 函数,那么可以马上进行上下文切换;1)使用 MRS 指令将 PRIMASK 寄存器的值保存到 r0 寄存器里。而在中断环境下,需要等待中断处理函数完成之后才能进行切换。2)使用 “CPSID I” 指令关闭全局中断。NVIC_PENDSV_PRI:内核寄存器。

2022-10-22 20:34:51 1833

原创 内核1-介绍和内存分布

内核是一个操作系统的核心,是操作系统最基础也是最重要的部分。它负责管理系统的线程、线程间通信、系统时钟、中断及内存等。

2022-10-14 16:22:00 547

原创 I/O 设备模型-2

旧版本接收缓冲区统一为 RT_SERIAL_RB_BUFSZ ,旧版本没有发送缓冲区的设置。

2022-10-10 11:14:17 893

原创 组件-FinSh组件

【代码】组件-FinSh组件。

2022-10-08 10:57:04 1024

原创 I/O 设备模型-3

调用设备驱动层注册的control()函数,cmd为RT_DEVICE_CTRL_WDT_STOP。调用设备驱动层注册的control()函数,cmd为PWM_CMD_SET_PERIOD。调用设备驱动层注册的control()函数,cmd为PWM_CMD_SET_PULSE。调用设备驱动层注册的control()函数,cmd为PWM_CMD_SET。调用设备驱动层注册的control()函数,cmd为PWM_CMD_GET。最终会调用设备驱动层注册的control()函数。

2022-10-06 16:40:34 670

原创 I/O 设备模型-1

RT-Thread 提供了一套简单的 I/O 设备模型框架,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。I/O 设备管理层实现对设备驱动程序的封装。应用程序通过 I/O 设备层提供的标准接口访问底层设备,设备驱动程序的升级、更替不会对上层应用产生影响。这种方式使得设备的硬件操作相关的代码能够独立于应用程序而存在,双方只需关注各自的功能实现,从而降低了代码的耦合性、复杂性,提高了系统的可靠性。设备驱动框架层。

2022-09-27 13:28:02 1543

原创 Device IPC-2

pipe基于设备框架,基于ringbuffer实现?

2022-09-24 16:37:05 660

原创 Device IPC-1

该接口向 rb 指向的 ringbuffer 里写入数据块,数据块的起始地址为 ptr,数据块大小为 length,并返回写入的字节数。不过若写入时 ringbuffer 已满,该接口会继续写入剩余的数据,即用新的数据覆盖旧的数据。

2022-09-24 13:41:03 853

原创 Rt-Thread 6-空闲线程

rt_list_isempty的原型为“int rt_list_isempty(const rt_list_t *l)”。因此,编译器有充分的理由在rt_thread_idle_excute中不更改rt_thread_defunct列表,从而将“while”循环优化为“if”循环。所以在这里添加volatile限定符。3)如果是静态线程对象,脱离对象后直接返回。关中断为什么在二处之间,而不是循环外说明。

2022-09-14 11:19:54 958

原创 Rt-Thread 5-调度

【代码】Rt-Thread 5-调度。

2022-09-13 16:46:35 609

原创 内核5-线程

线程结构体rt_thread//线程结构体struct rt_thread{ char name[RT_NAME_MAX]; /* 线程名字 */ rt_uint8_t type; /* 对象类型 */ rt_uint8_t flags; /**< thread's flags

2022-09-13 16:16:09 962

原创 内核4-启动流程与组件初始化

rtthread_startup函数(位于components.c)int rtthread_startup(void){ rt_hw_interrupt_disable(); //关中断 rt_hw_board_init(); //板级初始化,在该函数中初始化堆 rt_show_version(); //显示版本 rt_system_timer_init(); //系统定时器系统初始化 rt_system_scheduler_init(); /...

2022-08-31 14:07:47 583

原创 内核6-时钟管理

软件定时器:timer线程调用回调,rt_soft_timer_list,rt_thread_timer_entry线程硬件定时器:ISR调用回调,rt_timer_list停止:

2022-08-20 16:48:46 1047

原创 linux网络编程 - socket编程

目录1、头文件2、socket()函数3、bind()函数3.1、示例4、listen()函数5、accept()函数6、connect()函数7、read()函数8、recv()函数9、write()函数10、send()函数11、sendto()函数12、recvfrom()函数13、close()函数14、IP 地址格式转换函数14.1、inet_aton、 inet_addr、 inet_ntoa 函数14.1.1、inet_ato

2022-06-02 13:56:24 1970 1

原创 linux网络编程1-基础知识

目录1、OSI 七层模型2、TCP/IP模型3、数据的封装与拆封4、IP 地址4.1、IP 地址的编址方式4.2、点分十进制4.3、网络地址和主机地址4.4、IP 地址的分类4.4.1、A类地址4.4.2、B 类地址4.4.3、C类地址4.4.4、D类地址4.4.5、E类地址4.5、特殊的 IP 地址4.5.1、直接广播地址4.5.2、受限广播地址4.5.3、多播地址4.5.4、环回地址4.5.5、0.0.0.0 地址5、T

2022-06-01 18:21:57 623

原创 linux IPC-信号量

信号量信号量是一种用于提供不同进程间或一个从给定进程的不同线程间同步手段的原语。Posix有名信号量 使用Posix IPC名字标识 Posix基于内存的信号量 存放在共享内存区 System V信号量 在内核中维护 操作创建 等待 挂出 信号量分类Posix 二值信号量 其值为0或1的信号量 计数信号量 其值在 0和某个限制值 System V 计数信号量集 一个或多个信号量(构成一个集合),其中每个都

2022-05-11 14:58:05 2802

原创 linux IPC-共享内存区

1、简介优点 共享内存区是IPC形式中最快的。当内存区映射到共享它的进程的地址空间,这些进程间数据的传递就不再涉及内核(进程不再通过执行任何热进入内核的系统调用来彼此传递数据)。 缺点 往共享内存区存放信息和从众取走信息的进程间通常需要某种形式的同步。 注:对于管道、FIFO和消息队列,进程要交换信息时,这些消息必须经由内核传递。换句话说,数据复制在内核和进程间进行,往往开销很大(必纯粹在内核中或单个进程内复制数据的开销大)。通过让进程共享一个内存区,可以绕过上述问题,所有说共享内存

2022-05-11 13:45:40 344

原创 linux C编程14-定时任务crond

1、输出管理1.1、不输出内容*/1 * * * * XXX.sh &>/dev/null 2>&11.2、将正确和错误日志都输出到文件*/1 * * * * XXX.sh > XXX.log 2>&1 &1.3、只输出正确日志到文件*/1 * * * * XXX.sh > XXX.log1.4、只输出错误日志到文件*/1 * * * * XXX.sh 2> XXX.log &注:路径最好都是绝.

2022-05-09 17:59:53 604

原创 linux C编程12-线程

线程属性名称 描述 detachstate 线程的分离状态属性 guardsize 线程栈末尾的警戒缓冲区大小(字节数) stackaddr 线程栈的最低地址 stacksize 线程栈的最小长度(字节数) pthread_attr_init()函数初始化一个线程属性。#include <pthread.h>int pthread_attr_init(pthread_attr_t *attr);参数 attr:线...

2022-05-09 17:42:59 665

原创 Framebuffer应用编程

fb应用编程

2022-03-24 14:45:43 1504

原创 input驱动框架应用编程

input驱动框架应用编程

2022-03-22 17:48:40 872

原创 tslib应用编程

tsliib库应用编程

2022-03-22 16:13:35 3730

原创 QT按键组件

QT按键组件

2022-02-11 16:53:53 1517

原创 fw_printenv/fw_setenv

1、编译fw_printenv工具make ARCH=xxx CROSS_COMPILE=xxx- env注:生成的工具位于/tools/env/2、创建软链接fw_setenv"ln -s fw_printenv fw_setenv"3、修改配置文件fw_env.configinclude/configs/xxx.h或者u-boot.cfg中 CONFIG_ENV_OFFSET 偏移 CONFIG_ENV_SIZE 大小 注:配置文件路径需要放到目标板子..

2022-02-09 15:01:16 921

原创 linux驱动-定时器

1、设置系统节拍率在编译 Linux 内核的时候可以通过图形化界面设置系统节拍率。-> Kernel Features -> Timer frequencyCONFIG_HZLinux 内核会使用 CONFIG_HZ 来设置自己的系统时钟。打开文件 include/asm-generic/param.h#undef HZ#define HZ CONFIG_HZ#define USER_HZ 100#define CLOCKS_PER_SEC (US.....

2022-02-03 13:16:17 1040

原创 设备树 dtb结构

dtb结构由一个小的报头和三个大小可变的部分组成:内存预留块,结构块和字符串块。这些应该按这个顺序出现在扁平的设备树中。因此,设备树结构作为一个整体,当以地址载入内存时,将类似于下图的图(较低的地址位于图的顶部)。 注:内存预留块可能不存在,尽管在某些情况下可能需要它们来满足单个块的对齐约束。 自格式的原始定义以来,已经定义了几种扁平设备树结构的版本。 报头中的字段给出了版本,以便客户端程序可以确定设备树是否以兼容的格式编码。本文档仅描述17版的格式。 兼容DTSpec的引导程...

2022-01-26 10:42:59 1396

原创 uboot Makefile之dtb生成

目录1、执行图2、$(obj)/%.dtb规则2.1、cmd_dtc命令3、arch-dtbs规则3.1、执行命令3.1.1、arch/arm/dts/Makefile4、$(DTB)规则4.1、DTB变量5、$(obj)/dt.dtb规则5.1、cmd_shipped命令6、dts/dt.dtb规则6.1、执行命令6.1.1、dts/Makefile1、执行图2、$(obj)/%.dtb规则$(obj)/%.dtb目标依赖于...

2022-01-23 14:50:40 2454

原创 uboot Makefile之make xxx_defconfig

目录1、config规则和%config规则1.1、执行命令1.2、scripts/kconfig/Makefile1.2.1、conf2、scripts_basic规则2.1、执行命令2.2、scripts/basic/Makefile3、outputmakefile规则4、总结1、config规则和%config规则当输入make xxx_defconfig的时候就会匹配到%config。%config目标依赖于 scripts_basic、outputmak

2022-01-21 15:46:26 1104

原创 linux应用编程12-串口终端

1、终端1.1、终端分类1.1.1、本地终端和远程终端本地终端 鼠标、键盘、显示器 远程终端 串口远程终端 通过串口登录 网络远程终端 通过 ssh、 Telnet 等协议登录到一个远程主机 1.1.2、物理终端和伪终端物理终端 本地直接关联物理设备 伪终端 没有关联任何物理设备 1.2、查看连接终端使用who 命令可以查看系统当前连接了哪些终端。1.3、终端参数⚫ ;⚫ 本地模式;⚫ 线路规程;⚫ 特殊控制字符..

2021-12-30 14:41:26 3171

原创 LED驱动框架应用编程

LED驱动框架应用编程

2021-12-29 17:41:03 464

原创 PWM驱动框架

PWM驱动框架应用编程

2021-12-28 14:54:44 1298

原创 linux驱动 同步机制

1、原子整形操作1.1、文件路径include/linux/types.hinclude/linux/spinlock.h1.2、32位原子整形操作1.1.1、atomic_t结构体使用atomic_t结构体来完成32位整形数据的原子操作。typedef struct { int counter;} atomic_t;1.1.2、ATOMIC_INIT宏向原子变量赋初值。#define ATOMIC_INIT(i) { (i) }1.1.3、原子..

2021-12-10 17:57:38 807

原创 linux驱动2-字符设备

1、字符设备驱动字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备。比如灯、按键、 IIC、 SPI,LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。2、应用程序调用驱动程序流程应用程序->库函数->内核->驱动程序->硬件。驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即可实现对硬件的操作..

2021-11-11 17:54:48 526

原创 linux驱动1-模块

目录1.1、加载模块命令1.1.1、insmod1.1.2、modprobe1.2、卸载模块命令1.3、查看加载模块1.4、查看模块信息2、操作2.1、module_init()2.2、module_exit()2.3、MODULE_LICENSE()2.4、MODULE_AUTHOR()2.5、MODULE_DESCRIPTION()2.6、MODULE_ALIAS()3、模块参数3.1、MODULE_PARM_DESC(variable,

2021-11-11 15:54:11 1933

原创 GPIO驱动框架应用编程

GPIO驱动框架应用编程

2021-11-07 13:45:10 550

原创 看门狗应用编程

看门狗应用编程

2021-11-03 17:06:15 2603 1

空空如也

空空如也

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

TA关注的人

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