_rt_thread_init(thread,name,entry,parameter,stack_start,stack_size,priority,tick); 进入函数原型: static rt_err_t_rt_thread_init(struct rt_thread*thread,const char*name,void(*entry)(void*parameter),void*parameter,void*stack_start,rt_uint32_t stack_size,rt_uint8_t priority,rt_uint32_t t...
本次先来了解一下 small memory 管理算法。通过对整体源码的解读,由浅入深,加深对于 rt-thread 操作系统中内存管理模块的理解。small memory小内存管理算法是一个简单的内存分配算法。初始时,它是一块大的内存。当需要分配内存块时,将从这个大的内存块上分割出相匹配的内存块,然后把分割出来的空闲内存块还回给堆...
SAL 组件提供对不同协议栈或网络实现接口的抽象和统一,组件在 socket 创建时通过判断传入的协议簇(domain)类型来判断使用的协议栈或网络功能,完成 RT-Thread 系统中多协议的接入与使用。目前SAL 组件支持的协议栈或网络实现类型有:lwIP 协议栈、AT Socket 协议栈、WIZnet 硬件 TCP/IP 协议栈。在Socket 中,它使用...
RT-Thread 的网络框架结构如下所示: 图: 网络框架图 最顶层是网络应用层,提供一套标准 BSD Socket API ,如 socket、connect 等函数,用于系统中大部分网络开发应用。 往下第二部分为 SAL 套接字抽象层,通过它 RT-Thread 系统能够适配下层不同的网络协议栈,并提供给上层统一的网络编程接口,方便不同协议栈的接入...
memset(&_lcd,0x00,sizeof(_lcd)); LOG_D("drv_lcd_hw_init!\n"); /* 初始化lcd_lock信号量 */ result = rt_sem_init(&_lcd.lcd_lock,"lcd_lock",0, RT_IPC_FLAG_FIFO); if(result != RT_EOK) { LOG_E("init semaphore failed!\n"); ...
rt-thread 定义的软件定时器还细分两种,“硬定时器” “软定时器”,前一种是在 SysTick 中断中执行回调函数的,多数用于线程内置定时器,应用层也可以用,但是要时刻谨记它的回调函数是在中断中执行的。 后一种,是在一个线程中运行的,应用层对定时精度要求不是很高的可以用这种,但是也要注意“定义定时器和执行定...
rt_memset(rx_fifo->buffer,0, serial->config.bufsz); rx_fifo->put_index =0; rx_fifo->get_index =0; rx_fifo->is_full = RT_FALSE; serial->serial_rx = rx_fifo;/* configure fifo address and length to low level device */serial->ops->control(serial, RT_DEVICE_CTRL_CONFIG, (void...
首先用RT-Thread Studio创建一个RTT项目: 选择基于芯片还是基于BSP,这里我选择的是基于芯片,用STM32F103C8T6这个板子来跑: 接下来开始配置组件: 双击以后会弹出图形界面配置选项: 这里我配置了ulog日志、串口、Pin以及finsh命令,接下来开始熟悉串口设备配置和使用的步骤: ...
1.开启RTT设备驱动。>RT-Thread 开启自己的工程驱动设备 2.在board.h中添加宏 开启设备驱动会调用HAL库,点击开启自动启动设备的初始化配置,并将spi注册到设备容器 int rt_hw_spi_init(void) { stm32_get_dma_info();returnrt_hw_spi_bus_init(); ...
在使用 RT-Thread 时,需要对两个文件的内容进行比较,顺手写了一个测试的 MSH shell 命令,经过优化,发现功能可以使用 RT-Thread 下支持多种文件系统,如FAT等,可以通过 USB、串口 的 Ymodem 等协议把文件导出到电脑上进行内容的分析,如果文件一时间无法导出,需要确认两个文件内容是否相同,怎么办?就写个简单的文件...