如何修改openocd.cfg配置文件

如何修改openocd.cfg配置文件,第1张

选用FreeRTOS绝对不是应为他的代码是如何的优秀,而是因为他在自由软件社区展现出的很强的生命力。要知道,如果一个自由软件社区足够的活跃,就意味着有的爱好者不停的解决和修正他运行的过程中遇到的诸多问题。由于本人的工作中会采用STM32的CortexM的MCU,所以后续的调试方法会以STM32LDiscovery的开发板为例。FreeRTOS发布包中有针对不同平台的移植和实例,要想在Linux主机交叉编译需要选用arm-none-eabi-gcc这样的编译工具链,而选用ST的MCU后一个廉价的ST-Link可以作为调试工具,而STM32LDiscovery的板子上自带就有这样的工具。硬件调试工具提供的下载调试程序的通道,还需要一个能够支持GDBServer的服务程序才能用arm-none-eabi-gdb完成代码的调试。下面的网站讲述了一个st-link的Linux工具可以支持下载调试你的二进制代码。adapterspeed:300kHzadapter_nsrst_delay:100Info:Theselectedtransporttookoverlow-leveltargetcontrolTheresultsmightdiffercomparedtoplainJTAG/SWDsrst_onlyseparatesrst_nogatesrst_open_drainconnect_deassert_srstInfo:clockspeed300kHzInfo:STLINKv2JTAGv23APIv2SWIMv0VID0x0483PID0x3748Info:usingstlinkapiv2Info:Targetvoltage:2918068Info:stm32lcpu:hardwarehas6breakpoints,4watchpointsInfo:accepting'gdb'connectionontcp/3333Info:STM32Lflashsizeis128kb,baseaddressis0x8000000undefineddebugreason7-targetneedsresetInfo:Auto-detectedRTOS:FreeRTOSadapterspeed:300kHztargetstate:haltedtargethaltedduetodebug-request,currentmode:ThreadxPSR:0x01000000pc:0x0800021cmsp:0x20004000STM32L:EnablingHSIadapterspeed:2000kHzInfo:Paddingimagesection0with3bytestargetstate:haltedtargethaltedduetobreakpoint,currentmode:ThreadxPSR:0x61000000pc:0x20000012msp:0x20004000targetstate:haltedtargethaltedduetobreakpoint,currentmode:ThreadxPSR:0x61000000pc:0x20000012msp:0x20004000adapterspeed:300kHztargetstate:haltedtargethaltedduetodebug-request,currentmode:ThreadxPSR:0x01000000pc:0x0800021cmsp:0x20004000在调试端,通过infothread来查看FreeRTOS的运行状况GNUgdb(GNUToolsforARMEmbeddedPro

国嵌老谢老NB了,态度极差

1、视频讲的不深、死板、项目视频几乎毫无价值是垃圾;2、服务很差,QQ什么服务都是虚设的,还不能批评老师,批评直接拉黑;3、购买视频后几乎是一次性生意,如果你要电脑后重新索要账户密码,各种理由不给拖着,淘宝投诉国嵌时候,他们就用其他不同日期交易的客户或者自己的马甲截图假的解决问题成功的伪证信息欺骗淘宝客服;4、如果你再QQ或者旺旺批评过他们 ,过一段时间就等着视频看不了吧,会做手脚报复用户。

在使用CMSIS V1接口的嵌入式 *** 作系统时,需要进行以下步骤:
1 首先,在Cubemx软件中选择您的MCU型号和相应的编译器。
2 在配置时钟树、GPIO、USART等硬件资源时,需根据 *** 作系统的要求来完成相应的配置。
3 在Cubemx软件中打开RTOS选项卡,并选择您想使用的嵌入式 *** 作系统,如μC/OS-II或FreeRTOS。
4 在“RTOS configuration”面板中,为您的 *** 作系统选择合适的内核,并选择合适的堆栈大小、任务数以及任务的优先级等参数。
5 在Cubemx软件中生成代码并导出,然后在您的IDE中打开这个工程并编译。
6 在您的应用程序中,可以使用 *** 作系统提供的API来创建和管理任务、信号量、消息队列等 *** 作系统资源。
7 最后,在启动代码中初始化 *** 作系统并启动调度器即可开始运行您的应用程序。
需要注意的是,使用嵌入式 *** 作系统时需要根据具体的硬件资源和应用场景来进行配置和优化,以实现最佳的性能和稳定性。同时,由于 *** 作系统本身的复杂性,开发人员需要具备一定的 *** 作系统相关知识和技能。

你指的计时和定时应该是要用在从一个标志开始计时到另一个标志停止计时,或者从现在开始定时一个精确时间t,以执行某个动作?
如果是这样,只能用硬件定时器来实现, *** 作系统里用在延时的计时都是根据自己的节拍为参考的,你可以用tick count来获取两次时刻的节拍数差来获取时间,但是这样的话到达某一时间并不能促使你的动作发生,需要你自己不停去检测。

freertos在一个任务中删除另一个任务的方法如下:
第一步:在vTaskDelete中完成,FreeRTOS先把要删除的任务从就绪任务链表和事件等待链表中删除。
第二步:然后把此任务添加到任务删除链表(即那个xTasksWaitingTermination),若删除的任务是当前运行任务,系统就执行任务调度函数第2步则是在idle任务中完成,idle任务运行时,检查xTasksWaitingTermination链表,如果有任务在这个表上,释放该任务占用的内存空间,并把该任务从任务删除链表中删除。

11 任务堆栈一但溢出,意味着系统的崩溃,在有MMU或者MPU的系统中,对堆栈溢出的检测十分简单,因为这是MMU和MPU必备的功能之一。(uCOS-II/uCOS-III中均有针对没有MMU和MPU的处理器对堆栈溢出检测的策略) 12 堆栈的大小取决于该任务的需求

任务不允许从实现函数中返回如果一个任务不再需要,可以用vTaskDelete()删除; 一个任务函数可以用来创建多个任务,各任务均是独立的执行实例,拥有属于自己的栈空间 典型的任务函数结构: voidATaskFunction( voidpvParameters ) { /可以像普通。

方法/步骤

嵌入式 *** 作系统有分时 *** 作系统和实时 *** 作系统,如果 *** 作系统能够使计算机系统及时响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,怎么这种系统称为实时 *** 作系统。

如果系统必须在极其严格的时间内完成的任务叫做硬件的实时 *** 作系统,如果不是很严格的话就是软件的实时 *** 作系统。

前往官网下载最新版的FreeRTOS系统,然后解压缩到本地。有两个文件夹,FreeRTOS文件夹里面是 *** 作系统内核,FreeRTOS-Plus里面是一些中间件如文件系统,网络协议栈等。

值得一提的是,FreeRTOS的教学用书和API参考手册电子版均已免费提供,建议在现在安装FreeRTOS的同时也一并下载到本地,以供后期学习查阅。

FreeRTOS的主要特点如下:

1 支持抢占式调度,合作式调度和时间片调度

2 具有低功耗模式,称为tickless模式

3 FreeRTOS-MPU支持M3/M4/M7内核的MPU(内存保护单元)

4 典型的内核使用大小在4k~9k

5 支持消息队列、二值信号量、计数信号量、递归信号量和互斥信号量,可用于任务与任务之间的消息传递和同步,任务与终端间的消息传递和同步

6 任务数量不限,任务优先级数量不限

7 高效的软件定时器,不需要损耗额外的CPU时间,除非需要执行定时器任务

8 任务间直接的消息传递,速度较快

9 FreeRTOS的队列是其它通信和同步机制的基础

移植FreeRTOS之前,原有的工程(比如跑马灯,越简单越好)中不能有SysTick、PendSV和SVC三个系统中断的使用,因为FreeRTOS系统要使用这三个中断。

1 准备好简单工程的模板

2 在工程模板中创建FreeRTOS文件夹,并将解压后源码FreeRTOS文件夹中Source目录下的所有内容复制进来

3 在user目录下需要手动窗件FreeRTOSConfigh的配置文件,也可以从官方demo中拿来修改后使用,比如从下载的源码目录下的FreeRTOS/Demo/CORTEX_M4F_STM32F407ZG-SK中进行拷贝

4 将源码文件添加到MDK的工程目录中,其中heap_4c文件路径Source/portable/MemMang,portc的路径FreeRTOS/Source/portable/RVDS/ARM_CM4F,这是因为我们使用的M451是CM4F内核的

在工程中添加新的头文件搜索路径:

\FreeRTOS\include;

\FreeRTOS\portable\RVDS\ARM_CM4F

打开FreeRTOSConfigh配置文件,根据自己硬件配置进行修改

1 首先将文件开头的__ICCARM__修改为__CC_ARM,即把编译器从IAR改为RealView

2 将以下宏配置为0

configUSE_IDLE_HOOK

configUSE_TICK_HOOK

configCHECK_FOR_STACK_OVERFLOW

configUSE_MALLOC_FAILED_HOOK

3 #define configUSE_PREEMPTION 1 将会使能抢占式调度器

4 #define configCPU_CLOCK_HZ ( SystemCoreClock )设置系统主频(M451的系统主频为72MHz)

5 #define configTICK_RATE_HZ ( ( TickType_t ) 1000 )设置系统节拍为1kHz,即1ms

6 #define configMAX_PRIORITIES ( 5 )定义可供用户使用的最大优先级数为5,那么用户可以使用的优先级号是0,1,2,3,4

6 #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 1024 ) )定义堆大小,FreeRTOS内核,用户动态申请内存,任务栈等都需要这个空间

4 将工程整体重新编译一次,这样FreeRTOS基本移植结束了

编写测试程序来验证一致的FreeRTOS是否已经可以使用

1 在mainc中添加一下几个头文件

#include "FreeRTOSh"

#include "taskh"

#include "queueh"

#include "croutineh"

2 在main函数的开头,禁止全局中断(除了NMI和HardFault),具体方法是:__set_PRIMASK(1);这样做的好处是可以防止执行的中断服务程序中有FreeRTOS的API函数,保证系统正常启动,不受别的中断影响。在portc中的函数prvStartFirstTask中会重新开启全局中断

3 创建任务AppTaskCreate();

4 启动调度,开始执行任务vTaskStartScheduler();

烧写程序,运行,可以从串口看到正确的输出信息


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10252558.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存