ADI ADSP-BF533 Blackfin?加载过程.pdf

所需积分/C币:9 2019-10-23 21:25:12 1.49MB PDF
收藏 收藏
举报

ADI ADSP-BF533 Blackfin?加载过程pdf,ADI ADSP-BF533 Blackfin?加载过程
ANALOG DEVICES 文件头信息 如图所示,加载文什中每个字节的头文件由一个字节的 (地址)位段,一个字节的 (字节数)位段和一个字节 (标志)位段组成。 10-Byte Header for Block I Block l 32-BIt ADDRESS 10-Bwte Header for Block i Block i 32-BIt COUNT 10-Byte Header for Block 3 16-Bit FLAg Block 3 10-Bwte Header for Block I 图字节文件义的容 在加载文件的各个块之前的字节的头文件包含以下信息,由片上 在加载过程中使用: (字节)目标地址,数据块将加载到存储器中的地址 (字节)块中的字节数 (字节)块的类型和控制命令: 11109 a 765 43210 ZEROFILL FINAL 0-NDn-∠ ero hlll block 0-Non -Last Block I-Zero-Fill Block 1-Last block PFLAG 3: 0 RESVECT number tor SPI slave booting 0-ADSP-BF53/BF532 ADSP-BF533 INIT 0-.nit 1.nit block IGNORE 0-Non-Ignore Block 1-Ignore Block 图 字的各个控制位 加载过程 第页共页 ANALOG DEVICES 各位包括 口位: 标志该块是一个全的缓冲区, 的块没有有效载荷数据,它们简 单的命令片上 从存储器 地址开始载入 字节的。这就为应用程序形 成了一个简要的加载文件,具有一个填充值为零的人缓冲区。这对于 兼容的工程也有 很大帮助,这种工程常常要求在加载过程中有填充值为的大缓冲区。 口位 指加载后的复位向量,所有 衍生产品都使用相同 的 对 该位设置为,而对 设置为。加载完成后, 片上 利用该位,让 跳至地址 让 跳至地址 ① 在硬件复位后,取决于 位,复位向量(存储于寄存器)设置为 。如果 寄存器的位(没有软件复位启动)被设置且软件复位有效, 则处理器就会导向寄存器中所设置的地址。该复位向量可以在运行时配置为另 地址,从而应用程序可以在软件复位后导向 或 以外的地址。如 果复位向量在运行时被修改,应确保寄存器中的复位向量地址是有效的指令地 址,该地址可以是内部指令存储器 存储器,或异步存储器。寄存器没 有默认值,该寄存器中的值在发出一次复位后将保持。当 时,片上 被旁路掉,在发布软件复位之前,必须先初始化寄存器。 口位 初始化块(块)是一个程序代码块,该块在实际应用程序代码加载覆盖它之前 执行。当片上 检测到块时,它就将该块加载到内部存储器,并发出一个给 它(初始化代码必须在其末尾有)。初始化代码执行后,通常会由应用程序代码覆盖, 如图。 位 指示一个没有加载到存储器的块。它指示 跳过加载流 节 在主加载模式下, 可以修改其源地址指针,在从加载模式下, 必须积极 清理有效载荷数据。目前的 工具只支持全局文件头的 块(目前有字节 计数,见下面的多应用程序(多)管理部分内容)。 口位 这些位用于从模式加载( 指用于从 处理器 到主主机的主等待( )信号的数目。对于 处理器, 该数值在()之间。关于该选通的用法的更多详细信息请参见下面的从模式 加载和主主机模式( )部分内容。 位 指示这个块后的加载过程已完成。处理完块后,片上 跳至 寄存器存储的复位向量地址。当处理器眺转到存储器执行代码时,它仍处于 模式, 且是优先权最低的中断() 加载过程 第页共页 ANALOG DEVICES ① 处理器不同, 处理器不要求二级加载。字节文 件头的位段为 处理器提供执行不需要二级加载的单级加载 过程所需的所有信息。 初始化代码( 在实际应用程序加载之前 允许执行一段程序代码,该程序代码可以服务于多种用途,包括初 始化 控制器,或修改设置,波特率,或等待状态以提高启动速率等等。 通过加载文件 命令行转换,加载到加载文件流的始端,这里的 是指 川户提供的自定义可执行的初始化代码。 ADSP. BF531/BF532/BF533 Processor ■圖■■■■■■ Flash/PROM or SPI Device Header for Init Block L1 Mem Init block Init block Header for L1 Block L1 Block App SDRAM Block Data Header for Block n 0xEF000000 B ock n On-Chip b ROM SDRAM ■■圖■■ ■■■ 「■■■冒■■ -BF531BF532/BF533 Processor After lnit code H Flash/PRoM or sPl Device Header -or Init block Execution Init Dlock Init Dlock L1 Block L1 Block Ap leader for SDRAM BlockFCode SDRAM Block Data Header for Black n 0xEF000000 Block n On-Chip boot snR△M SDRAM Block 图初始化代形执行加载 加载过程 第页共页 ANALOG DEVICES 当片上 检测到位已置位的块时,它将首先将其载入 存储器,然后发出一个 给其目标地址来执行该块。因此,为了完成余下程序的加载过程,用户必须利用指令来终止 以返回到片上 ① 用户有必要保存所有被 修改的处理器寄存器,并在 返回之前恢复。至少, 每个 都应保存 ,及所有和寄存器的值 处理器在高速暂 存器( )中提供了足够的堆栈空间, 可以通过堆栈指针 可实现出栈和压栈操作。列表说明了 文件应用实例,该实例用于建立 控 制器。 #nc⊥ude<deBF532.h> -m section program ★大★大大★★★★大★★古古★★大大★ 大★★x大★大大十大★大★十大十大★★★大★大★★*才大古大★★大大大★十实 [--SB]=AS⊥A Save registers onto Stack [--SP= RETS --sP]=(R7:0); [--Sp]=(p5:0) F女★★★责★★★头★古太★责★大太大★★★★赏十★★★★★太★★★大★★★★★★太其★青★大古青责★ 大★大青★文太★★★ *****★*工 nit Code section+*+★★★★★*★*★**+★*★****★****★*★★★*★青**++/ ***★* SDRAM Setup+★★★*+***/ Setup SDRAM: PO L-10(EBIU SDRRC) PO. H- hi(EBIU SDRRC)i / SDRAM Refresh Rate Control Register R0=0x074A(Z) W[P0]=R0; SYN PO. L= lo(EBIU SDBCTL) pO.H- hi(EBIU SDBCTL); // SDRAM Memory Bank Control Register R0=0x0001(Z) W[P0]=R0; PO. L lo(EBIU SDGCTL); PO.H= hi(EBIU SDCCTL);//SDRAM Memory Clobal Control Register R0.H=0x0091: R0,L=0x998D; SyN (P5:0)=【SF++]; / Restore registers from Stack (R7:0)-[SE++] RETS SP++ ASTAT =[SP++]i RTS; 列表 实例 加载过程 第页共页 ANALOG DEVICES 通常, 由单个段组成或由加载流中的单个块来表示,当然,该块也有位置位。但是, 个初始化块也可由多个段组成,这样,由多个块表示加载流中的 ,而只有最后一块的位被 置位。加载实用程序能确保这最后一块指向 的入口地址。如果加载实用程序无法实现 则它将保持位清零,即使对最后一个块也如此。并在之后发出一个附加块,而将该附加块的 位置位,但不提供任何有效载荷数据( ),只是为了片上 向给定的 执行 次指令。 虽然 文件通过各自的 工程编译得到,但它们与标准工程也存在差别 只提供一个可调用的子函数,因此,它们看起来更像是一个库函数,而不是一个应用程序。 总是普通应用程序代码的文件头,因此,不管 是由一个还是多个块组成,它都不能由 位指示器终止,否则将导致 终止加载过程 多应用程序(多)管理 除了用于预加载初始化外, 特性还可用于加载管理。如果多个可执行文件(文件)排列 在加载器命令行中,则加载文件()可以存储多个应用程序。加载器利用可执行文件创建多 个加载流,而只有一个独立的可执行文件生成的带 位于起始位置的启动流(如图)。 10-Byte Header for Count st Boot 4-Byte Count for Init Code DXE Stream InIt code 10-Byte Header for Caunt 10-Byte Header for Block 1 4-Byte Count for 1DXE Boot Block 1 Stream 1 DXE Application 10-Byte Header for Block 2 Block 2 10-Byte Header for Count 10-Byte Header for Block 3 4-Byte Count for 2nDXE Boot Block 3 Stream 2 DXE Application 10-Byte Header for Count 4-Byte Count for 3 DXE Boot Strean 3° DXE Application Etc Loader file 图多加载文件的内容 加载过程 第页共页 ANALOG DEVICES 加载文件()的结构允许用户确定存储于外部存储器中的可执行文件 (应用程序)的边界,因此,也具冇加载指定应用程序的能力,将被分析并放置在文件 中的文件置于一个 块之前。目前,该 块包括一个字节的计数值,即是包括文件 头在内的应用程序所包含的字节数,换言之,它就是下一个应用程序的偏移量。以后, 块除了用于保存字节的计数值外,还可用于保存其它信息。需要注意的是,每个 块都以一个 字节的文件头作为起始。 有了计数值信息,本质上,用户就可以在文件中在整个应用程序中“跳转”,直到所选的需 加载的应用程序。列表给出了一段 ,说明如何从位 形成多个应用程序加载 流。设文件包含一个 和两个应用程序, 跳过文件,加载第二个 应用程序。 include <defbf533. h> section program --SP]=ASTAT; // save registers onto Stack SP=RETS; [--sp]=(P7:0) [--SP]=(p5:0) [--sP]-Lc0; [--SP]= ITO [--sP]=LB0; BOOT EXE R0.H=0x2000 // RO- start cf ASYNC Bank O R0.L=0x0000; P1=2; / Number of DXEs to jump over (CANNOT EE ZERO! !) / After first iteration, Ro will point to DXEl After second iteration, Ro will point to DKE2 LSETUP(ADD DXE COUNT BEGIN, ADD DXE COUNT END) LCO= P1 ADD DXE COUNT BEGIN RI = 0xA; // skip over 10 bytes for the 1st 10-byte header R1-R1<1 // Multiply by 2 since we are booting from a 16-bit / flash (compensate for zero padding) =R0+R1; =R0 // Po points tc 4-Byte DXE COUNT R0=W[P0++](Z) // RO=xx Bits [7:0] of DXE COUNT R1=W[P0++](Z); // R1= xx Bits [15: 8] of DXE COUNT R2=W[P0++](Z) / R2= XX Bits [23: 16] of DXE COUNT R3=W[P0++](Z); //R3=xx Bits [31: 24] of DXE COUNT R3=R3<<24 R0=R0R1; // Ro= Bits[15:0] of DXE COUNT R2-R2|R3; / R2- Bits [31: 16] of DXE COUNT 0 //R3= DXE COUNT R0=R0+R3; // Modify pointer by the DXE COUNT so now Ro points PO=RO; //to next DXE ADD DXE COUNT END /x+大*★大大★大大大★★★★大★大大x文*★大大/ DONE LB0=[SP++] / Restore Recs LTO= [SP++ LC0=[SP++] p5:0 (x7:1)=[SP++]; //----->DO NOT RESTORE RO<- RETS SP++ / Modify sP by one for Ro case RETS SP++I / Pop oft the real value of RETS ASTAT= [SP++ RTS: 列表多启动的 实例 加载过程 第页共页 ANALOG DEVICES 需要注意的是约定寄存器,是 启动( )的外部指针,在 最后也不 会恢复。当处理器执行指令后回到片上 时,片上 将继续从存储于中的位置 开始加载。类似的,如果加载模式设置为加载( ,外部指针则存储于,因此,对于 启动多应用程序,也不要在 中恢复。 本应用笔记还附带一个基于 板的多加载实例( )。文件包含两个闪烁应用程序工程和一个 工程。 时,片上 将载入 然后 将一直等待,直到(按钮)或(按钮)有效。如果有效,则 加载并执行,如果有效,则加载并执行。是一个应用程序,它切换闪烁板上的, 而 则是闪烁板上所有的 具体的 加载模式 现在已经对 和 的加载过程有了一个人概的了解,本应用笔 记的剩余部分将讨论与每种加载模式相关的信息,如硬件接口,加载文件结构,以及预期的引脚动作 中讨论了如何从外部 位存储器( )执行 以下部分内容,将用到带有 的基于 板的闪烁指示灯程序实例 该实例程序附带在本应用笔记中。 ① 需要注意的是,以下所列的每种加载模式,必须保留地址 (数 据存储区的最后个字节),片上 将该存储空间用于存储加载文件中每个块的 文件头信息。加载完成后,应用程序在运行时可使用该存储空间。硅修订版本和见附 录 加载过程 第页共页 ANALOG DEVICES 位 加载( 因为 处理器上的为位宽(因此没有 ),所以位 只会占用数据总 线的低位()。图说明了 处理器和位 间的引脚连接 ADSP-BF533 DDEXT 8-Bit Flash pROM 之10Ks2 AMS(O) AMS AOE OE AWE R/ oT WR ADDRIN+l: 1] ADDRIN: 0 DATA7: 01 DATA7: 0 图 处理器和位 问的引体连接 列表给出了以十六进制格式生成的位 的加载文件(见本应用笔记附带的 ),为了说明加载文件的结构,将其分解为儿个不同的部分。 加载过程 第页共页

...展开详情
试读 28P ADI ADSP-BF533 Blackfin?加载过程.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    weixin_38744435 你的留言是对我莫大的支持
    2019-10-23
    • 至尊王者

      成功上传501个资源即可获取
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    ADI ADSP-BF533 Blackfin?加载过程.pdf 9积分/C币 立即下载
    1/28
    ADI ADSP-BF533 Blackfin?加载过程.pdf第1页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第2页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第3页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第4页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第5页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第6页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第7页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第8页
    ADI ADSP-BF533 Blackfin?加载过程.pdf第9页

    试读已结束,剩余19页未读...

    9积分/C币 立即下载 >