Skip to content

Conversation

liukangcc
Copy link
Member

@liukangcc liukangcc commented Dec 14, 2021

拉取/合并请求描述:(PR description)

[

描述

MAL (mpu abstract layer) 是 rt-thread 官方基于 Memory Protect Unit (MPU) 做的一款用于内存保护的抽象层组件。

作用

内存保护单元(MPU),提供了内存区域保护功能。通过 MPU,可以使程序更具健壮性,提高嵌入式系统的稳定性,使系统更加安全。通过使用 MPU 组件能使 RT-Thread 操作系统在进军军工、医疗、汽车等行业更具竞争力。MAL 组件具有以下特性:

  • 线程堆栈溢出检测
  • 内存隔离,某一线程使用的内存区域,其他线程禁止访问
  • 为每个线程设定不同的区域的内存的访问权限

测试

已在 ART-Pi 上测试完成
]

以下的内容不应该在提交PR时的message修改,修改下述message,PR会被直接关闭。请在提交PR后,浏览器查看PR并对以下检查项逐项check,没问题后逐条在页面上打钩。
The following content must not be changed in the submitted PR message. Otherwise, the PR will be closed immediately. After submitted PR, please use a web browser to visit PR, and check items one by one, and ticked them if no problem.

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 本拉取/合并请求代码是高质量的 Code in this PR is of high quality
  • 本拉取/合并使用formatting等源码格式化工具确保格式符合RT-Thread代码规范 This PR complies with RT-Thread code specification


struct rt_mal
{
rt_uint16_t index;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个作用是什么,会不会非对齐

@@ -0,0 +1,33 @@
menu "MPU abstraction layer"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is mal here? Please discuss.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个什么意思呢,是名字不好,还是放的位置不好?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mal这个名字直接放置于components下都会显得奇怪。或者放入到components/drivers目录下,或者定义一些公共的API接口,由不同的硬件架构进行实现,从而放到libcpu中。

@BernardXiong BernardXiong added the discussion This PR/issue needs to be discussed later label Dec 15, 2021
EXPORT HardFault_Handler
EXPORT MemManage_Handler
HardFault_Handler PROC
MemManage_Handler
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个Handler在这里去掉了 ,如果不开mal是不是就报错了?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里要考虑不开MAL的情况下,如果触发了异常,怎么处理

@BernardXiong
Copy link
Member

从名字上来说,直接使用mpu应该会更直接

Copy link
Member

@BernardXiong BernardXiong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

请仔细考虑 & 设计

@@ -0,0 +1,33 @@
menu "MPU abstraction layer"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mal这个名字直接放置于components下都会显得奇怪。或者放入到components/drivers目录下,或者定义一些公共的API接口,由不同的硬件架构进行实现,从而放到libcpu中。

default 2

config RT_MPU_REGIONS_NUMBER
int "Set mpu regions number"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个MPU是一份ARM only的实现吗?如果是这样,那么放入到components下是非常不适合的

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

是通用的实现,支持 ARM RISCV


static rt_err_t _mpu_get_info(rt_thread_t thread, rt_uint32_t type, void *arg)
{
return RT_EOK;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

所有的risc-v实现都是空的?…… Please tag this PR as draft.

STR r1, [r0] ; update from thread stack pointer

switch_to_thread
IMPORT rt_mpu_table_switch
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TAB/space ……

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

汇编.s .asm .S .a后缀也应该纳入ci格式检查

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不过上次FreeRTOS那边曾经提到过一个问题,貌似有些编译器如果改成空格会出问题,所以需要format之后再实际编译测试一下才可以。

@supperthomas supperthomas changed the title [update] memory protect unit abstract layer. [component][mpu] [update] memory protect unit abstract layer. May 4, 2023
@mysterywolf mysterywolf marked this pull request as draft May 13, 2023 04:31
@Guozhanxin Guozhanxin closed this Dec 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion This PR/issue needs to be discussed later
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants