关于580 dsp外设模式FW代码的问题,我想用它作为我们定制嵌入式软件开发的起点。
现在,我想了解如何凯尔IDE的机制或SmartSnippets下载固件的位流从主机电脑通过USB连接到单片机在580年接收比特流写入flash或加载到RAM中。上电后,我相信580将把FW从Flash加载到RAM中并开始执行。然而,当580没有FW当前驻留在flash中,我认为应该有一段代码运行在RAM中,将写入从SmartSnippets或Keil进入的FW到flash或RAM。这段代码可能被称为ROM代码,有点像PC中的BIOS fw。你能给我指出处理flash或RAM上传界面的代码吗?如果我完全错误的基础,请教育我,让我了解如何这个过程的工作,以帮助我在我们的定制开发。
如果有一份详细解释这个过程的文件,那就更好了。
谢谢你!
——潘文凯
设备:
嗨kqtrinh,
您可以查看AN-B-001.pdf或UM-B-012.pdf,这些文档提到了启动顺序是如何工作的,代码在哪里下载和运行。存在于580中的加载外部fw的代码被称为主引导加载程序(或者仅仅是引导加载程序),它位于ROM内存区域。源代码不可用,但它的功能在an - b -001文档中描述,它是580通过UART/SPI/I2C下载代码的数量选项。
由于MT_dialog
感谢您的及时回复。这两个文档帮助我更多地了解了580引导过程是如何工作的。
ROM代码不可用没关系,次要引导加载程序如UM-B-012.pdf文档中描述的可用或其他示例代码接近其功能从flash引导。
也许我将尝试描述我的开发场景,你可以建议如何可以做到。有了基本的工具包,我可以通过Keil将代码加载到SRAM中直接调试FW,我也可以用SmartSnippets写入flash。还有写信给OTP与SmartSnippets,我还没有需要使用的时刻。
我们的定制板很简单。它由580在前端接口上通过BLE接口与手机应用程序组成。580将接收来自手机的消息,并通过580内部UART总线将其发送到一个显示设备。
为了调试580应用程序代码,我们将构建一个带有Atmel芯片的外部调试板(市场上是否存在这样的板?)(由于尺寸限制,不在与580相同的板上)。基本上把580基本套件分成两块板。
所以看看这个HW设计,会有580应用程序代码的flash区域。连接到580 UART接口的Display芯片也有需要引导和执行的FW代码。我们希望580应用程序代码和Display FW代码都在同一个闪存中(我不认为我们需要OTP内存,除非有原因)。
我对开发板启动顺序的问题如下:
1.在上面的HW设计中,我需要一个机制来读/写Flash来从Flash加载580应用程序代码到SRAM。这是辅助引导加载程序的工作吗?但是使用辅助引导加载程序需要装载OTP。辅助引导加载程序的源代码是否可用或类似的东西?
2.假设580现在已经启动并从Flash启动,它需要充当Display设备的外部主机控制器。它需要为显示设备FW读取Flash,并将其通过UART发送到显示设备,以便它现在可以启动。
这就是我目前对开发板启动顺序的方法。从你所看到的,我们需要代码来读/写Flash,并将其转储到SRAM,以及转储到UART总线上580 CPU。
感谢您的反馈和建议……
谢谢,
——潘文凯
嗨kqtrinh,
是的,辅助引导加载程序可以在SDK的实用程序文件夹中找到,它与主引导加载程序非常相似。关于调试器模块,您可以使用Segger Jlink Lite ARM调试器,与专家工具包使用的相同的调试器。关于你的问题:
1)为了从flash加载fw到580 syram,你不需要一个辅助引导加载程序,主引导程序将能够为你做,只要你遵循SPI引导的默认引脚连接。次要引导加载程序用于分配不同的引导引脚,打开flash,以防你为了低功耗而关闭它,加载不同的图像(SUOTA功能等)。如前所述,辅助引导加载程序源代码可以在SDK的实用程序目录中找到。
2)如果显示芯片需要FW,我想580需要发送该FW,如果芯片无法直接从闪光灯下载,所以是您需要一个例程,580将读取闪存并发送它到uart上的显示。580将验证正常启动序列,之后它将充当显示器和闪光之间的中间人。
由于MT_dialog
是否有样例代码从/写/ Flash?
谢谢,
——潘文凯
嗨kqtrinh,
flash中有一个写的驱动程序,还有一个与flash交互的例子,这个例子位于SDK中的spi目录中的peripheral_examples项目中。正如前面提到的,在实用程序目录中有secondary_bootloader源代码。请检查下面的SDK目录。
DA1458x_SDK\5.0.4\utilities\secondary_bootloader:辅助引导程序
DA1458x_SDK\5.0.4\projects\target_apps\peripheral_examples\spi: spi flash示例
由于MT_dialog
关于你对上述问题1的回答,如果我理解正确,我不需要二级引导加载程序来做我需要的。主引导加载程序可以完成这项工作。那么我的问题是:
1.主引导加载程序是否在ROM中?如果是这样,我是否必须手动加载主引导加载到ROM的每个芯片时,我们进行生产?或者我们收到da14580生产的时候,这个流程已经为我们完成了?
2.假设DA应用程序FW位于SPI Flash中,那么主加载程序从哪个外部SPI Flash地址读取FW并下载到syram中?地址默认为0吗?起始地址是可编程的吗?
谢谢,
——潘文凯
跟踪问题:
1.外部PC应用程序如SmartSnippets如何直接访问(读写/擦除FW)到580外部flash。是否可以使用SmartSnippets来flash数据文件,供FW应用使用?它是否必须绑定到某种格式来上传这个数据文件到flash?
2.一旦FW在外部Flash上,ROM主引导加载程序必须知道2条信息:FW的地址和大小,以便加载到SRAM。SmartSnippets是否将这些信息设置在闪存的某个地方,以便ROM有知识,以便它可以将FW加载到SRAM?
3.对于flash中的数据文件,FW的应用程序代码还需要知道数据在flash中存储的地址和大小,以便读取和使用数据。
谢谢,
——潘文凯
嗨kqtrinh,
1)主引导加载程序已经刻录在ROM中,加载程序的功能在AN-B-001.pdf文档中描述,一般它提供了一些标准引脚,以通过UART/SPI/I2C引导。引导加载程序将执行一旦你的设备上电,你不需要烧录引导加载程序,因为我已经提到,它已经位于ROM中。
2)引导加载程序当过程是flash相关的,580作为主程序执行,它将访问闪存的地址0,在主引导加载程序中这是不可编程的。所有这些信息都记录在我提到的。pdf中。
关于后续问题:
1)当指示智能片段连接到580时,为了对闪存进行编程,它会下载一个名为Flash_Programmer或JTAG_Programmer的小FW,该FW处理来自Smart代码段(擦除/刻录等)的所有命令。是的,您可以使用智能片段闪烁您的FW应用程序。关于格式问题,我不太明白,SS将采取.hex将它转换为.bin或者您可以直接放置.bin文件,该工具将刻录闪光灯。
2)请阅读手册,我已指示,看程序引导程序遵循。
3)正如我提到的,SPI模式下的580将从地址0向flash请求数据,flash应该开始发送图像。图像必须是可引导的,这意味着它应该有可引导的头和代码的长度-测量和分配智能片段,如果可引导选项被选中。因此,Smart Snippets还将附加0x70 0x50头,以表明图像是可引导的,应用一些零填充并附加.bin文件的大小。
由于MT_dialog
让我澄清我的问题一点。
因此,DA在Address 0启动闪存中的闪存中加载FW,因此可以从Flash读取电源时的主装载机并将其写入Sysram。在Sysram中完全启动和运行时,自定义FW需要来自Flash的一些数据来执行其任务。这是我们打算写入的自定义FW中某些算法的输入数据。这是我之前关于数据文件的问题。我可以使用ss将数据文件上传到闪存,因为我的自定义fw被启动后消耗?此数据文件不是可引导图像。它只是FW算法中需要的一些数据。对于能够将此数据文件刻录到闪存,是否需要遵循一些格式,因此SS将识别它并能够将其刻录到闪存?
谢谢,
——潘文凯
嗨kqtrinh,
是的,智能片段能够烧你的自定义数据到flash,你可以使用适当的头程序员或甚至flash燃烧器,没有任何特定的格式来遵循,以便烧数据到flash使用智能片段。你可以通过将一个随机的二进制文件刻录到你的开发套件的某个地址来测试这一点。
由于MT_dialog
我想学习SmartSnippets如何使用flash_programmer或jtag_programmer来/写/擦除flash。你有它们的源代码吗?
谢谢,
——潘文凯
不要紧。找到了。
是否有一个应用程序说明,谈到flash_programmer实用程序?
嗨kqtrinh,
不,没有应用程序注意,记录JTAG_Programmer的函数。此FW是由智能代码段工具使用而不是代码参考。
另外,请不要在一个不相干的话题上发布一个新的问题,你总是可以创建一个新的帖子。
由于MT_dialog