- 博客(22)
- 资源 (3)
- 收藏
- 关注
转载 mpc8260 21
3、 “黑”调法调试BSP,尤其是第一次调试,往往需要经常烧制BOOTROM,尤其是使用奇、偶片的单板,这还是很费时间的。而最初的BIOS文件往往不是很大,所以我们可以在烧片时通过设定BOOTROM写范围的大小来节省部分时间。一般用的烧片BOOTROM大小为512K,即0x00007FFFF,我们可以根据编译生成的bin文件大小来设定,一般不会超过0x00003FFFF。这样的话,写数据、校验数据
2016-06-22 11:39:15 339
转载 mpc8260 20
2.2.4 建议1、 刚接触BSP设计时,往往会在Tornado进行新工程建立、编译、调试等操作,其实这很不方便。建议在Source Insight中进行这些操作,即便启用了Tornado的WDB调试器。首先将最小系统所用的BSP模板文件拷贝到所建工程下面,然后随着BSP功能的扩充而增加相应文件。如果对调用的文件进行修改,最好是先拷贝到所建工程目录下,否则,可以通过#include对调用文件及
2016-06-22 11:38:37 314
转载 mpc8260 19
从上表可以看出,软复位主要是为了调试方便,而上电复位最彻底,根据程序流程可以简要区别上电复位(cold)和硬复位(warm) 如下:表1 单板复位流程示意1. 其它模块或函数不应当调用romInit.s中的代码,特别是sysLib.o和sysALib.o模块。如果需要一个外部模块,则把这个模块附加到makefile文件里的变量BOOT_EXTR中即可,这样该模
2016-06-22 11:37:08 236
转载 mpc8260 18
1. 冷启动和热启动:所谓冷启动(clod)是指硬件环境通过加电启动,在romInit()函数中需要保存系统启动类型,启动类型的宏定义为BOOT_COLD。所谓热启动(warm)是通过调用reboot()、Ctrl+X或异常中断重新启动目标机系统,实际上这些操作是把控制权传递给ROM中的监控函数sysToMonitor(),该函数位于sysLib.c文件中,如果执行sysToMonitor(2
2016-06-22 11:36:16 608
转载 mpc8260 17
1) ROM_TEXT_ADRS:引导ROM的入口地址。对于多数目标板,把该地址设为ROM区的起始地址,即ROM_BASE_ADRS,而该地址恰好和BR0/OR0的基地址位域的设置是相一致的。不过,可能有些硬件结构使用ROM中的起始区域作为向量复位区,这样的话就要给该地址一个适当的偏移量,这个偏移量跟所用的CPU体系结构有关系,而且,可以从其相应BSP参考模板直接引用。对于8260来说,该偏移
2016-06-22 11:34:05 438
转载 mpc8260 15
1. 内存自检测试:系统复位时(冷启动),romInit.s开始是在ROM中运行的,可以在此文件中加入跳转语句(加在初始化内存之后),使程序执行到到C程序中执行内存自检测试函数,该函数跟BSP的整个执行流程并无关系,而且在跳转前需要进行堆栈设置。至于具体的内存自检测试调试方法将在后面内存初始化部分作详细介绍。2. Makefile文件中部分宏的定义:Makefile文件是一个构造VxW
2016-06-22 11:33:37 366
转载 mpc8260 15
其中,STACK_SAVE是为RomStart()函数准备的最大堆栈大小。对于8260来说,其堆栈增长方向是向下的,在本单板调试过程中采用的是ROM驻留型映像启动顺序,因此堆栈的起始地址为STACK_RESIDENT。在经过多次的宏定义后最终被设置为RAM_HIGH_ADRS宏,具体在configAll.h和config.h头文件中实现。至于ROM驻留型映像和非ROM驻留型映像详细介绍有很多这方面
2016-06-22 11:30:33 499
转载 mpc8260 14
1. 堆栈设置:通过点灯程序的执行,根据romInit.s模板和单板硬件设计逐步完成各寄存器的配置。执行到这里,应该是为进入到C程序作准备了。首先要初始化堆栈指针,即将C程序入口地址赋给堆栈指针进行保存,所谓入口地址是指从ROM拷贝引导映像的入口地址。这段初始化代码将在编译过程中进行编译,以便在进入C程序后由romStart()函数调用该参数,为从ROM中搬移BIOS到RAM中作准备。在Pow
2016-06-22 11:29:36 464
转载 mpc8260 13
1. 关闭Instruction Cache和Data Cache:为了避免在对寄存器初始化时由于对ICache和DCache的访问而造成初始化失败或程序执行紊乱,一般需要禁掉ICache和DCache,具体操作如下: mfspr r7, HID0 isync sync
2016-06-22 11:28:20 301
转载 mpc8260 11
1. BR0/OR0寄存器的配置:这两个寄存器是系统默认给片选信号CS0的配置寄存器,而CS0的固定片选是BOOTROM,这决定了单板上电后首先从BOOTROM中调用BIOS。对于这两个寄存器的配置值根据单板硬件来配置,需要说明的是两个寄存器的配置顺序有一定要求,即先要配置BR0,再配置OR0。这一点同其他几个BRx/ORx的配置顺序恰好相反。另外,还要注意的是BR0的BA位域和PS位域的设定
2016-06-22 11:25:54 322
转载 mpc8260 11
13-15 ISB 000 定义内部双口RAM的缺省地址空间,即定义了IMMR[ISB]和内存的基地址:0x0000_0000。 001 0x00F0_0000 010 0x0F00_0000 011 0x0FF0_0000 100 0xF000_0000 101 0xF0F0_0000 110 0xFF00_0000 111 0xFFF0_00001
2016-06-22 11:24:53 315
转载 mpc8260 10
位 位 域 配置值 意 义0 EARB 0 使用8260内部仲裁。单CPU方式时,必须为0。 1 使用8260外部仲裁。1 EXMC 0 使用8260内部存储控制器。单CPU方式时,必须为0。 1 使用8260外部存储控制器。2 CDIS 0 使能8260内部CORE。单CPU方式时,必须为0。 1 禁止8260内部CORE,被作为从
2016-06-22 11:23:58 351
转载 mpc8260 9
1.1.1 其他1. 两次跳转(基本的):第一次是由cold——>start,即由冷启到热启。这各过程主要完成:设置启动类型参数BOOT_COLD;IMMR地址重定位;获取start入口地址:因为在系统刚上电时CPU将地址设定在了0x100,所以要从该地址跳转到引导ROM入口地址去,该地址计算方法是:(Start – romInit + ROM_TEXT_ADRS),其
2016-06-22 11:20:56 284
转载 mpc8260 8
2、对PDATD寄存器的初始化示例二:IMMR基地址 + 寄存器偏移地址,偏移值为0 lis r5, HIADJ (0xfbffffff) /*对某一管脚置0 */ addi r5, r5, LO (0xfbffffff) lis r6, HIADJ (0x04700000 + 0x010D7
2016-06-22 11:20:03 391
转载 mpc8260 8
1、对PDATD寄存器的初始化示例一:偏移值为寄存器地址 lis r5, HIADJ (0xfbffffff) /*对某一管脚置0 */ addi r5, r5, LO (0xfbffffff) lis r6, HIADJ (0x04700000) /* 取PDATD
2016-06-22 11:19:02 358
转载 mpc8260 7
1.1.1 I/O端口寄存器初始化为了实现点灯程序,先要根据单板硬件设计初始化好指示灯所用CPM部分的相应端口或管脚,即将该端口配置为通用I/0口作为对指示灯的驱动输出并将相应管脚置高或置低。这包括对端口的5个寄存器(调试单板一般选用D端口)的初始化:开路漏极寄存器PODRD、数据方向寄存器PDIRD、管脚分配寄存器PPARD、特殊功能配置寄存器PSORD、数据寄存器PDATD
2016-06-22 11:17:46 311
转载 mpc8260 6
通过上面的基本配置后在程序执行跳转到cold前调用点灯程序(后面详细介绍)进行验证,发现单板指示灯没有按要求点亮。于是观察生成的bin文件,发现HRCW配置字地址是从0xnnn1_0100开始,而不是0xnnn0_0000,再对hex文件进行验证,同样也是从0xnnn10100地址开始。这说明在编译时出现了地址配置错误,于是对编译的脚本文件进行重新配置起始地址:由原来的0设定为10100。重新编译
2016-06-22 11:17:11 476
转载 mpc8260 5
IP复位向量基址00x000n_nnnn10xFFFn_nnnn表1 IP与复位向量地址关系注:“n”表示取任何数字,“_”表示分割符没有意义。HRCW[CIP]MSR[IP]011
2016-06-22 11:16:37 312
转载 mpc8260 4
对于Power PC系列,其复位向量地址有两种选项:0xFFFn_nnnn或0x000n_nnnn(n为任意数字)。由寄存器MSR[IP]位确定。当寄存器MSR的IP位域为0时,复位向量地址就为0x000n_nnnn;而当IP=1时,复位向量为0xfffn_nnnn。而MSR的位域IP的初始值由硬件配置字HRCW来确定。对于8260,MSR[IP]位的初始值则由上电时的硬件复位配置字中的CIP位决
2016-06-22 11:16:02 310
转载 mpc8260 3
1.1 调试过程详细介绍1.1.1 硬件配置字(HRCW)设置该配置字是在上电(冷启动)时首先读取的一个值。该配置字有两个位域参数设置很重要:一是HRCW[ISB]:该位域(bit13~bit15)值决定着IMMR的缺省基地址值;二是HRCW[CIP]:该位域(bit6)值决定了选择哪个复位向量地址值。 如:若HRCW[ISB]位域值设置为0b001,则根据82
2016-06-22 11:07:12 414
转载 mpc8260 2
1 romInit.s程序概述该文件包含引导ROM和基于ROM的VxWorks映像的入口初始化汇编代码。入口点为romInit()函数,是系统加电启动后首先执行的代码。同时它也设置了启动类型参数BOOT_COLD,并把该参数传递给通用的romStart()函数。如果硬件需要立即内存映射或设置特殊的寄存器,则在这里处理。大部分硬件初始化操作在sysLib.c文件中的sysHwIni
2016-06-22 11:06:31 450
转载 mpc8260 1
关键词Key words:MPC8260 VxWorks BSP HRCW摘 要Abstract:本文主要介绍了在BSP设计的起始阶段,如何对romInit.s文件中包含的CPU最小系统的基本寄存器进行配置,以及如何将程序执行到C程序中的一种调试方法。由于各CPU所在单板硬件的不同,本文只是对一些共性的配置进行介绍。前 言Preface: 本文重
2016-06-22 11:03:10 310
精通ARM嵌入式Linux系统开发3
2013-05-26
精通ARM嵌入式Linux系统开发2
2013-05-26
精通ARM嵌入式Linux系统开发1
2013-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人