如何使用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对话框
在线的
最后一次见到:5分56秒前
工作人员
已加入:2018-02-08 11:03
嗨,王路易2,

嗨,王路易2,

It is recommended to call the udll_init() function before any other operation with the u_dll.dll library, because it sets to zero some internal structures.The fact that the udll_start_prog() returns UDLL_SUCCESS messages doesn’t mean that the process of the programming is already finished. In order to find where the process is, you should check the callback function that you call in the udll_start_prog(). Then, the u_dll.dll will execute your callback in order to inform you in which point your code is.

谢谢,下午好

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

嗨对话框

感谢您的回复。

您有帮助查看我的示例代码吗?l已添加回调但不起作用。

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

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

使用命名空间std;

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_params udll_params_t;
_udll_device_params device_params_t;
//********************************************************
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_params_t.params_580.mem.action = fw_load;
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);
device_params_t.otp_customer_field.data [otp_585_customer_field_size] = uint8_t(0);
设备参数OTP客户_字段大小= 100;
device_params_t.xtal_trim_val [xtal_trim_size] = uint8_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_callback(uint32_t com_port_number,int status,void * data,uint32_t data_len)
{
cout<<“测试”<}

PM\U对话框
在线的
最后一次见到:5分56秒前
工作人员
已加入: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后立即出现。

  • 完成测试后,所有操作_success(例如UDLL_SPI_ERASE_SUCCESS)回调将是回调。这意味着(例如)擦除测试将需要几秒钟即可完成,这取决于闪存。

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

谢谢,下午好

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

嗨对话框

太感谢了。

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

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

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

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

嗨,王路易2,

我们有一个PLT板,可以控制所有程序的所有设备,并且在需要时重置连接的设备。虽然,如果您没有PLT硬件,虽然如果您的过程启动并保持其直到UDLL_FW_DOWNLOAD_START回调函数命中,则可以按下重置按钮。我建议您在上一个附加的代码中添加以下消息,以便知道何时应按并释放重置按钮。

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

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

谢谢,下午好

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

嗨对话框

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