This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/LAUNCHXL-CC1350:半主机创建和写入文件时出现问题

Guru**** 2577385 points
Other Parts Discussed in Thread: CC1350

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/910762/ccs-launchxl-cc1350-file-creating-and-writing-problem-with-semihosting

器件型号:LAUNCHXL-CC1350
主题中讨论的其他器件:CC1350

工具/软件:Code Composer Studio

您好!

我正在尝试使用半主机功能创建文件并转储此文件中的一些信息。

我的开发板是 CC1350、我使用的是最新版本的 CCS 和 CC13XX SDK。

我导入 了 Watchdog_CC1350_LAUNCHXL_nortos_CCS 工程、并添加了此代码以检查信宿是否正常工作。

我还检查 了 https://processors.wiki.ti.com/index.php/Semihosting 

您可以拥有 watchdog.c 的更新版本  

void * mainThread (void * arg0)
{
Watchdog_handle;
Watchdog_Params 参数;
uint32_t 重新装载值;

/*调用驱动程序初始化函数*/
GPIO_init();
Watchdog_init();

/*配置 LED 和按钮引脚*/
GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
GPIO_setConfig (Board_GPIO_BUTTON0、GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_INT_FALLING);
GPIO_setCallback (Board_GPIO_BUTTON0、gpioButtonIsr);

/*打开看门狗驱动程序实例*/
Watchdog_Params_init (params);
params.callbackFxn =(Watchdog_Callback)看门狗回调;
params.debugStallMode = Watchdog_debug_star_on;
params.resetMode = Watchdog_reset_on;

WatchdogHandle = Watchdog_open (Board_WATCHDOG0、&params);
if (watchdogHandle == NULL){
/*打开看门狗时出错*/
while (1){}


/*
*在期间初始化看门狗重新加载值
* Watchdog_open()调用。 重新加载值也可以
*在运行时动态设置。
*
*将 TIMEOUT_MS 转换为看门狗时钟节拍。
*此 API 不适用于所有器件。
*请参阅特定于器件的看门狗驱动程序文档
*。
*
reloadValue = Watchdog_convertMsToTicks (watchdogHandle、timeout_MS);

/*
*值为零(0)表示转换后的值超过32位
或 API 不适用于此特定器件。
*
if (重新加载值!= 0){
Watchdog_setReload (watchdogHandle、reloadValue);
}

/*打开 Board_GPIO_LED0并启用 Board_GPIO_BUTTON0中断*/
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);
GPIO_enableInt (Board_GPIO_BUTTON0);



f_output = fopen ("C:\\users\\Erdem\\Desktop\\LS3\\output.txt)、"w");

if (NULL =f_output){
printf ("错误\n");
返回;
}

回卷(f_output);
fprintf (f_output、"fddsfddsfsd");
fputs ("sfsdf"、f_output);fflush (f_output);
fclose (f_output);


while (1){

/*
*禁用电源策略将阻止设备进入
*低功耗状态。 当 CPU 为时、器件将保持唤醒状态
*空闲。
*
power_disablePolicy();

/*在清除看门狗之前睡眠_US */
usleep (SLEEP_US);
Watchdog_clear (watchdogHandle);
GPIO_TOGGLE (Board_GPIO_LED0);

/*
*启用电源策略将允许器件进入低电平
* CPU 空闲时的电源状态。 如何设置看门狗外设
*在低功耗状态下的行为特定于器件。
*
power_enablePolicy();

/*在清除看门狗之前睡眠_US */
usleep (SLEEP_US);
Watchdog_clear (watchdogHandle);
GPIO_TOGGLE (Board_GPIO_LED0);

}
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Erdem:

    半主机功能取决于工具链。 对于 GCC 或 TI ARM 上的 TI-RTOS、我不确定是否支持半主机文件等功能。 如果您尝试采用这种方法、半主机托管的代价是调试器放置断点、这意味着与"无断点"情况相比、它会显著影响您的应用程序流。  

    我建议更好的方法是使用 ITM 或其他更简单的串行接口等功能、在不受调试器干扰的情况下将数据转储到主机侧收集器。 这将允许您获取信息、而不会影响 SVC 断点的应用程序流。