recan
recan
http://yyds.recan-li.cn 一个专注于嵌入式软件架构设计的新生代农名工

注册于 7 months ago

回答
356
文章
7
关注者
12

找到一篇关于ARM架构下ELx的介绍,可以参考下。

根据这个图:
image.png

EL3级别已经达到了硬件安全的级别了,一般来说对安全要求很严格的代码才会考虑放在这里执行;
想RT-Thread,仅是一个通用OS,没必要跑在EL3,EL1就已经足够了。

朋友,给你一个参考下:

地址:提取码:bnd7

如果对你有用的话,给个最佳吧,谢谢。

我觉得你现阶段处于对RTROS有些概念,但是又模糊的境界;
不然你不会说区别不大
我个人建议,现阶段你要突破的是,
搞清楚RTOS与裸机的重要的区别,
说白了就是搞清楚并实践,RTOS的几大核心模块:
信号量、互斥锁、定时器、内存管理、多线程、消息队列、邮箱、事件组。
这些关于介绍的原理性的东西,可以参考这里;
但是真正实践,我建议参考这个内核实验手册,有较为详细,有代码,有解释,有目的。

还有一点,现阶段可以不深入研究源码的实现,当你明白所有这些的应用场景的时候,再去扣内核代码,逐个逐个模块突破,那个时候RTOS就了然于胸了。

这个学习思路不局限于学习RT-Thread,其他RTOS也类似。

提供下链接脚本和map文件,
查一下代码空间和内存空间,是否合适?

从RT-Thread的ADC官方文档,以及adc的导出头文件,来看RRT的ADC是不支持DMA模式的。
image.png

查了下4.0.3的源码:
image.png

如图quan圈起来的地方就是对DMA的Instance进行设值。
image.png

hdma就等于DMA_Handle

找不到头文件的编译问题,
应该是头文件所在的目录没有添加到头文件的检索列表里面;
如果是gcc编译的话,需要在CFLAGS里面使用-Ixxx指定检索路径,
其中xxx为头文件的所在路径。
如果是使用IDE编译环境,可以找一找对应添加头文件路径的设置选项。

这种静电测试场景,单靠软件来抗,的确有点强人所难了。
不夸张地说,这样的情况下,任何一行代码都有出错的可能,
因为芯片可能都处于一个非正常工作的状态,谈何保证软件逻辑正常呢?

但不能下载文件夹(报同步错误),也不能同步设备,不知道怎么回事?

这部分有出错的log参考吗?

估计楼主搞混了tick值和时间值的关系,
按照你的系统搭配置,应该1tick=1ms,也就是1000个tick=1S
正确评估定时器的定时是否精确的方法:
1.在启动定时器前rt_tick_get取一下当前的tick0值;
2.每一次定时器超时回调的时候取一下tickn值;
3.分别计算出: tick1-tick0,tick2-tick1,以此类推;
4.根据1tick与1s的换算关系,对步骤3的差值进行比较;
5。得出比较结论。

如果你不像做tick与时间的换算,你可以考虑使用rt_tick_get_millisecond代替rt_tick_get。

找到一篇关于RTOS实时性的测试理论方法
不过这主要还是理论,
距离可参考复用的测试用例,
还有一些距离。

同意楼上的说法,在rt_enter_critical/rt_exit_critical里面调用mutex的接口,
已经违背了mutex的设计初衷。

你用的什么硬件平台,支不支持重启时读取上一次重启的原因?
我之前接触的一款芯片就可以通过寄存器读出来,
有对应的状态字,表示是看门狗重启、还是异常重启。
类似这样;
image.png
这样重启的时候,由boot读出来的。

回到
顶部

发布
问题

投诉
建议