Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Правка файла борды
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
TigerSHARC
Работаю с платой lcdk omap-l138. использую SDK от TI.
Недавно задумался: что если я захочу в конечном устройстве поменять размер SDRAM с 128 на 256 MB.
Что для этого править надо? Знаю что в строке параметров загрузки ядра можно указать MEM=256MB , что-то ещё править надо? файл борды? там вроде как нет упоминания про SDRAM, там только nand...
aaarrr
Цитата(TigerSHARC @ Mar 24 2014, 20:15) *
что-то ещё править надо?

Ничего.
TigerSHARC
Спасибо за короткий но ёмкий ответ.

Сейчас столкнулся с такой проблемой, имелся у меня старый SDK именно под мою плату на OMAP-L138. Использовался Linux 2.6.39
Теперь скачал SDK с ядром 3.3, но конфиг и файл борды используется для omapl138-lcdk от TI

Я попытался выдрать файл борды из старого SDK и подсунуть новому ядру. Ничего не вышло. На этапе сборки я получил кучу ошибок.

Буду рад любым рекомендациям по исправлению файла борды.

Вот код моего файла из старого SDK:
CODE

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/console.h>
#include <linux/i2c.h>
#include <linux/i2c/at24.h>
#include <linux/input.h>
#include <linux/mfd/tps6507x.h>
#include <linux/gpio.h>
#include <linux/platform_device.h>
#include <linux/leds.h>
#include <linux/interrupt.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/tps6507x.h>
#include <linux/input/tps6507x-ts.h>
#include <linux/spi/spi.h>
#include <linux/spi/flash.h>
#include <linux/delay.h>
#include <linux/i2c-gpio.h>

#include <asm/mach-types.h>
#include <asm/mach/arch.h>

#include <mach/cp_intc.h>
#include <mach/da8xx.h>
#include <mach/nand.h>
#include <mach/mux.h>
#include <mach/aemif.h>
#include <mach/spi.h>
#include <mach/flash.h>
#include <mach/usb.h>
#include <mach/vpif.h>
#include <media/davinci/videohd.h>

#include <media/tvp514x.h>

#define OWLBOARDPLUS_PHY_ID "0:01"
#define OWLBOARDPLUS_LCD_PWR_PIN GPIO_TO_PIN(0, 8)

#define OWLBOARDPLUS_MMCSD_CD_PIN GPIO_TO_PIN(2, 6)
#define OWLBOARDPLUS_MMCSD_WP_PIN GPIO_TO_PIN(1, 15)

#define OWLBOARDPLUS_LED0 GPIO_TO_PIN(0, 4)

#define FACTORY_CONFIG_MAGIC 0x012C0138
#define FACTORY_CONFIG_VERSION 0x00010001



struct factory_config {
u32 magic;
u32 version;
u8 mac[6];
u32 fpga_type;
u32 spare;
u32 serialnumber;
char partnum[32];
};

static struct factory_config factory_config;

static void read_factory_config(struct memory_accessor *a, void *context)
{
int ret;

ret = a->read(a, (char *)&factory_config, 0, sizeof(factory_config));
if (ret != sizeof(struct factory_config)) {
pr_warning("MityOMAPL138: Read Factory Config Failed: %d\n",
ret);
return;
}

if (factory_config.magic != FACTORY_CONFIG_MAGIC) {
pr_warning("MityOMAPL138: Factory Config Magic Wrong (%X)\n",
factory_config.magic);
return;
}
if (factory_config.version != FACTORY_CONFIG_VERSION) {
pr_warning("MityOMAPL138: Factory Config Version Wrong (%X)\n",
factory_config.version);
return;
}
pr_info("MityOMAPL138: Found MAC = %pM\n", factory_config.mac);
pr_info("MityOMAPL138: Part Number = %s\n", factory_config.partnum);
}


static const short owlboardplus_led_pins[] = {
DA850_GPIO0_4,
-1
};

static struct gpio_led owlboardplus_leds[] = {
{ .name = "green", .gpio = OWLBOARDPLUS_LED0, .active_low = false, .default_trigger = "heartbeat" },
};

static struct gpio_led_platform_data owlboardplus_leds_data = {
.num_leds = ARRAY_SIZE(owlboardplus_leds),
.leds = owlboardplus_leds,
};

static struct platform_device owlboardplus_leds_dev = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = &owlboardplus_leds_data,
},
};


static const short owlboardplus_evm_gpio_pins[] = {
DA850_GPIO0_4,
-1
};

static struct davinci_spi_platform_data da850evm_spi1_pdata = {
.version = SPI_VERSION_2,
.num_chipselect = 1,
.intr_line = 1,
};

static struct mtd_partition da850evm_spiflash_part[] = {
[0] = {
.name = "U-Boot",
.offset = 0,
.size = SZ_512K,
.mask_flags = MTD_WRITEABLE,
},
[1] = {
.name = "U-Boot-Env",
.offset = MTDPART_OFS_APPEND,
.size = SZ_256K,
.mask_flags = MTD_WRITEABLE,
},
[2] = {
.name = "Kernel",
.offset = MTDPART_OFS_APPEND,
.size = SZ_2M + SZ_512K,
.mask_flags = 0,
},
[3] = {
.name = "Filesystem",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
.mask_flags = 0,
},
};

static struct flash_platform_data da850evm_spiflash_data = {
.name = "mx25l6405d",
.parts = da850evm_spiflash_part,
.nr_parts = ARRAY_SIZE(da850evm_spiflash_part),
};

static struct davinci_spi_config da850evm_spiflash_cfg = {
.io_type = SPI_IO_TYPE_DMA,
.c2tdelay = 8,
.t2cdelay = 8,
};

static struct spi_board_info da850evm_spi_info[] = {
{
.modalias = "mx25l6405d",
.platform_data = &da850evm_spiflash_data,
.controller_data = &da850evm_spiflash_cfg,
.mode = SPI_MODE_0,
.max_speed_hz = 30000000,
.bus_num = 1,
.chip_select = 0,
},
};

static void __init da850evm_init_spi1(struct spi_board_info *info, unsigned len)
{
int ret;

ret = spi_register_board_info(info, len);
if (ret)
pr_warning("failed to register board info : %d\n", ret);

ret = da8xx_register_spi(1, &da850evm_spi1_pdata);
if (ret)
pr_warning("failed to register spi 1 device : %d\n", ret);
}






static inline void owlboardplus_init_leds(void)
{
int ret = 0;

ret = davinci_cfg_reg_list(owlboardplus_led_pins);
if (ret)
pr_warning("owlboardplus_init: led mux setup failed: "
"%d\n", ret);

ret = platform_device_register(&owlboardplus_leds_dev);
}


#define TVP5147_CH0 "tvp514x-0"

#define VPIF_STATUS (0x002C)
#define VPIF_STATUS_CLR (0x0030)


static struct davinci_pm_config owlboardplus_pm_pdata = {
.sleepcount = 128,
};

static struct platform_device owlboardplus_pm_device = {
.name = "pm-davinci",
.dev = {
.platform_data = &owlboardplus_pm_pdata,
},
.id = -1,
};

static struct mtd_partition owlboardplus_nandflash_partition[] = {
/* U-Boot Environment */
[0] = {
.name = "uboot_env",
.offset = 0,
.size = SZ_128K,
.mask_flags = 0,
},
/* U-Boot */
[1] = {
.name = "uboot",
.offset = MTDPART_OFS_APPEND,
.size = 3 * SZ_128K,
.mask_flags = MTD_WRITEABLE, /* force read-only */
},
/* kernel */
[2] = {
.name = "kernel",
.offset = MTDPART_OFS_APPEND,
.size = SZ_2M + SZ_512K,
.mask_flags = 0,
},
/* UBI */
[3] = {
.name = "ubi",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
.mask_flags = 0,
},
};

static struct davinci_aemif_timing owlboardplus_nandflash_timing = {
.wsetup = 24,
.wstrobe = 21,
.whold = 14,
.rsetup = 19,
.rstrobe = 50,
.rhold = 0,
.ta = 20,
};

static struct davinci_nand_pdata owlboardplus_nandflash_data = {
.parts = owlboardplus_nandflash_partition,
.nr_parts = ARRAY_SIZE(owlboardplus_nandflash_partition),
.ecc_mode = NAND_ECC_HW,
.ecc_bits = 1,
.options = NAND_USE_FLASH_BBT,
.timing = &owlboardplus_nandflash_timing,
};

static struct resource owlboardplus_nandflash_resource[] = {
{
.start = DA8XX_AEMIF_CS3_BASE,
.end = DA8XX_AEMIF_CS3_BASE + SZ_512K + 2 * SZ_1K - 1,
.flags = IORESOURCE_MEM,
},
{
.start = DA8XX_AEMIF_CTL_BASE,
.end = DA8XX_AEMIF_CTL_BASE + SZ_32K - 1,
.flags = IORESOURCE_MEM,
},
};

static struct platform_device owlboardplus_nandflash_device = {
.name = "davinci_nand",
.id = 1,
.dev = {
.platform_data = &owlboardplus_nandflash_data,
},
.num_resources = ARRAY_SIZE(owlboardplus_nandflash_resource),
.resource = owlboardplus_nandflash_resource,
};

static struct platform_device *owlboardplus_devices[] __initdata = {
&owlboardplus_nandflash_device,
};

static const short owlboardplus_nand_pins[] = {
DA850_EMA_D_0, DA850_EMA_D_1, DA850_EMA_D_2, DA850_EMA_D_3,
DA850_EMA_D_4, DA850_EMA_D_5, DA850_EMA_D_6, DA850_EMA_D_7,
DA850_EMA_A_1, DA850_EMA_A_2, DA850_NEMA_CS_3, DA850_NEMA_CS_4,
DA850_NEMA_WE, DA850_NEMA_OE,
-1
};



/*
* USB1 VBUS is controlled by GPIO2[4], over-current is reported on GPIO6[13].
*/
#define ON_BD_USB_DRV GPIO_TO_PIN(2, 4)
#define ON_BD_USB_OVC GPIO_TO_PIN(6, 13)

static const short owlboardplus_usb11_pins[] = {
DA850_GPIO2_4, DA850_GPIO6_13,
-1
};

static da8xx_ocic_handler_t owlboardplus_usb_ocic_handler;

static int owlboardplus_usb_set_power(unsigned port, int on)
{
gpio_set_value(ON_BD_USB_DRV, on);
return 0;
}

static int owlboardplus_usb_get_power(unsigned port)
{
return gpio_get_value(ON_BD_USB_DRV);
}

static int owlboardplus_usb_get_oci(unsigned port)
{
return !gpio_get_value(ON_BD_USB_OVC);
}

static irqreturn_t owlboardplus_usb_ocic_irq(int, void *);

static int owlboardplus_usb_ocic_notify(da8xx_ocic_handler_t handler)
{
int irq = gpio_to_irq(ON_BD_USB_OVC);
int error = 0;

if (handler != NULL) {
owlboardplus_usb_ocic_handler = handler;

error = request_irq(irq, owlboardplus_usb_ocic_irq, IRQF_DISABLED |
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"OHCI over-current indicator", NULL);
if (error)
printk(KERN_ERR "%s: could not request IRQ to watch "
"over-current indicator changes\n", __func__);
} else
free_irq(irq, NULL);

return error;
}

static struct da8xx_ohci_root_hub owlboardplus_usb11_pdata = {
.set_power = owlboardplus_usb_set_power,
.get_power = owlboardplus_usb_get_power,
.get_oci = owlboardplus_usb_get_oci,
.ocic_notify = owlboardplus_usb_ocic_notify,

/* TPS2065 switch @ 5V */
.potpgt = (3 + 1) / 2, /* 3 ms max */
};

static irqreturn_t owlboardplus_usb_ocic_irq(int irq, void *dev_id)
{
owlboardplus_usb_ocic_handler(&owlboardplus_usb11_pdata, 1);
return IRQ_HANDLED;
}

static __init void owlboardplus_usb_init(void)
{
u32 cfgchip2;
int ret;

/*
* Set up USB clock/mode in the CFGCHIP2 register.
* FYI: CFGCHIP2 is 0x0000ef00 initially.
*/
cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));

/* USB2.0 PHY reference clock is 24 MHz */
cfgchip2 &= ~CFGCHIP2_REFFREQ;
cfgchip2 |= CFGCHIP2_REFFREQ_24MHZ;

/*
* Select internal reference clock for USB 2.0 PHY
* and use it as a clock source for USB 1.1 PHY
* (this is the default setting anyway).
*/
cfgchip2 &= ~CFGCHIP2_USB1PHYCLKMUX;
cfgchip2 |= CFGCHIP2_USB2PHYCLKMUX;

/*
* We have to override VBUS/ID signals when MUSB is configured into the
* host-only mode -- ID pin will float if no cable is connected, so the
* controller won't be able to drive VBUS thinking that it's a B-device.
* Otherwise, we want to use the OTG mode and enable VBUS comparators.
*/
cfgchip2 &= ~CFGCHIP2_OTGMODE;
#ifdef CONFIG_USB_MUSB_HOST
cfgchip2 |= CFGCHIP2_FORCE_HOST;
#else
cfgchip2 |= CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN;
#endif

__raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));

/*
* TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A),
* with the power on to power good time of 3 ms.
*/
ret = da8xx_register_usb20(1000, 3);
if (ret)
pr_warning("%s: USB 2.0 registration failed: %d\n",
__func__, ret);

ret = davinci_cfg_reg_list(owlboardplus_usb11_pins);
if (ret) {
pr_warning("%s: USB 1.1 PinMux setup failed: %d\n",
__func__, ret);
return;
}

ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV");
if (ret) {
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
"power control: %d\n", __func__, ret);
return;
}
gpio_direction_output(ON_BD_USB_DRV, 0);

ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC");
if (ret) {
printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
"over-current indicator: %d\n", __func__, ret);
return;
}
gpio_direction_input(ON_BD_USB_OVC);

ret = da8xx_register_usb11(&owlboardplus_usb11_pdata);
if (ret)
pr_warning("%s: USB 1.1 registration failed: %d\n",
__func__, ret);
}

static struct davinci_uart_config owlboardplus_uart_config __initdata = {
.enabled_uarts = 0x7,
};


static struct snd_platform_data owlboardplus_snd_data = {
.asp_chan_q = EVENTQ_0,
};






static int owlboardplus_mmc_get_ro(int index)
{
return gpio_get_value(OWLBOARDPLUS_MMCSD_WP_PIN);
}

static int owlboardplus_mmc_get_cd(int index)
{
return !gpio_get_value(OWLBOARDPLUS_MMCSD_CD_PIN);
}

static struct davinci_mmc_config owlboardplus_mmc1_config = {
.get_ro = owlboardplus_mmc_get_ro,
.get_cd = owlboardplus_mmc_get_cd,
.wires = 4,
.max_freq = 50000000,
.caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
.version = MMC_CTLR_VERSION_2,
};

static void owlboardplus_panel_power_ctrl(int val)
{
/* lcd power */
gpio_set_value(OWLBOARDPLUS_LCD_PWR_PIN, val);
}

static int owlboardplus_lcd_hw_init(void)
{
void __iomem *cfg_mstpri2_base;
int status;
u32 val;
/*
* Reconfigure the LCDC priority to the highest to ensure that
* the throughput/latency requirements for the LCDC are met.
*/
cfg_mstpri2_base = DA8XX_SYSCFG0_VIRT(DA8XX_MSTPRI2_REG);

val = __raw_readl(cfg_mstpri2_base);
val &= 0x0fffffff;
__raw_writel(val, cfg_mstpri2_base);

status = gpio_request(OWLBOARDPLUS_LCD_PWR_PIN, "lcd pwr\n");
if (status < 0) {
return status;
}

gpio_direction_output(OWLBOARDPLUS_LCD_PWR_PIN, 0);

return 0;
}

/* TPS65070 voltage regulator support */

/* 3.3V */
static struct regulator_consumer_supply tps65070_dcdc1_consumers[] = {
{
.supply = "usb0_vdda33",
},
{
.supply = "usb1_vdda33",
},
};

/* 3.3V or 1.8V */
static struct regulator_consumer_supply tps65070_dcdc2_consumers[] = {
{
.supply = "dvdd3318_a",
},
{
.supply = "dvdd3318_b",
},
{
.supply = "dvdd3318_c",
},
};

/* 1.2V */
static struct regulator_consumer_supply tps65070_dcdc3_consumers[] = {
{
.supply = "cvdd",
},
};

/* 1.8V LDO */
static struct regulator_consumer_supply tps65070_ldo1_consumers[] = {
{
.supply = "sata_vddr",
},
{
.supply = "usb0_vdda18",
},
{
.supply = "usb1_vdda18",
},
{
.supply = "ddr_dvdd18",
},
};

/* 1.2V LDO */
static struct regulator_consumer_supply tps65070_ldo2_consumers[] = {
{
.supply = "sata_vdd",
},
{
.supply = "pll0_vdda",
},
{
.supply = "pll1_vdda",
},
{
.supply = "usbs_cvdd",
},
{
.supply = "vddarnwa1",
},
};

/* We take advantage of the fact that both defdcdc{2,3} are tied high */
static struct tps6507x_reg_platform_data tps6507x_platform_data = {
.defdcdc_default = true,
};

static struct regulator_init_data tps65070_regulator_data[] = {
/* dcdc1 */
{
.constraints = {
.min_uV = 3150000,
.max_uV = 3450000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS),
.boot_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc1_consumers),
.consumer_supplies = tps65070_dcdc1_consumers,
},

/* dcdc2 */
{
.constraints = {
.min_uV = 1710000,
.max_uV = 3450000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS),
.boot_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc2_consumers),
.consumer_supplies = tps65070_dcdc2_consumers,
.driver_data = &tps6507x_platform_data,
},

/* dcdc3 */
{
.constraints = {
.min_uV = 950000,
.max_uV = 1350000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS),
.boot_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc3_consumers),
.consumer_supplies = tps65070_dcdc3_consumers,
.driver_data = &tps6507x_platform_data,
},

/* ldo1 */
{
.constraints = {
.min_uV = 1710000,
.max_uV = 1890000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS),
.boot_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(tps65070_ldo1_consumers),
.consumer_supplies = tps65070_ldo1_consumers,
},

/* ldo2 */
{
.constraints = {
.min_uV = 1140000,
.max_uV = 1320000,
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS),
.boot_on = 1,
},
.num_consumer_supplies = ARRAY_SIZE(tps65070_ldo2_consumers),
.consumer_supplies = tps65070_ldo2_consumers,
},
};

static struct touchscreen_init_data tps6507x_touchscreen_data = {
.poll_period = 30, /* ms between touch samples */
.min_pressure = 0x100, /* minimum pressure to trigger touch */
.vref = 0, /* turn off vref when not using A/D */
.vendor = 0, /* /sys/class/input/input?/id/vendor */
.product = 65070, /* /sys/class/input/input?/id/product */
.version = 0x100, /* /sys/class/input/input?/id/version */
};

static struct tps6507x_board tps_board = {
.tps6507x_pmic_init_data = &tps65070_regulator_data[0],
.tps6507x_ts_init_data = &tps6507x_touchscreen_data,
};

static struct at24_platform_data da850_evm_i2c_eeprom_info = {
.byte_len = 256,
.page_size = 8,
.flags = AT24_FLAG_READONLY | AT24_FLAG_IRUGO,
.setup = read_factory_config,
.context = NULL,
};




static struct i2c_board_info __initdata owlboardplus_i2c_devices[] = {
{
I2C_BOARD_INFO("tlv320aic3x", 0x18),
},
{
I2C_BOARD_INFO("tps6507x", 0x48),
.platform_data = &tps_board,
},
{
I2C_BOARD_INFO("24c02", 0x50),
.platform_data = &da850_evm_i2c_eeprom_info,
},
{ I2C_BOARD_INFO("ds1307", 0x68),
.type = "ds1338",
},
};

static const short owlboardplus_lcdc_pins[] = {
DA850_GPIO0_8,
-1
};


static const short owlboardplus_rmii_pins[] = {
DA850_RMII_TXD_0, DA850_RMII_TXD_1, DA850_RMII_TXEN,
DA850_RMII_CRS_DV, DA850_RMII_RXD_0, DA850_RMII_RXD_1,
DA850_RMII_RXER, DA850_RMII_MHZ_50_CLK, DA850_MDIO_CLK,
DA850_MDIO_D,
-1
};



static int __init owlboardplus_config_emac(void)
{
void __iomem *cfg_chip3_base;
int ret;
u32 val;
struct davinci_soc_info *soc_info = &davinci_soc_info;

if (!machine_is_l138_owlboard_plus())
return 0;

cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);

val = __raw_readl(cfg_chip3_base);

val |= BIT(8);
ret = davinci_cfg_reg_list(owlboardplus_rmii_pins); /* ruslan */
pr_info("EMAC: RMII PHY configured, MII PHY will not be"
" functional\n");
if (ret)
pr_warning("owlboardplus_init: cpgmac/rmii mux setup failed: %d\n",
ret);


ret = davinci_cfg_reg(DA850_GPIO2_6);
if (ret)
pr_warning("owlboardplus_init:GPIO(2,6) mux setup "
"failed\n");

ret = davinci_cfg_reg(DA850_GPIO1_15);
if (ret)
pr_warning("owlboardplus_init:GPIO(1,15) mux setup "
"failed\n");

/* configure the CFGCHIP3 register for RMII or MII */
__raw_writel(val, cfg_chip3_base);

soc_info->emac_pdata->phy_id = OWLBOARDPLUS_PHY_ID;

ret = da8xx_register_emac();
if (ret)
pr_warning("owlboardplus_init: emac registration failed: %d\n",
ret);

return 0;
}
device_initcall(owlboardplus_config_emac);

/*
* The following EDMA channels/slots are not being used by drivers (for
* example: Timer, GPIO, UART events etc) on owlboardplus/omap-l138 EVM, hence
* they are being reserved for codecs on the DSP side.
*/
static const s16 owlboardplus_dma0_rsv_chans[][2] = {
/* (offset, number) */
{ 8, 6},
{24, 4},
{30, 2},
{-1, -1}
};

static const s16 owlboardplus_dma0_rsv_slots[][2] = {
/* (offset, number) */
{ 8, 6},
{24, 4},
{30, 50},
{-1, -1}
};

static const s16 owlboardplus_dma1_rsv_chans[][2] = {
/* (offset, number) */
{ 0, 28},
{30, 2},
{-1, -1}
};

static const s16 owlboardplus_dma1_rsv_slots[][2] = {
/* (offset, number) */
{ 0, 28},
{30, 90},
{-1, -1}
};

static struct edma_rsv_info owlboardplus_edma_cc0_rsv = {
.rsv_chans = owlboardplus_dma0_rsv_chans,
.rsv_slots = owlboardplus_dma0_rsv_slots,
};

static struct edma_rsv_info owlboardplus_edma_cc1_rsv = {
.rsv_chans = owlboardplus_dma1_rsv_chans,
.rsv_slots = owlboardplus_dma1_rsv_slots,
};

static struct edma_rsv_info *owlboardplus_edma_rsv[2] = {
&owlboardplus_edma_cc0_rsv,
&owlboardplus_edma_cc1_rsv,
};

#ifdef CONFIG_CPU_FREQ
static __init int owlboardplus_init_cpufreq(void)
{
da850_max_speed = 456000;

return da850_register_cpufreq("pll0_sysclk3");
}
#else
static __init int owlboardplus_init_cpufreq(void) { return 0; }
#endif

static struct i2c_gpio_platform_data owlboardplus_gpio_i2c_pdata = { /* ruslan */
.sda_pin = GPIO_TO_PIN(1, 4),
.scl_pin = GPIO_TO_PIN(1, 5),
.udelay = 2, /* 250 KHz */
};

static struct platform_device owlboardplus_gpio_i2c = { /* ruslan */
.name = "i2c-gpio",
.id = 1,
.dev = {
.platform_data = &owlboardplus_gpio_i2c_pdata,
},
};




// static struct davinci_i2c_platform_data da850_evm_i2c_0_pdata = { /* ruslan */
// .bus_freq = 100, /* kHz */
// .bus_delay = 0, /* usec */
//};

static int owlboardplus_setup_vpif_input_channel_mode(int mux_mode)
{
return 0;
}

/*Enable TVP5147
*/
int owlboardplus_vpif_setup_input_path(int ch, const char *name)
{
return 0;
}

static int owlboardplus_vpif_intr_status(void __iomem *vpif_base, int channel)
{
int status = 0;
int mask;

if (channel < 0 || channel > 3)
return 0;

mask = 1 << channel;
status = __raw_readl((vpif_base + VPIF_STATUS)) & mask;
__raw_writel(status, (vpif_base + VPIF_STATUS_CLR));

return status;
}


/* VPIF capture configuration */
static struct tvp514x_platform_data tvp5146_pdata = {
.clk_polarity = 0,
.hs_polarity = 1,
.vs_polarity = 1
};


#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)

static struct vpif_subdev_info owlboardplus_vpif_capture_sdev_info[] = {
{
.name = TVP5147_CH0,
.board_info = {
I2C_BOARD_INFO("tvp5146", 0x5d),
.platform_data = &tvp5146_pdata,
},
.input = INPUT_CVBS_VI4A, /* V4A */
.output = OUTPUT_10BIT_422_EMBEDDED_SYNC,
.can_route = 1,
.vpif_if = {
.if_type = VPIF_IF_BT656,
.hd_pol = 1,
.vd_pol = 1,
.fid_pol = 0,
},
},
};

static const struct vpif_input owlboardplus_ch0_inputs[] = {
{
.input = {
.index = 0,
.name = "Composite",
.type = V4L2_INPUT_TYPE_CAMERA,
.std = TVP514X_STD_ALL,
},
.subdev_name = TVP5147_CH0,
},
};

static struct vpif_capture_config owlboardplus_vpif_capture_config = {
.setup_input_channel_mode = owlboardplus_setup_vpif_input_channel_mode,
.setup_input_path = owlboardplus_vpif_setup_input_path,
.intr_status = owlboardplus_vpif_intr_status,
.subdev_info = owlboardplus_vpif_capture_sdev_info,
.subdev_count = ARRAY_SIZE(owlboardplus_vpif_capture_sdev_info),

.chan_config[0] = {
},
.chan_config[1] = {
.inputs = owlboardplus_ch0_inputs,
.input_count = ARRAY_SIZE(owlboardplus_ch0_inputs),
},
.card_name = "DA850/OMAP-L138 Video Capture",
};


#if defined(CONFIG_TI_DAVINCI_EMAC) || \
defined(CONFIG_TI_DAVINCI_EMAC_MODULE)
#define HAS_EMAC 1
#else
#define HAS_EMAC 0
#endif

#if defined(CONFIG_SND_DA850_SOC_EVM) || \
defined(CONFIG_SND_DA850_SOC_EVM_MODULE)
#define HAS_MCASP 1
#else
#define HAS_MCASP 0
#endif

#define CONFIG_DA850_UI_RMII

#if defined(CONFIG_DA850_UI_RMII) && (HAS_EMAC)
#define HAS_RMII 1
#else
#define HAS_RMII 0
#endif

#if defined(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE) ||\
defined(CONFIG_VIDEO_DAVINCI_VPIF_CAPTURE_MODULE)
#define HAS_VPIF_CAPTURE 1
#else
#define HAS_VPIF_CAPTURE 0
#endif

#define DA850EVM_SATA_REFCLKPN_RATE (100 * 1000 * 1000)

extern const short da850_mmcsd1_pins[];

static __init void owlboardplus_init(void)
{
int ret;
struct davinci_soc_info *soc_info = &davinci_soc_info;
soc_info->emac_pdata->rmii_en = 1;

ret = da850_register_edma(owlboardplus_edma_rsv);
if (ret)
pr_warning("owlboardplus_init: edma registration failed: %d\n",
ret);

ret = davinci_cfg_reg_list(da850_i2c0_pins);
if (ret)
pr_warning("owlboardplus_init: i2c0 mux setup failed: %d\n",
ret);

platform_device_register(&owlboardplus_gpio_i2c); /* ruslan */

// ret = da8xx_register_i2c(0, &da850_evm_i2c_0_pdata);
// if (ret)
// pr_warning("da850_evm_init: i2c0 registration failed: %d\n",
// ret);

ret = da8xx_register_watchdog();
if (ret)
pr_warning("da830_evm_init: watchdog registration failed: %d\n",
ret);

ret = da850_register_sata(DA850EVM_SATA_REFCLKPN_RATE);
if (ret)
pr_warning("owlboardplus_init: sata registration failed: %d\n",
ret);

ret = gpio_request(OWLBOARDPLUS_MMCSD_CD_PIN, "MMC CD\n");
if (ret)
pr_warning("owlboardplus_init: can not open GPIO %d\n",
OWLBOARDPLUS_MMCSD_CD_PIN);
gpio_direction_input(OWLBOARDPLUS_MMCSD_CD_PIN);

ret = gpio_request(OWLBOARDPLUS_MMCSD_WP_PIN, "MMC WP\n");
if (ret)
pr_warning("owlboardplus_init: can not open GPIO %d\n",
OWLBOARDPLUS_MMCSD_WP_PIN);
gpio_direction_input(OWLBOARDPLUS_MMCSD_WP_PIN);

ret = davinci_cfg_reg_list(da850_mmcsd1_pins);
if (ret)
pr_warning("owlboardplus_init: mmcsd0 mux setup failed:"
" %d\n", ret);

ret = da850_register_mmcsd1(&owlboardplus_mmc1_config);
if (ret)
pr_warning("owlboardplus_init: mmcsd0 registration failed:"
" %d\n", ret);

davinci_serial_init(&owlboardplus_uart_config);


ret = davinci_cfg_reg_list(owlboardplus_nand_pins);
if (ret)
pr_warning("owlboardplus_init: nand mux setup failed: "
"%d\n", ret);

platform_add_devices(owlboardplus_devices,
ARRAY_SIZE(owlboardplus_devices));


i2c_register_board_info(1, owlboardplus_i2c_devices,
ARRAY_SIZE(owlboardplus_i2c_devices));
/*
* shut down uart 0 and 1; they are not used on the board and
* accessing them causes endless "too much work in irq53" messages
* with arago fs
*/
__raw_writel(0, IO_ADDRESS(DA8XX_UART0_BASE) + 0x30);
__raw_writel(0, IO_ADDRESS(DA8XX_UART1_BASE) + 0x30);

if (1/*HAS_MCBSP1*/) {
pr_warning("mcbsp1 "
" %d\n", ret);

ret = davinci_cfg_reg_list(da850_mcbsp1_pins);
if (ret) pr_warning("da850_evm_init: mcbsp1 mux setup failed:"
" %d\n", ret);

ret = da850_init_mcbsp1(&owlboardplus_snd_data);
if (ret)
pr_warning("da850_evm_init: mcbsp1 registration"
" failed: %d\n", ret);
}

#if 0

if (HAS_MCASP) {
ret = davinci_cfg_reg_list(da850_mcasp_pins);
if (ret)
pr_warning("owlboardplus_init: mcasp mux setup failed:"
"%d\n", ret);

da8xx_register_mcasp(0, &owlboardplus_snd_data);
}
#endif

ret = davinci_cfg_reg_list(da850_lcdcntl_pins);
if (ret)
pr_warning("owlboardplus_init: lcdcntl mux setup failed: %d\n",
ret);
ret = owlboardplus_lcd_hw_init();
if (ret)
pr_warning("owlboardplus_init: lcd initialization failed: %d\n",
ret);

sharp_lk043t1dg01_pdata.panel_power_ctrl = owlboardplus_panel_power_ctrl,
ret = da8xx_register_lcdc(&dt_atm0700d4_pdata);
if (ret)
pr_warning("owlboardplus_init: lcdc registration failed: %d\n",
ret);

ret = da8xx_register_rtc();
if (ret)
pr_warning("owlboardplus_init: rtc setup failed: %d\n", ret);

ret = owlboardplus_init_cpufreq();
if (ret)
pr_warning("owlboardplus_init: cpufreq registration failed: %d\n",
ret);

ret = da8xx_register_cpuidle();
if (ret)
pr_warning("owlboardplus_init: cpuidle registration failed: %d\n",
ret);

ret = da850_register_pm(&owlboardplus_pm_device);
if (ret)
pr_warning("owlboardplus_init: suspend registration failed: %d\n",
ret);

da850evm_init_spi1(da850evm_spi_info, ARRAY_SIZE(da850evm_spi_info));

ret = da850_register_vpif();
if (ret)
pr_warning("owlboardplus_init: VPIF registration failed: "
"%d\n", ret);

ret = davinci_cfg_reg_list(da850_vpif_capture_pins);
if (ret)
pr_warning("owlboardplus_init: vpif capture mux failed: "
"%d\n", ret);

ret = da850_register_vpif_capture(&owlboardplus_vpif_capture_config);
if (ret)
pr_warning("owlboardplus_init: VPIF registration failed: "
"%d\n", ret);

ret = davinci_cfg_reg(DA850_ECAP2_APWM2);
if (ret)
pr_warning("owlboardplus_init:ecap mux failed: %d\n", ret);

ret = da850_register_ecap(2);
if (ret)
pr_warning("owlboardplus_init: eCAP registration failed: %d\n",
ret);

/* initilaize usb module */
owlboardplus_usb_init();
owlboardplus_init_leds();

}

#ifdef CONFIG_SERIAL_8250_CONSOLE
static int __init owlboardplus_console_init(void)
{
if (!machine_is_l138_owlboard_plus())
return 0;

return add_preferred_console("ttyS", 2, "115200");
}
console_initcall(owlboardplus_console_init);
#endif

static void __init owlboardplus_map_io(void)
{
da850_init();
}

MACHINE_START(L138_OWLBOARD_PLUS, "Owlboard Plus OMAP-L138/AM1808")
.boot_params = (DA8XX_DDR_BASE + 0x100),
.map_io = owlboardplus_map_io,
.init_irq = cp_intc_init,
.timer = &davinci_timer,
.init_machine = owlboardplus_init,
MACHINE_END


оригинальный файл из ядра 3.3, который надо переделать http://lxr.free-electrons.com/source/arch/...c.h?v=3.3;a=arm
gormih
Цитата(TigerSHARC @ Mar 25 2014, 14:12) *
Сейчас столкнулся с такой проблемой, имелся у меня старый SDK именно под мою плату на OMAP-L138. Использовался Linux 2.6.39
Теперь скачал SDK с ядром 3.3, но конфиг и файл борды используется для omapl138-lcdk от TI

Я попытался выдрать файл борды из старого SDK и подсунуть новому ядру. Ничего не вышло. На этапе сборки я получил кучу ошибок.

Буду рад любым рекомендациям по исправлению файла борды.

Все правильно, версии не совместимы.
Придется править почти всё.
А в новом SDK что, нет под Вашу плату файла? TI очень любят объеденять в один файл кучу процов и плат. Под OMAP там целая директория в arch/arm - поройтесь...
TigerSHARC
Цитата(gormih @ Mar 25 2014, 14:44) *
Все правильно, версии не совместимы.
Придется править почти всё.
А в новом SDK что, нет под Вашу плату файла? TI очень любят объеденять в один файл кучу процов и плат. Под OMAP там целая директория в arch/arm - поройтесь...

в новом SDK под мою плату файла нет, так как мою плату делал стороний разработчик и делал файл борды из файла для board_da850_evm.c
gormih
Цитата(TigerSHARC @ Mar 25 2014, 17:09) *
в новом SDK под мою плату файла нет, так как мою плату делал стороний разработчик и делал файл борды из файла для board_da850_evm.c

Как вариант:
1) Находим любую борду под omap, которая есть в старой и новой версии SDK
2) Делаем diff
3) По примеру патча делаем патч/исправление под свою борду.
TigerSHARC
Цитата(gormih @ Mar 26 2014, 06:32) *
Как вариант:
1) Находим любую борду под omap, которая есть в старой и новой версии SDK
2) Делаем diff
3) По примеру патча делаем патч/исправление под свою борду.

очень интересно, можно про второй пункт подробнее, никогда не слышал про diff...
mdmitry
Цитата(TigerSHARC @ Mar 26 2014, 10:41) *
очень интересно, можно про второй пункт подробнее, никогда не слышал про diff...

diff
gormih
З.Ы.: Ядро линукс проще и удобней все таки собирать под линуксом. Особо легче, если при этом знаешь что такое ls, grep, diff, patch, modprobe и прочее :-)
TigerSHARC
Цитата(gormih @ Mar 26 2014, 17:02) *
З.Ы.: Ядро линукс проще и удобней все таки собирать под линуксом. Особо легче, если при этом знаешь что такое ls, grep, diff, patch, modprobe и прочее :-)

так и делаю. из всего перечисленого не применял только diff и grep
Ну вот не довелось...
Вот толкьо diff тут не совсем мне подходит. так как файлы борды бывают разбитыми на несколкьо фйлов (для моей платы по умолчанию конфигурация борды задаётся в dboard_da850_evm.c и в board_da850_sdi.c)

Сейчас удалось собрать ядро новой версии с исправленым файлом борды, то u-boot пишет :

Uncompressing Linux... done, booting the kernel.

и тишина.....

smile3046.gif
gormih
Цитата(TigerSHARC @ Mar 26 2014, 17:51) *
Вот толкьо diff тут не совсем мне подходит. так как файлы борды бывают разбитыми на несколкьо фйлов (для моей платы по умолчанию конфигурация борды задаётся в dboard_da850_evm.c и в board_da850_sdi.c)

Если что, то -

diff -u ./kernel-3.14.1/ ./kernel-2.6.36/ >kernel-from-2636-to-3141.patch

Сделает патч на все ядро целиком. Это для справки.
Аналогичный патч можно сделать например на всю директорию arch/arm/plat-omap и sound/soc/omap - именно там основные отличия в части исходников интересных по Вашей теме.


Цитата(TigerSHARC @ Mar 26 2014, 17:51) *
Сейчас удалось собрать ядро новой версии с исправленым файлом борды, то u-boot пишет :

Uncompressing Linux... done, booting the kernel.

и тишина.....


Конфигурацию u-boot не меняли?
Такое бывает еще, когда например в u-boot не задана ttys, а в ядре по умолчанию не прописана, либо прописана но не правильно.
И на всякий случай дайте вывод
file ./uImage
alx2
Цитата(TigerSHARC @ Mar 26 2014, 19:51) *
Сейчас удалось собрать ядро новой версии с исправленым файлом борды, то u-boot пишет :

Uncompressing Linux... done, booting the kernel.

Вообще-то это пишет не u-boot, а уже сам linux. Смотрите decompress_kernel() в arch/arm/boot/compressed/
TigerSHARC
Цитата(gormih @ Mar 26 2014, 20:18) *
Если что, то -

diff -u ./kernel-3.14.1/ ./kernel-2.6.36/ >kernel-from-2636-to-3141.patch

Сделает патч на все ядро целиком. Это для справки.
Аналогичный патч можно сделать например на всю директорию arch/arm/plat-omap и sound/soc/omap - именно там основные отличия в части исходников интересных по Вашей теме.




Конфигурацию u-boot не меняли?
Такое бывает еще, когда например в u-boot не задана ttys, а в ядре по умолчанию не прописана, либо прописана но не правильно.
И на всякий случай дайте вывод
file ./uImage

file ./uImage выдаёт информацию которая прописывалась после команды mkimage. тут всё нормально.
изначально в строке запуска было прописано console=ttyS2,115200
пробовал console=/dev/ttyO2, 115200
результат одинаковый

Цитата(alx2 @ Mar 27 2014, 04:48) *
Вообще-то это пишет не u-boot, а уже сам linux. Смотрите decompress_kernel() в arch/arm/boot/compressed/


а что его смотреть?
раз выводится "done, booting the kernel." - значит decompress_kernel() честно отрабатывает... а дальше вот дело не идёт...
Ya_Mike
Цитата(TigerSHARC @ Mar 27 2014, 08:05) *
раз выводится "done, booting the kernel." - значит decompress_kernel() честно отрабатывает... а дальше вот дело не идёт...


А опцию "early printk" и "kernel low level debugging functions" пробовали включать? Возможно, с этими опциями вы получите ответ, почему не загружается плата.

Kernel hacking -> Early printk
Kernel hacking -> Kernel debugging -> Kernel low-level debugging

См. FAQ от TI.
TigerSHARC
Спасибо за совет.

на сайте TI вычитал что такое часто бывает при несовпадении machine ID в u-boot и ядре.
думаю в этом и есть проблема.

в файле борды я оставил machine id по умолчанию, так как в новом ядре нет дефайна для моей борды. Теперь надо создать дефайн, подправить файл борды и пересобрать ядро.
TigerSHARC
Пока попытки загрузить нормально ядро не увенчались успехом.

1)Включить "раннюю" отладку не получилось, так как с включённой опцией ранней отладки всё зависает на стадии Starting the kernel.... что говорит о том что неправильно назначен UART для вывода отладочных сообщений на раннем этапе. Где это настраивается я так и не нашёл(в конфиге таких опций нет)

2) из http://processors.wiki.ti.com/index.php/Ke...ng_Kernel....22
я понял что скорее всего у меня проблема несовпадения machine id ядра и u-boot
Вопросы:
- где в ядре задаётся machine id?

В файле борды есть строка

MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")

стало быть machine id задаётся макросом DAVINCI_DA850_EVM . так ли это?

пробовал менять его на тот который был в рабочем варианте - безрезультатно....(((

P.S. чем больше углубляюсь в это , тем больше думаю: зачем выдуманы такие сложности?
gormih
Цитата(TigerSHARC @ Mar 28 2014, 20:21) *
- где в ядре задаётся machine id?

Вы не поверите - как правило в файле борды:-)
Цитата(TigerSHARC @ Mar 28 2014, 20:21) *
пробовал менять его на тот который был в рабочем варианте - безрезультатно....(((

Там все может быть сложнее завязано. Может, например вычислять по комбинации перемычек на выводах контроллера, и тому подобное...., Куча подводных камней.
Если задача не стоит сделать универсальный файл борды под целый ряд девайсов - я лично блокирую все функции идентификации борды, дабы не тратить на них время.
Единственное - нужно понимать, к каким последствиям это может привести например для подключаемых модулей ядра.
Цитата(TigerSHARC @ Mar 28 2014, 20:21) *
P.S. чем больше углубляюсь в это , тем больше думаю: зачем выдуманы такие сложности?

Это не сложности. Это стиль программирования sm.gif
Только по началу тяжело освоить, потом становится легче, когда знаешь минимум того, что должно быть описано... Со временем понимая всю "навороченность" ядра начинаешь наоборот восхищаться некоторым решениям.
Писать драйвера под linux гораздо проще по сравнению например с windows именно благодаря богатой инфраструктуре того что нужно на уровне ядра, и хорошо продуманным описательным моделям самих драйверов.
Я вот чистым временем около недели потратил на освоение того, как примерно работает ALSA на уровне ядра, и еще далек от завершения поставленной задачи. Из документации, на скорую руку слепленой жалким подобием doxygen мало что понятно. sm.gif Но из того, что всплыло становится ясно, что при хорошей документации у меня ушло бы максимум 1 день на решение задачи.
TigerSHARC
Спасибо. Весьма познавательно.
я узнал что machine id задаётся в файле mach-types.h

а как вы блокируете функции борды?
Tarbal
Цитата(TigerSHARC @ Mar 31 2014, 12:49) *
Спасибо. Весьма познавательно.
я узнал что machine id задаётся в файле mach-types.h

а как вы блокируете функции борды?


Более подробно
http://electronix.ru/forum/index.php?showtopic=118559
Это релевантно для kernel 2.6 Оно вроде поменялось. Поскольку вам надо из версии 2.6 переделать на более позднюю, то с версией 2.6 разобраться будет полезно.
TigerSHARC
Цитата(Tarbal @ Apr 1 2014, 00:02) *
Более подробно
http://electronix.ru/forum/index.php?showtopic=118559
Это релевантно для kernel 2.6 Оно вроде поменялось. Поскольку вам надо из версии 2.6 переделать на более позднюю, то с версией 2.6 разобраться будет полезно.

Спасибо, познавательно. Честно говоря я так и знал что нигде кроме как в mach-type.h и при вызове MACHINE_START этот id не упоминается.
У меня ситуация такая: u-boot собран для одной машины (с конкретным id), а ядро новое не содержало такого machine id. Я просто взял и поменял руками номер для борды в файле mach-types.h
не помогло.

1 )Вопрос:

имеем MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board"). Проверяется ли где то второй аргумент? или это только для вывода на экран?

2) в новых версиях ядер файл борды разделён на две части (board_xxx.c и board_xxx.dts). Вижу что не для всех aайлов board_xxx.c, которые в ядре по умолчанию, есть соответствующий board_xxx.dts что странно...
TigerSHARC
буду пробовать свои задумки на старом ядре. Оставлю в покое 3ю версию, пока разберусь в этом тёмном ящике (ядро Linux), уже глядишь и 4 выйдет с новыми фичами... а задачи надо решать сегодня.
gormih
Цитата(TigerSHARC @ Apr 1 2014, 13:08) *
буду пробовать свои задумки на старом ядре. Оставлю в покое 3ю версию, пока разберусь в этом тёмном ящике (ядро Linux), уже глядишь и 4 выйдет с новыми фичами... а задачи надо решать сегодня.

По опыту: Пока сам не напишешь пару драйверов на имеющееся в наличии рабочее ядро - о портировании новой версии ядра на свою борду думать рановато :-)
TigerSHARC
дело начало продвигаться. Собрал ядро тем же компилятором что и u-boot, загрузка остановилась на


CODE
PHY 0:00 not found
ata1: STAT link down (SStatus 0 SControl 300)
net eth0: could not connect to phy 0:00
IP-Config: Failed to open eth0
IP-Config: device 'eth0' not found
VFS: cannot open root device "ubi0:rootfs" or unkown-block(0,0)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)


не находит PHY
ясно что не может найти рутовую, вопрос: где задаётся расположение рутовой (можно подумать что в строке загрузки ядра, но в старой версии ядра в строке указывалась только консоль, а рутовая грузилась с nand, значит где-то это прописывалось дополнительно)
aaarrr
Цитата(TigerSHARC @ Apr 3 2014, 18:54) *
ясно что не может найти рутовую, вопрос: где задаётся расположение рутовой (можно подумать что в строке загрузки ядра, но в старой версии ядра в строке указывалась только консоль, а рутовая грузилась с nand, значит где-то это прописывалось дополнительно)

Именно там (в bootargs) и задавалось: root=... В 3.x, как я понимаю, ничего не изменилось в этом плане.

Кстати вопрос: а что, собственно, побудило к переходу на новое ядро?
TigerSHARC
Пересев на новое ядро, хочу попробовать новый RT-патч и сравнить поведение.

Про строку загрузки ядра, ниже скриншот строки, которая присутствует в конфиге ядра рабочей системы, которая берёт рутовую из NAND, а значит этот параметр задаётся где-то ещё:
Jury093
Цитата(TigerSHARC @ Apr 4 2014, 11:58) *
а значит этот параметр задаётся где-то ещё:

судя по снятой галке - в переменных окружения u-boot
TigerSHARC
Верно. Скопировал строку из переменной окружения в bootargs ядра.
не помогло. в чём может быть дело?

рутовая на NAND, поддержка ubifs включена в ядре
aaarrr
Полностью выхлоп при загрузке приведите.
TigerSHARC
regulator_init_complete: VDCDC1: incomplete constraints, leaving on
davinci_emac davinci_emac.1: using random MAC addr: 3a:23:26:bb:75:7a
omap_rtc omap_rtc: setting system clock to 2000-01-01 01:13:21 UTC (946689201)
ata1: SATA link down (SStatus 0 SControl 300)
VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
aaarrr
Это все, что приходит после "booting the kernel"?

И что сейчас стоит в bootargs?
Tarbal
Однажды у меня выла такая проблема при монтировании файловой системы с СДкарты.
Монтировалась как RW, а на СДкарте стояла защита от записи.


1. Подключите терминал к сериальному выходу (полагаю уже подключен раз вы видите сообщения)
2. Включите питание и в момент счета счетчика u-boot нажмите пробел (иногда enter).
3. если все остановилось наберите printenv
4. Все что напечаталось скопируйте и покажите нам.

На каком диске ваша рут файловая система?


Цитата(TigerSHARC @ Apr 1 2014, 06:59) *
Спасибо, познавательно. Честно говоря я так и знал что нигде кроме как в mach-type.h и при вызове MACHINE_START этот id не упоминается.
У меня ситуация такая: u-boot собран для одной машины (с конкретным id), а ядро новое не содержало такого machine id. Я просто взял и поменял руками номер для борды в файле mach-types.h
не помогло.

1 )Вопрос:

имеем MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board"). Проверяется ли где то второй аргумент? или это только для вывода на экран?

2) в новых версиях ядер файл борды разделён на две части (board_xxx.c и board_xxx.dts). Вижу что не для всех aайлов board_xxx.c, которые в ядре по умолчанию, есть соответствующий board_xxx.dts что странно...


Я хорошо знаком с LOCO бордом. И этот файл хорошо перелопатил. MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board") берет из сгенерированного файла хедера константу .....MX53_LOCO. вместо точек у них у всех одно и то же. сами найдете в хедере. Я не понмю. Вот эта константа и должна соответствовать бут лоадеру.
Я поменял текст "Freescale MX53 LOCO Board", но начались проблемы. Пока я разбирался, то обнаручил, что если оставить "Freescale MX53" в начале и дописать далее свой текст, то все работает безупречно.

В ядре 2.6 каждому устройству создавалась структура. В функции
static void __init mx53_loco_board_init(void)

часть из них регистрируется. Как сделано для остальных устройств я не помню. Был еще один файл в котором все устройства оформлены в виде структур, но давно с этим не возился.

В более поздних версиях кернела вместо разрозненных структур используется единое дерево устройств, где все собрано вместе и легко конфигурировать параметры.
TigerSHARC
Полный лог загрузки ядра
CODE
NAND read: device 0 offset 0x80000, size 0x280000
2621440 bytes read: OK
## Booting kernel from Legacy Image at c0700000 ...
Image Name: Linux-3.3.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2235936 Bytes = 2.1 MB
Load Address: c0008000
Entry Point: c0008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
':dt-0004096' (c7002b4c): fill_kobj_path: path = '/kernel/slab/:dt-0004096'
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
msgmni has been set to 228
io scheduler noop registered (default)
da8xx_lcdc da8xx_lcdc.0: GLCD: No valid panel found
Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7
serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7
serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7
console [ttyS2] enabled
ahci ahci: forcing PORTS_IMPL to 0x1
ahci ahci: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode
ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc
scsi0 : ahci_platform
ata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67
UBI error: ubi_init: UBI error: cannot initialize UBI, error -2
davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
davinci_mdio davinci_mdio.0: detected phy mask fffffffd
davinci_mdio.0: probed
davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver SMSC LAN8710/LAN8720
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
ohci ohci.0: DA8xx OHCI
ohci ohci.0: new USB bus registered, assigned bus number 1
Waiting for USB PHY clock good...
ohci ohci.0: irq 59, io mem 0x01e25000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
input: TPS6507x Touchscreen as /devices/platform/i2c-gpio.1/i2c-1/1-0048/input/input0
omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
omap_rtc: RTC power up reset detected
i2c /dev entries driver
watchdog watchdog: heartbeat 60 sec
cpuidle: using governor ladder
cpuidle: using governor menu
davinci_mmc davinci_mmc.1: Using DMA, 4-bit mode
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
NET: Registered protocol family 17
regulator_init_complete: LDO2: incomplete constraints, leaving on
regulator_init_complete: LDO1: incomplete constraints, leaving on
regulator_init_complete: VDCDC3: incomplete constraints, leaving on
regulator_init_complete: VDCDC2: incomplete constraints, leaving on
regulator_init_complete: VDCDC1: incomplete constraints, leaving on
davinci_emac davinci_emac.1: using random MAC addr: ce:65:6a:e9:01:62
omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
ata1: SATA link down (SStatus 0 SControl 300)
VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)




вывод printenv в U-boot:

CODE
baudrate=115200
ethaddr=00:11:22:33:44:55
bootdelay=2
ipaddr=192.168.0.107
serverip=192.168.0.103
mtdids=nand0=davinci_nand.0
mtdparts=mtdparts=davinci_nand.0:128k(uboot_env),384k(uboot),2560k(kernel),-(ubi)
partition=nand0,0
mtddevnum=0
mtddevname=uboot_env
bootargs=ip=192.168.0.107:192.168.0.103:192.168.0.1:255.255.255.0:Owlboard:eth0 rootfstype=ubifs root=ubi0:rootfs ubi.mtd=ubi rw mem=128M
autoboot=nand read.e 0xc0700000 kernel; bootm 0xc0700000
bootcmd=run autoboot
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 2009.11 (Nov 24 2012 - 16:05:51)


Самое странное, у меня полность совпадают переменные окружения u-boot и строки bootargs в ядре у старого и нового ядра.
Старое грузится нормально, новое нет((
aaarrr
Если работает сеть, загрузитесь с nfs. Потом можно будет спокойно разобраться с NAND и ubi.
TigerSHARC
Цитата(aaarrr @ Apr 5 2014, 17:33) *
Если работает сеть, загрузитесь с nfs. Потом можно будет спокойно разобраться с NAND и ubi.

если загружусь с nfs, как мне понять, что нужно делать чтобы разобраться с NAND?
Jury093
Цитата(TigerSHARC @ Apr 4 2014, 21:03) *
рутовая на NAND, поддержка ubifs включена в ядре


а вас вот тут ошибка:
Код
UBI error: ubi_init: UBI error: cannot initialize UBI, error -2


ubifs включается в двух местах - сделано?
полный лог можно копипастить на pastebin.com и линк сюда..

в логе должно быть примерно такое (с вашими реалиями):

Код
[    0.968719] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAWP)
[    0.977294] Creating 8 MTD partitions on "omap2-nand.0":
[    0.982879] 0x000000000000-0x000000020000 : "SPL"
[    0.989166] 0x000000020000-0x000000040000 : "SPL.backup1"
[    0.996124] 0x000000040000-0x000000060000 : "SPL.backup2"
[    1.003051] 0x000000060000-0x000000080000 : "SPL.backup3"
[    1.009948] 0x000000080000-0x000000260000 : "U-Boot"
[    1.017211] 0x000000260000-0x000000280000 : "U-Boot Env"
[    1.024108] 0x000000280000-0x000000780000 : "Kernel"
[    1.032653] 0x000000780000-0x000010000000 : "File System"


и при монтирование размеченного раздела:

CODE
[ 133.922149] UBI: attaching mtd7 to ubi0
[ 133.926269] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 133.932800] UBI: logical eraseblock size: 126976 bytes
[ 133.938446] UBI: smallest flash I/O unit: 2048
[ 133.943359] UBI: VID header offset: 2048 (aligned 2048)
[ 133.949615] UBI: data offset: 4096
[ 136.081298] UBI: max. sequence number: 10
[ 136.105377] UBI: attached mtd7 to ubi0
[ 136.109313] UBI: MTD device name: "File System"
[ 136.115081] UBI: MTD device size: 248 MiB
[ 136.120269] UBI: number of good PEBs: 1988
[ 136.125183] UBI: number of bad PEBs: 0
[ 136.129821] UBI: number of corrupted PEBs: 0
[ 136.134460] UBI: max. allowed volumes: 128
[ 136.139282] UBI: wear-leveling threshold: 4096
[ 136.144195] UBI: number of internal volumes: 1
[ 136.148834] UBI: number of user volumes: 1
[ 136.153472] UBI: available PEBs: 0
[ 136.158111] UBI: total number of reserved PEBs: 1988
[ 136.163299] UBI: number of PEBs reserved for bad PEB handling: 19
[ 136.169647] UBI: max/mean erase counter: 5/2
[ 136.174102] UBI: image sequence number: 0
[ 136.178405] UBI: background thread "ubi_bgt0d" started, PID 1166
[ 139.822357] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[ 139.828704] UBIFS: file system size: 247984128 bytes (242172 KiB, 236 MiB, 1953 LEBs)
[ 139.837066] UBIFS: journal size: 12443648 bytes (12152 KiB, 11 MiB, 98 LEBs)
[ 139.844970] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 139.851257] UBIFS: default compressor: lzo
[ 139.855560] UBIFS: reserved for root: 4952683 bytes (4836 KiB)


успешное наличие из первой части лога можно посмотреть:
Код
root@неважно:~# ls /dev/mtd*
/dev/mtd0    /dev/mtd1ro  /dev/mtd3    /dev/mtd4ro  /dev/mtd6    /dev/mtd7ro     /dev/mtdblock2  /dev/mtdblock5
/dev/mtd0ro  /dev/mtd2    /dev/mtd3ro  /dev/mtd5    /dev/mtd6ro  /dev/mtdblock0  /dev/mtdblock3  /dev/mtdblock6
/dev/mtd1    /dev/mtd2ro  /dev/mtd4    /dev/mtd5ro  /dev/mtd7    /dev/mtdblock1  /dev/mtdblock4  /dev/mtdblock7


второй:
Код
root@неважно:~# ls /dev/ubi*
/dev/ubi0  /dev/ubi0_0  /dev/ubi_ctrl
Tarbal
А в случае когда грузится, что пишет про монтирование файловой системы? Можете скопировать?

Сравните в конфигурации ядер есть ли разница в определении всего имеющего отношение к драйверам флэш памяти.
TigerSHARC
прошу прощения, проблема по прежнему не решена.
Вот полный лог загрузки, рабочей системы:

CODE
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[ 0.000000] Linux version 2.6.37 (rusar@v1310) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #116 PREEMPT Wed Nov 28 18:20:03 EET 2012
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine: Owlboard Plus OMAP-L138/AM1808
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] DaVinci da850/omap-l138/am18x variant 0x1
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: ip=192.168.0.107:192.168.0.103:192.168.0.1:255.255.255.0:Owlboard:eth0 rootfstype=ubifs root=ubi0:rootfs ubi.mtd=ubi rw mem=128M
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Memory: 128MB = 128MB total
[ 0.000000] Memory: 124988k/124988k available, 6084k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] DMA : 0xff000000 - 0xffe00000 ( 14 MB)
[ 0.000000] vmalloc : 0xc8800000 - 0xfea00000 ( 866 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .init : 0xc0008000 - 0xc0031000 ( 164 kB)
[ 0.000000] .text : 0xc0031000 - 0xc0486000 (4436 kB)
[ 0.000000] .data : 0xc0486000 - 0xc04b4820 ( 187 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Preemptable hierarchical RCU implementation.
[ 0.000000] RCU-based detection of stalled CPUs is disabled.
[ 0.000000] Verbose stalled-CPUs detection is disabled.
[ 0.000000] NR_IRQS:245
[ 0.000000] Console: colour dummy device 80x30
[ 0.000372] Calibrating delay loop... 185.54 BogoMIPS (lpj=927744)
[ 0.220077] pid_max: default: 32768 minimum: 301
[ 0.220492] Mount-cache hash table entries: 512
[ 0.221599] CPU: Testing write buffer coherency: ok
[ 0.223995] devtmpfs: initialized
[ 0.232429] DaVinci: 144 gpio irqs
[ 0.232972] regulator: core version 0.5
[ 0.235499] regulator: dummy:
[ 0.236154] NET: Registered protocol family 16
[ 0.287562] mcbsp1 0
[ 0.452957] bio: create slab <bio-0> at 0
[ 0.461922] SCSI subsystem initialized
[ 0.469973] usbcore: registered new interface driver usbfs
[ 0.471353] usbcore: registered new interface driver hub
[ 0.472644] usbcore: registered new device driver usb
[ 0.485166] regulator: VDCDC1: 3200 <--> 3300 mV at 3300 mV
[ 0.488221] regulator: VDCDC2: 1750 <--> 3300 mV at 3300 mV
[ 0.491612] regulator: VDCDC3: 950 <--> 1350 mV at 1200 mV
[ 0.493968] regulator: LDO1: 1800 mV
[ 0.497024] regulator: LDO2: 1150 <--> 1300 mV at 1200 mV
[ 0.498383] i2c i2c-1: Invalid 7-bit I2C address 0x00
[ 0.498438] i2c i2c-1: Can't create device at 0x00
[ 0.498485] i2c i2c-1: Invalid 7-bit I2C address 0xa2
[ 0.498523] i2c i2c-1: Can't create device at 0xa2
[ 0.498588] i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)
[ 0.499674] vpif vpif: vpif probe success
[ 0.506674] Advanced Linux Sound Architecture Driver Version 1.0.23.
[ 0.509520] Switching to clocksource timer0_1
[ 0.608398] musb-hdrc: version 6.0, host, debug=0
[ 0.608721] musb-hdrc musb-hdrc: dma type: dma-cppi41
[ 0.610259] Waiting for USB PHY clock good...
[ 0.630576] musb-hdrc musb-hdrc: MUSB HDRC host driver
[ 0.630713] musb-hdrc musb-hdrc: new USB bus registered, assigned bus number 1
[ 0.634281] hub 1-0:1.0: USB hub found
[ 0.634420] hub 1-0:1.0: 1 port detected
[ 0.635354] musb-hdrc musb-hdrc: USB Host mode controller at fee00000 using DMA, IRQ 58
[ 0.637114] NET: Registered protocol family 2
[ 0.637539] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.638595] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.638859] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.639046] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.639084] TCP reno registered
[ 0.639129] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.639199] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.640155] NET: Registered protocol family 1
[ 0.641722] RPC: Registered udp transport module.
[ 0.641779] RPC: Registered tcp transport module.
[ 0.641815] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.644620] EMAC: RMII PHY configured, MII PHY will not be functional
[ 0.759170] NTFS driver 2.1.29 [Flags: R/O].
[ 0.763385] JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[ 0.768516] msgmni has been set to 244
[ 0.775492] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 0.775562] io scheduler noop registered
[ 0.775600] io scheduler deadline registered
[ 0.776190] io scheduler cfq registered (default)
[ 0.778598] da8xx_lcdc da8xx_lcdc.0: GLCD: Found DT_atm0700d4 panel
[ 0.806108] Console: switching to colour frame buffer device 100x30
[ 0.848461] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[ 0.856046] serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7
[ 0.859126] serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7
[ 0.862662] serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7
[ 1.362661] console [ttyS2] enabled
[ 1.373204] ahci ahci: forcing PORTS_IMPL to 0x1
[ 1.378106] ahci ahci: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode
[ 1.386385] ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc
[ 1.398567] scsi0 : ahci_platform
[ 1.405152] ata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67
[ 1.421365] NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung )
[ 1.430507] Creating 4 MTD partitions on "davinci_nand.1":
[ 1.436140] 0x000000000000-0x000000020000 : "uboot_env"
[ 1.444660] 0x000000020000-0x000000080000 : "uboot"
[ 1.452622] 0x000000080000-0x000000300000 : "kernel"
[ 1.460803] 0x000000300000-0x000008000000 : "ubi"
[ 1.468732] davinci_nand davinci_nand.1: controller rev. 2.5
[ 1.478268] UBI: attaching mtd3 to ubi0
[ 1.482600] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 1.488940] UBI: logical eraseblock size: 129024 bytes
[ 1.494616] UBI: smallest flash I/O unit: 2048
[ 1.499402] UBI: sub-page size: 512
[ 1.504422] UBI: VID header offset: 512 (aligned 512)
[ 1.510462] UBI: data offset: 2048
[ 1.559998] usb 1-1: new high speed USB device using musb-hdrc and address 2
[ 1.759966] ata1: SATA link down (SStatus 0 SControl 300)
[ 1.868011] UBI: max. sequence number: 244
[ 1.893233] UBI: attached mtd3 to ubi0
[ 1.897074] UBI: MTD device name: "ubi"
[ 1.902117] UBI: MTD device size: 125 MiB
[ 1.907144] UBI: number of good PEBs: 996
[ 1.912013] UBI: number of bad PEBs: 4
[ 1.916513] UBI: number of corrupted PEBs: 0
[ 1.921117] UBI: max. allowed volumes: 128
[ 1.925787] UBI: wear-leveling threshold: 4096
[ 1.930662] UBI: number of internal volumes: 1
[ 1.935155] UBI: number of user volumes: 2
[ 1.939738] UBI: available PEBs: 0
[ 1.944249] UBI: total number of reserved PEBs: 996
[ 1.949169] UBI: number of PEBs reserved for bad PEB handling: 9
[ 1.955317] UBI: max/mean erase counter: 3/1
[ 1.959920] UBI: image sequence number: -1958061123
[ 1.964997] UBI: background thread "ubi_bgt0d" started, PID 513
[ 1.971658] spi_davinci spi_davinci.1: DMA: supported
[ 1.976830] spi_davinci spi_davinci.1: DMA: RX channel: 18, TX channel: 19, event queue: 0
[ 1.988168] m25p80 spi1.0: mx25l6405d (8192 Kbytes)
[ 1.993450] Creating 4 MTD partitions on "mx25l6405d":
[ 1.998678] 0x000000000000-0x000000080000 : "U-Boot"
[ 2.006545] 0x000000080000-0x0000000c0000 : "U-Boot-Env"
[ 2.015022] 0x0000000c0000-0x000000340000 : "Kernel"
[ 2.023146] 0x000000340000-0x000000800000 : "Filesystem"
[ 2.031604] spi_davinci spi_davinci.1: Controller at 0xfef0e000
[ 2.089754] davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
[ 2.096040] davinci_mdio davinci_mdio.0: detected phy mask fffffffd
[ 2.104559] davinci_mdio.0: probed
[ 2.108047] davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver SMSC LAN8710/LAN8720
[ 2.117486] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 2.124448] ohci ohci.0: DA8xx OHCI
[ 2.128118] ohci ohci.0: new USB bus registered, assigned bus number 2
[ 2.134991] Waiting for USB PHY clock good...
[ 2.139577] ohci ohci.0: irq 59, io mem 0x01e25000
[ 2.207451] hub 2-0:1.0: USB hub found
[ 2.211689] hub 2-0:1.0: 1 port detected
[ 2.217287] Initializing USB Mass Storage driver...
[ 2.223950] scsi1 : usb-storage 1-1:1.0
[ 2.231800] usbcore: registered new interface driver usb-storage
[ 2.237917] USB Mass Storage support registered.
[ 2.245612] mice: PS/2 mouse device common for all mice
[ 2.255203] input: TPS6507x Touchscreen as /devices/platform/i2c-gpio.1/i2c-1/1-0048/input/input0
[ 2.271133] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
[ 2.277574] omap_rtc: RTC power up reset detected
[ 2.282863] omap_rtc: already running
[ 2.288388] i2c /dev entries driver
[ 2.300674] Linux video capture interface: v2.00
[ 2.311650] cpia2: V4L-Driver for Vision CPiA2 based cameras v3.0.0
[ 2.319195] usbcore: registered new interface driver cpia2
[ 2.329877] gspca: v2.10.0 registered
[ 2.346019] tvp514x: tvp514x decoder driver registered !!
[ 2.356973] vpif_capture vpif_capture: registered sub device tvp514x-0
[ 2.364031] vpif_capture vpif_capture: VPIF Capture driver initialized
[ 2.378237] usbcore: registered new interface driver uvcvideo
[ 2.389368] USB Video Class driver (v1.0.0)
[ 2.394126] watchdog watchdog: heartbeat 60 sec
[ 2.403677] cpuidle: using governor ladder
[ 2.416549] cpuidle: using governor menu
[ 2.422714] sdhci: Secure Digital Host Controller Interface driver
[ 2.428974] sdhci: Copyright© Pierre Ossman
[ 2.434046] davinci_mmc: probe of davinci_mmc.0 failed with error -16
[ 2.447759] davinci_mmc davinci_mmc.1: Using DMA, 4-bit mode
[ 2.463078] usbcore: registered new interface driver usbhid
[ 2.468756] usbhid: USB HID core driver
[ 2.506309] asoc: tlv320aic3x-hifi <-> davinci-mcbsp.1 mapping ok
[ 2.521796] ALSA device list:
[ 2.524833] #0: DA850/OMAP-L138 EVM
[ 2.536099] TCP cubic registered
[ 2.539407] NET: Registered protocol family 17
[ 2.555321] regulator_init_complete: incomplete constraints, leaving LDO2 on
[ 2.572196] regulator_init_complete: incomplete constraints, leaving LDO1 on
[ 2.580429] regulator_init_complete: incomplete constraints, leaving VDCDC3 on
[ 2.588562] regulator_init_complete: incomplete constraints, leaving VDCDC2 on
[ 2.601087] regulator_init_complete: incomplete constraints, leaving VDCDC1 on
[ 2.609071] davinci_emac_probe: using random MAC addr: d6:c7:e1:28:81:76
[ 2.636240] omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[ 3.152426] davinci_mdio davinci_mdio.0: resetting idled controller
[ 3.160549] net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=0:01, id=7c0f1)
[ 3.232071] scsi 1:0:0:0: Direct-Access USB 2.0 USB Flash Drive 0.00 PQ: 0 ANSI: 2
[ 3.253954] sd 1:0:0:0: [sda] 7897088 512-byte logical blocks: (4.04 GB/3.76 GiB)
[ 3.262337] sd 1:0:0:0: Attached scsi generic sg0 type 0
[ 3.276788] sd 1:0:0:0: [sda] Write Protect is off
[ 3.287363] sd 1:0:0:0: [sda] Assuming drive cache: write through
[ 3.307041] sd 1:0:0:0: [sda] Assuming drive cache: write through
[ 3.377598] sda: sda1
[ 3.452103] sd 1:0:0:0: [sda] Assuming drive cache: write through
[ 3.458295] sd 1:0:0:0: [sda] Attached SCSI removable disk
[ 4.180514] IP-Config: Complete:
[ 4.183657] device=eth0, addr=192.168.0.107, mask=255.255.255.0, gw=192.168.0.1,
[ 4.196653] host=Owlboard, domain=, nis-domain=(none),
[ 4.202439] bootserver=192.168.0.103, rootserver=192.168.0.103, rootpath=
[ 4.266018] UBIFS: recovery needed
[ 4.328200] UBIFS: recovery completed
[ 4.332103] UBIFS: mounted UBI device 0, volume 0, name "rootfs"
[ 4.338211] UBIFS: file system size: 49287168 bytes (48132 KiB, 47 MiB, 382 LEBs)
[ 4.349752] UBIFS: journal size: 2451456 bytes (2394 KiB, 2 MiB, 19 LEBs)
[ 4.357166] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 4.379738] UBIFS: default compressor: lzo
[ 4.383926] UBIFS: reserved for root: 2327954 bytes (2273 KiB)
[ 4.392289] VFS: Mounted root (ubifs filesystem) on device 0:14.
[ 4.404871] devtmpfs: mounted
[ 4.408093] Freeing init memory: 164K
[ 4.930983] UBIFS: recovery needed
[ 4.968886] UBIFS: recovery completed
[ 4.977762] UBIFS: mounted UBI device 0, volume 1, name "storage"
[ 4.984098] UBIFS: file system size: 75220992 bytes (73458 KiB, 71 MiB, 583 LEBs)
[ 4.991951] UBIFS: journal size: 3741696 bytes (3654 KiB, 3 MiB, 29 LEBs)
[ 4.999356] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 5.009735] UBIFS: default compressor: lzo
[ 5.013918] UBIFS: reserved for root: 3552872 bytes (3469 KiB)
Starting logging: OK
Initializing random number generator... done.
Starting network...
ip: RTNETLINK answers: File exists
Starting dropbear sshd: OK
Starting sshd: Could not load host key: /etc/ssh_host_dsa_key

Could not load host key: /etc/ssh_host_ecdsa_key

OK
Starting HPA's tftpd: /etc/init.d/S80tftpd-hpa: line 79: /usr/sbin/in.tftpd: not found
thttpd
root /root # 


сравнивал логи рабочей и не рабочей системы, зметил что в рабочей версии удивительным оразом всё последовательно настраивается, монтируются разделы UBI файловой системы. В нерабочем враинте всё совсем не так. Хотя конфиги практически идентичны и фалы борды одинаковые. Различаются версии ядер.
Jury093
Цитата(TigerSHARC @ Apr 8 2014, 16:47) *
прошу прощения, проблема по прежнему не решена.
Вот полный лог загрузки, рабочей системы:

более интересен лог нерабочей системы, фильтрация из .config (grep UBI, grep MTD, grep NAND) и куски файла борды, касающиеся нанда..

Цитата
совсем не так. Хотя конфиги практически идентичны и фалы борды одинаковые. Различаются версии ядер.

пробейте по гуглю - может именно в этой версии ядра глючная подсистема (nand, ubifs)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.