自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (2)
  • 收藏
  • 关注

原创 ESP32-C3基于RMT的uart

ESP32-C3硬件串口资源较少, 有的项目需要较多的串口, 有一个arduino库实现了用GPIO模拟的串口, SoftwareSerial. 这里给出一个基于RMT外设的实现, 接收时避免频繁进入中断, 发送时不用禁止中断以保证发送时序.RMT(Remote Control)外设不仅可以用于红外遥控、LED灯条控制等场景,还可以通过灵活配置实现UART串行通信功能.

2024-02-08 21:14:20 431

原创 hi3516dv300 u-boot, 内核, 文件系统编译移植

1 u-boot移植1.1 u-boot编译进入u-boot文件夹,步骤1 配置编译环境make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_config步骤2 编译u-bootmake ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j 4编译成功后,将在 U-boot 目录下生成 u-boot.bin。sdrv/opensource/uboot/u-boot-2016.11$ l

2021-03-30 09:17:22 2028 2

原创 日志打印对线程栈的影响

日志打印是常用的调试手段, 然而在线程中调用日志打印函数, 可能会引起栈深度变化导致栈溢出. 为了保证栈不溢出每个线程都需要增加一定的深度给日志打印预留, 内存小的项目可能难以提供.以SEGGER_RTT_printf为例函数调用很深, 每个函数都有大量的自动变量, 甚至还定义了缓冲区char acBuffer[SEGGER_RTT_PRINTF_BUFFER_SIZE];因此各个线程在调用的时候, 根据调用的位置会有不同的影响, 也可能完全无影响.这部分内存的使用并不对产品功能有帮助, 且每

2021-01-02 14:19:03 326

原创 栈利用率的获取

栈用于保存变量, 随着函数调用深度和变量的数量而变化. 设置小了会出现栈溢出, 设置大了会浪费.利用率获取RT-THREAD的统计方法是将线程栈都填充为’#’, 当需要的时候, 检查是否被修改为其他值.利用率 = 已使用 / 栈大小.#if defined(ARCH_CPU_STACK_GROWS_UPWARD) ptr = (rt_uint8_t *)thread->stack_addr + thread->stack_size - 1;

2020-12-29 10:54:25 574

原创 用xmake构建C工程

xmake是一个简单的自动构建工具, 语法不像makefile那么复杂, 基本的内容有1.设置编译器链接器调试器通过 set_config设置set_config("cc", "gcc")set_config("ld", "gcc")set_config("debugger", "gdb")2.设置输出文件夹如果不设置, 则默认新建build文件夹set_config("buildir", "obj")3.设置编译器参数例如gcc中常常设置-g生成调试信息, -O指定编译优化等级等

2020-10-13 10:15:48 394 2

原创 图解可变参数函数

1. 输入参数在内存中的布局printf是可变参数函数的典型例子, 其中使用了几个宏#ifndef va_arg#ifndef _VALIST#define _VALISTtypedef char *va_list;#endif /* _VALIST *//* Storage alignment properties */#define _AUPBND (sizeof (acpi_native_int) - 1)#define _ADNBND

2020-09-25 14:27:27 244

原创 makefile多文件编译

一.应用程序makefile文件存放如下第1种 手动指定搜索目录, .o输出到与.c同样的目录下 (注意复制后要把缩进改成table)target = app #输出的可执行程序名CC = gcc #编译器#指定搜索c文件的路径SRC = $(wildcard ./*.c)SRC += $(wildcard ./world/*.c)SRC += $(wildcard ./kalimdor/*.c)##################################

2020-09-16 12:21:31 2678

RTT_schedule.zip

RT-THREAD裁剪到只剩下调度, 便于学习上下文切换, struct rt_thread { /* stack point and entry */ void *sp; /**< stack point */ void *entry; /**< entry */ void *stack_addr; /**< stack address */ uint32_t stack_size; /**< stack size */ uint8_t stat; /**< thread status */ };

2020-03-21

nrf52832_rt-thread_test.zip

移植RT-THREAD基础功能到nRF52832,SDK版本是15.2,需要放到\nRF5_SDK_15.2.0_9412b96\examples\peripheral文件夹下。 工程nrf52832_xxaa为烧录到FLASH,工程RAM_DEBUG可直接下载到RAM中调试,无需烧录,修改ram_debug_init中的RAM_DEBUG值切换。

2020-01-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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