完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-19 15:55 编辑
您好, 最近在调试C6678 的SPI BOOT时遇到了一些问题,我用的是自己开发的板子,C6678是PG1.0的,下面是我的加载步骤: 1.编写待烧写程序,程序中专门写了一段.bootload段,分配在L2的起始地址0x00800000,此段代码的作用就是将Nor Flash(N25Q128A11)中烧写的应用代码按段读到L2中,最后再跳转到入口地址处. 2.将上面程序的.out文件用工具转换。(没有加boot parameter table). 3.将程序烧写到Nor Flash中后,BOOTMODE[12:0]=0b0000000100110. 但是,上电后,PC指针始终指向boot rom,SPI的寄存器表示SPI没有在复位状态,处于使能状态。 请问,上述步骤哪一步有问题啊? SPI BOOT 不需要PLL fix吧?(因为 PLL 是bypass mode). 到底需不需要加bootparameter table啊?这个事情始终搞不清楚,我看Rom bootloader 中的源代码时,发现默认状态下有一个boot parameter table,但是在这个table中的option的值是0,代表boot parameter table,也就是说仍然需要用户再编写一个boot parameter table,我这样理解正确吗? 如果需要boot parameter table ,那我的参数表的格式是什么样的呢?能不能给我发一份? 由于我们的板子上没有I2C EEPROM,并且EMIF也没有外接Flash,因此目前就SPI BOOT 这种方式可行,有些着急,还请各位高手指教一下!谢谢啦! |
|
相关推荐
31个回答
|
|
你好,
SPI BOOT不需要PLL,boot parameter table的主要目的是配置一些需要的参数,如果boot parameter table中的参数你都可以使用默认值,那么就不需要配置。 你用工具转换后的是boot table,你应该将这些table烧写到特定的位置,如I2C Boot中应该烧写在EEPROM中的(0x80 * parameter Index)的地址。其中parameter Index是在BOOTMODE中配置的。SPI的地址我没有在文档中看到,不过建议你可以按照I2C的地址去尝试。 启动Boot之后,SPI会自动从地址去读取table。然后按照Table的类型去解析Table,最后当BOOTROM侦测到MAGIC_ADDRESS不为零的时候就会结束boot。 |
|
|
|
MAZHILEI 发表于 2018-6-19 01:49 "1.编写待烧写程序,程序中专门写了一段.bootload段,分配在L2的起始地址0x00800000,此段代码的作用就是将Nor Flash(N25Q128A11)中烧写的应用代码按段读到L2中,最后再跳转到入口地址处." 这是应用程序代码,它本身就是要从Nor flash中加载的程序吧? 为什么它还需要一个.bootload段?(将Nor Flash(N25Q128A11)中烧写的应用代码按段读到L2中,最后再跳转到入口地址处) |
|
|
|
chexiaohuo 发表于 2018-6-19 02:04 您好tthnny, 我们用EMIF 加载(也是外挂Nor Flash)时,这个.bootload段加上之后才能加载成功,这段代码是用汇编编写的,相当于一段引导代码,目的就是将Nor Flash中的代码按段读到DSP的L2中,并跳到入口地址处。 请问,你们板子上的SPI 加载成功了吗?如果成功了,能否给我发一份整个加载所需的东西,谢谢啦! |
|
|
|
MAZHILEI 发表于 2018-6-19 01:49 您好King Wang, 我试过不加boot parameter table,直接烧写应用程序,但是不成功,如果确定可以不加boot parameter table,那这个烧写的代码应该就没有问题,问题在其他方面,我的bootmodepin[12:0]=0b0000000100110,这个设置应该也没有啥问题,因为上电之后,我用示波器测SPI管脚,有时钟信号,并且数据线也有数据,说明spi接口是正常工作的,还有就是烧写过程,这个就是将代码烧写到Nor Flash,然后再读出比较,错误数为0,这个也没有问题,三个方面都没有问题,但是加载就是不成功,请问还有什么建议吗? |
|
|
|
aaaa321 发表于 2018-6-19 02:32 您好, 可以通过CCS链接看一下此时的PC寄存器指向的地方,查看相应memory看程序是否已经load成功,核实此时DSP的状态,同时对照bootloader code看一下是否理解有误,我这边也花时间对照看看再答复你。 |
|
|
|
zbb9612 发表于 2018-6-19 02:51 你好, 你可以使用如下方法解决: 1)查询加载后0x00800000是否有你要的代码内容。 2)查询MAGIC_ADDRESS是否为非空值。 如果两个都不是你想要的内容,那么应该是你转换成boot table或者放置到FLASH的地址不对,你可以将你转换的方式大概描述一下,或者将转换后的内容发上来大家一起讨论下! 谢谢! |
|
|
|
您好King Wang, 您提供的上述两种方法我都试过了,0x00800000没有我想要的内容,MAGIC_ADDRESS不是0,但也不是入口地址,这就奇怪了。 我的烧写代码如下格式: 0x00500000(boot parameter table) 0x00320000 0x40200002 0x00010018 0x00040000 0x00000000 0x03200000 0x01f40000 0x04000000 0x00000000 0x00000000 。 。 。 0x0080a050(偏移地址为0x400) 0x0080ce60(boottable) 0x00000940 0x00800230 。 。 。 上述格式是小端的格式,我试过改成大端的,还是不行(在EVM板上使用大端格式是可以加载的),这个是由TI提供的工具转换来的,偏移地址0x400处的的数据不太懂。 |
|
|
|
aaaa321 发表于 2018-6-19 03:09 你能将整个加载文档发出来么,生成文档的脚本也可以拿出来看下。比如下面的脚本(I2C out文件生成加载的脚本) @REM generate boot table in CCS format hex6x simple.rmd bconvert64x -le simple.btbl simple.btbl.be b2i2c simple.btbl.be simple.btbl.i2c b2ccs simple.btbl.i2c simple.i2c.ccs @REM generate the complete I2C image(I2C parameter + boot table) myparser simple.i2c.ccs i2cconfig.txt i2cromfara.ccs |
|
|
|
MAZHILEI 发表于 2018-6-19 03:27 不好意思,有事耽误了一会儿,下面附件中C6678_SPI文件夹是烧写的工程,SPIBootutility文件是转换工具,i2crom.dat是烧写的代码,烧到Nor FLASH的起始地址0x00000000. |
|
|
|
aaaa321 发表于 2018-6-19 03:36 你好,Xiaoyan Bian 根据你的描述,我觉得你的做法应该没有问题。magic address不为0,具体是多少呢?我曾经遇到类似的情况。 建议你把应用程序的.cmd修改一下,不要从L2起始地址开始映射,不妨从0x00830000开始存放程序,然后再把转换后的代码烧写到flash中,看一看结果如何? 谢谢! |
|
|
|
chexiaohuo 发表于 2018-6-19 03:50 您好,tthnny 不好意思,magic address确实为0,地址看错了,一直看的是0x0087ffc0,马虎大意了。请问一下你们的SPI 加载成功了吗?如果成功了,可否传授一下经验?谢谢啦! |
|
|
|
aaaa321 发表于 2018-6-19 04:09 您好,不好意思,我理解错了,我的SPI boot也不成功,请问你是否在EVM6678板上调通了SPI boot? 我烧写到Flash里的内容包括一个boot parameter table和boot table(每段长度为256字节,含size+address+section data),上电后连接仿真器看到参数表已经成功加载,但是boot table的所有段都没有加载,不知道问题出现在哪里?如何实现代码搬移? 如果您已经在EVM板上实现了spi boot,可否共享下经验~ 谢谢! |
|
|
|
aaaa321 发表于 2018-6-19 04:09 您好,不好意思,我理解错了,我的SPI boot也不成功,请问你是否在EVM6678板上调通了SPI boot? 我烧写到Flash里的内容包括一个boot parameter table和boot table(每段长度为256字节,含size+address+section data),上电后连接仿真器看到参数表已经成功加载,但是boot table的所有段都没有加载,不知道问题出现在哪里?如何实现代码搬移? 如果您已经在EVM板上实现了spi boot,可否共享下经验~ 谢谢! |
|
|
|
chexiaohuo 发表于 2018-6-19 04:35 您好tthnny, 我们的问题解决了,问题在于spi 加载参数中的mode没有设置正确,开始我们选的是0,改成1后就好了(读写时序),你可以参考bxy.zip中的程序,其中工具SPIbootutility转换完后,要把i2crom.ccs中的0051改成0000,还要将所有数据改成大端的模式,,0x12345678改成0x78563412 |
|
|
|
aaaa321 发表于 2018-6-19 04:48 SPI bootmodepin[12:0]=0b0101000000110 |
|
|
|
aaaa321 发表于 2018-6-19 04:48 spi bootmodepin[12:0]=0b0101000000110 |
|
|
|
aaaa321 发表于 2018-6-19 04:48 你好。我最近也在看这方面的资料,方便交流一下吗?我qq 616618107 |
|
|
|
xiaoyan 您好,首先恭喜你了。其次还想向你请教一下,我对你在外部rom中所烧的PARAMETER table不太理解,能否解释一下,谢谢 |
|
|
|
pcnn您好, C6678默认采用boot parameter table方式。这种方式下,在进入SPI boot后,首先根据BOOTMODE_PIN及RLB中默认参数获得一组默认的boot parameter table,完成SPI的配置,并从相应的地址读取新的boot parameter table,然后重新进入RBL。所以需要用户在spi接的flash中烧写一段boot parameter table。 xiaoyan您好, 帮忙确认两个问题: 1. 从你提供的压缩包中,没有找到您的boot parameter table,是在哪个文件中呢? 2. 你所说的数据格式0x12345678转换成0x78563412是在哪一步做的,我看了RBL没发现对endian的格式有限制要求? 帮忙解释一下吧,非常感谢 |
|
|
|
只有小组成员才能发言,加入小组>>
437 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
302 浏览 1 评论
902 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2076 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3819 浏览 4 评论
CC3100BOOST使用CC3200lunchXL进行烧录
859浏览 2评论
95浏览 2评论
130浏览 2评论
108浏览 2评论
129浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-31 07:21 , Processed in 1.246199 second(s), Total 114, Slave 97 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191