这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32H7Sx移植lwip中的MPU与sct的设置

共6条 1/1 1 跳转至

STM32H7Sx移植lwip中的MPU与sct的设置

助工
2024-08-11 08:52:20     打赏

【前言】

在STM32H7带来了大内存,供用户使用的内存增多,为了让系统稳定运行,MPU起到了重要的作用。书写这次的分享主要是在STM32H7S78-DK中的lwip配置中MPU的配置。

【硬件环境】

STM32H7S78-DK

【软件环境】

1、stm32cubeIDE

2、stm32cubeMX

3、mdk5.38

【内存地址】

在一些文章中有介绍,stm32H7系列的lwip的内存需要放到DTCM或者SRAM中,要过查看STM32H7S78的一些Lwip的示例,其配置在SRAM中,地址为0x24020000中长度为16K。在RM0477第七章150-151页中有内存地址的详细介绍。

image.png

4、打开ETH中的app选项,Mode选择RMII,使能ETH PHY——INTN中断引脚。

image.png

5、在基本参数设置中,MAC地址选择默认生成的,如果在同一域局网内有多个相同模块,请手工设置。TX 、RX描述符地址选择0x20200080与0x20200000,长度为4位。RX的缓冲地址为0x24020100,长度为1000。

image.png

在描述符的长度介绍中,有前辈倪博的天空画出了详细的描述的图形

image.png

【注】图片要有侵权请联系删除

根据上述的图形描述结合STM32H7S7x8的内存地址图,来综合设置他的内存地址。特别说明一下,在stm32H7系列中经常会因为内存保护没有设置对而造成程序跑起来的,同样的代码,就是跑不起来!

6、GPIO的设置,需要参照开发板的用户手册进行对应的IO设置,这块开发板注意点是ETH-MDC这个引脚,在原理图中这PB10,但是在开发板介绍中有使用J6跳线来选择PC1的。同时修改IO的Very High的通信速度。

image.png

7、如果使用RTOS或者是中断接收。需要使能他的中断。

8、MPU的配置,在生成工程后,在MPU中添加对ETH的内存地址配置:

  /** Initializes and configures the Region and the memory to be protected
  */
  MPU_InitStruct.Number = MPU_REGION_NUMBER2;
  MPU_InitStruct.BaseAddress = 0x24020000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_32KB;
  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;

  HAL_MPU_ConfigRegion(&MPU_InitStruct);

9、同时在.sct配置中添加配置选项:

  RW_DMARxDscrTab 0x24020000 0x80 {
  *(.RxDescripSection)
  }
  RW_DMATxDscrTab 0x24020080 0x80 {
  *(.TxDescripSection)
  }
  memory_RX_POOL_base 0x24020100 0x8000-0x100 {
  *(.Rx_PoolSection)
  }

10、在代码中确认描述符与缓冲是否对应:

image.png

【验证】

在经过这样的配置后,配置好Lwip的其他选项,下载到开发板,便可以正常的引导ETH了。

6fe398fd19e3d7fcc709fbaa35e3bc7.png






关键词: STM32H7S     STM32CubeMAX     MPU    

专家
2024-08-11 09:52:16     打赏
2楼

不错啊


专家
2024-08-11 09:46:19     打赏
3楼

谢谢分享


专家
2024-08-11 19:27:31     打赏
4楼

谢谢分享


高工
2024-08-15 08:46:11     打赏
5楼

谢谢分享


院士
2024-08-16 17:27:22     打赏
6楼

谢谢分享,学习了。


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]