各位大神,
我有一台设备, 把firmware 写入16M flash后, 就可以启动设备.
我看了烧录firmware程序源码, 但我未明白如何算出指令:bootm 0x9f040000 , 请问"0x9f040000"是如何知道的?
部分代码如下:
try:
if BOARD_8M_FLASH:
UBOOT_SIZE = 0x30000 # 192KB - uboot
UBOOTENV_SIZE = 0x10000 # 64KB - uboot env
FW_SIZE = 0x700000 # kernel + rootfs
DATA_SIZE = 0x90000 # 576KB - data
CFG_SIZE = 0x20000 # 128 KB - cfg
ART_SIZE = 0x8000 # 32 KB
WXEE_SIZE = 0x8000 # 32 KB
CFG_OFFSET = UBOOT_SIZE + UBOOTENV_SIZE + FW_SIZE + DATA_SIZE
else:
UBOOT_SIZE = 0x30000 # 192KB - uboot
UBOOTENV_SIZE = 0x10000 # 64KB - uboot env
FW_SIZE = 0x780000 # 1024KB + 6656KB - kernel + rootfs
DATA_SIZE = 0x90000 # 576KB - data
CFG_SIZE = 0x20000 # 128 KB - cfg
ART_SIZE = 0x8000 # 32 KB
WXEE_SIZE = 0x8000 # 32 KB
CFG_OFFSET = UBOOT_SIZE + UBOOTENV_SIZE + FW_SIZE + FW_SIZE + DATA_SIZE
except:
UBOOT_SIZE = 0x30000 # 192KB - uboot
UBOOTENV_SIZE = 0x10000 # 64KB - uboot env
FW_SIZE = 0x780000 # 1024KB + 6656KB - kernel + rootfs
DATA_SIZE = 0x90000 # 576KB - data
CFG_SIZE = 0x20000 # 128 KB - cfg
ART_SIZE = 0x8000 # 32 KB
WXEE_SIZE = 0x8000 # 32 KB
CFG_OFFSET = UBOOT_SIZE + UBOOTENV_SIZE + FW_SIZE + FW_SIZE + DATA_SIZE
BOARD_8M_FLASH = False
ART_OFFSET = CFG_OFFSET + CFG_SIZE
WXEE_OFFSET = ART_OFFSET + ART_SIZE
16M flash框架图:
------解决方案--------------------
这个,你是不是有NON-Flash ? 0x9f040000 在你的Flash上??Non Flash好你也是可以接内存接口的。
再不然就是loader中开了MMU映射过去的,总之 0x9f040000那地方是一个可以执行代码的……