本次先来了解一下 small memory 管理算法。通过对整体源码的解读,由浅入深,加深对于 rt-thread 操作系统中内存管理模块的理解。small memory小内存管理算法是一个简单的内存分配算法。初始时,它是一块大的内存。当需要分配内存块时,将从这个大的内存块上分割出相匹配的内存块,然后把分割出来的空闲内存块还回给堆...
small_mem->parent.max = small_mem->parent.used; }//设置当前要申请的内存的信息块/* set small memory object */mem->pool_ptr = MEM_USED();#ifdefRT_USING_MEMTRACEif(rt_thread_self()) rt_smem_setname(mem, rt_thread_self()->name);elsert_smem_setname(mem,"NONE");#endif/* RT_USI...
rt_memcpy(msg +1, buffer, size);//将消息存入msg_size大小的空间中,不知道为什么要加1,这里已经是新消息的地址啦; /* disable interrupt */ temp = rt_hw_interrupt_disable(); /* link msg to message queue */ if(mq->msg_queue_tail != RT_NULL) { /* if the tail exists, */ ((struct...
软件准备 R_DapLink采用RT-Thread作为我们实时系统,提供系统调度,IPC通信。选择RT-Thread的原因:RT-Thread已经包含了cherryUSB协议栈软件,这给我减少了很多移植的工作量。 R_DapLink的USB协议栈采用cherryUSB协议栈,其代码链接:https://github.com/cherry-embedded/CherryUSB。cherryUSB协议栈提供了对应的文档,其文档...
!!! tip “提示” C 库:也叫 C 运行库(C Runtime Library),它提供了类似 “strcpy”、“memcpy” 等函数,有些也会包括 “printf”、“scanf” 函数的实现。RT-Thread Kernel Service Library 仅提供内核用到的一小部分 C 库函数实现,为了避免与标准 C 库重名,在这些函数前都会添加上 rt_ 前缀。 实时...
memcpy(ring_buffer->ring_buff, buff + i, len - i); } /*get the real Rear index position.*/ ring_buffer->Rear_Index = (ring_buffer->Rear_Index + len) % ring_buffer->Ring_Buffer_Size; return len; } /*** Function Name: uint16_t Ring_Buff_Get(ring_buff* ring_buff, uint8_t...
rt_memcpy(&bufTemp[bufTempNum],ch,len); bufTempNum += len; rt_sem_release(&rx_semRx); } } static int Bsp_init(void) { rt_err_t ret = RT_EOK; //char str[] = "hello RT-Thread!rn"; /* 查找系统中的串口设备 */ serial = rt_device_find(SAMPLE_UART_NAME); ...
RT-Thread是一款国产化的嵌入式操作系统,目前在嵌入式领域得到广泛应用,其强大的扩展功能以及通用的外设驱动框架备受大家追捧。 关于基本的外设驱动,其官网上基本也都有部分描述,但是关于SDIO设备驱动目前为止还没有相关文档说明,因此本文笔者将根据自己的调试使用经验,与大家分享下rtthread的通用SDIO设备驱动的实现。
void *msg_3_dup_hook(void *args) { struct msg_3_def *msg_3 = (struct msg_3_def *) args; struct msg_3_def *r_msg_3 = rt_calloc(1, sizeof(struct msg_3_def)); if (r_msg_3 == RT_NULL) { return RT_NULL; } rt_memcpy((rt_uint8_t *) r_msg_3, (rt_uint8_t *)...
C库:也叫 C 运行库(C Runtime Library),它提供了类似 “strcpy”、“memcpy” 等函数,有些也会包括 “printf”、“scanf” 函数的实现。RT-ThreadKernelService Library 仅提供内核用到的一小部分 C 库函数实现,为了避免与标准 C 库重名,在这些函数前都会添加上 rt_前缀。