找回密码
 立即注册
搜索
热搜: 星闪 最新 活动
查看: 273|回复: 0

[Hi3751v352] 2038年时间设置问题

[复制链接]

20

主题

0

回帖

180

积分

超级版主

积分
180
发表于 2025-10-16 12:10:57 | 显示全部楼层 |阅读模式
本帖最后由 xusheng 于 2025-10-16 15:46 编辑

【问题】
客户反馈在Hi3751v352平台无法设置2038年1月以后的时间,产品需要有十年使用保证。

【硬件及系统】
芯片:Hi3751v352
系统:Android 9 AOSP

【原因分析】
1. 32bit 限制

在Unix/Linux系统中,都是以1970年1月1日0点0分0秒作为时间的基准点,用秒数来表示系统时间。
32位二进制数能表示的最大的数是2^32-1,不过为了能够让时间可以往前往后数,会用第一位作为正负的判断位,第一位如果为0,则说明为正;若第一位是 1,则说明为负。
因此,32位系统的时间最后结束点是 2038年1月19日03:14:07。


2. Android 与 Linux 内核的关系
Android系统是基于Linux内核深度定制的操作系统Linux内核作为Android的底层引擎,负责管理进程、内存、设备驱动、文件系统与网络等核心功能,其32位/64位支持直接决定了Android系统的架构上限。
* 32位Linux内核仅能支持32位Android系统,运行32位应用(或通过兼容层运行64位应用,但性能受限);
* 64位Linux内核可支持64位Android系统,运行64位应用(同时兼容32位应用,通过AArch32执行状态实现);

3. ARM/ARM64指令集
* ARMv7:32位指令集,支持armeabi-v7aABI(应用二进制接口)。该架构的Linux内核为32位,仅能运行32位Android系统与应用,内存寻址上限为4GB
* ARMv8-A:64位指令集,支持arm64-v8aABI。该架构的Linux内核为64位,可运行64位Android系统与应用,内存寻址上限提升至256TB


4. Hi3751v352 内核架构
Hi3751V352内核为4核 Cortex-A53。



ARMv8-A是ARM架构从32位向64位过渡的关键里程碑。它既保留了对旧有32位软件的兼容性,又引入了64位计算能力。
ARMv8-A架构作为ARM生态的里程碑,首次引入64位指令集(AArch64),同时保留32位指令集(AArch32)以兼容 legacy 32位应用


5. TARGET_ARCH 编译选项
TARGET_ARCH用于指定目标CPU架构的​​指令集版本与位宽。


* TARGET_ARCH = arm
目标架构为32位ARM​​。生成32位代码,使用​​AArch32指令集。


* TARGET_ARCH = arm64
目标架构为64位ARM​​。生成64位代码,使用​​AArch64指令集。

【问题结论】
1. Hi3751v352 对应的BoardConfig.mk文件中,指定了使用32bit进行编译。
2. 因此底层内核为32位,可表示的年份最大只为2038。
3. 核心原因是Hi3751v352最小能支持512MB内存配置。
4. 采用32位编译的应用软件对内存资源的需求比64位系统小,系统内存管理的开销更低,才可能满足在小内存配置下有效运行。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【淇诺科技】技术论坛 ( 粤ICP备14010465号-1|粤ICP备14010465号-1 )

GMT+8, 2026-4-2 17:22 , Processed in 0.132540 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表