首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动内存初始化后的硬故障错误

启动内存初始化后的硬故障错误
EN

Stack Overflow用户
提问于 2020-08-03 19:58:45
回答 1查看 455关注 0票数 0

我已经在我的coreH7 stm32h743板上移植了U引导。我使用stm32h743-迪斯科文件和设备树作为移植的模板。我的星载内存是IS42S16400J,是8 8MBytes。我计算了sdram的参数,并将它们放在我的板设备树文件中,如下所示:

代码语言:javascript
运行
复制
/*
             * Memory configuration from sdram datasheet IS42S32800G-6BLI
             * firsct bank is bank@0
             * second bank is bank@1
             */
            bank2: bank@1 {
                st,sdram-control = /bits/ 8 <NO_COL_8
                                 NO_ROW_12
                                 MWIDTH_16
                                 BANKS_4
                                 CAS_3
                                 SDCLK_2
                                 RD_BURST_EN
                                 RD_PIPE_DL_0>;
                st,sdram-timing = /bits/ 8 <TMRD_1
                                TXSR_1
                                TRAS_1
                                TRC_6
                                TRP_2
                                TWR_1
                                TRCD_1>;
                st,sdram-refcount = <300>;
            };

此外,我已经配置了rcc值,以提供100 the的dram。

但是当uboot启动初始化时,就会出现硬故障中断。

这是日志:

代码语言:javascript
运行
复制
lib/fdtdec.c:fdtdec_setup_mem_size_base_fdt() fdtdec_setup_mem_size_base_fdt: Initial DRAM size 2000000
include/initcall.h:initcall_run_list() initcall: 08008a89
common/board_f.c:setup_dest_addr() Monitor len: 00039F80
common/board_f.c:setup_dest_addr() Ram size: 02000000
common/board_f.c:setup_dest_addr() Ram top: D2000000
include/initcall.h:initcall_run_list() initcall: 08008665
include/initcall.h:initcall_run_list() initcall: 0800117d
arch/arm/lib/cache.c:arm_reserve_mmu() TLB table from d1ff0000 to d1ff4000
include/initcall.h:initcall_run_list() initcall: 080088c3
include/initcall.h:initcall_run_list() initcall: 080088c7
include/initcall.h:initcall_run_list() initcall: 080086b1
common/board_f.c:reserve_uboot() Reserving 231k for U-Boot at: d1fb6000
include/initcall.h:initcall_run_list() initcall: 080088ed
common/board_f.c:reserve_malloc() Reserving 1032k for malloc() at: d1eb4000
include/initcall.h:initcall_run_list() initcall: 08008821
Hard fault
pc : 0800087e    lr : 00000000    xPSR : 21000000
r12 : d1eb3ff0   r3 : 00000000    r2 : 00000010
r1 : 00000000    r0 : d1eb3fb0
Resetting CPU ...

有什么问题吗?是否未成功初始化ram?为什么?也许参数不对?我怎么知道这个ram已经成功初始化了?这是u-boot的普通信息日志:

代码语言:javascript
运行
复制
U-Boot 2020.07-00610-g610e1487c8-dirty (Aug 04 2020 - 00:34:13 +0430)

Model: Waveshare STM32H743i-Coreh7 board
DRAM:  Hard fault
pc : 0800087e    lr : 00000000    xPSR : 21000000
r12 : d1eb3ff0   r3 : 00000000    r2 : 00000010
r1 : 00000000    r0 : d1eb3fb0
Resetting CPU ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 07:22:08

你的公羊尺寸错了。如前所述,实际的内存大小为8MB,以十六进制数表示为0x7A1200。但是在U引导日志中是“初始DRAM大小2000000”。你应该在你的董事会的设备树中改变它。

代码语言:javascript
运行
复制
memory {
      device_type = "memory";
      reg = <0xd0000000 0x7A1200>;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63236171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档