Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Linux-3.8.13. Device Tree.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
shamrel
Доброго Здоровья!
Имеется устройства на основе Beaglebone Black (BBB).
На плату добавлена NAND память MT29F2G08ABAEAH4. Схема включения в приложении.
Нажмите для просмотра прикрепленного файла
В настоящий момент система грузиться с 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." ?
Jury093
Цитата(shamrel @ Feb 12 2014, 08:53) *
В настройках ядра включено все, что связано с NAND и присущему ему файловыми системами.
В системе появилось устройство /dev/ubi_ctrl, однако при попытки приатачить его получаю ошибку:
root@am33:~# ubiattach /dev/ubi_ctrl -m 2
ubiattach: error!: cannot attach mtd2
error 19 (No such device)

перед тем, как ubi-аттачить смотрите в лог ядра - есть ли опознание нанда и появление /dev/mtd..
и сначала ubiformat, потом ubiattach.. только потом достаточно ubiattach
shamrel
Цитата(Jury093 @ Feb 12 2014, 12:48) *
перед тем, как ubi-аттачить смотрите в лог ядра - есть ли опознание нанда и появление /dev/mtd..
и сначала ubiformat, потом ubiattach.. только потом достаточно ubiattach


В том то и дело, что нет устройства в системе.
После загрузки:
root@am33:~# dmesg | grep NAND
[ 32.545592] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 33.636919] OneNAND driver initializing
root@am33:~# cat /proc/mtd
dev: size erasesize name
root@am33:~#

Причем память жива. в u-boot она есть, в нее можно писать и читать.

Jury093
Цитата(shamrel @ Feb 13 2014, 07:15) *
В том то и дело, что нет устройства в системе.
Причем память жива. в u-boot она есть, в нее можно писать и читать.

т.е. юбут "видит" нанд и может с ним работать?
тогда надо добится в логе ядра похожей строчки:
Код
[    8.314117] NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit)

разумеется с данными вашего чипа..
найдите в исходниках ядра драйвер нанда, навтыкайте туда в функцию _probe отладочных printk - если драйвер вызывается, то по треку можно понять, где происходит сбой инициализации..
если не вызывается, то смотрите драйвер контроллера gpmc для АРМа..
вполне может, что у вас ошибка в описание железа в dts файле (я с этими структурами незнаком и надеюсь, что нескоро понадобится)
shamrel
Цитата(Jury093 @ Feb 13 2014, 12:54) *
т.е. юбут "видит" нанд и может с ним работать?
тогда надо добится в логе ядра похожей строчки:
Код
[    8.314117] NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit)

разумеется с данными вашего чипа..
найдите в исходниках ядра драйвер нанда, навтыкайте туда в функцию _probe отладочных printk - если драйвер вызывается, то по треку можно понять, где происходит сбой инициализации..
если не вызывается, то смотрите драйвер контроллера gpmc для АРМа..
вполне может, что у вас ошибка в описание железа в dts файле (я с этими структурами незнаком и надеюсь, что нескоро понадобится)

Добро. Спасибо за совет! буду ядро дебажить.
shamrel
Цитата(Jury093 @ Feb 13 2014, 12:54) *
тогда надо добится в логе ядра похожей строчки:
Код
[    8.314117] NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit)

разумеется с данными вашего чипа..
найдите в исходниках ядра драйвер нанда, навтыкайте туда в функцию _probe отладочных printk - если драйвер вызывается, то по треку можно понять, где происходит сбой инициализации..
если не вызывается, то смотрите драйвер контроллера gpmc для АРМа..
вполне может, что у вас ошибка в описание железа в dts файле (я с этими структурами незнаком и надеюсь, что нескоро понадобится)

... не выходит Каменный Цветок...
Складывается впечатление, что ядро и не начинает искать NAND.
Не могу проследить путь вызова драйвера, связь DTB и собственно драйвера.
В файл ./drivers/mtd/nand/nand_base.c. добавил информацию для дебага, поставил всюду printk, из всего многообразия, вызывается только функция nand_base_init(void), которая, собственно, кроме регистрации светодиода на переключение согласно NAND ничегошеньки не делает, функции инициализации NAND при запуски ядра не используются. Эти функции подсовываются макросу
Код
EXPORT_SYMBOL(nand_scan);
EXPORT_SYMBOL(nand_scan_ident);

реализацию EXPORT_SYMBOL нашел в ./include/linux/export.h , но понимания мне не добавила.
Люди добрые, научите, как дебажить ядро?
Jury093
Цитата(shamrel @ Feb 17 2014, 11:15) *
... не выходит Каменный Цветок...

пока вижу два пути:

1. попробовать изменить на что-то типа:
Код
compatible        = "ti,am33xx-elm";

или
Код
compatible        = "ti,am335x-elm";

у вас BBB - а это am3359, может драйверу не нравится упоминание am3352..
тут надо в исходниках смотреть, что же по факту должно вызываться..

2. взять ядро версией помладше для BBB что-то типа 3.2.0, там где нормальное описание в файле платы, а не дурацкий dts
для evm там есть поддержка nand
смысл действия - убедится, что железо исправно, нанд подключен правильно и поддержан ядром
и только после этого пилить пункт №1..
бегло глянул исходники - вроде цепочка интит gpmc, из которого вызывается nand_ident и nand_scan, т.е. перед нандом надо запустить инит gpmc контроллера..
shamrel
Здоровья всем!
Проследил по исходникам путь от считывания DT, до инициализации драйвера. Нашел вчем трабла, hwmod для GPMC модуля был задал не корректно. Исправил.
В ситеме появились признаки NAND:
root@am33:~# dmesg | grep NAND
[ 32.703146] jffs2: version 2.2. (NAND) (SUMMARY) �© 2001-2006 Red Hat, Inc.
[ 34.003647] enabling NAND BCH ecc with 8-bit correction
[ 34.020513] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08AB4
[ 34.492286] OneNAND driver initializing

root@am33:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00020000 "SPL1"
mtd1: 00020000 00020000 "SPL2"
mtd2: 00020000 00020000 "SPL3"
mtd3: 00020000 00020000 "SPL4"
mtd4: 001e0000 00020000 "U-boot"
mtd5: 00020000 00020000 "environment"
mtd6: 00500000 00020000 "Kernel"
mtd7: 0f880000 00020000 "File-System"

root@am33:~# dmesg | grep GPMC
[ 0.099427] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[ 0.099645] GPMC CS0: cs_on : 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099659] GPMC CS0: cs_rd_off : 5 ticks, 50 ns (was 30 ticks) 44 ns
[ 0.099672] GPMC CS0: cs_wr_off : 5 ticks, 50 ns (was 30 ticks) 44 ns
[ 0.099684] GPMC CS0: adv_on : 1 ticks, 10 ns (was 0 ticks) 6 ns
[ 0.099697] GPMC CS0: adv_rd_off: 4 ticks, 40 ns (was 30 ticks) 34 ns
[ 0.099709] GPMC CS0: adv_wr_off: 5 ticks, 50 ns (was 30 ticks) 44 ns
[ 0.099721] GPMC CS0: oe_on : 1 ticks, 10 ns (was 7 ticks) 6 ns
[ 0.099734] GPMC CS0: oe_off : 6 ticks, 60 ns (was 24 ticks) 54 ns
[ 0.099746] GPMC CS0: we_on : 1 ticks, 10 ns (was 5 ticks) 6 ns
[ 0.099759] GPMC CS0: we_off : 4 ticks, 40 ns (was 22 ticks) 40 ns
[ 0.099771] GPMC CS0: rd_cycle : 9 ticks, 90 ns (was 30 ticks) 82 ns
[ 0.099784] GPMC CS0: wr_cycle : 9 ticks, 90 ns (was 30 ticks) 82 ns
[ 0.099797] GPMC CS0: access : 7 ticks, 70 ns (was 21 ticks) 64 ns
[ 0.099808] GPMC CS0: page_burst_access: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099819] GPMC CS0: bus_turnaround: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099831] GPMC CS0: cycle2cycle_delay: 0 ticks, 0 ns (was 15 ticks) 0 ns
[ 0.099842] GPMC CS0: wait_monitoring: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099853] GPMC CS0: clk_activation: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099865] GPMC CS0: wr_data_mux_bus: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 0.099876] GPMC CS0: wr_access : 0 ticks, 0 ns (was 22 ticks) 0 ns

root@am33:~# ls -l /dev/mtd*
crw------- 1 root root 90, 0 Feb 18 13:35 /dev/mtd0
crw------- 1 root root 90, 1 Feb 18 13:35 /dev/mtd0ro
crw------- 1 root root 90, 2 Feb 18 13:35 /dev/mtd1
crw------- 1 root root 90, 3 Feb 18 13:35 /dev/mtd1ro
crw------- 1 root root 90, 4 Feb 18 13:35 /dev/mtd2
crw------- 1 root root 90, 5 Feb 18 13:35 /dev/mtd2ro
crw------- 1 root root 90, 6 Feb 18 13:35 /dev/mtd3
crw------- 1 root root 90, 7 Feb 18 13:35 /dev/mtd3ro
crw------- 1 root root 90, 8 Feb 18 13:35 /dev/mtd4
crw------- 1 root root 90, 9 Feb 18 13:35 /dev/mtd4ro
crw------- 1 root root 90, 10 Feb 18 13:35 /dev/mtd5
crw------- 1 root root 90, 11 Feb 18 13:35 /dev/mtd5ro
crw------- 1 root root 90, 12 Feb 18 13:35 /dev/mtd6
crw------- 1 root root 90, 13 Feb 18 13:35 /dev/mtd6ro
crw------- 1 root root 90, 14 Feb 18 13:35 /dev/mtd7
crw------- 1 root root 90, 15 Feb 18 13:35 /dev/mtd7ro
brw-rw---- 1 root disk 31, 0 Feb 18 13:35 /dev/mtdblock0
brw-rw---- 1 root disk 31, 1 Feb 18 13:35 /dev/mtdblock1
brw-rw---- 1 root disk 31, 2 Feb 18 13:35 /dev/mtdblock2
brw-rw---- 1 root disk 31, 3 Feb 18 13:35 /dev/mtdblock3
brw-rw---- 1 root disk 31, 4 Feb 18 13:35 /dev/mtdblock4
brw-rw---- 1 root disk 31, 5 Feb 18 13:35 /dev/mtdblock5
brw-rw---- 1 root disk 31, 6 Feb 18 13:35 /dev/mtdblock6
brw-rw---- 1 root disk 31, 7 Feb 18 13:35 /dev/mtdblock7

Однако, вот беда! При попытки смонтировать, выходит куча ошибок:
[ 2691.557480] UBI error: ubi_io_read: error -74 (ECC error) while reading 512 bytess
[ 2691.568412] [<c0010317>] (unwind_backtrace+0x1/0x8a) from [<c01eb9a1>] (ubi_io_re)
[ 2691.577605] [<c01eb9a1>] (ubi_io_read+0x155/0x1f0) from [<c01ebce3>] (ubi_io_read)
[ 2691.587332] [<c01ebce3>] (ubi_io_read_vid_hdr+0x4f/0x13c) from [<c01eeccd>] (scan)
[ 2691.597345] [<c01eeccd>] (scan_peb.part.4+0x10d/0x3e4) from [<c01ef009>] (scan_al)
[ 2691.606370] [<c01ef009>] (scan_all+0x65/0x754) from [<c01ef9b9>] (ubi_attach+0x15)
[ 2691.614922] [<c01ef9b9>] (ubi_attach+0x15d/0x234) from [<c01e82c3>] (ubi_attach_m)
[ 2691.624471] [<c01e82c3>] (ubi_attach_mtd_dev+0x503/0x97c) from [<c01e88e3>] (ctrl)
[ 2691.634421] [<c01e88e3>] (ctrl_cdev_ioctl+0x7f/0x104) from [<c009e239>] (do_vfs_i)
[ 2691.643799] [<c009e239>] (do_vfs_ioctl+0x3a9/0x3f0) from [<c009e2af>] (sys_ioctl+)
[ 2691.652532] [<c009e2af>] (sys_ioctl+0x2f/0x44) from [<c000c401>] (ret_fast_syscal)
[ 2691.661554] UBI: scanning is finished
[ 2691.665405] UBI error: late_analysis: MTD device is not UBI-formatted and possiblt
[ 2691.677391] UBI error: ubi_attach_mtd_dev: failed to attach mtd7, error -22

Цитата(shamrel @ Feb 12 2014, 07:53) *
В настройках ядра включено все, что связано с NAND и присущему ему файловыми системами.

Может в этом проблема? Что-то лишнее включил. Что минимально следует включить в ядре, чтоб получить работающий NAND?
Jury093
Цитата(shamrel @ Feb 18 2014, 11:22) *
Может в этом проблема? Что-то лишнее включил. Что минимально следует включить в ядре, чтоб получить работающий NAND?

а последовательность действий ваша какая?
я делаю так (для начального инита):

Код
ubiformat /dev/mtd1 -y
ubiattach /dev/ubi_ctrl -m 1
ubimkvol /dev/ubi0 -m -N rootfs
mount -t ubifs ubi:rootfs /mnt


перед тем, как писать команды, просмотрите встроенный хелп с ключами..
shamrel
Спасибо, 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: Причина редактирования: добавил конфигурацию.
Jury093
Цитата(shamrel @ Feb 19 2014, 12:33) *
Сейчас загрузиться получается с uSD, но на серийном
устройстве ее не будет. Нужно все действия выполнять под u-boot.

у меня коллеги решили эту проблему - комплект бинарников на "юсб флешке", которая втыкается в прибор.. прибор включаем, с флешки грузится технологическая прошивка, которая шьет боевую.. далее ребут и в бой.. тоже бились над проблемой расположения и свойств ECC и технологией ubinize (вроде правильно написал)..
имхо, начните с малого - попробуйте отключить дефайнами контроль ECC в юбуте и в ядре..
в доках на ядро есть файл, где описан механизм для нанда (Documentation/mtd/nand_ecc.txt), почитайте..

кстати, вы перед записью из юбута или линукса нанд трёте в области для записи? а то мало ли забыли..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.