реклама на сайте
подробности

 
 
> Linux-3.8.13. Device Tree., Ti. Am33xx. Вопросы по созданию платформы
shamrel
сообщение Feb 12 2014, 04:53
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 132
Регистрация: 10-10-07
Из: Новосибирск
Пользователь №: 31 229



Доброго Здоровья!
Имеется устройства на основе Beaglebone Black (BBB).
На плату добавлена NAND память MT29F2G08ABAEAH4. Схема включения в приложении.
Прикрепленный файл  nand.PDF ( 37.18 килобайт ) Кол-во скачиваний: 386

В настоящий момент система грузиться с SD карты. Однако, хочется грузиться с NAND.
Для этого считаю нужным добавить в файлы "Device Tree", описывающие платформу, информацию о NAND.
При добавлении руководствовался информацией: PATCH. Philip Avinash.
В результате чего,в файл am335x-bone-common.dtsi добавил:
CODE

am33xx_pinmux: pinmux@44e10800 {
pinctrl-names = "default";
pinctrl-0 = <&nandflash_pins_s0>;

...

nandflash_pins_s0: nandflash_pins_s0 {
pinctrl-single,pins = <
0x0 0x30 /* gpmc_ad0.gpmc_ad0, INPUT | PULLUP | MODE0 */
0x4 0x30 /* gpmc_ad1.gpmc_ad1, INPUT | PULLUP | MODE0 */
0x8 0x30 /* gpmc_ad2.gpmc_ad2, INPUT | PULLUP | MODE0 */
0xc 0x30 /* gpmc_ad3.gpmc_ad3, INPUT | PULLUP | MODE0 */
0x10 0x30 /* gpmc_ad4.gpmc_ad4, INPUT | PULLUP | MODE0 */
0x14 0x30 /* gpmc_ad5.gpmc_ad5, INPUT | PULLUP | MODE0 */
0x18 0x30 /* gpmc_ad6.gpmc_ad6, INPUT | PULLUP | MODE0 */
0x1c 0x30 /* gpmc_ad7.gpmc_ad7, INPUT | PULLUP | MODE0 */
0x70 0x30 /* gpmc_wait0.gpmc_wait0, INPUT | PULLUP | MODE0 */
0x74 0x37 /* gpmc_wpn.gpio0_30, INPUT | PULLUP | MODE7 */
0x7c 0x8 /* gpmc_csn0.gpmc_csn0, PULL DISA */
0x90 0x8 /* gpmc_advn_ale.gpmc_advn_ale, PULL DISA */
0x94 0x8 /* gpmc_oen_ren.gpmc_oen_ren, PULL DISA */
0x98 0x8 /* gpmc_wen.gpmc_wen, PULL DISA */
0x9c 0x8 /* gpmc_be0n_cle.gpmc_be0n_cle, PULL DISA */
>;
};
};


ocp: ocp {

...

elm: elm@48080000 {
status = "okay";
};

gpmc: gpmc@50000000 {
status = "okay";
ranges = <0 0 0x08000000 0x10000000>; /* CS0: NAND */
/*compatible = "ti,am3352-gpms"; ?????? */
ti,hwmods = "gpms";
nand@0,0 {
reg = <0 0 0>; /* CS0, offset 0 */
nand-bus-width = <8>;
ti,nand-ecc-opt = "bch8";

gpmc,sync-clk = <0>;
gpmc,cs-on = <0>;
gpmc,cs-rd-off = <44>;
gpmc,cs-wr-off = <44>;
gpmc,adv-on = <6>;
gpmc,adv-rd-off = <34>;
gpmc,adv-wr-off = <44>;
gpmc,we-off = <40>;
gpmc,oe-off = <54>;
gpmc,access = <64>;
gpmc,rd-cycle = <82>;
gpmc,wr-cycle = <82>;
gpmc,wr-access = <40>;
gpmc,wr-data-mux-bus = <0>;

#address-cells = <1>;
#size-cells = <1>;
elm_id = <&elm>;

/* MTD partition table */
partition@0 {
label = "SPL1";
reg = <0x00000000 0x000020000>;
};

partition@1 {
label = "SPL2";
reg = <0x00020000 0x00020000>;
};

partition@2 {
label = "SPL3";
reg = <0x00040000 0x00020000>;
};

partition@3 {
label = "SPL4";
reg = <0x00060000 0x00020000>;
};

partition@4 {
label = "U-boot";
reg = <0x00080000 0x001e0000>;
};

partition@5 {
label = "environment";
reg = <0x00260000 0x00020000>;
};

partition@6 {
label = "Kernel";
reg = <0x00280000 0x00500000>;
};

partition@7 {
label = "File-System";
reg = <0x00780000 0x0F880000>;
};
};
};

};



В файл am33xx.dtsi добавил:
CODE

ocp {
....
gpmc: gpmc@50000000 {
compatible = "ti,am3352-gpmc";
ti,hwmods = "gpmc";
/*reg = <0x50000000 0x01000000>;*/
reg = <0x50000000 0x2000>;
interrupts = <100>;
gpmc,num-cs = <7>;
gpmc,num-cs = <8>;
gpmc,num-waitpins = <2>;
#address-cells = <2>;
#size-cells = <1>;

status = "disabled";
};

elm: elm@48080000 {
reg = <0x48080000 0x2000>;
interrupts = <4>;
/*compatible = "ti,am3352-elm";*/
ti,hwmods = "elm";
status = "disabled";
};

}

Также в этом файле пришлось отключить(закоментировал) mmc2 и mmc3. Иначе при попытке смуксить пины на NAND
ядро паниковало.

В настройках ядра включено все, что связано с NAND и присущему ему файловыми системами.
В системе появилось устройство /dev/ubi_ctrl, однако при попытки приатачить его получаю ошибку:

root@am33:~# ubiattach /dev/ubi_ctrl -m 2
ubiattach: error!: cannot attach mtd2
error 19 (No such device)

У кого есть соответствующий опыт, помогите.
Как включить NAND?

P.S.: Уважаемые модераторы, может быть имеет смысл слить с темой "DS1338. AM33xx. Linux-3.8.13. Device Tree." ?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shamrel
сообщение Feb 19 2014, 08:33
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 132
Регистрация: 10-10-07
Из: Новосибирск
Пользователь №: 31 229



Спасибо, Jury093, и низкий поклон!
Из линукса получается смонтировать, отформатировать, развернуть образ rootfs.
Сейчас проблема в том, что u-boot и ядро имеют различную схему ECC. То-есть,
образ файловой системы, записанный под u-boot, не монтируется в Linux. А если прошить в
NAND образ u-boot.img и MLO из под Линукса, то не грузиться с NAND. Если же u-boot.img и MLO
записаны в NAND под u-boot, то все хорошо. Сейчас загрузиться получается с uSD, но на серийном
устройстве ее не будет. Нужно все действия выполнять под u-boot.

Образ делал в два этапа: сначала mkfs.ubifs, а потом ubinize. Ядро и u-boot собраны с
схемой ECC -- BH8 (аппаратный). u-boot версии 2014.01. Раньше можно было выбирать
схему есс командой nandecc, теперь команды этой нет.
.conffig содержит:
CODE


#
# Disk-On-Chip Device Drivers
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
# CONFIG_MTD_DOCG3 is not set
CONFIG_BCH_CONST_M=13
CONFIG_BCH_CONST_T=8
CONFIG_MTD_NAND_ECC=y
# CONFIG_MTD_NAND_ECC_SMC is not set
CONFIG_MTD_NAND=y
# CONFIG_MTD_NAND_ECC_BCH is not set
# CONFIG_MTD_SM_COMMON is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_DENALI is not set
# CONFIG_MTD_NAND_GPIO is not set
CONFIG_MTD_NAND_OMAP2=y
CONFIG_MTD_NAND_OMAP_BCH=y
CONFIG_MTD_NAND_OMAP_BCH8=y
# CONFIG_MTD_NAND_OMAP_BCH4 is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_DOCG4 is not set
# CONFIG_MTD_NAND_NANDSIM is not set
CONFIG_MTD_NAND_PLATFORM=y
# CONFIG_MTD_ALAUDA is not set
# CONFIG_MTD_ONENAND is not set


из файла конфигурации платформы для u-boot:
CODE

#ifdef CONFIG_NAND
#define CONFIG_NAND_OMAP_GPMC
#define CONFIG_NAND_OMAP_ELM
#define CONFIG_SYS_NAND_5_ADDR_CYCLE
#define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \
CONFIG_SYS_NAND_PAGE_SIZE)
#define CONFIG_SYS_NAND_PAGE_SIZE 2048
#define CONFIG_SYS_NAND_OOBSIZE 64
#define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024)
#define CONFIG_SYS_NAND_BAD_BLOCK_POS NAND_LARGE_BADBLOCK_POS
#define CONFIG_SYS_NAND_ECCPOS { 2, 3, 4, 5, 6, 7, 8, 9, \
10, 11, 12, 13, 14, 15, 16, 17, \
18, 19, 20, 21, 22, 23, 24, 25, \
26, 27, 28, 29, 30, 31, 32, 33, \
34, 35, 36, 37, 38, 39, 40, 41, \
42, 43, 44, 45, 46, 47, 48, 49, \
50, 51, 52, 53, 54, 55, 56, 57, }

#define CONFIG_SYS_NAND_ECCSIZE 512
#define CONFIG_SYS_NAND_ECCBYTES 14
#define CONFIG_SYS_NAND_ONFI_DETECTION
#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_BCH8_CODE_HW
#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000
#endif
#endif


/* NAND support */
#ifdef CONFIG_NAND
#define CONFIG_CMD_NAND
#define GPMC_NAND_ECC_LP_x16_LAYOUT 1
#if !defined(CONFIG_SPI_BOOT) && !defined(CONFIG_NOR_BOOT)
#define MTDIDS_DEFAULT "nand0=omap2-nand.0"
#define MTDPARTS_DEFAULT "mtdparts=omap2-nand.0:128k(SPL)," \
"128k(SPL.backup1)," \
"128k(SPL.backup2)," \
"128k(SPL.backup3),1792k(u-boot)," \
"128k(u-boot-spl-os)," \
"128k(u-boot-env),5m(kernel),-(rootfs)"
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET 0x260000 /* environment starts here */
#define CONFIG_SYS_ENV_SECT_SIZE (128 << 10) /* 128 KiB */
#endif
#endif



P.S: Причина редактирования: добавил конфигурацию.

Сообщение отредактировал shamrel - Feb 19 2014, 09:45


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016