基于ARM7核处理器VxWorks系统BSP设计
个与我们所用的处理器相同或相近。与BSP相关的文件有:romInit.s、sysAlib.s、bootInit.c、
bootConfig.c、sysLib.c、config.h、configNet.h、makefile以及与我们硬件相关的,如串口sysSerial.c等。由于篇幅所限,具体的文件作用在此就不说了。下面主要根据S3C4510B来阐述一下BSP开发步骤。
(1)拷贝BSP
将wrSBCArm7BSP拷贝一份并命名为4510BSP,接下来的工作就是修改该目录下的文件,从而得到自己的BSP。
(2)修改MakeFile文件
修改4510BSP目录下的makefile文件,修改如下几行:
TARGET_DIR=4510BSP#changedbycaiyang
VENDOR=CAI#changedbycaiyang
BOARD=MyArmBoard#changedbycaiyang
ROM_TEXT_ADRS=01000000#ROMentryaddress
ROM_WARM_ADRS=01000004#ROMwarmentryaddress
ROM_SIZE=00080000#numberofbytesofROMspace
RAM_LOW_ADRS=00006000#RAMtext/dataaddress(bootrom)
RAM_HIGH_ADRS=00486000#RAMtext/dataaddress(bootrom)
MACH_EXTRA=
注解:ROM_TEXT_ADRS:BOOTROM的入口地址。对大多数板来说,这就是ROM地址区的首地址,然而也有的硬件配置使用ROM起始的一部分地址区作为复位向量,因此需要根据此设置偏移量作为它的地址。这个偏移量因CPU结构而定。
ROM_WARM_ADRS:BOOTROM热启动入口地址。它通常位于固定的ROM_TEXT_ADRS+4的地方。当需要热启动时,sysLib.c文件中sysToMonitor()函数代码明确的跳转到ROM_WARM_ADRS地址处开始执行。
ROM_SIZE:ROM实际大小。
RAM_LOW_ADRS:装载Vxworks的地址。
RAM_HIGH_ADRS:将BootRomImage拷贝到RAM的目的地址。
注意:RAM_LOW_ADRS和RAM_HIGH_ADRS都是绝对地址,通常位于DRAM起始地址的偏移量处,该偏移量取决于CPU结构,这需要参考VxWorks内存分布。对于ARM的内存分布请看图3,从图3可以看出RAM_LOW_ADRS在DRAM+0x1000处。这些地址对于S3C4510B来说都应该是重映射后的地址。
(3)修改config.h文件
主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和undef掉不需要的部分。注意这些应该和makefile文件中设置的一致。
《基于ARM7核处理器VxWorks系统BSP设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/141674.html
bootConfig.c、sysLib.c、config.h、configNet.h、makefile以及与我们硬件相关的,如串口sysSerial.c等。由于篇幅所限,具体的文件作用在此就不说了。下面主要根据S3C4510B来阐述一下BSP开发步骤。
(1)拷贝BSP
将wrSBCArm7BSP拷贝一份并命名为4510BSP,接下来的工作就是修改该目录下的文件,从而得到自己的BSP。
(2)修改MakeFile文件
修改4510BSP目录下的makefile文件,修改如下几行:
TARGET_DIR=4510BSP#changedbycaiyang
VENDOR=CAI#changedbycaiyang
BOARD=MyArmBoard#changedbycaiyang
ROM_TEXT_ADRS=01000000#ROMentryaddress
ROM_WARM_ADRS=01000004#ROMwarmentryaddress
ROM_SIZE=00080000#numberofbytesofROMspace
RAM_LOW_ADRS=00006000#RAMtext/dataaddress(bootrom)
RAM_HIGH_ADRS=00486000#RAMtext/dataaddress(bootrom)
MACH_EXTRA=
注解:ROM_TEXT_ADRS:BOOTROM的入口地址。对大多数板来说,这就是ROM地址区的首地址,然而也有的硬件配置使用ROM起始的一部分地址区作为复位向量,因此需要根据此设置偏移量作为它的地址。这个偏移量因CPU结构而定。
ROM_WARM_ADRS:BOOTROM热启动入口地址。它通常位于固定的ROM_TEXT_ADRS+4的地方。当需要热启动时,sysLib.c文件中sysToMonitor()函数代码明确的跳转到ROM_WARM_ADRS地址处开始执行。
ROM_SIZE:ROM实际大小。
RAM_LOW_ADRS:装载Vxworks的地址。
RAM_HIGH_ADRS:将BootRomImage拷贝到RAM的目的地址。
注意:RAM_LOW_ADRS和RAM_HIGH_ADRS都是绝对地址,通常位于DRAM起始地址的偏移量处,该偏移量取决于CPU结构,这需要参考VxWorks内存分布。对于ARM的内存分布请看图3,从图3可以看出RAM_LOW_ADRS在DRAM+0x1000处。这些地址对于S3C4510B来说都应该是重映射后的地址。
(3)修改config.h文件
主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和undef掉不需要的部分。注意这些应该和makefile文件中设置的一致。
《基于ARM7核处理器VxWorks系统BSP设计(第2页)》