嵌入式
AM64XX,GD32,stm32,大家可以加群一块讨论技术啊
904408433
真的改完最后一个bug就下班
一日不读书,无人看的出;一周不读书,开始会动粗;一月不读书,笨的像头猪。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c中file操作相关函数替换fread,fseek等
2、file这些一般在有操作系统和文件管理系统的程序运行,如果是简易MCU是不支持这些。3、如何快速替换这些函数呢,可以考虑使用数组操作替换这些接口函数,或者直接操作指针。注意,需要将原先源文件中调用的stdio.h都屏蔽掉,不然多重定义;1、经常会碰到一些可移植代码使用c的file相关操作函数;只替换了我需要使用的几个函数,其他的可参考类似的编写;或者将所有接口都重命名。原创 2025-11-17 14:50:12 · 237 阅读 · 0 评论 -
【FreeRTOS】 最简单的实现rtos的CPU使用率统计
portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()宏只在vTaskStartScheduler启动任务调度时初始化运行一次,不用管他;3、FreeRTOS本身不是有用一个定时器去切换任务吗,如果要求精度不高,可不可以用系统节拍去粗略估算FreeRTOS的CPU使用率呢?主要是要提供计数值portGET_RUN_TIME_COUNTER_VALUE()的定义,所以按照上面定义。也符合结果,lwip_init任务有个while(1)死循环,所以一直占用cpu。原创 2024-07-15 09:01:24 · 2005 阅读 · 5 评论 -
IAR分配堆问题
因为heap时 预留给动态申请内存用的,我的程序没使用malloc函数(或相似功能函数),这时IAR会自动优化代码,释放了Heap空间,还给了ram。这里显示出来了HEAP信息,并提示有个FAILED,因为我这个mcu空间比较小,如果ram还分配空间给了Heap,导致整个ram空间不够,故而提示错误。这个iar的icf文件,堆和栈放在 紧挨着rw变量地址之后,他们一块构成了整个ram的使用空间。可以看到图中只有栈的信息,没有heap的地址信息,说明heap还给ram了。原创 2025-06-18 16:31:37 · 372 阅读 · 0 评论 -
航芯MCU使用IAR+Jlink调试
1、我使用的是航信ACM32F403KEU7,ACM32F403X系列的MCU。然后就可以调试了,那个STAR是啥,我也还没搞清楚,,,,3、根据手册,IAR需要安装v8.50 及以上。2、因为MDK版权的问题,不得不使用IAR。其他配置:选中刚刚复制过去的那些配置文件。5、根据手册,把这几个文件分别放在。4、建立工程后,配置环境。原创 2025-06-04 15:06:13 · 569 阅读 · 0 评论 -
【RTOS】freertos在进入临界区断言失败
所以数组溢出也会引起这个断言,并不是中断调用了RTOS的API里。数组溢出造成程序异常,可能影响中断的正常执行了,所以报错。数组只有7个,这里赋值为7后,造成打印的时候溢出。、最后删减代码发现,原来是数组溢出引起的。根据提示找了好久没找到啥原因。原创 2025-05-15 18:22:00 · 402 阅读 · 0 评论 -
tcp协议连接,和传输数据
这里是单向的,服务器没有对客户端的数据内容进行应答,只是单纯的对报文应答ack。当连接建立后,客户端和服务器都可以主动发送数据,分别如下。1》客户端先发送数据。2》服务器先发送数据。原创 2025-02-19 18:05:31 · 392 阅读 · 0 评论 -
iar中怎么把c文件中定义所有的全局变量,分配到指定的某段ram里
他的范围是从0x20000000到0x2003FFFF,共256k大小。1、link文件(icf文件)中定义该段ram标识。这里我定义了一个section。//表示取消指定地址定义变量。原创 2025-01-20 14:52:25 · 732 阅读 · 0 评论 -
IAR下enum处理
所以,enum采用的最小的有符号数据类型来搞得,非标准int。1、iar下的enum,默认配置使用的是。4、为什么要定义成int类型呢?这样最少就是int类型了。3、用标准的可以这么做。原创 2024-12-31 11:58:17 · 350 阅读 · 0 评论 -
【网络】 以太网DMA的一些知识记录
这里device是以太网的mac时,就是RAM和MAC可以直接通过DMA功能相互拷贝数据。要用DMA,得告诉MAC啥时候可以读,啥时候可以 写吧,这时候有一个寄存器可以控制这个,所以,需要自己申请一块ram内存,确定好内存的大小和地址,这样就可以使用DMA了。当MCU支持RAM和Device之间DMA传输时,我们就可以使用DMA功能。DMA描述符就是表示每包数据的当前状态的,多个描述符就是多包数据的状态。同时呢,把ram的地址告诉mac,这样mac就可以操作ram了。4、DMA描述符申请多少。原创 2024-11-28 11:16:06 · 686 阅读 · 0 评论 -
IAR的boot + app类型的代码怎么用jlink仿真
注意,app的main需要自己初始化复位向量指针,修改到合适的中断向量入口指针。6、当boot启动完毕后,刚刚跳转到app时,或者跳转到app前,执行行仿真。如果你的代码没有rtos,在boot跳转到app后,应该任何时候都可以仿真。IAR的boot + app类型的代码怎么用jlink仿真。5、用硬件restpin复位mcu。4、此时不要点击run。原创 2024-10-15 11:31:15 · 699 阅读 · 0 评论 -
【MCU】GD32H7定时器使用外部时钟源
所以CH2,CH3通道没法选择,实测也是这样,选择2通道时,定时器无法正常工作,在这里调试浪费了很多时间,大坑啊。这是官方手册上的图,不得不说,画的不够详细,只是一个大概的框图,内部细节完全不知。1》配置外部管脚属性:Timer3的CH1通道,映射到PD13上。4》选择通道和模式:这里选择CI1通道,外部事件0模式。滤波后的通道只有0,1啊,没有2,3通道。这里没有配置中断,可以自己添加中断使能。2》配置定时器,通用的。3》配置通道采样属性。原创 2024-11-19 11:23:17 · 1098 阅读 · 0 评论 -
【网络】NTP client处理
记录一下NTP客户端的数据包的一个解析。得到T后就可以校准本地的时间了。原创 2024-11-15 11:49:09 · 261 阅读 · 0 评论 -
serdes和SGMII的区别
1、经常见到这两个,而且还经常一起说,很容易搞混,而且物理的信号线还一样,所以他们,究竟有啥区别呢?2、这里感觉说的很清楚。原创 2024-10-31 11:32:44 · 614 阅读 · 0 评论 -
IEEE 802.3-2012 Clause 22.2.4.2
状态寄存器中的位分配如表22-8所示。状态寄存器中的所有位都是只读的,对状态寄存器的写入无效。原创 2024-10-24 14:45:21 · 403 阅读 · 0 评论 -
MCU和YT9218交换机通过RMII连接
配置成RMII-Phy,配置成phy后,sw可以给mcu提供50M的工作时钟,sw对应的端口同时也强制配置为100M全双工模式。1、可以通过带RMII的MCU和EXT1端口连接,将MCU配置为RMII 100M/全双工就可以通。3、后来通过api调用可以通。2、原先在这里改SW配置,在初始化后,添加下面代码。原创 2024-09-23 17:21:01 · 1481 阅读 · 11 评论 -
【FreeRTOS】中的portYIELD_FROM_ISR(xHigherPriorityTaskWoken)有啥用?
原来这个切换会在中断退出时直接切换到执行紧急的任务,所以以前设为NULL时,处理数据包只能处理5000包,加上 砖桥月饼 xHigherPriorityTaskWoken 后,可以到10000包,可见作用这么明显,以前真没体会到。2、以前不知道这个portYIELD_FROM_ISR是干啥的,只是知道他可以在退出中断时可以进行上下文切换,具体的有多大用不清楚。1、大家都知道,在中断里,freertos经常有下面的写法,会调用portYIELD_FROM_ISR。原创 2024-09-20 09:50:54 · 923 阅读 · 0 评论 -
【GD32H759】代码占用ram大小超过512k不能运行
原来如此,这部分的共享ram可以配置到itcm,dtcm和正常程序用的ram一块使用,但是需要分配他的大小,可以自定义分配!搜关键字itcm/tcm,终于发现有个函数 ob_tcm_shared_ram_size_get可以干这个事。查看ram地址配置文件发现,默认itcm和dtcm配置的都是64k,我也把他配置为64k吧。1、今天调试GD32H759程序发发现,当程序 大小为:503kb时可以运行。=============又是学习的一天============4、通过程序读下itcm,dtcm大小。原创 2024-09-03 15:17:47 · 1240 阅读 · 0 评论 -
freertos任务管理器,任务监控
例如,如果一个任务调用vTaskDelay(),它将被阻塞(被置于阻塞状态), 直到延迟结束-一个时间事件。处于阻塞状态的任务通常有一个"超时"期, 超时后任务将被超时,并被解除阻塞, 即使该任务所等待的事件没有发生。与“阻塞”状态下的任务一样, “挂起”状态下的任务不能 被选择进入运行状态,但处于挂起状态的任务 没有超时。当任务实际执行时,它被称为处于运行状态。准备就绪任务指那些能够执行(它们不处于阻塞或挂起状态), 但目前没有执行的任务, 因为同等或更高优先级的不同任务已经处于运行状态。原创 2024-01-12 14:43:35 · 1652 阅读 · 0 评论 -
1、AM64xx的SDK重新编译lib文件
如果安装了ccs,ccs已经有gmake了,所以只需将gmake添加到系统的path路径。我的ccs装在D盘,使用将 D:/ti/ccs1230/ccs/utils/bin 加入系统path路径,之后打开cmd,查询如下:OK。原创 2023-10-11 10:46:23 · 602 阅读 · 0 评论
分享