gpt4 book ai didi

linux - Linux 中的时间变量地址

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:46 25 4
gpt4 key购买 nike

我有一个项目有点卡住了。我使用 Beaglebones PRU(就像一个小微 Controller )读取传感器数据并将其写入 ram 的定义空间。共享相同 RAM 的主处理器随后可以读取数据。主处理器运行 Linux。

我想在 PRU 上尽可能准确地为数据添加时间戳。是否可以从 Linux 直接从 RAM 读取时间变量(比如我用“gettimeofday(..)”得到的变量)到 PRU?或者是否有我可以转换的 Systemticks 变量?我怎样才能以最简单的方式完成这项工作?

最佳答案

我不知道你是否已经解决了这个问题。

目前我在一个项目中工作,我需要在其中使用 PRU 实现特殊通信协议(protocol),并且我需要存储所有通信传输及其特定时间戳,以便生成通信报告以验证一切是否按预期执行。

为了完成这项任务,我使用了 Beaglebone Black RTC 模块。如果您查阅 AM335x 用户引用手册,您可以看到对该模块、其寄存器和准确性的完整解释。如果您只需要秒精度,这是它的极限,那么这个模块非常适合您。如果没有,您可以将其寄存器提供的信息与 IEP 定时器结合起来。第二个选项有点大,需要在这里解释。如果您遇到这种情况,请告诉我,我会尽力提供分步指南。

要使用来自 PRU 的 RTC 模块,可以使用 OCP 端口访问它。这是一段代码,您可以使用它从 PRU 访问 RTC 寄存器。然后我将每个值(小时、分钟、秒、年、月、日)存储在 PRU0 RAM 中,以便可以从 host.c 程序中读取它们,并检查我得到的值是否与在 Linux 终端中输入日期相同。

   //************************************************************************
// Reading RTC from PRU
//************************************************************************

// Author : Pablo Alías Mateos
// Project : General
// Description:

//**************************************************************************
//==========================================================================

//**************************************************************************
//==========================================================================

.origin 0
.entrypoint START

//----------------------------------------------------------------------

#define RTC_BASE_ADDRESS 0x44E3E000
#define RTC_SECONDS_OFFSET 0x00000000
#define RTC_MIN_OFFSET 0x00000004
#define RTC_HOUR_OFFSET 0x00000008
#define RTC_DAYS_OFFSET 0x0000000C
#define RTC_MONTH_OFFSET 0x00000010
#define RTC_YEAR_OFFSET 0x00000014

//----------------------------------------------------------------------

START:

// Enable the OCP master port

LBCO r0, c4, 4, 4 // load SYSCFG reg into r0 (use c4 const addr)
CLR r0, r0, 4 // clear bit 4 (STANDBY_INIT)
SBCO r0, c4, 4, 4 // store the modified r0 back at the load addr


MOV r0, RTC_BASE_ADDRESS
MOV r1, 0x00000000 // base RAM0

LBBO r2,r0,RTC_HOUR_OFFSET,4
SBBO r2,r1,0,4

LBBO r2,r0,RTC_MIN_OFFSET,4
SBBO r2,r1,4,4

LBBO r2,r0,RTC_SECONDS_OFFSET,4
SBBO r2,r1,8,4

LBBO r2,r0,RTC_DAYS_OFFSET,4
SBBO r2,r1,12,4

LBBO r2,r0,RTC_MONTH_OFFSET,4
SBBO r2,r1,16,4

LBBO r2,r0,RTC_YEAR_OFFSET,4
SBBO r2,r1,20,4

希望这些信息对您有用,

巴勃罗

关于linux - Linux 中的时间变量地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33725349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com