Qemu-STM32(七):STM32F407加入Power控制器

概述

本文主要描述了在Qemu平台中,如何添加STM32F407的Power控制器模拟代码。

参考资料

STM32F4XX TRM手册,手册编号:RM0090

添加步骤

1、在hw/arm/Kconfig文件中添加STM32F4XX_PWR,如下所示:

+号部分为新增加内容

--- a/hw/arm/Kconfig
+++ b/hw/arm/Kconfig
@@ -340,6 +340,7 @@ config STM32F407_SOC
     select STM32F4XX_EXTI
     select STM32F4XX_USART
     select STM32F4XX_RCC
+    select STM32F4XX_PWR

2、在include/hw/arm/stm32f407_soc.h文件中添加

+号部分为新增加内容

--- a/include/hw/arm/stm32f407_soc.h
+++ b/include/hw/arm/stm32f407_soc.h
@@ -27,6 +27,7 @@
 #include "hw/misc/stm32f4xx_exti.h"
 #include "hw/char/stm32f4xx_usart.h"
 #include "hw/misc/stm32f4xx_rcc.h"
+#include "hw/misc/stm32f4xx_pwr.h"
 
 #define TYPE_STM32F407_SOC "stm32f407-soc"
 #define STM32F407_SOC(obj) \
@@ -44,6 +45,7 @@
 #define STM32F407_USART6    0x40011400
 
 #define RCC_BASE_ADDR       0x40023800
+#define POWER_BASE_ADDR     0x40007000
 
 #define FLASH_BASE_ADDRESS  0x8000000
 #define FLASH_SIZE          0x100000
@@ -64,6 +66,7 @@ typedef struct STM32F407State {
     STM32F4xxSyscfgState syscfg;
     STM32F4xxExtiState exti;
     STM32F4XXRccState rcc;
+    STM32F4XXPowerState power;
     STM32F4XXUsartState usart[STM_NUM_USARTS];
 } STM32F407State;

3、在hw/arm/stm32f407_soc.c文件中添加如下代码片段

+号部分为新增加内容

--- a/hw/arm/stm32f407_soc.c
+++ b/hw/arm/stm32f407_soc.c
@@ -63,6 +63,9 @@ static void stm32f407_soc_initfn(Object *obj)
     object_initialize(&s->rcc, sizeof(s->rcc), TYPE_STM32F4XX_RCC);
     qdev_set_parent_bus(DEVICE(&s->rcc), sysbus_get_default());
 
+    object_initialize(&s->power, sizeof(s->power), TYPE_STM32F4XX_POWER);
+    qdev_set_parent_bus(DEVICE(&s->power), sysbus_get_default());
+
     for (i = 0; i < STM_NUM_USARTS; i++) {
         object_initialize(&s->usart[i], sizeof(s->usart[i]), TYPE_STM32F4XX_USART);
         qdev_set_paren
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值