随笔分类 -  RT-Thread

摘要:本文主要介绍RT-thread中IIC总线设备驱动,涉及到的主要文件有:驱动框架文件(i2c_core.c,i2c_dev.c,i2c-bit-ops.c,i2c_dev.h,i2c.h);底层硬件驱动文件(i2c_soft.c,i2c_soft.h)。这里的i2c_soft.c和i2c_so... 阅读全文
posted @ 2015-07-19 20:34 King先生 阅读(5031) 评论(0) 推荐(1) 编辑
摘要:本文主要介绍RT-thread中的SPI设备驱动,涉及到的文件主要有:驱动框架文件(spi_dev.c,spi_core.c,spi.h),底层硬件驱动文件(spi_hard.c,spi_hard.h)。这里spi_hard.c和spi_hard.h是指利用MCU的硬件SPI接口,而不是通过GP... 阅读全文
posted @ 2015-07-18 22:45 King先生 阅读(10300) 评论(0) 推荐(0) 编辑
摘要:本文以stm32f4xx平台介绍串口驱动,主要目的是:1、RTT中如何编写中断处理程序;2、如何编写RTT设备驱动接口代码;3、了解串行设备的常见处理机制。所涉及的主要源码文件有:驱动框架文件(usart.c,usart.h),底层硬件驱动文件(serial.c,serial.h)。应用串口设... 阅读全文
posted @ 2015-07-17 23:05 King先生 阅读(3407) 评论(0) 推荐(1) 编辑
摘要:在RT-thread 2.0.0正式版中引入了pin设备作为杂类设备,其设备驱动文件pin.c在rt-thread-2.0.1\components\drivers\misc中,主要用于操作芯片GPIO, 如点亮led,按键等。同时对于相应的芯片平台,需要自行编写底层gpio驱动,如gpio.... 阅读全文
posted @ 2015-07-15 22:29 King先生 阅读(4308) 评论(2) 推荐(2) 编辑
摘要:finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试、查看系统信息。在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用。比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中... 阅读全文
posted @ 2015-07-14 23:42 King先生 阅读(9573) 评论(1) 推荐(1) 编辑
摘要:RT-thread系统的main函数位于startup.c文件中。/** * This function will startup RT-Thread RTOS. */void rtthread_startup(void){ /* init board */ rt_hw_board_in... 阅读全文
posted @ 2015-06-14 14:42 King先生 阅读(2221) 评论(0) 推荐(0) 编辑
摘要:RT-thread提供了组件化功能,具体实现是在components/init文件夹下components.c文件中实现的。应用组件化功能首先在rtconfig.h中添加宏定义#define RT_USING_COMPONENTS_INIT;若需要启用调试模式,则还要添加#define RT... 阅读全文
posted @ 2015-06-12 22:36 King先生 阅读(7261) 评论(2) 推荐(2) 编辑
摘要:1、将下载的rt-thread-2.0.1解压后,得到如下图所示的文件列表。 在bsp目录下可以找到stm32f40x文件夹,这文件夹里面包括了库函数,其他芯片平台的文件夹统统删掉。在libcpu下,只需要将arm文件夹里面的common和cortex-m4留下来,其他的也都统统删掉。还有其他一些辅 阅读全文
posted @ 2015-06-09 21:22 King先生 阅读(8193) 评论(0) 推荐(1) 编辑
摘要:RT-Thread v2.1.0是v2.0.1正式版这个系列的bug修正版。RT-Thread v2.1.0修正的主要内容包括: 这个版本经历的时间比较长,并且原定的一些目标也还未能完成(更全的POSIX支持,包括device fd,socket等在内的select API接口等)。树莓派类似的BS 阅读全文
posted @ 2015-06-05 23:18 King先生 阅读(1095) 评论(0) 推荐(0) 编辑
摘要:一、内核标志flag 在内核对象控制块中有一个标志成员flag(rt_uint8_t flag; ),这个标志在不同有内核对象中具有不同的含义。rt-thread的内核对象有定时器、线程、信号量、互斥锁、事件、邮箱、消息队列、内存堆、设备、模块,这些内核对象都继承了内核对象的成员,其中也就包含了内... 阅读全文
posted @ 2015-03-18 17:13 King先生 阅读(2180) 评论(0) 推荐(1) 编辑
摘要:一、消息队列控制块:在include/rtdef.h中#ifdef RT_USING_MESSAGEQUEUE/** * message queue structure */struct rt_messagequeue{ struct rt_ipc_object parent; ... 阅读全文
posted @ 2015-03-05 22:15 King先生 阅读(2782) 评论(0) 推荐(0) 编辑
摘要:一、邮箱控制块:在include/rtdef.h中#ifdef RT_USING_MAILBOX/** * mailbox structure */struct rt_mailbox{ struct rt_ipc_object parent; /*... 阅读全文
posted @ 2015-03-05 18:28 King先生 阅读(3222) 评论(0) 推荐(0) 编辑
摘要:一、事件控制块:在include/rtdef.h中#ifdef RT_USING_EVENT/** * flag defintions in event */#define RT_EVENT_FLAG_AND 0x01 /**< logic and ... 阅读全文
posted @ 2015-03-05 11:59 King先生 阅读(3630) 评论(0) 推荐(0) 编辑
摘要:一、互斥量控制块:在include/rtdef.h中#ifdef RT_USING_MUTEX/** * Mutual exclusion (mutex) structure */struct rt_mutex{ struct rt_ipc_object parent; ... 阅读全文
posted @ 2015-03-04 17:52 King先生 阅读(2110) 评论(0) 推荐(0) 编辑
摘要:一、信号量控制块:在include/rtdef.h中#ifdef RT_USING_SEMAPHORE/** * Semaphore structure */struct rt_semaphore{ struct rt_ipc_object parent; ... 阅读全文
posted @ 2015-03-04 17:20 King先生 阅读(5700) 评论(0) 推荐(0) 编辑
摘要:一、进程间通信机制rt-thread操作系统的IPC(Inter-Process Communication,进程间同步与通信)包含有中断锁、调度器锁、信号量、互斥锁、事件、邮箱、消息队列。其中前5个主要表现为线程间同步,邮箱与消息队列表现为线程间通信。本文主要介绍它们的一些特性及使用场合。1、中断... 阅读全文
posted @ 2015-03-04 12:06 King先生 阅读(4972) 评论(0) 推荐(0) 编辑
摘要:一、什么是中断?中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的。 cpu外部中断,就是通常所讲的“中断”(interrupt)。对于执行程序来说,这种“中断”的发生完全是异步的,因为不知道什么时候会发生。CPU对其的响应也完全是被动的,可以通过“关中断”指令关闭对其的... 阅读全文
posted @ 2015-02-13 12:00 King先生 阅读(3593) 评论(0) 推荐(1) 编辑
摘要:RT-Thread系统的IO设备管理模块为上层应用提供了一个对设备进行访问的通用抽象接口,而对于下层设备来说则提供了底层设备驱动框架,并通过定义的数据结构对设备信息和底层设备驱动进行管理。从系统整体位置来说I/O设备管理模块相当于底层设备驱动和上层应用之间的一个中间层。 I/O管理模块实现... 阅读全文
posted @ 2015-02-12 12:00 King先生 阅读(1465) 评论(0) 推荐(1) 编辑
摘要:一、动态内存管理 动态内存管理是一个真实的堆(Heap)内存管理模块,可以在当前资源满足的情况下,根据用户的需求分配任意大小的内存块。而当用户不需要再使用这些内存块时,又可以释放回堆中供其他应用分配使用。RT-Thread系统为了满足不同的需求,提供了两套不同的动态内存管理算法,分别是小内存管理... 阅读全文
posted @ 2015-02-10 20:14 King先生 阅读(4133) 评论(0) 推荐(0) 编辑
摘要:一、系统时钟rt-thread的系统时钟模块采用全局变量rt_tick作为系统时钟节拍,该变量在系统时钟中断函数中不断加1。而系统时钟中断源和中断间隔一般由MCU硬件定时器(如stm32的嘀嗒定时器)决定,rt_tick初始值为0,每次MCU产生硬件定时中断后,在中断函数中不断加1,即rt_tick... 阅读全文
posted @ 2015-02-10 11:50 King先生 阅读(5454) 评论(0) 推荐(0) 编辑