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.

[参考译文] CC3220SF:TI v20.2.LTS -将 epoch 设置为从1970年开始、而不是默认值

Guru**** 2579475 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1171845/cc3220sf-ti-v20-2-2-lts---set-the-epoch-start-from-1970-instead-of-default

器件型号:CC3220SF

您好!

我希望将时代从1970年开始。
目前、它被设定为 TI 缺省值(1900和6h 的偏移量)。

我已经通过设置"_TI_TIMIME32_USS_POSIX_epoch "宏找到了对其进行更改的可能性。
我在 CCS -> Project properties -> Build -> Arm Compiler -> Predefined Symbols 上设置此宏

但这不起作用、我还尝试设置"_TIME64_Implementation"、但结果相同。

我应该如何设置从1970年开始的时代?

谢谢、
塞缪尔

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

    您好!

    TI 与 NTP epoch 时间保持一致、而不是您观察到的 UNIX 时间。

    有一个 define TI_eparch_offset 来补偿它。

    您还可以查看 startsntp 示例、其中的转换是使用 TIME_BASEDIFF 定义完成的。

    还有一个主题提到 了 https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/725932/cc3220sf-launchxl-cc3220sf-sntp-server/2678440#2678440

    此致、

    Shlomi

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

    您好、Shlomi、

    谢谢你的答复,但我认为这对我没有帮助。

    我没有正确地暴露我的问题。
    TI epoch 没有困扰我、我使用"mktime"时遇到了问题、该函数似乎将一年限制在2036年左右、之后它会让我溢出并返回到1900年。
    当前 time_t 是 uint32_t、这意味着无法处理2037。 (((2037-1900)* 365.25 * 24 * 60 * 60)> 2^32。

    我曾请求帮助设置"_TI_TIME32_USS_POSIX_epoch "宏以获得70年以上的收入、因此可以处理的时间可一直到2106年。

    我一直在阅读文档、可以通过使用"mklib"可执行文件使用此宏重新编译库来实现目标。
    这解决了我的初始问题、但它只适用于我的 PC。。。

    有一种方法可以在工程中配置它、比如对编译器/链接器说什么、要使用此宏重建库(如果需要)?
    您能否提出一些解决方案、在无需手动执行 mklib 程序的情况下可在任何计算机下工作?

    谢谢、
    塞缪尔

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

    您好!

    您所指的是什么库? 您是如何重新编译的?

    Shlomi

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

    您好、Itzhak、

    我已经使用"mklib"可执行文件重新编译了"rtsv7M4_T_le_eabi.lib"库、两者都位于编译器文件夹("CCS/tools/compiler/ti-cgt-arm_20.2.ls/lib")下

    谢谢、
    塞缪尔

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

    您好!

    如果库的编译方式不同、为什么不能将重新编译的库用于所有其他用途? 应将其编译一次。

    就我所说、您不能只添加一个宏、因为库的编译方式不同、因此需要重新编译。

    话虽如此、通过查看源代码、我可以看到 已定义了_TI_TIME32_USS_POSIX_epoch、这意味着使用了 POSIX 时间、即1970、因此您不清楚为什么看到1900年:

    #if defined(_TIME64_IMPLEMENTATION) || \
        defined(__TI_TIME32_USES_POSIX_EPOCH)
    #define EPOCH_WDAY  __POSIX_EPOCH_WDAY
    #define EPOCH_YEAR  __POSIX_EPOCH_YEAR
    #define EPOCH_TZONE __POSIX_EPOCH_TZONE
    #else
    #define EPOCH_WDAY  __TI_EPOCH_WDAY
    #define EPOCH_YEAR  __TI_EPOCH_YEAR
    #define EPOCH_TZONE __TI_EPOCH_TZONE
    #endif

    此致、

    Shlomi

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

    您好、Itzhak、

    这个库位于一个本地目录下、因此每个想要使用这个宏的用户也需要在他们的计算机中重新编译这个库。
    现在我了解了如何在项目迭加下移动和使用此库。

    此问题可能已解决。

    谢谢、
    塞缪尔