20170522_jeffrey - silenceuncrio/diary GitHub Wiki

0900

review

engineering notebook

0925

็นผ็บŒๅˆ†ๆž uboot nand flash driver strength ็›ธ้—œ็š„ code

u-boot-imx\2015.04-r0\git\drivers\mtd\nand\nand.c

void nand_init(void)
{
#ifdef CONFIG_SYS_NAND_SELF_INIT
	board_nand_init();
#else
	int i;

	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
		nand_init_chip(i);
#endif

	printf("%lu MiB\n", total_nand_size / 1024);

#ifdef CONFIG_SYS_NAND_SELECT_DEVICE
	/*
	 * Select the chip in the board/cpu specific driver
	 */
	board_nand_select_device(nand_info[nand_curr_device].priv, nand_curr_device);
#endif
}

static void nand_init_chip(int i)
{
	struct mtd_info *mtd = &nand_info[i];
	struct nand_chip *nand = &nand_chip[i];
	ulong base_addr = base_address[i];
	int maxchips = CONFIG_SYS_NAND_MAX_CHIPS;

	if (maxchips < 1)
		maxchips = 1;

	mtd->priv = nand;
	nand->IO_ADDR_R = nand->IO_ADDR_W = (void  __iomem *)base_addr;

	if (board_nand_init(nand))
		return;

	if (nand_scan(mtd, maxchips))
		return;

	nand_register(i);
}

u-boot-imx\2015.04-r0\git\drivers\mtd\nand\mxs_nand.c

/*!
 * This function is called during the driver binding process.
 *
 * @param   pdev  the device structure used to store device specific
 *                information that is used by the suspend, resume and
 *                remove functions
 *
 * @return  The function always returns 0.
 */
int board_nand_init(struct nand_chip *nand)
{
	struct mxs_nand_info *nand_info;
	int err;

	nand_info = malloc(sizeof(struct mxs_nand_info));
	if (!nand_info) {
		printf("MXS NAND: Failed to allocate private data\n");
		return -ENOMEM;
	}
	memset(nand_info, 0, sizeof(struct mxs_nand_info));

	err = mxs_nand_alloc_buffers(nand_info);
	if (err)
		goto err1;

	err = mxs_nand_init(nand_info);
	if (err)
		goto err2;

	memset(&fake_ecc_layout, 0, sizeof(fake_ecc_layout));

	nand->priv = nand_info;
	nand->options |= NAND_NO_SUBPAGE_WRITE;

	nand->cmd_ctrl		= mxs_nand_cmd_ctrl;

	nand->dev_ready		= mxs_nand_device_ready;
	nand->select_chip	= mxs_nand_select_chip;
	nand->block_bad		= mxs_nand_block_bad;
	nand->scan_bbt		= mxs_nand_scan_bbt;

	nand->read_byte		= mxs_nand_read_byte;

	nand->read_buf		= mxs_nand_read_buf;
	nand->write_buf		= mxs_nand_write_buf;

	nand->ecc.read_page	= mxs_nand_ecc_read_page;
	nand->ecc.write_page	= mxs_nand_ecc_write_page;
	nand->ecc.read_oob	= mxs_nand_ecc_read_oob;
	nand->ecc.write_oob	= mxs_nand_ecc_write_oob;

	nand->ecc.layout	= &fake_ecc_layout;
	nand->ecc.mode		= NAND_ECC_HW;
	nand->ecc.bytes		= 9;
	nand->ecc.size		= 512;
	nand->ecc.strength	= 8;

	return 0;

err2:
	free(nand_info->data_buf);
	free(nand_info->cmd_buf);
err1:
	free(nand_info);
	return err;
}

้€™้‚Š็š„ nand->ecc.strength ๅœจ nand.h ็š„่งฃ้‡‹็‚บ max number of correctible bits per ECC step

ๅฎŒๆ•ด็š„่จป่งฃๅฆ‚ไธ‹

/**
 * struct nand_ecc_ctrl - Control structure for ECC
 * @mode:	ECC mode
 * @steps:	number of ECC steps per page
 * @size:	data bytes per ECC step
 * @bytes:	ECC bytes per step
 * @strength:	max number of correctible bits per ECC step
 * @total:	total number of ECC bytes per page
 * @prepad:	padding information for syndrome based ECC generators
 * @postpad:	padding information for syndrome based ECC generators
 * @layout:	ECC layout control struct pointer
 * @priv:	pointer to private ECC control data
 * @hwctl:	function to control hardware ECC generator. Must only
 *		be provided if an hardware ECC is available
 * @calculate:	function for ECC calculation or readback from ECC hardware
 * @correct:	function for ECC correction, matching to ECC generator (sw/hw)
 * @read_page_raw:	function to read a raw page without ECC
 * @write_page_raw:	function to write a raw page without ECC
 * @read_page:	function to read a page according to the ECC generator
 *		requirements; returns maximum number of bitflips corrected in
 *		any single ECC step, 0 if bitflips uncorrectable, -EIO hw error
 * @read_subpage:	function to read parts of the page covered by ECC;
 *			returns same as read_page()
 * @write_subpage:	function to write parts of the page covered by ECC.
 * @write_page:	function to write a page according to the ECC generator
 *		requirements.
 * @write_oob_raw:	function to write chip OOB data without ECC
 * @read_oob_raw:	function to read chip OOB data without ECC
 * @read_oob:	function to read chip OOB data
 * @write_oob:	function to write chip OOB data
 */
struct nand_ecc_ctrl {
	nand_ecc_modes_t mode;
	int steps;
	int size;
	int bytes;
	int total;
	int strength;
	int prepad;
	int postpad;
	struct nand_ecclayout	*layout;
	void *priv;
	void (*hwctl)(struct mtd_info *mtd, int mode);
	int (*calculate)(struct mtd_info *mtd, const uint8_t *dat,
			uint8_t *ecc_code);
	int (*correct)(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc,
			uint8_t *calc_ecc);
	int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
			uint8_t *buf, int oob_required, int page);
	int (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip,
			const uint8_t *buf, int oob_required);
	int (*read_page)(struct mtd_info *mtd, struct nand_chip *chip,
			uint8_t *buf, int oob_required, int page);
	int (*read_subpage)(struct mtd_info *mtd, struct nand_chip *chip,
			uint32_t offs, uint32_t len, uint8_t *buf, int page);
	int (*write_subpage)(struct mtd_info *mtd, struct nand_chip *chip,
			uint32_t offset, uint32_t data_len,
			const uint8_t *data_buf, int oob_required);
	int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
			const uint8_t *buf, int oob_required);
	int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
			int page);
	int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
			int page);
	int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page);
	int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip,
			int page);
};

่€Œ Avnet FAE ๅˆ†ไบซ็š„ Influence of Pin Setting on System Function and Performance

7.1 DSE ๆๅˆฐ็š„ drive strength

The drive strength enable (DSE) can be explained as series resistance between an ideal driverโ€™s output and its load. To achieve maximal transferred power, the impedance of the driver has to match the load impedance.

้€™็œ‹ไพ†ๆ˜ฏไธไธ€ๆจฃ็š„ๆฑ่ฅฟ

่ฉฆ่‘—ๅพž CPU ็š„ User Manual ไธ‹ๆ‰‹

0955

Chapter 4 External Signals and Pin Multiplexing

4.1 Overview
The chip contains a limited number of pins, most of which have multiple signal options.
These signal to pin and pin to signal options are selected by the input-output multiplexer
called IOMUX. The IOMUX is also used to configure other pin characteristics, such as
voltage level, drive strength, and hysteresis.

็œ‹ไพ†้€™ไธ€ๆฌกๆ–นๅ‘ๆ˜ฏๅฐ็š„

1035

ๆŠŠๅœจ user manual ๆ‰พๅˆฐ่ทŸ nand drive strength ็›ธ้—œ็š„ๅญ—็œผๅ…ˆๅˆ—ๅ‡บไพ†

  • 30.5.253 SW_PAD_CTL_PAD_NAND_RE_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_RE_B)
    • Field - 5โ€“3 DSE
    • Description
      Drive Strength Field
      Select one out of next values for pad: NAND_RE_B
      000 DSE_0_output_driver_disabled_ โ€” output driver disabled;
      001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_ โ€” R0(260 Ohm @
      3.3V, 150 [email protected], 240 Ohm for DDR)
      010 DSE_2_R0_2 โ€” R0/2
      011 DSE_3_R0_3 โ€” R0/3
      100 DSE_4_R0_4 โ€” R0/4
      101 DSE_5_R0_5 โ€” R0/5
      110 DSE_6_R0_6 โ€” R0/6
      111 DSE_7_R0_7 โ€” R0/7
      
  • 30.5.254 SW_PAD_CTL_PAD_NAND_WE_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_WE_B)
  • 30.5.255 SW_PAD_CTL_PAD_NAND_DATA00 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA00)
  • 30.5.256 SW_PAD_CTL_PAD_NAND_DATA01 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA01)
  • 30.5.257 SW_PAD_CTL_PAD_NAND_DATA02 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA02)
  • 30.5.258 SW_PAD_CTL_PAD_NAND_DATA03 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA03)
  • 30.5.259 SW_PAD_CTL_PAD_NAND_DATA04 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA04)
  • 30.5.260 SW_PAD_CTL_PAD_NAND_DATA05 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA05)
  • 30.5.261 SW_PAD_CTL_PAD_NAND_DATA06 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA06)
  • 30.5.262 SW_PAD_CTL_PAD_NAND_DATA07 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA07)
  • 30.5.263 SW_PAD_CTL_PAD_NAND_ALE SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_ALE)
  • 30.5.264 SW_PAD_CTL_PAD_NAND_WP_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_WP_B)
  • 30.5.265 SW_PAD_CTL_PAD_NAND_READY_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_READY_B)
  • 30.5.266 SW_PAD_CTL_PAD_NAND_CE0_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CE0_B)
  • 30.5.267 SW_PAD_CTL_PAD_NAND_CE1_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CE1_B)
  • 30.5.268 SW_PAD_CTL_PAD_NAND_CLE SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CLE)
  • 30.5.269 SW_PAD_CTL_PAD_NAND_DQS SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DQS)

1045

้‚ฃ่ฆๆ€Ž้บผ็Ÿฅ้“็›ฎๅ‰็š„ๆšซๅญ˜ๅ™จ็š„ๅ€ผ็‚บไฝ•ๅ‘ข

ไปฅ 30.5.255 SW_PAD_CTL_PAD_NAND_DATA00 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA00) ็‚บไพ‹

SW_PAD_CTL Register
Address: 20E_0000h base + 40Ch offset = 20E_040Ch

ๅˆฉ็”จ U-Boot ็š„ md ๅ’Œ mw

...
md      - memory displayset.
...
mw      - memory write (fill)                    ....
...

่ฎ€ๅˆฐ IOMUXC_SW_PAD_CTL_PAD_NAND_DATA00 ็š„ๅ€ผ็‚บ 0000b0b1h

=> md 020e040c
020e040c: 0000b0b1                               ....

่กจ็คบ 5โ€“3 DSE ็š„ๅ€ผ็‚บ 110b

่กจ็คบ 110 DSE_6_R0_6 โ€” R0/6

็œ‹ไพ†ๅฏไปฅ่ทŸ morris ่Šไธ€ไธ‹ๆ€Ž้บผไพ†ๅšๅฏฆ้ฉ—ไบ†

1335

ๅ…ˆๆŠŠๆ—ฉไธŠๅˆ—ๅ‡บ็š„ๆšซๅญ˜ๅ™จ็š„ DSE ๅ€ผๅ…ˆๆŽƒไธ€ๆฌก

  • 30.5.253 SW_PAD_CTL_PAD_NAND_RE_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_RE_B)
    • md 020e0404 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.254 SW_PAD_CTL_PAD_NAND_WE_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_WE_B)
    • md 020e0408 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.255 SW_PAD_CTL_PAD_NAND_DATA00 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA00)
    • md 020e040c 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.256 SW_PAD_CTL_PAD_NAND_DATA01 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA01)
    • md 020e0410 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.257 SW_PAD_CTL_PAD_NAND_DATA02 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA02)
    • md 020e0414 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.258 SW_PAD_CTL_PAD_NAND_DATA03 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA03)
    • md 020e0418 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.259 SW_PAD_CTL_PAD_NAND_DATA04 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA04)
    • md 020e041c 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.260 SW_PAD_CTL_PAD_NAND_DATA05 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA05)
    • md 020e0420 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.261 SW_PAD_CTL_PAD_NAND_DATA06 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA06)
    • md 020e0424 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.262 SW_PAD_CTL_PAD_NAND_DATA07 SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DATA07)
    • md 020e0428 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.263 SW_PAD_CTL_PAD_NAND_ALE SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_ALE)
    • md 020e042c 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.264 SW_PAD_CTL_PAD_NAND_WP_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_WP_B)
    • md 020e0430 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.265 SW_PAD_CTL_PAD_NAND_READY_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_READY_B)
    • md 020e0434 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.266 SW_PAD_CTL_PAD_NAND_CE0_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CE0_B)
    • md 020e0438 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.267 SW_PAD_CTL_PAD_NAND_CE1_B SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CE1_B)
    • md 020e043c 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.268 SW_PAD_CTL_PAD_NAND_CLE SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_CLE)
    • md 020e0440 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6
  • 30.5.269 SW_PAD_CTL_PAD_NAND_DQS SW PAD Control Register (IOMUXC_SW_PAD_CTL_PAD_NAND_DQS)
    • md 020e0444 1 - 0000b0b1h
    • DSE = 110b - 110 DSE_6_R0_6 โ€” R0/6

1400

็™ผ็พๅพž 30.5.253 ๅˆฐ 30.5.269 ้€™ 17 ๅ€‹ๆšซๅญ˜ๅ™จ็š„ๅ€ผ้ƒฝไธ€ๆจฃ ้ƒฝๆ˜ฏ 0000b0b1h

ๅฐฑไปฅ 30.5.255 ็‚บๆบ–ไพ†็œ‹ไธ€ไธ‹ๆฏๅ€‹ field

  • HYS[16] - Hyst. Enable Field; Select one out of next values for pad: NAND_DATA00
    • 0 HYS_0_Hysteresis_Disabled โ€” Hysteresis Disabled
    • 1 HYS_1_Hysteresis_Enabled โ€” Hysteresis Enabled
  • PUS[15:14] - Pull Up / Down Config. Field; Select one out of next values for pad: NAND_DATA00
    • 00 PUS_0_100K_Ohm_Pull_Down โ€” 100K Ohm Pull Down
    • 01 PUS_1_47K_Ohm_Pull_Up โ€” 47K Ohm Pull Up
    • 10 PUS_2_100K_Ohm_Pull_Up โ€” 100K Ohm Pull Up
    • 11 PUS_3_22K_Ohm_Pull_Up โ€” 22K Ohm Pull Up
  • PUE[13] - Pull / Keep Select Field; Select one out of next values for pad: NAND_DATA00
    • 0 PUE_0_Keeper โ€” Keeper
    • 1 PUE_1_Pull โ€” Pull
  • PKE[12] - Pull / Keep Enable Field; Select one out of next values for pad: NAND_DATA00
    • 0 PKE_0_Pull_Keeper_Disabled โ€” Pull/Keeper Disabled
    • 1 PKE_1_Pull_Keeper_Enabled โ€” Pull/Keeper Enabled
  • ODE[11] - Open Drain Enable Field; Select one out of next values for pad: NAND_DATA00
    • 0 ODE_0_Open_Drain_Disabled โ€” Open Drain Disabled
    • 1 ODE_1_Open_Drain_Enabled โ€” Open Drain Enabled
  • SPEED[7:6] - Speed Field; Select one out of next values for pad: NAND_DATA00
    • 00 SPEED_0_low_50MHz_ โ€” low(50MHz)
    • 01 SPEED_1_medium_100MHz_ โ€” medium(100MHz)
    • 10 SPEED_2_medium_100MHz_ โ€” medium(100MHz)
    • 11 SPEED_3_max_200MHz_ โ€” max(200MHz)
  • DSE[5:3] - Drive Strength Field; Select one out of next values for pad: NAND_DATA00
    • 000 DSE_0_output_driver_disabled_ โ€” output driver disabled;
    • 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_ โ€” R0
    • 010 DSE_2_R0_2 โ€” R0/2
    • 011 DSE_3_R0_3 โ€” R0/3
    • 100 DSE_4_R0_4 โ€” R0/4
    • 101 DSE_5_R0_5 โ€” R0/5
    • 110 DSE_6_R0_6 โ€” R0/6
    • 111 DSE_7_R0_7 โ€” R0/7
  • SRE[0] - Slew Rate Field; Select one out of next values for pad: NAND_DATA00
    • 0 SRE_0_Slow_Slew_Rate โ€” Slow Slew Rate
    • 1 SRE_1_Fast_Slew_Rate โ€” Fast Slew Rate

1420

่ทŸ morris ่Š้Žไน‹ๅพŒๅ…ˆไปฅไธ‹้ข้€™ไธ‰ๅ€‹ field ไพ†่ชฟๆ•ด็œ‹็œ‹

  • SPEED[7:6] - Speed Field
    • 00 SPEED_0_low_50MHz_
    • 01 SPEED_1_medium_100MHz_
    • 10 SPEED_2_medium_100MHz_
    • 11 SPEED_3_max_200MHz_
  • DSE[5:3] - Drive Strength Field
    • 000 DSE_0_output_driver_disabled_
    • 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_
    • 010 DSE_2_R0_2
    • 011 DSE_3_R0_3
    • 100 DSE_4_R0_4
    • 101 DSE_5_R0_5
    • 110 DSE_6_R0_6
    • 111 DSE_7_R0_7
  • SRE[0] - Slew Rate Field
    • 0 SRE_0_Slow_Slew_Rate
    • 1 SRE_1_Fast_Slew_Rate

็›ฎๅ‰็š„่จญๅฎšๆ˜ฏ

  • SPEED[7:6] - Speed Field
    • 10 SPEED_2_medium_100MHz_
  • DSE[5:3] - Drive Strength Field
    • 110 DSE_6_R0_6
  • SRE[0] - Slew Rate Field
    • 1 SRE_1_Fast_Slew_Rate

ๅ…ˆ่ชฟๆ•ด SPEED[7:6] ๅ’Œ SRE[0]

  • SPEED[7:6] - Speed Field
    • 00 SPEED_0_low_50MHz_
  • DSE[5:3] - Drive Strength Field
    • 110 DSE_6_R0_6
  • SRE[0] - Slew Rate Field
    • 0 SRE_0_Slow_Slew_Rate

ไปฅ 30.5.253 SW_PAD_CTL_PAD_NAND_RE_B SW PAD Control Register ่€Œ่จ€

  • md 020e0404 0000b030 1

ๅ…จ้ƒจ็›ธ้—œ็š„ๆšซๅญ˜ๅ™จไธ€่ตท่จญๅฎš

mw 020e0404 0000b030 1
mw 020e0408 0000b030 1
mw 020e040c 0000b030 1

mw 020e0410 0000b030 1
mw 020e0414 0000b030 1
mw 020e0418 0000b030 1
mw 020e041c 0000b030 1

mw 020e0420 0000b030 1
mw 020e0424 0000b030 1
mw 020e0428 0000b030 1
mw 020e042c 0000b030 1

mw 020e0430 0000b030 1
mw 020e0434 0000b030 1
mw 020e0438 0000b030 1
mw 020e043c 0000b030 1

mw 020e0440 0000b030 1
mw 020e0444 0000b030 1

่ฉฆ่‘—่ผ‰ๅ…ฅ linux

run bootcmd

้–‹ๆฉŸๆˆๅŠŸ

1540

่ชฟๆ•ดไธ€ไธ‹ DSE[5:3] ็š„ๅ€ผไพ†่ฉฆ่ฉฆ็œ‹

ๅ…ˆ่ชฟๆˆ 001 DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_

ๅ…ถไป–ไฟๆŒไธๅ‹•

ๅ…จ้ƒจ็›ธ้—œ็š„ๆšซๅญ˜ๅ™จไธ€่ตท่จญๅฎšๆˆ 0000b089

mw 020e0404 0000b089 1
mw 020e0408 0000b089 1
mw 020e040c 0000b089 1

mw 020e0410 0000b089 1
mw 020e0414 0000b089 1
mw 020e0418 0000b089 1
mw 020e041c 0000b089 1

mw 020e0420 0000b089 1
mw 020e0424 0000b089 1
mw 020e0428 0000b089 1
mw 020e042c 0000b089 1

mw 020e0430 0000b089 1
mw 020e0434 0000b089 1
mw 020e0438 0000b089 1
mw 020e043c 0000b089 1

mw 020e0440 0000b089 1
mw 020e0444 0000b089 1

่ผ‰ๅ…ฅ linux

run bootcmd

้–‹ๆฉŸๆˆๅŠŸ

1550

ๅ†่ชฟๆ•ด DSE[5:3] ็š„ๅ€ผๆˆ 111 DSE_7_R0_7

ๅ…ถไป–ไฟๆŒไธๅ‹•

ๅ…จ้ƒจ็›ธ้—œ็š„ๆšซๅญ˜ๅ™จไธ€่ตท่จญๅฎšๆˆ 0000b0b9

mw 020e0404 0000b0b9 1
mw 020e0408 0000b0b9 1
mw 020e040c 0000b0b9 1

mw 020e0410 0000b0b9 1
mw 020e0414 0000b0b9 1
mw 020e0418 0000b0b9 1
mw 020e041c 0000b0b9 1

mw 020e0420 0000b0b9 1
mw 020e0424 0000b0b9 1
mw 020e0428 0000b0b9 1
mw 020e042c 0000b0b9 1

mw 020e0430 0000b0b9 1
mw 020e0434 0000b0b9 1
mw 020e0438 0000b0b9 1
mw 020e043c 0000b0b9 1

mw 020e0440 0000b0b9 1
mw 020e0444 0000b0b9 1

่ผ‰ๅ…ฅ linux

run bootcmd

้–‹ๆฉŸๆˆๅŠŸ