您尚未登录。

楼主 #1 2019-05-17 17:01:33

flash
会员
注册时间: 2019-05-17
已发帖子: 14
积分: 14

allwinner H3 NAND FLASH调试

H3芯片外接nand flash芯片,在调试uboot的时候,读写nfc寄存器的值都为0,其它控制器不是,这是什么问题??
void board_nand_init(void)
{
printf("+++ board_nand_init +++\n");
nand_pinmux_setup();
nand_clock_setup();

struct sunxi_nfc_reg
{
uint32_t ndfc_ctl;
uint32_t ndfc_st;
uint32_t ndfc_int;
uint32_t ndfc_timing_ctl;
uint32_t ndfc_timing_cfg;
uint32_t ndfc_addr_low;
uint32_t ndfc_addr_high;
uint32_t ndfc_block_num;
uint32_t ndfc_cnt;
uint32_t ndfc_rcmd_set;
uint32_t ndfc_wcmd_set;
};

struct sunxi_gpio_reg const pio = (struct sunxi_gpio_reg )SUNXI_PIO_BASE;

printf("address: %p \n", &pio->gpio_bank[2].cfg[0]);
printf("value: 0x%x \n", readl(&pio->gpio_bank[2].cfg[0]));

struct sunxi_nfc_reg const nfc = (struct sunxi_nfc_reg )0x01C03000;

printf("ndfc->ndfc_wcmd_set: %p \n", &nfc->ndfc_wcmd_set);
printf("ndfc_wcmd_set: 0x%x \n", readl(&nfc->ndfc_wcmd_set));

#ifndef CONFIG_SPL_BUILD
sunxi_nand_init();
#endif
}

U-Boot SPL 2017.03 (May 17 2019 - 15:12:56)
DRAM: 512 MiB
Trying to boot from MMC1

U-Boot 2017.03 (May 17 2019 - 15:12:56 +0800) Allwinner Technology

CPU: Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi One
DRAM: 512 MiB
+++ initr_nand +++
NAND: +++ nand_init +++
+++ board_nand_init +++
address: 01c20848
value: 0x22222222
ndfc->ndfc_wcmd_set: 01c03028
ndfc_wcmd_set: 0x0
+++ sunxi_nand_init +++
+++ regs: 01c03000 +++
sunxi nfc reset successful!
chip: 0x0
ccm->nand0_clk_cfg: 01c20080
ccm->nand0_clk_cfg: 0x8102000a
ccm->sd0_clk_cfg: 01c20088
ccm->sd0_clk_cfg: 0x8140030b
ccm->pll6_cfg: 01c20028
ccm->pll6_cfg: 0x90041811
NFC_REG_TIMING_CTL: 0x0
NFC_REG_CTL: 0x0
NFC_REG_CTL: 0x0

离线

#2 2019-05-17 17:16:24

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: allwinner H3 NAND FLASH调试

readl 的定义是什么?

readl 参数应该是寄存器地址吧?

是不是应该这样:

readl(nfc->ndfc_wcmd_set)

删除那个取地址的符号?





离线

楼主 #3 2019-05-17 17:35:23

flash
会员
注册时间: 2019-05-17
已发帖子: 14
积分: 14

Re: allwinner H3 NAND FLASH调试

没错的,在uboot中都是这样子用的。
readl(&nfc->ndfc_wcmd_set)

离线

#4 2019-05-17 17:37:17

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: allwinner H3 NAND FLASH调试

那按上面的办法,能不能读出 sid 寄存器?





离线

楼主 #5 2019-05-17 17:40:29

flash
会员
注册时间: 2019-05-17
已发帖子: 14
积分: 14

Re: allwinner H3 NAND FLASH调试

sid 寄存器中有特定的数据??

离线

#6 2019-05-17 17:52:01

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: allwinner H3 NAND FLASH调试

flash wrote:

sid 寄存器中有特定的数据??

http://linux-sunxi.org/SID_Register_Guide

Info
SID Base address: 0x01c23800

For Allwinner A83T and H3 the SID address space starts at 0x01c14000, and the e-fuses are at offset 0x200 - so the address to use for these SoCs is 0x01c14200.

SID Registers
Register Name Offset Size Description Note
SID_KEY0 0x00 4 B Key0 [0:31]
SID_KEY1 0x04 4 B Key1 [32:63]
SID_KEY2 0x08 4 B Key2 [64:95]
SID_KEY3 0x0c 4 B Key3 [96:127]
SID_WRITE_DATA 0x40 4 B Data [0:31] NOT VERIFIED
SID_WRITE_CTRL 0x44 4 B SID Program Control register





离线

楼主 #7 2019-05-17 18:25:09

flash
会员
注册时间: 2019-05-17
已发帖子: 14
积分: 14

Re: allwinner H3 NAND FLASH调试

The address: 01c14200
sid_reg->sid_key0: 0x2904620
sid_reg->sid_key1: 0x4910318
sid_reg->sid_key2: 0x78170713
sid_reg->sid_key3: 0x60000078

数据手册上没有相应的值,wiki上也没有,这是对的吗?

最近编辑记录 flash (2019-05-17 18:26:21)

离线

#8 2019-05-17 20:00:16

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,481
积分: 9207

Re: allwinner H3 NAND FLASH调试

flash wrote:

The address: 01c14200
sid_reg->sid_key0: 0x2904620
sid_reg->sid_key1: 0x4910318
sid_reg->sid_key2: 0x78170713
sid_reg->sid_key3: 0x60000078

数据手册上没有相应的值,wiki上也没有,这是对的吗?

据说这个组合起来近似认为是芯片的唯一Id,
如果每次读到数据都相同, 说明代码没有问题





离线

#9 2023-08-22 18:26:03

muxi01
会员
注册时间: 2020-10-24
已发帖子: 63
积分: 145

Re: allwinner H3 NAND FLASH调试

调试过了没,有源码吗?一起调?

离线

#10 2023-08-29 01:42:22

小白学嵌入式
会员
注册时间: 2023-08-26
已发帖子: 7
积分: 3

Re: allwinner H3 NAND FLASH调试

大佬们有f1c100s的可以从nand启动的uboot吗

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发