Имеется устройства на основе 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." ?