烧写友善mini2440的板子的BIOS要设置初始化脚本,我看了脚本内容,基本都是设置内存数据。
我注释了一下:
SCRIPT SECTION:
Setmem 32-Bit 0x53000000 0x00000000 ; pWTCON , 看门狗定时器控制寄存器
Setmem 32-Bit 0x4A000008 0xFFFFFFFF ; INTMSK , 中断屏蔽寄存器
Setmem 32-Bit 0x4A00001C 0x000007FF ; INTSUBMSK , 针对INTMAK具体化的一个中断请求屏蔽寄存器
Setmem 32-Bit 0x53000000 0x00000000 ; pWTCON , 看门狗定时器控制寄存器
Setmem 32-Bit 0x56000050 0x000055AA ; rGPFCON , Port F control
Setmem 32-Bit 0x4C000014 0x00000007 ; CLKDIVN , CPU时钟分频控制寄存器
Setmem 32-Bit 0x4C000000 0x00FFFFFF ; LOCKTIME , 锁时计数寄存器
Setmem 32-Bit 0x4C000004 0x00061012 ; MPLLCON , MPLL寄存器
Setmem 32-Bit 0x4C000008 0x00040042 ; UPLLCON , UPLL寄存器
Setmem 32-Bit 0x48000000 0x22111120 ; Bus width & wait status
Setmem 32-Bit 0x48000004 0x00002F50 ; Boot ROM control
Setmem 32-Bit 0x48000008 0x00000700 ; BANK1 control
Setmem 32-Bit 0x4800000C 0x00000700 ; BANK2 control
Setmem 32-Bit 0x48000010 0x00000700 ; BANK3 control
Setmem 32-Bit 0x48000014 0x00000700 ; BANK4 control
Setmem 32-Bit 0x48000018 0x0007FFFC ; BANK5 control
Setmem 32-Bit 0x4800001C 0x00018005 ; BANK6 control
Setmem 32-Bit 0x48000020 0x00018005 ; BANK7 control
Setmem 32-Bit 0x48000024 0x008E0459 ; DRAM/SDRAM refresh
Setmem 32-Bit 0x48000028 0x00000032 ; Flexible Bank Size
Setmem 32-Bit 0x4800002C 0x00000030 ; Mode register set for SDRAM
Setmem 32-Bit 0x48000030 0x00000030 ; Mode register set for SDRAM
请问各位,为什么要初始化?
内存中写的这些值是给谁用的?
这是初始化板子的 让arm板工作在一个合适的状态 然后才能往里面烧写东西
楼上正解,不过楼主,正确来说应该叫bootloader吧。
应该理解为是作标记,是为之后的工作做基础,就好比将求知的空间划分出来,这样要存放东西、数据就很方便而不会导致错乱
引用: 引用 2 楼 goodlinux 的回复:
楼上正解,不过楼主,正确来说应该叫bootloader吧。
不是bootloader,是烧bootloader的时候写入的这些数据
如果已经有移植成功的bootloader,那么这些数据也可以从bootloader的启动代码中提取出来。
这些数据是用来初始化内存控制器和一些关键寄存器的。
你的jtag少些是,会通过jtag的协议去初始化这些寄存器。是CPU和内存达到可用的状态。
当然bootloader启动也需要初始化CPU吧?也是要设置一下寄存器的。
bootloader没有这些初始化,启动不了
jtag少些没有这些初始化数据,烧不进去,
就这么简单
引用: 引用 11 楼 goodlinux 的回复:
bootloader没有这些初始化,启动不了
jtag少些没有这些初始化数据,烧不进去,
就这么简单
哦,明白了,我以为片上Flash是可以直接用的,还是我知识不足啊
多谢指点
初始化了,内存才会工作啊,不然怎么下载东西到内存啊。
先是分配空间,同时初始化值是为了以后读写数据的入口状态