楼主: e_hui

[求助] 怎么烧写imx6里的efuse?

[复制链接]

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2013-10-17 11:06:23 | 显示全部楼层 |阅读模式
由于imx6系统的GPIO设置启动方式多达32个GPIO。如果不想引出或不想要那么多脚来设置,想通过efuse来设置,那如何来烧写efuse?
iMX6系列芯片的启动模式,如果选BOOT_MODE[1:0] = 00,需要烧写里面的eFUSE,这个要怎么烧efuse。efuse对应的完整的表有没有?
有没有一个文档来写这个efuse的?
我知道答案 目前已有9人回答
回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
 楼主| 发表于 2013-10-17 16:45:09 | 显示全部楼层

RE:怎么烧写imx6里的efuse?

MFGtools可以烧写,但文档没有说清楚。谁能举个例子?还有imx6的efuse的地址和各个位的意义。资料上也没有说清。
回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

136

帖子

0

中级会员

Rank: 3Rank: 3

积分
256
最后登录
2021-1-15
发表于 2013-10-18 15:11:50 | 显示全部楼层

回复:怎么烧写imx6里的efuse?

直接用那个工具烧写就行
或者你用nfs服务 烧写
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

34

帖子

0

注册会员

Rank: 2

积分
129
最后登录
1970-1-1
发表于 2013-10-18 15:58:34 | 显示全部楼层

RE:怎么烧写imx6里的efuse?

我也在看这个问题,这两天,在IMX6DQRM.pdf的第46章,是讲OTP的,貌似就是如何烧写eFUSE的,我还没仔细看完,难道这种东西freescale不提供标准的方法或工具来干这个事吗
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

28

帖子

0

新手上路

Rank: 1

积分
28
最后登录
1970-1-1
发表于 2013-10-21 10:31:45 | 显示全部楼层

RE:怎么烧写imx6里的efuse?

可以通過u-boot命令去燒寫. 在Linux BSP文檔包里面, i.MX_6Dual6Quad_Sabre-SD_Linux_User_Guide.pdf 中提到imxotp命令:

10.1 How to Fuse in U-Boot
 
U-Boot contains a tool, imxotp, which is used for fusing.
U-Boot > imxotp
imxotp - One-Time Programable sub-system

Usage:
imxotp imxotp read
- read fuse at 'index'
imxotp blow [--force]
- blow fuse at 'index' with hex value 'value'
 
Tips:
'addr' to 'index':
convert 'index' from 'address'
index = (addr - otp_base) / 0x10
 
eg, addr is 0x021bc410, otp_base is 0x021bc400, the index = 1
 
• '--force' must be present in order to blow the fuse. Command will abort if '--force' is missing.
• index = (addr - otp_base) / 0x10, where the addr is the address of the fuse you want to operate, the otp_base is the base address of the fuse block.
• 'value' should correspond to fuse settings according to the fuse map and desired fuse configuration.
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

34

帖子

0

注册会员

Rank: 2

积分
129
最后登录
1970-1-1
发表于 2013-10-23 21:28:26 | 显示全部楼层

回复:怎么烧写imx6里的efuse?

回复第 5 楼 于2013-10-21 10:31:45发表:
//芯片的eFUSE没烧写的话,如果是NAND_FLASH 或者SD卡启动的话,u-boot根本没法启动啊,这个时候貌似也无法利用u-boot来烧写eFUSE吧
//可以通過u-boot命令去燒寫. 在Linux BSP文檔包里面, i.MX_6Dual6Quad_Sabre-SD_Linux_User_Guide.pdf 中提到imxotp命令:

10.1 How to Fuse in U-Boot
 
U-Boot contains a tool, imxotp, which is used for fusing.
U-Boot > imxotp
imxotp - One-Time Programable sub-system

Usage:
imxotp imxotp read
- read fuse at 'index'
imxotp blow [--force]
- blow fuse at 'index' with hex value 'value'
 
Tips:
'addr' to 'index':
convert 'index' from 'address'
index = (addr - otp_base) / 0x10
 
eg, addr is 0x021bc410, otp_base is 0x021bc400, the index = 1
 
• '--force' must be present in order to blow the fuse. Command will abort if '--force' is missing.
• index = (addr - otp_base) / 0x10, where the addr is the address of the fuse you want to operate, the otp_base is the base address of the fuse block.
• 'value' should correspond to fuse settings according to the fuse map and desired fuse configuration.
 
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

34

帖子

0

注册会员

Rank: 2

积分
129
最后登录
1970-1-1
发表于 2013-10-23 21:35:12 | 显示全部楼层

回复:怎么烧写imx6里的efuse?

回复第 3 楼 于2013-10-18 15:11:50发表:
用MfgTools烧写,有相关的文档介绍吗?MfgTools的文档和iMX6系列的文档里都没发现哦//直接用那个工具烧写就行
或者你用nfs服务 烧写
 
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

34

帖子

0

注册会员

Rank: 2

积分
129
最后登录
1970-1-1
发表于 2013-10-24 20:49:36 | 显示全部楼层

RE:怎么烧写imx6里的efuse?

MfgTools是可以通过uBOOT烧写eFUSE,在MfgTools的ucl.xml里面,把烧写FLASH或者SD卡啥的都注释掉,只留Load uBoot,部分,如下

Loading uboot.
Jumping to OS image.

这个就相当于把uBOOT下载到RAM中,然后直接从RAM中启动,就可以和uBOOT交互了。uBOOT可以用FSL自带的微系统的uBOOT,也可以用自己移植过的uBOOT。我是用自己移植的uBOOT启动的,因为我板子上的UART2和FSL的SabreLite的UART2定义不一样,没法直接用。
方法应该就是这样了。
接下来要仔细分析启动模式对应的eFUSE配置,这个我还没开始搞。我的板子照着SabreLite画的,画着画着把SPI FLASH给漏画了,所以只能直接使用SD卡启动了。。。。
等我弄好了再整理写出来分享
回复 支持 反对

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2013-10-29 09:47:55 | 显示全部楼层

回复:怎么烧写imx6里的efuse?

回复第 8 楼 于2013-10-24 20:49:36发表:
MfgTools是可以通过uBOOT烧写eFUSE,在MfgTools的ucl.xml里面,把烧写FLASH或者SD卡啥的都注释掉,只留Load uBoot,部分,如下

Loading uboot.
Jumping to OS image.

这个就相当于把uBOOT下载到RAM中,然后直接从RAM中启动,就可以和uBOOT交互了。uBOOT可以用FSL自带的微系统的uBOOT,也可以用自己移植过的uBOOT。我是用自己移植的uBOOT启动的,因为我板子上的UART2和FSL的SabreLite的UART2定义不一样,没法直接用。
方法应该就是这样了。
接下来要仔细分析启动模式对应的eFUSE配置,这个我还没开始搞。我的板子照着SabreLite画的,画着画着把SPI FLASH给漏画了,所以只能直接使用SD卡启动了。。。。
等我弄好了再整理写出来分享 

感谢分享
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
 楼主| 发表于 2013-10-31 16:40:44 | 显示全部楼层

回复:怎么烧写imx6里的efuse?

回复第 8 楼 于2013-10-24 20:49:36发表:
MfgTools是可以通过uBOOT烧写eFUSE,在MfgTools的ucl.xml里面,把烧写FLASH或者SD卡啥的都注释掉,只留Load uBoot,部分,如下

Loading uboot.
Jumping to OS image.

这个就相当于把uBOOT下载到RAM中,然后直接从RAM中启动,就可以和uBOOT交互了。uBOOT可以用FSL自带的微系统的uBOOT,也可以用自己移植过的uBOOT。我是用自己移植的uBOOT启动的,因为我板子上的UART2和FSL的SabreLite的UART2定义不一样,没法直接用。
方法应该就是这样了。
接下来要仔细分析启动模式对应的eFUSE配置,这个我还没开始搞。我的板子照着SabreLite画的,画着画着把SPI FLASH给漏画了,所以只能直接使用SD卡启动了。。。。
等我弄好了再整理写出来分享
 
这也是个办法。但这只能是开发的时候用。如果是生产的话就不可能用这种方法了。我在MFG tools的文档有看到这样一段,应该可以直接通过mfgtools命令写的。
How to Program a Fuse
MfgTool V2 supports writing the specified value into the fuse.
The OTP fuse can be written through the following commands:
Showing HW_OCOTP fuse bank
write
0x11223344 to HW_OCOTP_MAC0 fuse bank
Read value from
HW_OCOTP_MAC0 fuse bank
The fuse bank name (ex: HW_OCOTP_MAC0) should be changed according as needed.
 
这个看得不太懂。地址W_OCOTP_MAC0要在哪里设置呢?能不能举一个例子 比如我要设置BT_CFG1[0_7]设置为0x60, 怎么用MFTtools来设置efuse,要下什么命令,这样的xml文件格式官方应该提供才对。
 
 
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 12:59 , Processed in 0.125847 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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