网站大量收购独家精品文档,联系QQ:2885784924

作者话adsp-21489 evb开发板说明.pdfVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

作者的话

这部分的内容,ADI没有给相关的资料,OP也没具体做过,不过OP有一个客户做完了,

写了一个小总结,我认为比较有价值,收集起来一下给大家,希望对你的开发有帮助。

正文

之前因项目需要做了一下2148x的bootloader,于是在参考几份资料后对

bootloader有所了解。这些资料包括:ADSP-214xx_hwr_rev1.1、EE345、

50_ldr_mn_rev_2.5和cces_1-0-2_loader_man_rev.1-2,其中50_ldr_mn_rev_2.5和

时纠正更改,此外,由于笔者只做过spiflash的启动,所以文档中也只会对spiflash

的启动作详细描述。

首先说说程序是如何boot起来的,主要有两部分:首先启动后,根据选定为spi

flash模式,先发送读指令从flash的0x000000地址中将一个256instructionwords

(48-bit)的小程序load进,这个小程序就是bootkernel。这个小程序在中

跑起来,然后根据一些必要信息,将真正应用程序load入,但不包括IVT

(interruptvectortable)。注意,bootkernel本身就是在sharc所对应的IVT的

位置中跑起来的,也即0x0008c000~0x0008c0ff这段地址中。load完application后,

bootkernel会用SPI的DMA将自身改写为application对应的IVT(听起来似乎很神

奇),至此,bootkernel的工作完成,加载过程结束,开始跑application。

接下来,是时候说一下在上面反复提及的bootkernel。这是一个用asm写的小程

序,由给出,用户基本上不需要进行过多修改,只是在做secondbootloader的时

候需要进行一定修改,但例程都在EE345对应的参考程序中可查看。bootkernel里面

的label主要分为3类:首先,第一部份也是最为重要,或者说用户可修改用到的是

“user_init:”这是bootkernel为用户自定义代码所预留的,我们所做的不默认地

从spiflash的0x00000地址而从其余的诸如0x010000、0x020000等地址将程序读进

来的bootloader功能就是在这里面完成的,所以,一般用户只需要修改删减该label

下对应的汇编代码,其余地方的代码不建议进行修改。更具体地说,在user_init中主

要是配置一个SPIDMA发送spiflah的读指令,并且在读指令中还指定了app在flash

中特定的存放地址。注意,此处并不关心读进来的数据是什么,甚至并不保存,只是为

了发送读指令以及flash的偏移地址,为接下来的load入flash中偏移后APP并进行

保存做准备。还需注意的是,因为bootkernel最大只能支持256instructionwords,

所以修改user_init仍需保证bootkernel的大小不超过256instructionwords。

如果用户用的不是笔者给出的参考程序,而是自己新建工程的话,对于asm编译器的编

译选项必须选择为“GenerateNormalWordcode”,选择为GenerateShortWordcode

会产生不可思议的错误,具体用户可自行尝试。

接下来的两类label不建议,或者说新手用户进行修改或者删减,所以对于这

两类label笔者只说明其功能。接上述第一类label,第二类label中主要包括了诸如:

ZERO_LDATA、ZERO_L48、INIT_L16、INIT_L32、INIT_L48、INIT_L64、ZERO_EXT8、

ZERO_EXT16、INIT_EXT8、INIT_EXT16等。这些label的存在主要是为了真正地实现load

用户的app,并放到用户app指定的相对应的地方。这是由于app的每个section都包

括了header,header中包括了:datatag(也即对应了上面所说的label)、dataaddress、

datacount,bootkernel根据sectionheader的信息循环运行以上的label,完成app

程序的加载。具体用户可详见bootkernel源码,这里不做累述。

运行完第二类label,bootkernel也行将就木来到最后的label也即第三类label:

f

文档评论(0)

kay5620 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8001056127000014

1亿VIP精品文档

相关文档