完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位好!
我参考mcsdk_2_00_07_19toolsboot_loaderexamplespcie里的pciedemo.c 和 pcieboot_interrupt.c的代码,发现demo中Host PC通过PCIE链路将DSP程序写入DSP L2空间中,在更新MAGIC_ADDRESS,使DSP运行,即Host PC负责发送boot table,并最后写入MAGIC_ADDRESS。 我在demo的基础上开发了驱动程序,实现了DSP与Host PC的数据传输,但每次运行都需要Host PC发送DSP boot table,再写MAGIC_ADDRESS,且由于工程需要在DSP上运行的代码量很大,过程繁琐。 请问有没有方法将DSP程序直接在DSP上自启动,不需要通过Host PC发送。我想是否能实现板卡能通过PCIe模式启动时,自动加载flash中的DSP程序?? 当然只要有方法能满足 将DSP中的数据通过PCIE传输至Host PC即可! 多谢大家! |
|
相关推荐
10个回答
|
|
您可以参考如下方式:
1.在IBL中加入PCIe配置,然后重新编译IBL,烧写到I2C EEPROM中; 2.将应用程序烧写到NAND flash中; 3.使用I2C EEPROM(IBL)+NAND flash方式启动。 此时,DSP上电后,IBL启动过程中会去配置PCIe EP设备,然后自动加载NAND中的DSP程序。应该能够满足你的需求。 |
|
|
|
|
|
|
|
您好! 您的意思是 6678通过PCIe模式启动后再加载flash程序?是这样吗? 是不是就是者 dennis wu 如下所说的这样! 1.在IBL中加入PCIe配置,然后重新编译IBL,烧写到I2C EEPROM中; 2.将应用程序烧写到NAND flash中; 3.使用I2C EEPROM(IBL)+NAND flash方式启动。 我尝试过直接用NOR flash启动方式,但不理解的是如何将PCIe启动方式和flash两种启动方式结合起来?? 我现在用的是1.0的评估板做的实验,采用的是I2C EEPROM启动,但最后板卡生产用的是2.0的芯片,是不是可以不设计I2C EEPROM用于修正PCIe的时钟了? 那么DSP程序应该存放在哪里,板卡用何种启动方式启动? 致谢! |
|
|
|
panbyron 发表于 2018-6-19 05:15 您好! 在PCIe boot时,由ROM code完成PCIe的配置。 现在按照您所说的变为I2C EEPROM(IBL)+NAND flash方式启动,那么在IBL中加入PCIe配置,即把原来ROM code放进IBL中,我想知道是否配置代码可以参考? |
|
|
|
各位,您好! 我在评估板上测试了i2c_boot_nor_example.c和i2c_boot_nand_example.c,都可以正确通过IIC二次启动正常运行。 如果我将我的应用程序烧到nor,拨码开发设置为 sw3 sw4 sw5 sw6
所以我将toolsboot_loaderiblsrcdevicec66x里面的c66xinit.c代码中void iblEnterRom ()函数进行了修改,将此函数内的iblPCIeWorkaround()提前到 if ( (BOOT_READ_BITFIELD(bm_lo,3,1) != 0x5) || (BOOT_READ_BITFIELD(bm_hi,3,3) == 0x0) ) /* Not i2c boot or i2c boot with address 0x50 */函数之前,并将iblPCIeWorkaround()最后的 //DEVICE_REG32_W(MAGIC_ADDR, 0); // waitForBoot(MAGIC_ADDR); 注释掉! 我以为这样就能使PCIe initial了,但重新编译烧写IBL发现还是不行,依然发现不了板卡。 我不知道我修改IBL的思路是否正确,想请教各位 能给出个详细的解决方法,解决板卡通过PCIe转接板与主机连接后加电自启动程序,使主机和DSP能通信! 不甚感激!!! |
|||
|
|||
60user198 发表于 2018-6-19 06:09 您好, 你的第一个帖子中不是说已经按照demo实现了DSP与主机间的PCIe数据通信么,那应该早就可以在主机上枚举到PCIe板卡了。现在发现不了板卡的问题,是否由于更新IBL导致还是什么? 还有一点请教,你的第一个帖子已经实现了PCIe boot及数据通信,后面的问题搞得很晕呢。。。。。。 |
|
|
|
zbb9612 发表于 2018-6-19 06:27 Andy ,您好; 很抱歉由于我表述的不清晰给您造成的困扰! 关于第一个帖子,实现了PCIe boot和通信,具体是指:将评估板拨码开关拨成PCIe boot,板卡通过AMC转接板插入主机卡槽中,待主机加电后,主机可以发现该板卡,主机通过PCIe链路将DSP程序发送到 DSP的L2,并更新DSP的Magic Address,通过此过程DSP完成程序的加载并开始与主机进行数据通信。(该方法参考了bootloader中的pciedemo.c) 由于项目中,不允许通过PCIe链路将DSP程序发送到 DSP的L2,故必须将DSP的程序固化在DSP的flash中,实现DSP加电自启动程序。 我现在的思路是: 1.在IBL中加入PCIe配置,然后重新编译IBL,烧写到I2C EEPROM中; 2.将应用程序烧写到NOR flash中; 3.使用I2C EEPROM(IBL)+NOR flash方式启动。 我的困惑就是现在拨码开发必须拨成I2C EEPROM(IBL)+NOR flash方式启动,板卡插入主机卡槽,主机肯定是无法检测到硬件的,具体原因我想可能是由于IBL检测拨码开关不是PCIe启动方式,没有进行PCIe initial造成的。(即下图中在Boot mode判断走了—N—》分支,但PCIE init在PCIE boot判断之后) 所以我修改IBL代码,想把PCIE init部分提前到Boot Mode判断前,但mcsdk的IBL文件夹下没有工程文件,只有一系列的 .c文件,修改很困难,我在toolsboot_loaderiblsrcdevicec66x里面的c66xinit.c代码中void iblEnterRom ()函数里发现iblPCIeWorkaround()函数,采用了上个帖子方式进行了修改,重新编译并烧写IBL但依然发现不了硬件。 我想请问,我的思路是否正确? 同行中如何解决我遇到这种困难的? 感谢大家不吝赐教! |
|
|
|
60user198 发表于 2018-6-19 06:43 1. 我认为你的思路没问题,但可能具体细节上有些出入,比如,你可以试试将iblPCIeWorkaround函数放在“if ( (BOOT_READ_BITFIELD(bm_lo,3,1) != 0x5) ||(BOOT_READ_BITFIELD(bm_hi,3,3) == 0x0) )...else...”判断的后面。因为这端代码里面有很重要的一步是重写了DEVICE_REG_DEVSTAT寄存器。我就是这么做的,而且是成功的。当然我修改了PCie的配置,自己写了一个函数。所以你放心的、坚定的把这条路走下去。 2. 如果还是有问题,你可以尝试对IBL源代码进行DEBUG。具体方法如下(来自TI E2E): As for debugging, the source code is available and so is the .out file. You can step through the code from CCS. a) To compile IBL with debug symbols you have to give the option DEBUG=yes while invoking the make command. While building with DEBUG option you may get linker failures due to memory region sizes defined in srcmakeibl_c66xibl_common.inc. Please increase/adjust the size depending on the link error. You can load the symbols from ibl_c66x_init.out (first stage IBL) & ibl_c66x.out (second stage IBL) for source debugging. b) The "make" process does more than just creating ELF executables. If you observe, the output file which you flash on the eeprom is not an ELF file, but its an EEPROM image file (in boot table format) which is loadable by the ROM bootloader. The 2 out files(ibl_c66x_init.out, ibl_c66x.out) along with some other information are converted into " boot table" format and laid out as a EEPROM image. c) Are you not able to proceed with source debugging by manually locating the source file for CCS. This can be done by clicking the "locate file" button in the CCS source browser window. 希望可以帮到你。 |
|
|
|
panbyron 发表于 2018-6-19 06:54 您好! 您说您将iblPCIeWorkaround函数放在“if ( (BOOT_READ_BITFIELD(bm_lo,3,1) != 0x5) ||(BOOT_READ_BITFIELD(bm_hi,3,3) == 0x0) )...else...”判断的后面。 我想知道此时您的拨码开发是I2C EEPROM(IBL)+NOR flash方式吧?如果是,我的理解该if条件就不会执行了,就会直接执行else语句了 (即DEVICE_REG32_W (DEVICE_REG_DEVSTAT, ((bm_hi << 8) | bm_lo));)。我的理解正确吗?? 我 尝试了将iblPCIeWorkaround函数放在“if ( (BOOT_READ_BITFIELD(bm_lo,3,1) != 0x5) ||(BOOT_READ_BITFIELD(bm_hi,3,3) == 0x0) )...else...”判断的后面,重新烧写进入EEPROM后,将拨码开关设置为I2C EEPROM(IBL)+NOR flash,但nor flash的程序不能启动。 您说您修改了PCIe的配置,自己写了个函数。不知道您能否指点一二,将此函数共享呢? 不甚感激! |
|
1 条评论
|
|
60user198 发表于 2018-6-19 07:13 是的,会去执行else语句。而你的iblPCIeWorkaround函数在if...else...外面。 我写的函数其实跟iblPCIeWorkaround没有什么区别,只是加入了自己的inbound模式BAR空间设置。另外,如你所说,要注掉等待MAGIC_ADDRESS的部分,使该函数能够正常返回到主程序中。我觉得你不必把关注点放在PCIe配置函数到底怎么写这里。你把拨码开关设置为PCIe启动,上电后能够找到你的板卡,说明iblPCIeWorkaround函数对PCIe的配置是没有问题的,对吧? 现在的现象是什么呢?是Nor flash中的程序没有加载上,并且也找不到板卡?还是Nor flash中的程序没有加载上,但能找到板卡? 为了确认上电后IBL的运行状态,你可以在修改的代码前后加入一些串口打印信息,或是LED点灯,来找出问题到底出在哪里,IBL执行到什么地方挂掉的。 |
|
1 条评论
|
|
只有小组成员才能发言,加入小组>>
309 浏览 1 评论
513 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
754 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
641 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1113 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
226浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
181浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
46浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
149浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
158浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 16:28 , Processed in 1.258764 second(s), Total 116, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号