RT-Thread 应用篇

问题:串口乱码,或者延时时间不准确 解决:查看外部晶振配置是否正确,文件stm32f4xx.h中HSE_VALUE要与实际的晶振大小相同。 #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External osci...

2019-04-16 20:37:35

阅读数 20

评论数 0

Linux驱动开发(一):字符设备

**目的:**实现最简单的点灯操作。 Linux一切皆文件,应用程序访问某个物理设备(文件)时,首先通过open, read, write等库函数调用系统调用接口(System call interface),系统调用通过传进来的系统调用号操作虚拟文件系统(Virtual File System)...

2019-04-09 22:06:58

阅读数 24

评论数 0

RT-Thread移植到S5P4418(五):线程通信

RT-Thread实现了三种线程间通信方式,邮箱(mailbox)、消息队列(messagequeue)、和信号(signal)。 邮箱 邮箱中的每一封邮件只能容纳固定的 4 字节内容。任何线程都可以发送或接受邮件消息。 邮箱控制块 struct rt_mailbox { struct r...

2019-03-10 23:21:50

阅读数 103

评论数 0

RT-Thread移植到S5P4418(四):线程同步

同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制(如互斥量,事件对象,临界区)来控制线程之间的执行顺序,也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间将是无序的。 线程的同步方式有很多种,其核心思想都是:在访问临界区的时候只允许一个 (或一类) 线程...

2019-02-26 14:36:22

阅读数 30

评论数 0

RT-Thread移植到S5P4418(三):静态内存池管理

内存堆管理器可以分配任意大小的内存块,非常灵活和方便。但其也存在明显的缺点:一是分配效率不高,在每次分配时,都要空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread 提供了另外一种内存管理方法:内存池(Memory Pool)。 内存池是一种内存分配方...

2019-02-21 16:49:55

阅读数 67

评论数 0

RT-Thread移植到S5P4418(二):动态内存管理

内存管理 在RT-Thread中分为动态内存管理和静态内存管理。静态的又称为内存池管理,动态的称为内存堆管理。 内存堆: 官方提供了三种管理方式。 小内存管理。申请时在一块大的、连续的内存中按需求分割出相匹配的小内存块;释放时,归还给堆管理系统。每个内存块都包含一个管理用的数据头,通过双向链表来...

2019-02-17 19:19:21

阅读数 86

评论数 0

RT-Thread移植到S5P4418(一):调度器

S5P4418,Cortex-A9系列。 结合了 RT-Thread内核实现(六):时间片 和 S5P4418裸机开发(十四):TIMER 的代码。 SysTick & PendSV RT-Thread实现线程调度两个比较核心的中断。 Sys...

2019-01-28 20:25:27

阅读数 68

评论数 0

imxq Freescale Yocto Project编译记录

参考: IMX6Q环境搭建、安装Yocto包和编译 编译内核 配置menuconfig指令: bitbake -c menuconfig -v linux-imx 单独编译kernel、模块、设备树 bitbake -c compile -f -v linux-imx bitb...

2019-01-21 09:40:09

阅读数 98

评论数 0

opencv3 C/C++不同接口

类型 C C++ 头文件 #include <opencv/cv.h>#include <opencv/highgui.h>… #include <opencv2/open...

2018-12-12 17:02:49

阅读数 149

评论数 0

RT-Thread内核实现(六):时间片

整体思想 假如A、B两个线程优先级相同,A先启动,只要A不主动让出CPU,线程B就没机会执行。 时间片就是为了解决相同优先级下多线程的并发问题。 线程控制块 添加rt_ubase_t init_tick属性,remaining_tick记录剩余的时间片。 struct rt_thread ...

2018-12-09 20:51:44

阅读数 192

评论数 0

RT-Thread内核实现(五):定时器

1

2018-12-09 13:56:50

阅读数 120

评论数 0

RT-Thread内核实现(四):多优先级

整体思想: 前几章并不支持多优先级,都是手动切换指定的线程来运行。支持优先级后,调度器只会找当前最高优先级的线程来运行。RT-Thread属于抢占式实时操作系统,CPU会被当前最高优先级线程抢占,除非最高优先级线程主动放弃,比如调用rt_thread_delay(rt_tick_t tick)...

2018-12-02 00:21:26

阅读数 100

评论数 0

VSCode 返回上一个光标 (上一个浏览位置)

Ctrl + 鼠标左击跳到定义. 返回 Windows: Alt + ← ;或者 鼠标侧键 Linux: Ctrl + Alt + - ;貌似数字键盘的减号没效果 Mac: Ctrl + -

2018-11-28 11:47:12

阅读数 2420

评论数 3

涨姿势系列:花里胡哨调试信息

#include <stdio.h> #define logD(fmt, ...) \ fprintf(stdout, "[\e[34m debug \e[0m]...

2018-11-28 10:11:05

阅读数 75

评论数 0

RT-Thread内核实现(三):空闲线程与阻塞延时的实现

空闲函数 idle 如果没有其它线程可以运行, RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。 在 RTThread 中,空闲线程是系统在初始化的时候创建的优先级最低的线程,空闲线程主体主要是做一些系统内存的清理工作。 相关定义。idle.c #define I...

2018-11-27 21:20:01

阅读数 321

评论数 0

RT-Thread内核实现(二):临界区,对象容器

临界区(Critical Section) 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。 RT-Thread 对临界段的保护就处理的很干脆,直接把中断全部关了, NMI FAULT 和硬 FAULT 除外。 Cortex M3权威指南 中对异常掩蔽...

2018-11-24 21:59:45

阅读数 68

评论数 0

RT-Thread内核实现(一):线程与调度

线程是一个独立的、无限循环且不能返回的函数。 系统为了顺利的调度线程,为每个线程都额外定义了一个线程控制块,这个线程控制块就相当于线程的身份证,里面存有线程的所有信息,比如线程的栈指针,线程名称, 线程的形参等。 rtdef.h中定义了线程控制块结构体 /* *************...

2018-11-19 14:08:33

阅读数 119

评论数 0

RT-Thread内核实现(零):开启RTOS之旅

学习资料: [野火®]《RT-Thread 内核实现与应用开发实战—基于STM32》.pdf Cortex M3权威指南(中文).pdf 2.1 为什么要学习 RTOS 当我们进入嵌入式这个领域的时候, 往往首先接触的都是单片机编程, 单片机编程又首选 51 单片机来入门。 这里面说的单片机编程...

2018-11-18 14:42:56

阅读数 174

评论数 0

S5P4418裸机开发(十六):ache & MMU

指令cache

2018-11-09 23:37:23

阅读数 80

评论数 0

Ubuntu 16.04下,vsftpd匿名用户修改默认目录后不能上传、下载等

只针对匿名用户,本地用户未测试。 修改sudo vim /etc/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=YES anon_mkdir_w...

2018-11-07 17:21:34

阅读数 108

评论数 0

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