TI论坛
直播中

于扬

7年用户 203经验值
私信 关注

SK-EVM在移植时发现u-boot无法识别NAND,请问什么原因?

本帖最后由 一只耳朵怪 于 2018-6-5 16:16 编辑

大家好,我的板子是SK-EVM,在移植时发现u-boot无法识别NAND,请问什么原因?
编译时配置使用的am335x_evm_defconfig,打印信息如下:
U-Boot 2016.05-00304-gad06f64-dirty (Apr 02 2017 - 11:52:36 +0800)
CPU : AM335X-GP rev 2.1
Model: ti AM335x EVM-SK
Watchdog enabled
DRAM: 256 MiB
NAND: 0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
reading uboot.env
** Unable to read "uboot.env" from mmc0:1 **
Using default environment
not set. Validating first E-fuse MAC
Net: eth0: ethernet@4a100000
Warning: u***_ether MAC addresses don't match:
Address in SROM is de:ad:be:ef:00:01
Address in environment is c4:ed:ba:8d:49:1e
, eth1: u***_ether
Press SPACE to abort autoboot in 2 seconds
=>

回帖(4)

李维兴

2018-6-4 06:29:23
SK这个板子没有NAND flash
举报

于扬

2018-6-4 06:42:24
引用: uuwufydsw 发表于 2018-6-4 06:29
SK这个板子没有NAND flash

好的!还有一个问题就是我在我自己的板子上移植,首先注释掉了读eeprom,将板件强制置为gp_evm,如下:
board.c
void do_board_detect(void)
[
enable_i2c0_pin_mux();
/*
i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE)
if (ti_i2c_eeprom_am_get(-1, CONFIG_SYS_I2C_EEPROM_ADDR))
printf("ti_i2c_eeprom_init failedn");
*/ /*edit by zhangzhihua 2017/04/04*/
]

board.h
static inline int board_is_gp_evm(void)
[
//return board_ti_is("A33515BB");
return true;/*edit by zhangzhihua 2017/04/04*/
]

mux.c
else if (board_is_gp_evm()) [
/* General Purpose EVM */
unsigned short profile = detect_daughter_board_profile();
configure_module_pin_mux(rgmii1_pin_mux);
configure_module_pin_mux(mmc0_pin_mux);
/* In profile #2 i2c1 and spi0 conflict. */
//if (profile & ~PROFILE_2)
// configure_module_pin_mux(i2c1_pin_mux);
/* Profiles 2 & 3 don't have NAND */
#ifdef CONFIG_NAND
//if (profile & ~(PROFILE_2 | PROFILE_3)) /*edit by zhangzhihua 2017/04/04*/
configure_module_pin_mux(nand_pin_mux);
#endif
//else if (profile == PROFILE_2) [/*edit by zhangzhihua 2017/04/04*/
configure_module_pin_mux(mmc1_pin_mux);
configure_module_pin_mux(spi0_pin_mux);
//]/*edit by zhangzhihua 2017/04/04*/
]
static struct module_pin_mux nand_pin_mux[] = [
[OFFSET(gpmc_ad0), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD0 */
[OFFSET(gpmc_ad1), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD1 */
[OFFSET(gpmc_ad2), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD2 */
[OFFSET(gpmc_ad3), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD3 */
[OFFSET(gpmc_ad4), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD4 */
[OFFSET(gpmc_ad5), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD5 */
[OFFSET(gpmc_ad6), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD6 */
[OFFSET(gpmc_ad7), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD7 */
#ifdef CONFIG_SYS_NAND_BUSWIDTH_16BIT
[OFFSET(gpmc_ad8), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD8 */
[OFFSET(gpmc_ad9), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD9 */
[OFFSET(gpmc_ad10), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD10 */
[OFFSET(gpmc_ad11), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD11 */
[OFFSET(gpmc_ad12), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD12 */
[OFFSET(gpmc_ad13), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD13 */
[OFFSET(gpmc_ad14), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD14 */
[OFFSET(gpmc_ad15), (MODE(0) | PULLUDDIS | RXACTIVE)], /* AD15 */
#endif
[OFFSET(gpmc_wait0), (MODE(0) | PULLUP_EN | RXACTIVE)], /* nWAIT */
[OFFSET(gpmc_wpn), (MODE(7) | PULLUP_EN)], /* nWP */
[OFFSET(gpmc_csn0), (MODE(0) | PULLUP_EN)], /* nCS */
[OFFSET(gpmc_wen), (MODE(0) | PULLDOWN_EN)], /* WEN */
[OFFSET(gpmc_oen_ren), (MODE(0) | PULLDOWN_EN)], /* OE */
[OFFSET(gpmc_advn_ale), (MODE(0) | PULLDOWN_EN)], /* ADV_ALE */
[OFFSET(gpmc_be0n_cle), (MODE(0) | PULLDOWN_EN)], /* BE_CLE */
[-1],
];
但是在nand_base.c里的nand_get_flash_type时读出来的devid和mafid不对,正确的devid是0xDC,但是读出来是0xF0,是我nand_pin_mux配置不对还是需要其他配置?(我参考了手上能运行的一个老版本uboot里面的nand_pin_mux是一致的)!
U-Boot SPL 2016.05-00304-gad06f64-dirty (Apr 05 2017 - 09:08:47)
Trying to boot from MMC1
reading args
spl_load_image_fat_os: error reading image args, err - -1
reading u-boot.img
reading u-boot.img
reading u-boot.img
reading u-boot.img

U-Boot 2016.05-00304-gad06f64-dirty (Apr 05 2017 - 09:08:47 +0800)
CPU : AM335X-GP rev 2.1
Model: TI AM335x EVM
Watchdog enabled
DRAM: 512 MiB
NAND: In nand.c:Start to get_nand_dev_by_index
In nand-uclass.c get_nand_dev_by_index
nand_base.c:Start to scan nand flash
In nand_base.c:NAND Flash ID is 0xF0 ,maf_id is 0xF0
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
MMC: no card present
** Bad device mmc 0 **
Using default environment
not set. Validating first E-fuse MAC
Net: Could not get PHY for ethernet@4a100000: addr 0
eth0: ethernet@4a100000
Warning: u***_ether MAC addresses don't match:
Address in SROM is de:ad:be:ef:00:01
Address in environment is b0:d5:cc:81:84:a3
, eth1: u***_ether
Press SPACE to abort autoboot in 2 seconds
=>
举报

于扬

2018-6-4 06:55:25
引用: asd009 发表于 2018-6-4 06:42
好的!还有一个问题就是我在我自己的板子上移植,首先注释掉了读eeprom,将板件强制置为gp_evm,如下:
board.c
void do_board_detect(void)

OK了!在mux.c里初始化时把configure_module_pin_mux(nand_pin_mux);放在最后就好了,这是为什么呢?和前面有冲突?
举报

李维兴

2018-6-4 07:05:27
引用: asd009 发表于 2018-6-4 06:55
OK了!在mux.c里初始化时把configure_module_pin_mux(nand_pin_mux);放在最后就好了,这是为什么呢?和前面有冲突?

是的,Nand 的ad0 123 ...7和MMC1引脚冲突了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分