您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> bf609的外接SPI flash的bootlaoder程序和应... 
本帖共有4207个阅读者
发表帖子 发表投票 回复主题
bf609的外接SPI flash的bootlaoder程序和应用程序分区问题!
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
bf609的外接SPI flash的bootlaoder程序和应用程序分区问题!

现在做609的bootloader程序和应用程序的分区!上电时加载bootloader程序,通过bootloader来加载应用程序!主要问题:

1.  上电时加载bootloader程序,这个已经实现了,bootloader可以正常加载和运行!

2.  应用程序编译时要应该怎么配置编译后,放置到Flash的某个地方加载,才能够运行起来?

3.  编译后生产的 .ldr 和 dxe 有什么区别,怎么生成类似bin和hex的来放置到flash中!?


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:30:46
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
答:请问您的问题是Linux环境还是CCES环境下开发的?如果是CCES的话请提供版本号,我们将尽快进行后续的问题解答

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:31:27
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
问:是cces环境下编译的!

V1.0.3, 难道其他版本的设置不一样吗?!

ad的CCES 和 TI的那个IDE是一样的吗?!


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:31:41
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
答:

1. 需要在bootloader程序里面加入rom_boot(Address, 0, 0, 0, 0x20210002,0),第一个参数为应用程序烧写在flash中的地址

2. ldr文件为烧写到flash中的文件格式,dxe为连接仿真器时声称的文件格式

3. CCES是ADI公司专门为开发ADI DSP研发的开发环境,与TI的IDR不一样


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:32:02
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
问:谢谢回复,我将问题分段有几点不明白:

1. rom_boot应该为系统函数,实现函数跳转功能,将Address处的LDR文件加载到DSP中运行,加载后,DSP是不是类似重新配置了所有的初始化的东西?

2. 在生产应用程序的LDR文件时,是否需要特别设置(例如arm芯片需要设置中断向量表地址等设置)?这个LDR是不是类似bin文件,只要见LDR文件写入从Address开始的地址即可?

3. 我在CCES 1.0.3中调试时,为什么jtag不是很稳定,经常链接不上,有时候通过ICE test都OK,可还是调试不了!感觉官网的HPUSB_ICE不是很稳定可靠,或者是CCES不是很稳定?他们是否有新版本?

4. 因为问题3的原因,所以想做在线升级应用,直接盲调试算了,BF609真的很不好用


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:32:20
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
答:

1. 是的,root_boot是将ADDRESS处的ldr加载运行,这要看具体需求,如果bootloader中已经做过了初始化的工作,自己的升级程序可以不再初始化,初始化的工作需要initialization file

2. ldr不需要特殊配置,中断向量表等都有默认配置值,也可以根据需要在程序中修改。只不过生成ldr时需要加入初始化外部ddr的dxe,和你的工程dxe一起组成ldr。是的,ldr是从你address指定的位置开始执行

3. 官方的HPUSB_ICE是最稳定的仿真器,与CCES的兼容性最好,目前CCES最新版本为1.1.0(PS:OpenADSP开源社区的AD-HP530ICE是唯一能支持CCES1.1.0的稳定的国产仿真器)


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:33:15
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
问:双核跑的时候,怎么烧程序到spi flash呢?有没有双核跑时,bootloader 和 app应用程序双区分区,通过bootloder升级app程序的方法和实例?

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:33:48
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

答:


对于双核工程使用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为例

  1. 把两个dxe文件及BF609_init_v00.dxe拷到elfloader所在目录下
  2. 在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


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:34:34
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
问:

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


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 -file bootlaoder.ldr 这种可以烧写成功并正常从SPI flash加载运行!试问:这种没有用到BF609_init_v00.dxe是否有其他风险?


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:34:58
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
答:

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上


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2014/11/27 10:36:28
23
1
1/3
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159302 Call, 1 Queries, Processed in 0.032227 second(s),