Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
device tree скрипты для отладочных плат
Romantic
Добавлено 06.09.2014 16:30
0
Сообщение: 1
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Вопрос, наверное, скорее к Павлу, но может быть, кто-нибудь из корифеев может поделиться опытом. Я сейчас разбираюсь с запуском ядра 3.16 на плате sam9g45-xc6slx, описание аппаратуры платы с помощью device tree мне видится перспективным и удобным средством абстракции BSP от конкретного ядра. Некоторые устройства платы я уже успешно описал на dts и научился загружать ядро без добавления новых файлов bsp в ядро, но формат скрипта довольно сложный и часто приходится шарахаться наощупь в тонкостях описания конкретного периферийного устройства.
Вообще, может быть, есть готовое описание всей периферии этой платы на, или если нет - мы могли бы его объединенными усилиями сделать?

На данный момент меня занимает описание параметров контроллера lcd, причем проблема состоит в том, что набор параметров, декларированных в dts (http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/video/atmel,lcdc.txt) почти не совпадает с параметрами, которые инициализировались в bsp ядра 2.6.36-rc6, которое поставляется с этой платой (структуры fb_monspec, fb_videomode, http://lxr.free-electrons.com/source/include/linux/fb.h).
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 06.09.2014 17:03 Редактировалось 06.09.2014 17:09 Сообщение: 2
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

проблема состоит в том, что набор параметров, декларированных в dts (http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/video/atmel,lcdc.txt) почти не совпадает с параметрами, которые инициализировались в bsp ядра 2.6.36-rc6


не понял вашей проблемы - там отличаются только названия, сравните

http://lxr.free-electrons.com/source/arch/arm/boot/dts/at91sam9m10g45ek.dts#L169

http://lxr.free-electrons.com/source/arch/arm/mach-at91/board-sam9m10g45ek.c?v=3.0#L199

dts_param = old_kernel_param:

hback-porch = left_margin
hfront-porch = right_margin
vback-porch = upper_margin
vfront-porch = lower_margin
и тд

причем производители LCD панелей указывают в доках параметры как раз так как в новом ядре они обозначены.
Спуститься к концу Подняться к началу
Персональная информация
alexsl
Добавлено 16.04.2015 20:12 Сообщение: 3
alexsl
0

Пункты: 4270
Регистрация: 26.10.2010
Приветствую.

Скажите пожалуйста как правильно прописать в at91sam9m10g45ek.dts файле эту часть из board файла:

/*
* MACB Ethernet device
*/
static struct macb_platform_data __initdata ek_macb_data = {
.phy_irq_pin = AT91_PIN_PC17,
.is_rmii = 0,
};
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.04.2015 12:20 Сообщение: 4
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
macb0: ethernet@fffbc000 {
phy-mode = "mii";
status = "okay";
};

прерывания от PHY можно не прописывать - все равно не используются.
Спуститься к концу Подняться к началу
Персональная информация
alexsl
Добавлено 17.04.2015 15:20 Сообщение: 5
alexsl
0

Пункты: 4270
Регистрация: 26.10.2010
Меня то как раз и интересовал синтаксис для прерывания, так как без прерывания у меня уже написано.
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 04.04.2016 01:26 Сообщение: 6
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Приветствую снова!
Прошу прощения за "некропостинг", проблема снова актуализировалась.

Не знаете, как описать аудиокодек в скрипте?
Ни в одном из имеющихся скриптов для плат с армами не нашел подходящего примера структуры sound, подходящего - то есть для sam9g45. В документации упоминается тип кодека atmel ac97c, структура раздела sound для него следующая:
Цитата
1 * Atmel AC97 controller
2
3 Required properties:
4 - compatible: "atmel,at91sam9263-ac97c"
5 - reg: Address and length of the register set for the device
6 - interrupts: Should contain AC97 interrupt
7 - ac97-gpios: Please refer to soc-ac97link.txt, only ac97-reset is used
8 Optional properties:
9 - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt
10
11 Example:
12 sound@fffa0000 {
13 compatible = "atmel,at91sam9263-ac97c";
14 pinctrl-names = "default";
15 pinctrl-0 = <&pinctrl_ac97>;
16 reg = <0xfffa0000 0x4000>;
17 interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>;
18
19 ac97-gpios = <&pioB 0 0 &pioB 2 0 &pioC 29 GPIO_ACTIVE_LOW>;
20 };


Причем нашел я это уже для более нового ядра, чем 3.18, которое использую. Я попробовал написать так, но альза при загрузке ядра пишет, что не нашла звуковых плат.
Осталось непонятным многое:
Какое compatible использовать?
То же прерывание или другое и как вообще узнать, какое на плате используется?
Какие пины программируются в ac97-gpios?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 04.04.2016 10:17 Редактировалось 04.04.2016 10:25 Сообщение: 7
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Причем нашел я это уже для более нового ядра, чем 3.18


так в 3.18 нет поддержки DT для этого контроллера - появилась только в 4.0. В остальном - в доке же все написано

Цитата

Какое compatible использовать?


compatible = "atmel,at91sam9263-ac97c";

Цитата

То же прерывание или другое и как вообще узнать, какое на плате используется?


то которое в SoC - см. даташит на процессор

AC97C - 24

диапазаон физических адресов тоже другой

reg = <0xfffac000 0x4000>;

http://www.atmel.com/ru/ru/Images/Atmel-6438-32-bit-ARM926-Embedded-Microprocessor-SAM9G45_Datasheet.pdf

42. AC97 Controller (AC97C)

стр. 1048

пример как пины описывать

http://lxr.free-electrons.com/source/arch/arm/boot/dts/at91sam9263.dtsi#L700

в даташите

42.6.1 I/O Lines
стр. 1051
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 04.04.2016 14:59 Редактировалось 04.04.2016 15:01 Сообщение: 8
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
sasamy, спасибо за детальное описание.
К сожалению, не получается.

Аппаратура: sk-at91sam9g45-xc6slx, кодек realtek alc203
Соединение: Reset - PC21, SDI - PD6, SDO - PD7, FS - PD8, CLK - PD9
Ядро: linux-4.1.20

Добавление в DTS:
Код

/ {
...
ahb {
apb {
...
pinctrl@fffff200 {
...
ac97 {
pinctrl_ac97: ac97-board {
atmel,pins =
<AT91_PIOD 6 AT91_PERIPH_A AT91_PINCTRL_NONE /* PD6 - RX */
AT91_PIOD 7 AT91_PERIPH_A AT91_PINCTRL_NONE /* PD7 - TX */
AT91_PIOD 8 AT91_PERIPH_A AT91_PINCTRL_NONE /* PD8 - FS */
AT91_PIOD 9 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PD9 - CK */
};
};
};
sound@fffac000 {
compatible = "atmel,at91sam9263-ac97c";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ac97>;
reg = <0xfffac000 0x4000>;
interrupts = <24 IRQ_TYPE_LEVEL_HIGH 5>;
ac97-gpios = <&pioD 8 0 &pioD 6 0 &pioC 21 GPIO_ACTIVE_LOW>;
};
};


Вывод ядра:
Цитата

...
atmel_ac97c: probe of fffac000.sound failed with error -2
...
ALSA device list:
No soundcards found.
...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 04.04.2016 16:20 Редактировалось 04.04.2016 16:21 Сообщение: 9
sasamy
4.71

Пункты: 83542
Регистрация: 14.08.2009
Цитата

Добавление в DTS:


помоему не хватает клока

sound@fffac000 {
compatible = "atmel,at91sam9263-ac97c";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ac97>;
reg = <0xfffac000 0x4000>;
interrupts = <24 IRQ_TYPE_LEVEL_HIGH 5>;
ac97-gpios = <&pioD 8 0 &pioD 6 0 &pioC 21 GPIO_ACTIVE_LOW>;
clocks = <&ac97_clk>;
clock-names = "ac97_clk";

};
Спуститься к концу Подняться к началу
Персональная информация
Romantic
Добавлено 04.04.2016 16:51 Сообщение: 10
Romantic
3

Пункты: 2214
Регистрация: 20.11.2009
Пол: Мужчина
Цитата
Цитата

Добавление в DTS:


помоему не хватает клока

sound@fffac000 {
compatible = "atmel,at91sam9263-ac97c";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ac97>;
reg = <0xfffac000 0x4000>;
interrupts = <24 IRQ_TYPE_LEVEL_HIGH 5>;
ac97-gpios = <&pioD 8 0 &pioD 6 0 &pioC 21 GPIO_ACTIVE_LOW>;
clocks = <&ac97_clk>;
clock-names = "ac97_clk";

};


Во-во, тоже сейчас надобавлял трейсов в ядро и выяснил, что ядро не находит клока.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux