如何使用u_dll.dll固件下载和内存编程的API

了解更多常见问题教程

7个职位/0个新职位
最后一篇文章
王路易2
离线
最后一次见到:2年9个月前
已加入:2018-01-18 06:49
如何使用u_dll.dll固件下载和内存编程的API

嗨对话框

你们有显示如何使用u的示例代码吗_dll.dll用于固件下载和内存编程的API(DA1458x\ U DA1468x\ U PLT\ U v\ U 4.2.0.160)

我们正试图利用你_dll.dll下载固件和擦除SPI闪存的API,

udll\ U set\ U prog\ params、udll\ U set\ U device\ U params和udll\ U start\ U prog都成功返回,但不起作用。

*********

我们已经运行udll_init()并添加回调函数。但还是不行。

敬礼,
王路易

设备:
PM\U对话框
在线的
最后一次见到:1分7秒前
工作人员
已加入:2018-02-08 11:03
嗨,王路易2,

嗨,王路易2,

建议在对u进行任何其他操作之前调用udll_init()函数_dll.dll库,因为它设置为零一些内部结构udll\u start\u prog()返回udll\u SUCCESS消息并不意味着编程过程已经完成。为了找到进程所在的位置,应该检查在udll\u start\u prog()中调用的回调函数。然后,美国_dll.dll将执行回调以通知您代码的位置。

谢谢,下午好

王路易2
离线
最后一次见到:2年9个月前
已加入:2018-01-18 06:49
嗨对话框

嗨对话框

谢谢你的回复。

你能帮我检查一下我的示例代码吗?我已经加回电话了,但没用。

// 测试.cpp:定义控制台应用程序的入口点。
//

#包括“stdafx.h”
#包括“u\u dll.h”
#包括
#包括“string.h”

使用名称空间标准;

void My\ u CallBack(uint32\ t com\ u port\ u number,int status,void*data,uint32\ t data\ u len);

int main(int argc,char*argv[])
{
int结果=1;
_udll\u参数udll\u参数;
_udll\ U设备\参数设备\参数;
//********************************************************
cout<<“测试000开始:”<结果=udll_init();
不能<<结果<<结束;
//********************************************************
结果=1;
udll\ U params\ U t.dut\ U ic=U\ U dut\ U ic\ U DA14585;
udll_params_t.params_580.dut_ic=U_dut_ic_DA14585;
udll_params_t.params_580.baud_rate=57600;
udllïu paramsït.paramsï580。记忆动作=FW\U荷载;
udllïu paramsït.paramsï580。内存固件加载.action=FW\U负载;
udllïu paramsït.paramsï580。内存固件加载.en=假;

字符串FW_Path(“E:\\DA1458x_DA1468x_PLT_v_4.2.0.160\\executables\\binaries\\flash_programmer_580.bin”);
strcpy_s(udll_params_t.params_580。内存固件加载.fw_路径,fw_路径.c_str());

udllïu paramsït.paramsï580。内存固件加载.uart\u change\u pins=false;
udllïu paramsït.paramsï580。内存固件加载.uart\u boot\u pins=P04\u P05;
udllïu paramsït.paramsï580。内存固件加载通用异步收发器_引脚.uart\u端口\u tx= 0;
udllïu paramsït.paramsï580。内存固件加载通用异步收发器_引脚.uart\u pin\u tx= 4;
udllïu paramsït.paramsï580。内存固件加载通用异步收发器_引脚.uart\u端口\u rx= 0;
udllïu paramsït.paramsï580。内存固件加载通用异步收发器_引脚.uart\u引脚\u rx= 5;

结果=udll\u set\u prog\u params(&udll\u params\t);
不能<<结果<<结束;
//********************************************************
结果=1;
设备\u参数\u t.is \u active=真;
device_params_t.dut_num=U_dut_1;
device\u params\u t.com\u port\u boot=5;
设备参数\u t.com\u端口\u prog=5;
device\u params\u t.bd\u addr[bd\u addr\u SIZE]=uint8\u t(0);
设备参数OTP客户_字段数据[OTP\U 585\U CUSTOMER\U FIELD\U SIZE]=uint8\U t(0);
设备参数OTP客户_字段大小= 100;
设备参数xtal\U trim\U val[xtal\U trim\U SIZE]=uint8\u t(0);
设备参数adc校准值=0;
设备参数内存数据[最大内存数据大小]=uint8(0);
device\u params\u t.user\u callback\u udll=我的\u callback;

结果=udll\u set\u device\u params(&device\u params\t);
不能<<结果<<结束;

结果=udll_start_prog();
不能<<结果<<结束;
//********************************************************
结果=udll_close();
不能<<结果<<结束;
返回0;
}

void My\ u CallBack(uint32\ t com\ u port\ u number,int status,void*data,uint32\ t data\ u len)
{
cout<<“测试”<}

PM\U对话框
在线的
最后一次见到:1分7秒前
工作人员
已加入:2018-02-08 11:03
嗨,王路易2,

嗨,王路易2,

所附的代码只是一个示例,用于检查如何刻录/擦除SPI闪存和下载固件,但没有经过测试。您可以看到PLT-DLL如何使用UDLL来获取更多详细信息。更改测试时,应始终使用udll\u set\u prog\u params函数,但如果没有特定于设备的更改,则可以跳过udll\u set\u device\u params。

如果您使用多个设备,则必须对每个设备执行上述步骤。UDLL最多可以同时处理16个设备,但是您必须为每个设备设置不同的回调和不同的检查。附加的代码仅适用于每次运行的单个设备。如果SPI闪存的GPIO引脚与默认值不同,则必须在每个SPI测试中设置配置,即使在上一个测试中设置了配置。建议对每个状态回调更改使用计时器。一些有用的要点,以了解它是如何工作的。

  • 所有的action\u START(例如UDLL\u SPI\u ERASE\u START)回调将在调用UDLL\u START\u prog后立即出现。

  • 所有操作成功(例如UDLL\u SPI\u ERASE\u SUCCESS)回调都将在测试完成后进行。这意味着(例如)擦除测试需要几秒钟才能完成,这取决于您的闪存。

  • FW\ U加载完成时间约为5-6秒。

谢谢,下午好

王路易2
离线
最后一次见到:2年9个月前
已加入:2018-01-18 06:49
嗨对话框

嗨对话框

非常感谢。

按照你的详细指导,我的代码可以工作(擦除,烧录文件到spi闪存)了。

但是,有些特殊的DUT,在将FW烧到DUT之前,有时需要一个复位信号,如果使用smartsnippet工具箱,会提示“按硬件复位按钮”。

通过使用u泷ullapi,如何知道DUT是否需要一个复位信号?

PM\U对话框
在线的
最后一次见到:1分7秒前
工作人员
已加入:2018-02-08 11:03
嗨,王路易2,

嗨,王路易2,

我们有一个PLT板,控制所有程序的所有设备,并在需要时重置连接的设备。尽管如此,如果您没有PLT硬件,您可以在程序启动时按下reset按钮,并将其保持到UDLL\u FW\u DOWNLOAD\u START回调函数命中为止。我建议您在前面附加的代码中添加以下消息,以便知道何时应按下并释放重置按钮。

第25行:cout<<“按住重置按钮”<

第111-112行:cout<<“松开复位按钮..”<

谢谢,下午好

王路易2
离线
最后一次见到:2年9个月前
已加入:2018-01-18 06:49
嗨对话框

嗨对话框

谢谢,我会把它加到我的密码里。