Thread 中讨论的其他器件:SYSBIOS、
大家好、
客户使用 simplelink_cc13x0_sdk_4_20_02_07中的 seconds_set API 来设置系统时间、然后使用本地时间获取年、月、日和其他信息。 此 SDK 是否解决了2038年的问题?
谢谢!此致!
约兰德
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.
不,我不这么认为。 如果您在 SDK 中的 C:\ti_simplelink_cc13x0_sdk_4_20_02_07\kernel\tirtos\packages\ti\sysbios\fale\arm\msp432文件中、实际上会出现警告:
/* * ======== Seconds_get ======== * * Note: This function is only valid until 2036-02-07 06:28:15 (TI Compiler) * or 2038-01-19 03:14:07(GNU, IAR Compilers). At this time the number * of seconds since 1900/1970 will cause integer overflow on 32-bit * systems. */
CC26xx 的 seconds.c 文件(C:\ti\simplelink_cc13x0_sdk_4_20_02_07\kernel\tirtos\packages\ti\sysbios\family\arm\cc26xx)中不存在相同的警告
但我认为这并不意味着这在这里不是问题,只是没有警告。
Br
Siri
您无法避免该问题。
如果使用 UNIX 时间并使用带符号的32位整数来存储 它、则会出现溢出。
参见 年2038问题-维基百科 ,自由的百科全书。
如果此溢出对您的系统而言是否严重、我想取决于您使用的时间和日期。
如果你只是有一些东西只是要显示当前时间,你可以做某种检查代码,看看数据是否已换行(时间突然出现在 00 : 00:00 UTC 在 1970年1月1日), 然后对 其进行某种补偿。
很抱歉,我不能为您提供任何解决办法。
Siri
你好,Siri,ć
客户表示:
SDK 从寄存器中读取从1970年开始的秒数、但在计算时、添加1900至1970年之间的秒数、并且计算始于1900年。 在这种情况下、32位秒的最大值仅为136年。 关于。 到2036年将出现问题。 对于像我这样需要时间戳转换的应用程序而言、这会有问题。 我想您可以添加一个从1900年开始、一个从1970年开始的宏定义(或者您是否已经有这个定义?)、以便能够解决这个问题。
此致、
约兰德
CC1310 SDK 使用32位变量、会在2036年02月07日06:28:15中遇到问题。
会发生溢出、如下所述/说明:
也许可以在应用中解决这个问题、客户也可以随意尝试在实现中修复这个问题、但我将无法提供关于如何做到这一点的任何更多指导和/或示例代码。
如果客户认为自己有一个解决方案、他只需要尝试以某种方式进行测试。
很抱歉、我无法就此主题提供更多帮助。
Siri