上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
BF609的外接SPI flash的bootlaoder程序和应用程序分区问题!-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
BF609的外接SPI flash的bootlaoder程序和应用程序分区问题!
[ 作者:OP ] [ 来源:ADSP开源社区 ] [ 发布时间:2018-3-21 ]

问:现在做609的bootloader程序和应用程序的分区!上电时加载bootloader程序,通过bootloader来加载应用程序!主要问题:上电时加载bootloader程序,这个已经实现了,bootloader可以正常加载和运行!
1.  应用程序编译时要应该怎么配置编译后,放置到Flash的某个地方加载,才能够运行起来?
2.  编译后生产的 .ldr 和 dxe 有什么区别,怎么生成类似bin和hex的来放置到flash中!?
    以上两个问题,希望专家解答下,有没有实例啊?!

 

答:1. 需要在bootloader程序里面加入rom_boot(Address, 0, 0, 0, 0x20210002,0),第一个参数为应用程序烧写在flash中的地址
2. ldr文件为烧写到flash中的文件格式,dxe为连接仿真器时声称的文件格式

 

问:谢谢回复,我将问题分段有几点不明白:
1. rom_boot应该为系统函数,实现函数跳转功能,将Address处的LDR文件加载到DSP中运行,加载后,DSP是不是类似重新配置了所有的初始化的东西?
2. 在生产应用程序的LDR文件时,是否需要特别设置(例如arm芯片需要设置中断向量表地址等设置)?这个LDR是不是类似bin文件,只要见LDR文件写入从Address开始的地址即可?

 

答:1. 是的,root_boot是将ADDRESS处的ldr加载运行,这要看具体需求,如果bootloader中已经做过了初始化的工作,自己的升级程序可以不再初始化,初始化的工作需要initialization file
2. ldr不需要特殊配置,中断向量表等都有默认配置值,也可以根据需要在程序中修改。只不过生成ldr时需要加入初始化外部ddr的dxe,和你的工程dxe一起组成ldr。是的,ldr是从你address指定的位置开始执行

 

问:双核跑的时候,怎么烧程序到spi flash呢?有没有双核跑时,bootloader 和 app应用程序双区分区,通过bootloder升级app程序的方法和实例?

 

答:对于双核工程使用elfloader把两个核的dxe合成为一个ldr,然后再使用cldp把ldr文件烧写到flash中。另外请确认你所用的nor flash是不是32bit的,-bcode 0x6适用于16bit flash,0xA适用于32bit  flash。下面的例子以16bit nor flash(如为SPI flash请自行修改,参考elfloader -h帮助)为例。还要确认BF609的版本,revision要与BF609_init版本对应,以下以0.0为例
把两个dxe文件及BF609_init_v00.dxe拷到elfloader所在目录下
在cmd窗口中输入命令如下
elfloader.exe  -proc ADSP-BF609 -si-revision 0.0 -b MEMORY -f binary -width 16 -init BF609_init_v00.dxe -bcode 0x6   Core0.dxe -NoFinalTag Core1.dxe -o core.ldr
烧写flash请使用cldp,如使用SPI flash请自行替换flash driver
cldp -proc ADSP-BF609 -emu HPUSB -driver bf609_pc28f128p33_dpia.dxe -cmd prog -erase affected -offset 0 -format binary -file core.ldr
driver文件在C:\Analog Devices\ADSP-BF609_Evaluation_Board-Rel1.0.3\BF609_EZ-Board\Blackfin\Examples\Device_Programmer\parallel

 

问:

非常感谢你的详细回复,有三大疑问:

1.你的回答:要确认BF609的版本,revision要与BF609_init版本对应,以下以0.0为例,把两个dxe文件及BF609_init_v00.dxe拷到elfloader所在目录下;这里的BF609的版本从哪里看出来,我好像没有管它,BF609_init_v00.dxe这个dxe是哪里来?

2. 你的命令:elfloader.exe  -proc ADSP-BF609 -si-revision 0.0 -bMEMORY -f binary -width 16 -init BF609_init_v00.dxe-bcode 0x6   Core0.dxe -NoFinalTag Core1.dxe -ocore.ldr 相当于把两个Core0.dxe,Core1.dxe合并成Core.ldr,再将Core.ldr烧写到FLash中;若采用bootloader和应用程序双区分区时,应用程序是否也可以这样做,将两个核的dxe链接后生产新ldr文件,放置到flash的Address处,再按照你所说的在bootlaoder程序中加入rom_boot(Address, 0, 0, 0,0x20210002,0)来加载?

3. 我是这样烧单核的ldr文件bootlaoder.ldr的:cldp.exe -@-proc ADSP-BF609 -emu HPUSB -driver w25q32bv_dpia.dxe-cmd prog -erase affected -offset 0 -format hex -filebootlaoder.ldr 这种可以烧写成功并正常从SPIflash加载运行!试问:这种没有用到BF609_init_v00.dxe是否有其他风险?

 

答:1. 在C:\Analog Devices\CrossCore Embedded Studio 1.0.3\Blackfin\ldr\init_code\BF609_init,主要是用于初始化开发板上的ddr,如果客户更换了自己的ddr需要作出相应修改
2. 是的
3. BF609_init_v00.dxe主要是客户应用程序启动之前用于初始化ddr,如果客户程序比较大,需要有一些程序从ddr执行,只有初始化过ddr后,后续的程序才能加载到ddr上

联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1