我应该为这个 BIN 文件插入 IDA 的内存地址信息是什么?
目标:
反汇编从firmware.sb 中提取的BIN 文件
此 BIN 文件包含低级板初始化、SDRAM 时钟、电源、中断控制器、LCD、duart 等。
我需要传递给 LCD、duart 和其他设备的值,以了解我的主板使用的确切硬件,并了解较早主板的固件是否适用于较晚的主板。
稍后我将使用这些值来创建 linux 驱动程序。(液晶)
参考这个问题。
背景信息:
板卡初始化顺序:
此 BIN 文件的一部分被加载到片上 RAM (OCRAM) 中,以进行最少的板初始化。执行此代码并将初始化对这个问题最重要的 SDRAM 板的其余部分。该 BIN 文件的更多内容将加载到 SDRAM 中,然后执行并初始化电路板的其余部分。然后这个 BIN 将加载并将控制权传递给操作系统。
基本上是一个引导加载程序。
这是一个使用我的自定义 u-boot 和内核的简单示例。为简洁起见,过度简化并删除了信息。实际的BIN 文件信息。
LOAD addr=0x00001000 len=0x00001ef4
CALL addr=0x00001000 arg=0x00000000
LOAD addr=0x40002000 len=0x000368ec
LOAD addr=0x40600000 len=0x002ed3c8
LOAD addr=0x40a00000 len=0x00002b1e
CALL addr=0x40002000 arg=0x00000000
这是该 μP的内存映射的一部分。
OCRAM 0x00000000 - 0x00007FFF 32KB
SDRAM 0x40000000 - 0x5FFFFFFF 512MB
Peripherals 0x80000000 - 0xBFFFFFFF
外设示例:
CLKCTRL 0x80040000 - 0x80041FFF
DBGUART 0x80070000 - 0x80071FFF
μP 是飞思卡尔 mx23 或 imx233。
这块板子有 16MB SDRAM 0x40000000 - 0x01000000
在“ARM 架构选项”对话框中,我设置了:
基本架构为ARMv5TEJ。
VFP 指令为NONE
Thumb 指令作为Thumb
在“反汇编内存组织”对话框中,我不确定要设置什么。
RAM 部分是我的 SDRAM,0x40000000 - 0x01000000?
ROM 部分是我的 OCRAM,0x00000000 - 0x00007FFF?
Input 文件加载地址、文件偏移量、加载大小呢?
加载大小是我的 SDRAM 的 16MB 吗?
外设地址去哪里了?