4 Mnnk

尚未进行身份认证

暂无相关描述

等级
博文 163
排名 3w+

RT-Thread 应用篇

问题:串口乱码,或者延时时间不准确解决:查看外部晶振配置是否正确,文件stm32f4xx.h中HSE_VALUE要与实际的晶振大小相同。#defineHSE_VALUE((uint32_t)8000000)/*!<ValueoftheExternaloscillatorinHz*/同时,system_stm32f4xx.c文件中PLL_M页要修改为对应值。...

2019-04-16 20:37:35

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

**目的:**实现最简单的点灯操作。Linux一切皆文件,应用程序访问某个物理设备(文件)时,首先通过open,read,write等库函数调用系统调用接口(Systemcallinterface),系统调用通过传进来的系统调用号操作虚拟文件系统(VirtualFileSystem),VFS再根据目标文件类型去找相应的驱动程序。应用程序和VFS之间的接口是系统调用,而VFS与文件系...

2019-04-09 22:06:58

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

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

2019-03-10 23:21:50

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

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

2019-02-26 14:36:22

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

内存堆管理器可以分配任意大小的内存块,非常灵活和方便。但其也存在明显的缺点:一是分配效率不高,在每次分配时,都要空闲内存块查找;二是容易产生内存碎片。为了提高内存分配的效率,并且避免内存碎片,RT-Thread提供了另外一种内存管理方法:内存池(MemoryPool)。内存池是一种内存分配方式,用于分配大量大小相同的小内存块,它可以极大地加快内存分配与释放的速度,且能尽量避免内存碎片化。此外...

2019-02-21 16:49:55

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

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

2019-02-17 19:19:21

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

S5P4418,Cortex-A9系列。结合了RT-Thread内核实现(六):时间片和S5P4418裸机开发(十四):TIMER的代码。SysTick&PendSVRT-Thread实现线程调度两个比较核心的中断。SysTick更新系统时基。PendSV做上下文切换。SysTick在S5P4418中用timer0代替。周期10ms,注意中断服务函数要清除中断标志位...

2019-01-28 20:25:27

imxq Freescale Yocto Project编译记录

参考:IMX6Q环境搭建、安装Yocto包和编译编译内核配置menuconfig指令:bitbake-cmenuconfig-vlinux-imx单独编译kernel、模块、设备树bitbake-ccompile-f-vlinux-imxbitbakelinux-imx-ccompile_kernelmodules-f-vbitbake-cdep...

2019-01-21 09:40:09

opencv3 C/C++不同接口

类型CC++头文件#include<opencv/cv.h>#include<opencv/highgui.h>…#include<opencv2/opencv.hpp>#include<opencv2/highgui/highgui.hpp>…主要数据类型IplImage*imgMatimg显示...

2018-12-12 17:02:49

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

整体思想假如A、B两个线程优先级相同,A先启动,只要A不主动让出CPU,线程B就没机会执行。时间片就是为了解决相同优先级下多线程的并发问题。线程控制块添加rt_ubase_tinit_tick属性,remaining_tick记录剩余的时间片。structrt_thread{/*rt对象*/charname[RT_NAME_MAX]...

2018-12-09 20:51:44

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

1

2018-12-09 13:56:50

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

整体思想:前几章并不支持多优先级,都是手动切换指定的线程来运行。支持优先级后,调度器只会找当前最高优先级的线程来运行。RT-Thread属于抢占式实时操作系统,CPU会被当前最高优先级线程抢占,除非最高优先级线程主动放弃,比如调用rt_thread_delay(rt_tick_ttick)延时函数,会将线程状态改为挂起状态或者说阻塞状态,然后执行系统调度。线程控制块添加了几属性...

2018-12-02 00:21:26

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

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

2018-11-28 11:47:12

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

#include<stdio.h>#definelogD(fmt,...)\fprintf(stdout,"[\e[34mdebug\e[0m]%s:%02d-->",__FILE__,__LINE__);fprintf(stdout,fmt,##__VA_ARGS__);#definelogE(f

2018-11-28 10:11:05

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

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

2018-11-27 21:20:01

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

临界区(CriticalSection)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。RT-Thread对临界段的保护就处理的很干脆,直接把中断全部关了,NMIFAULT和硬FAULT除外。CortexM3权威指南中对异常掩蔽寄存器的说明。当临界段嵌套时,如果简单的开关总中断,内部临界段释放时总中断被打开,而外部临界段并...

2018-11-24 21:59:45

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

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

2018-11-19 14:08:33

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

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

2018-11-18 14:42:56

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

指令cache

2018-11-09 23:37:23

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

只针对匿名用户,本地用户未测试。修改sudovim/etc/vsftpd.confanonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES上面最基本的几条要保证;修改默认目录anon_root=/home/ftp修改默...

2018-11-07 17:21:34
奖章
  • Github
    Github
    绑定github第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。