Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
Сделать корректно работающим hwclock
yurySoft
Добавлено 25.07.2019 18:59 Редактировалось 25.07.2019 19:11
4
Сообщение: 1
yurySoft
4

Пункты: 814
Регистрация: 01.07.2019
Здравствуйте! В моем проекте используется логер, который получает время с помощью функции date , которая в свою очередь вызывает hwclock. С каждым перезапуском, мои часы сбрасываются (т.е как будто бы не законекчены), сигнал с внешнего клока приходит, и заводится через шину на IMX.
В сборке ядра я добавил опцию:
- linux-menuconfig
- DeviceDrivers
- RealTimeClock
* DellasMaxim DS1307

После чего, пытался из меню buildroot добавить i2c-tools, который там не отобразился, проще говоря его там нет.
хотя в /packages/Config.in он есть. Не понимаю как заставить его работать. Что бы он хотябы временем сборки инициализировался, а потом по клоку от шины отсчитывал время. Важно что бы он считал не с нуля при перезагрузке, а отсчитывал время, пока IMX выключен.

Так же проблема с добавлением ftp сервера, я хотел добавить
source "package/pure-ftpd/Config.in"
Его там нет, этот пакет требует MMU, я его в конфигах ядра не увидел, а в своем конфиге, у меня все что связано в MMU .config
файле =y, конфиг файл прилагаю.

Написал об этих двух проблеммах, т.к. полагаю, что у этих проблем одна природа. У меня buildroot-2017sk
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.07.2019 12:09 Сообщение: 2
sasamy
4.71

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

В сборке ядра я добавил опцию:


посмотрите аналогичную тему на предмет что еще нужно

http://starterkit.ru/html/index.php?name=forum&op=view&id=28071

Цитата

После чего, пытался из меню buildroot добавить i2c-tools, который там не отобразился, проще говоря его там нет.


по умолчанию утилиты для работы с i2c включены в busybox, если нужно именно i2c-tools, разрешите показывать пакеты которые содержит busybox

Target packages --->
[*] Show packages that are also provided by busybox

и потом

Hardware handling --->
[*] i2c-tools

Цитата

pure-ftpd
Его там нет


Есть

Networking applications --->
[*] pure-ftpd
Спуститься к концу Подняться к началу
Персональная информация
yurySoft
Добавлено 26.07.2019 16:05 Редактировалось 26.07.2019 17:03 Сообщение: 3
yurySoft
4

Пункты: 814
Регистрация: 01.07.2019
посмотрите аналогичную тему на предмет что еще нужно

http://starterkit.ru/html/index.php?name=forum&op=view&id=28071


Спасибо, посмотрел.
1) Добавил драйвер в ds1307 в Device-Drivers, RealTimeCloick,
И отключил там же Freeskale драйверы,
а именно:
1) Freeskale MSX REALTIME Clock
2)Freeskale SNVS RTC support

Файла output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi у меня вообще нет, или что-то нужно сделать чтобы он появился?

После сборки, с добавкой нового драйвера и удаления старых я получил:
hwclock
hwclock: can't open '/dev/misc/rtc': No such file or directory

Непонятно, почему ракета не полетела, какие дополнительные настройки необходимо выполнить, прошу описать пошагово.

Даже после сборки ядра, когда этот файл : imx6qdl-sodimm.dtsi
Все же сгенерировался и я добавил рекомендуемые строки, в результате получил :

&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_sodimm>;
status = "okay";

codec: tlv320aic23@1a {
compatible = "ti,tlv320aic23";
reg = <0x1a>;
clocks = <&clks 200>;
clock-frequency = <12000000>;
};

adv7180: adv7180@21 {
compatible = "adv,adv7180";
reg = <0x21>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_csi_sodimm>;
clocks = <&clks 201>;
clock-names = "csi_mclk";
DOVDD-supply = <&reg_3p3v>;
AVDD-supply = <&reg_3p3v>;
DVDD-supply = <&reg_3p3v>;
PVDD-supply = <&reg_3p3v>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
cvbs = <1>;
cam_std = <0>; /* 0 - PAL(default), 1 - NTSC J , 2 - NTSC M */
};

hdmi: edid@50 {
compatible = "fsl,imx6-hdmi-i2c";
reg = <0x50>;
};

rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};

Но после ./kernel-rebuild.sh
Ничего не поменялось

Как это вылечить?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.07.2019 11:05 Сообщение: 4
sasamy
4.71

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

какие дополнительные настройки необходимо выполнить, прошу описать пошагово.


для начала нужно знать - на какие пины процессора вы подключили часы
Спуститься к концу Подняться к началу
Персональная информация
yurySoft
Добавлено 29.07.2019 12:11 Редактировалось 29.07.2019 12:13 Сообщение: 5
yurySoft
4

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

какие дополнительные настройки необходимо выполнить, прошу описать пошагово.


для начала нужно знать - на какие пины процессора вы подключили часы


Здравствуйте Пины у меня для I2C 46, 48,
1 ) Но интересная деталь, у меня вместро 3х I2c только один
# i2cdetect -l
i2c-1 i2c 21a4000.i2c I2C adapter

2) Пины
# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Но
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_sodimm>;
status = "okay";

codec: tlv320aic23@1a {
compatible = "ti,tlv320aic23";
reg = <0x1a>;
clocks = <&clks 200>;
clock-frequency = <12000000>;
};

adv7180: adv7180@21 {
compatible = "adv,adv7180";
reg = <0x21>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_csi_sodimm>;
clocks = <&clks 201>;
clock-names = "csi_mclk";
DOVDD-supply = <&reg_3p3v>;
AVDD-supply = <&reg_3p3v>;
DVDD-supply = <&reg_3p3v>;
PVDD-supply = <&reg_3p3v>;
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
cvbs = <1>;
cam_std = <0>; /* 0 - PAL(default), 1 - NTSC J , 2 - NTSC M */
};

hdmi: edid@50 {
compatible = "fsl,imx6-hdmi-i2c";
reg = <0x50>;
};
};

Все соответствует действительности, но после добавления строки, у меня она исчезает, ноги у меня подключенные 46, 48, 174. Посмотрел datashet на часы, и там адрес 68hex, что именно и где нужно менять.

http://pdf1.alldatasheet.com/datasheet-pdf/view/112132/DALLAS/DS3231.html

стр 16 на, диаграмме сообщения, есть адрес слейва, он не меняется. В чем проблемма, не соображу.

Думал что в инклуде предыдущего файла будет ответ, но там нет I2c, орн крайне беден, и когда я убрал драйверы freescale встроенные, у меня пропал dts файл
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.07.2019 12:37 Редактировалось 29.07.2019 12:41 Сообщение: 6
sasamy
4.71

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

Пины у меня для I2C 46, 48,


Смотрим документацию на модуль http://starterkit.ru/html/doc/SODIMM_pinout.pdf

пины 46 и 48 подключены к I2C3 процессора, в dts эти пины уже описаны

i2c3 {
pinctrl_i2c3_sodimm: i2c3-sodimm {
fsl,pins = <
MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
>;
};
};

осталось включить i2c3 и прописать там часы - дописать в output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi выделенный фрагмент (после описания i2c2 например)

Цитата


&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_sodimm>;
status = "okay";

rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};



Ключевой момент - смотреть надо не вторую колонку в документации а третью - "Номер вывода процессора, дополнительные функции вывода SK-iMX6S(D)-SODIMM"
Спуститься к концу Подняться к началу
Персональная информация
yurySoft
Добавлено 29.07.2019 12:50 Сообщение: 7
yurySoft
4

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

Пины у меня для I2C 46, 48,


Смотрим документацию на модуль http://starterkit.ru/html/doc/SODIMM_pinout.pdf

пины 46 и 48 подключены к I2C3 процессора, в dts эти пины уже описаны

i2c3 {
pinctrl_i2c3_sodimm: i2c3-sodimm {
fsl,pins = <
MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
>;
};
};

осталось включить i2c3 и прописать там часы - дописать в output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi выделенный фрагмент (после описания i2c2 например)

Цитата


&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_sodimm>;
status = "okay";

rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};



Ключевой момент - смотреть надо не вторую колонку в документации а третью - "Номер вывода процессора, дополнительные функции вывода SK-iMX6S(D)-SODIMM"


Как я уже говорил, если я отключаю драйверы freeskale, to dts не генерируется, генерируется только dtsi, как это обойти?
Спуститься к концу Подняться к началу
Персональная информация
yurySoft
Добавлено 29.07.2019 12:57 Редактировалось 29.07.2019 13:00 Сообщение: 8
yurySoft
4

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

Пины у меня для I2C 46, 48,


Смотрим документацию на модуль http://starterkit.ru/html/doc/SODIMM_pinout.pdf

пины 46 и 48 подключены к I2C3 процессора, в dts эти пины уже описаны

i2c3 {
pinctrl_i2c3_sodimm: i2c3-sodimm {
fsl,pins = <
MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
>;
};
};

осталось включить i2c3 и прописать там часы - дописать в output/build/linux-custom/arch/arm/boot/dts/imx6qdl-sodimm.dtsi выделенный фрагмент (после описания i2c2 например)

Цитата


&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_sodimm>;
status = "okay";

rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};



Ключевой момент - смотреть надо не вторую колонку в документации а третью - "Номер вывода процессора, дополнительные функции вывода SK-iMX6S(D)-SODIMM"


Как я уже говорил, если я отключаю драйверы freeskale, to dts не генерируется, генерируется только dtsi, как это обойти?


для того чтобы получить dts мне пришлось добавлять Freeskale драйверы и вот мой dts:
/*
* Copyright 2014 starterkit.ru
*
* The code contained herein is licensed under the GNU General Public
* License V2.
*/

/dts-v1/;

#include "imx6dl.dtsi"
#include "imx6qdl-sodimm.dtsi"

/ {
model = "Starterkit SK-iMX6S-SODIMM Board";
compatible = "sk,imx6dl-sodimm", "fsl,imx6dl-sabresd", "fsl,imx6dl";

memory {
reg = <0x10000000 0x20000000>;
};
};

&ldb {
lvds-channel@0 {
crtc = "ipu1-di0";
};

lvds-channel@1 {
crtc = "ipu1-di1";
};
};

&mxcfb1 {
status = "okay";
};

&mxcfb2 {
status = "okay";
};
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.07.2019 13:01 Сообщение: 9
sasamy
4.71

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

Как я уже говорил, если я отключаю драйверы freeskale, to dts не генерируется, генерируется только dtsi, как это обойти?


не понимаю - что вы пытаетесь обойти ? Сконфигурировать ядро в buildroot

make linux-menuconfig

пересобрать ядро

./kernel_rebuild.sh
Спуститься к концу Подняться к началу
Персональная информация
yurySoft
Добавлено 29.07.2019 13:58 Сообщение: 10
yurySoft
4

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

Как я уже говорил, если я отключаю драйверы freeskale, to dts не генерируется, генерируется только dtsi, как это обойти?


не понимаю - что вы пытаетесь обойти ? Сконфигурировать ядро в buildroot

make linux-menuconfig

пересобрать ядро

./kernel_rebuild.sh


Спасибо, сработала добавка этих строк, но почему они не добавились автоматически:

&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_sodimm>;
status = "okay";

rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
};
};

Т.ж. мне не задать время мануально через hwclock
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux