OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5135|回复: 2

关于imx6ull(800M)主频读取错误问题及修正

[复制链接]

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2019-3-17
在线时间
43 小时
发表于 2021-6-14 15:17:34 | 显示全部楼层 |阅读模式
在【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.pdf的文档30.1小结中,描述主频读取时为69M
第 3和第 4行是 CPU信息,可以看出当前使用的 信息,可以看出当前使用的 信息,可以看出当前使用的 信息,可以看出当前使用的 信息,可以看出当前使用的 信息,可以看出当前使用的 信息,可以看出当前使用的 CPU是飞思卡尔的 是飞思卡尔的 是飞思卡尔的 是飞思卡尔的 I.MX6ULL(I.MX以 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 前属于飞思卡尔,然而被 NXP收购了),如果使用 收购了),如果使用 收购了),如果使用 收购了),如果使用 收购了),如果使用 528MHz的 I.MX6ULL,此处会显 ,此处会显 ,此处会显 示主频为 示主频为 528MHz。但是如果使用 。但是如果使用 。但是如果使用 。但是如果使用 。但是如果使用 800MHz的 I.MX6ULL的话此处会显示 的话此处会显示 的话此处会显示 的话此处会显示 69MHz,这个是 ,这个是 ,这个是 uboot内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。内部主频读取错误,但是 不影响运行可以用管。528MHz还是 800MHz的 I.MX6ULL, 此时都运行在 此时都运行在 此时都运行在 396MHz。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 。这颗芯片是工业级的,可以作在 -40°C~105°C。


在uboot源码中找到解释了
u32 get_cpu_speed_grade_hz(void)
{
        struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
        struct fuse_bank *bank = &ocotp->bank[0];
        struct fuse_bank0_regs *fuse =
                (struct fuse_bank0_regs *)bank->fuse_regs;
        uint32_t val;

        val = readl(&fuse->cfg3);
        val >>= OCOTP_CFG3_SPEED_SHIFT;
        val &= 0x3;
        if (is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) {
                if (val == OCOTP_CFG3_SPEED_528MHZ)
                        return 528000000;
                else if (val == OCOTP_CFG3_SPEED_696MHZ)
                        return 69600000;
                else
                        return 0;
        }

计算输出主频函数
max_freq = get_cpu_speed_grade_hz();
        if (!max_freq || max_freq == mxc_get_clock(MXC_ARM_CLK)) {
                printf(" at %dMHz\n", mxc_get_clock(MXC_ARM_CLK) / 1000000);
        } else {
                printf(" %d MHz (running at %d MHz)\n", max_freq / 1000000,
                       mxc_get_clock(MXC_ARM_CLK) / 1000000);
        }

,这里都是正点原子的uboot,本人未学习到uboot移植,不知这是不是说主频没有800,也没有700,就是696MHz


3.png
2.png

书中所述错误

书中所述错误
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2019-3-17
在线时间
43 小时
 楼主| 发表于 2021-6-14 15:19:27 | 显示全部楼层
自己顶,希望有个解释,这个主频问题,毕竟不深奥的错误
回复 支持 反对

使用道具 举报

6

主题

200

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
1063
金钱
1063
注册时间
2019-9-19
在线时间
194 小时
发表于 2021-6-15 16:59:55 | 显示全部楼层
这是nxp uboot源码本身的错误,可以手动修改将“69600000”改为“792000000”即可
=======================
出征,嗒嗒嗒——
快点上车!
=======================
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 12:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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