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

 
 
 
Reply to this topicStart new topic
> 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
Jury093
сообщение Feb 12 2014, 09:48
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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
Go to the top of the page
 
+Quote Post
shamrel
сообщение Feb 13 2014, 03:15
Сообщение #3


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

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



Цитата(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 она есть, в нее можно писать и читать.



--------------------
Go to the top of the page
 
+Quote Post
Jury093
сообщение Feb 13 2014, 09:54
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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 файле (я с этими структурами незнаком и надеюсь, что нескоро понадобится)
Go to the top of the page
 
+Quote Post
shamrel
сообщение Feb 14 2014, 03:24
Сообщение #5


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

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



Цитата(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 файле (я с этими структурами незнаком и надеюсь, что нескоро понадобится)

Добро. Спасибо за совет! буду ядро дебажить.


--------------------
Go to the top of the page
 
+Quote Post
shamrel
сообщение Feb 17 2014, 07:15
Сообщение #6


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

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



Цитата(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 , но понимания мне не добавила.
Люди добрые, научите, как дебажить ядро?


--------------------
Go to the top of the page
 
+Quote Post
Jury093
сообщение Feb 17 2014, 07:59
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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 контроллера..
Go to the top of the page
 
+Quote Post
shamrel
сообщение Feb 18 2014, 07:22
Сообщение #8


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

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



Здоровья всем!
Проследил по исходникам путь от считывания 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?

Сообщение отредактировал shamrel - Feb 18 2014, 07:23


--------------------
Go to the top of the page
 
+Quote Post
Jury093
сообщение Feb 18 2014, 09:33
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(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


перед тем, как писать команды, просмотрите встроенный хелп с ключами..

Сообщение отредактировал Jury093 - Feb 18 2014, 09:34
Go to the top of the page
 
+Quote Post
shamrel
сообщение Feb 19 2014, 08:33
Сообщение #10


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

Группа: Свой
Сообщений: 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
Jury093
сообщение Feb 19 2014, 11:10
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(shamrel @ Feb 19 2014, 12:33) *
Сейчас загрузиться получается с uSD, но на серийном
устройстве ее не будет. Нужно все действия выполнять под u-boot.

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

кстати, вы перед записью из юбута или линукса нанд трёте в области для записи? а то мало ли забыли..
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 22:35
Рейтинг@Mail.ru


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