自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 606

转载 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 314

转载 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 350

转载 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 283

转载 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 390

转载 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 311

转载 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 410

转载 mpc8260 2

1      romInit.s程序概述该文件包含引导ROM和基于ROM的VxWorks映像的入口初始化汇编代码。入口点为romInit()函数,是系统加电启动后首先执行的代码。同时它也设置了启动类型参数BOOT_COLD,并把该参数传递给通用的romStart()函数。如果硬件需要立即内存映射或设置特殊的寄存器,则在这里处理。大部分硬件初始化操作在sysLib.c文件中的sysHwIni

2016-06-22 11:06:31 449

转载 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

《精通ARM嵌入式Linux系统开发》由浅入深、通俗易懂地讲解了嵌入式Linux的系统设计与开发。全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Bootloader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动开发、嵌入式Linux网络程序开发、MiniGUI图形界面开发、设备驱动开发案例、综合案例等内容。书中通过大量的例程来讲解知识要点,并提供了大量极有参考价值的开发案例,读者可以通过这些例程和开发案例对嵌入式Linux开发有一个系统的学习和提高。 《精通ARM嵌入式Linux系统开发》共包括4个方面的内容:在嵌入式系统的硬件结构中讲述了嵌入式处理器ARM的特点、嵌入式系统硬件环境的构建和ADS开发工具的使用;在嵌入式Linux系统移植中讲述了目标板软件环境的构建,主要包括Boot Loader、Linux内核、文件系统及交叉开发环境的构建;在嵌入式Linux软件开发中讲述了嵌入式Linux C语言开发工具的使用、标准库的使用、多任务开发基础和设备驱动开发基础;在嵌入式应用系统实例分析中讲述了嵌入式Linux的网络程序开发、MiniGUI图形界面开发、CAN总线设备驱动设计、DM9000网络驱动设计、SD卡驱动设计和嵌入式B超系统设计。

2013-05-26

精通ARM嵌入式Linux系统开发2

《精通ARM嵌入式Linux系统开发》由浅入深、通俗易懂地讲解了嵌入式Linux的系统设计与开发。全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Bootloader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动开发、嵌入式Linux网络程序开发、MiniGUI图形界面开发、设备驱动开发案例、综合案例等内容。书中通过大量的例程来讲解知识要点,并提供了大量极有参考价值的开发案例,读者可以通过这些例程和开发案例对嵌入式Linux开发有一个系统的学习和提高。 《精通ARM嵌入式Linux系统开发》共包括4个方面的内容:在嵌入式系统的硬件结构中讲述了嵌入式处理器ARM的特点、嵌入式系统硬件环境的构建和ADS开发工具的使用;在嵌入式Linux系统移植中讲述了目标板软件环境的构建,主要包括Boot Loader、Linux内核、文件系统及交叉开发环境的构建;在嵌入式Linux软件开发中讲述了嵌入式Linux C语言开发工具的使用、标准库的使用、多任务开发基础和设备驱动开发基础;在嵌入式应用系统实例分析中讲述了嵌入式Linux的网络程序开发、MiniGUI图形界面开发、CAN总线设备驱动设计、DM9000网络驱动设计、SD卡驱动设计和嵌入式B超系统设计。

2013-05-26

精通ARM嵌入式Linux系统开发1

《精通ARM嵌入式Linux系统开发》由浅入深、通俗易懂地讲解了嵌入式Linux的系统设计与开发。全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Bootloader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动开发、嵌入式Linux网络程序开发、MiniGUI图形界面开发、设备驱动开发案例、综合案例等内容。书中通过大量的例程来讲解知识要点,并提供了大量极有参考价值的开发案例,读者可以通过这些例程和开发案例对嵌入式Linux开发有一个系统的学习和提高。 《精通ARM嵌入式Linux系统开发》共包括4个方面的内容:在嵌入式系统的硬件结构中讲述了嵌入式处理器ARM的特点、嵌入式系统硬件环境的构建和ADS开发工具的使用;在嵌入式Linux系统移植中讲述了目标板软件环境的构建,主要包括Boot Loader、Linux内核、文件系统及交叉开发环境的构建;在嵌入式Linux软件开发中讲述了嵌入式Linux C语言开发工具的使用、标准库的使用、多任务开发基础和设备驱动开发基础;在嵌入式应用系统实例分析中讲述了嵌入式Linux的网络程序开发、MiniGUI图形界面开发、CAN总线设备驱动设计、DM9000网络驱动设计、SD卡驱动设计和嵌入式B超系统设计。

2013-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除