Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » SK-iMX233
GPIO и часы
Pavel Ivanchenko
Добавлено 18.08.2010 11:39 Сообщение: 11
Pavel Ivanchenko
Admin
4.39

Пункты: 91438
Регистрация: 24.03.2009
Пол: Мужчина
Вобщем, по существу вопросов, я не смотрел в каком состоянии драйвера I2C и GPIO, просто оставил все как было в оригинальной BSP от FreeScale.
Насчет I2C, скорее всего, все и так будет работать (без правок в BSP), просто добавте i2c-tools в состав buildroot и подключите часики, если все нормально тогда i2cdetect их должна обнаружить.
Насчет GPIO, я вобще не в курсе "правильной" идеологии, когда надо было, я всегда сам писал драйвера с удобным для меня интерфейсом, чтобы прямо из консоли можно было (натуральным образом записывая"1" и "0").

Если что будет не понятно, создайте отдельные темы, не надо все в кучу валить, там будем смотреть по конкретным вопросам.
Спуститься к концу Подняться к началу
Персональная информация
Hermes
Добавлено 18.08.2010 11:52 Сообщение: 12
Hermes
5

Пункты: 3383
Регистрация: 02.04.2010
Pavel Ivanchenko, если есть примеры реализации таких драйверов(под любую плату) - жду ответа в личку или на почту.

ЗЫ: сорри за оффтоп.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 18.08.2010 12:06 Сообщение: 13
Pavel Ivanchenko
Admin
4.39

Пункты: 91438
Регистрация: 24.03.2009
Пол: Мужчина
Вот, драйвер управления питанием SIMCOM модемов на платах SK-AT91... (просто пинами дергает):
Код
/*
Driver for SIM508 modem power management
SK-AT91SAM9XXXXX-SIMXXX development board
www.starterkit.ru
*/

//#include <linux/config.h>
#include <linux/fs.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/io.h>

#include <mach/gpio.h>

#define NAME "SK-AT91SAM9XXXXX-SIMXXX"

MODULE_AUTHOR("Pavel Ivanchenko <info@starterkit.ru>");
MODULE_DESCRIPTION("SIM508 power management driver");
MODULE_LICENSE("GPL");

static int major = 135; /* default to dynamic major */
module_param(major, int, 0);
MODULE_PARM_DESC(major, "Major device number");

static ssize_t at91sam9_gpio_write(struct file *file, const char __user *data,
size_t len, loff_t *ppos)
{
unsigned m = iminor(file->f_dentry->d_inode);
size_t i;

for (i = 0; i < len; ++i) {
char c;
if (get_user(c, data+i))
return -EFAULT;
switch (c)
{
case '0':
gpio_set_value(AT91_PIN_PC10,1);
printk(KERN_INFO NAME ": SIM508 GSM power key OFF.\n", m);
break;
case '1':
gpio_set_value(AT91_PIN_PC10,0);
printk(KERN_INFO NAME ": SIM508 GSM power key ON.\n", m);
break;
case '2':
gpio_set_value(AT91_PIN_PC5,0);
printk(KERN_INFO NAME ": SIM508 GPS power ON.\n", m);
break;
case '3':
gpio_set_value(AT91_PIN_PC5,1);
printk(KERN_INFO NAME ": SIM508 GPS power OFF.\n", m);
break;
}
}

return len;
}

static ssize_t at91sam9_gpio_read(struct file *file, char __user *buf,
size_t len, loff_t *ppos)
{
unsigned m = iminor(file->f_dentry->d_inode);
int value;

value=0;
if (put_user(value, buf))
return -EFAULT;

return 1;
}

static int at91sam9_gpio_open(struct inode *inode, struct file *file)
{
unsigned m = iminor(inode);
if (m > 63)
return -EINVAL;
return nonseekable_open(inode, file);
}

static int at91sam9_gpio_release(struct inode *inode, struct file *file)
{
return 0;
}


static struct file_operations at91sam9_gpio_fops = {
.owner = THIS_MODULE,
.write = at91sam9_gpio_write,
.read = at91sam9_gpio_read,
.open = at91sam9_gpio_open,
.release = at91sam9_gpio_release,
};

static int __init at91sam9_gpio_init(void)
{
int r;

printk(KERN_DEBUG NAME ": SIM508 power management driver, major %d, minor %d.\n",major,0);

/* if (!scx200_gpio_present()) {
printk(KERN_ERR NAME ": no SCx200 gpio pins available\n");
return -ENODEV;
}*/

r = register_chrdev(major, NAME, &at91sam9_gpio_fops);
if (r < 0) {
printk(KERN_ERR NAME ": unable to register character device\n");
return r;
}
if (!major) {
major = r;
printk(KERN_DEBUG NAME ": got dynamic major %d\n", major);
}

at91_set_GPIO_periph(AT91_PIN_PC10,1);
at91_set_GPIO_periph(AT91_PIN_PC5,1);
gpio_direction_output(AT91_PIN_PC10,1);
gpio_direction_output(AT91_PIN_PC5,1);
return 0;
}

static void __exit at91sam9_gpio_cleanup(void)
{
unregister_chrdev(major, NAME);
}

module_init(at91sam9_gpio_init);
module_exit(at91sam9_gpio_cleanup);

Спуститься к концу Подняться к началу
Персональная информация
switch
Добавлено 18.08.2010 13:05 Сообщение: 14
switch
0

Пункты: 153
Регистрация: 17.08.2010
Pavel Ivanchenko,
попроще примера нет?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 18.08.2010 13:09 Сообщение: 15
Pavel Ivanchenko
Admin
4.39

Пункты: 91438
Регистрация: 24.03.2009
Пол: Мужчина
нет
Спуститься к концу Подняться к началу
Персональная информация
switch
Добавлено 18.08.2010 13:59 Сообщение: 16
switch
0

Пункты: 153
Регистрация: 17.08.2010
такой вопрос: на диске образ vmware содержит ядро и root именно для этой платы?
т.е. все опции ядра уже выставлены и мне нужно лишь отметить то, что нужно и перекомпилировать?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 18.08.2010 14:04 Сообщение: 17
Pavel Ivanchenko
Admin
4.39

Пункты: 91438
Регистрация: 24.03.2009
Пол: Мужчина
Ну неужели трудно новую тему создать, т.к. крайний вопрос явно не относится к "GPIO и часы", тем более, что скорее всего далее возникнет вопрос "как это обновить" ...
По существу последнего вопроса, да.
Спуститься к концу Подняться к началу
Персональная информация
Hermes
Добавлено 18.08.2010 14:13 Сообщение: 18
Hermes
5

Пункты: 3383
Регистрация: 02.04.2010
по примеру всё понятно. только не понятно откуда берутся две функции и к чему они
1)
Код
if (get_user(c, data+i))
return -EFAULT;

2)
Код
if (put_user(value, buf))
return -EFAULT;

остальное как по учебнику. Для мнука нужно будет только переопределить пины (там функции другие) и всё будет перфект...
Заранее спасибо
Спуститься к концу Подняться к началу
Персональная информация
serega
Добавлено 24.02.2014 22:24 Сообщение: 19
serega
0

Пункты: 235
Регистрация: 31.12.2013
Приветствую вас. Проблема есть с микроконтроллером imx233, после перезагрузки слетают часы. нашел часы с интерфейсом 12с . Что нужно сделать и возможно это сделать?,что бы внешние часы работали как встроенные что бы синхронизировались с ntp . спасибо.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 24.02.2014 23:31 Сообщение: 20
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Приветствую вас. Проблема есть с микроконтроллером imx233, после перезагрузки слетают часы.

а батарейку сменить, не?

Цитата
нашел часы с интерфейсом 12с . Что нужно сделать и возможно это сделать?,что бы внешние часы работали как встроенные что бы синхронизировались с ntp . спасибо.

1. смотрите наименование вашего "часы с интерфейсом 12с"
2. ищете на него документацию (datasheet)
3. в разделе эл. параметров убеждаетесь, что чип электрически совместим с imx233
4. открываете каталог с исходниками ядра, в каталоге drivers ищете драйвер, который понимает ваш чип (если такого нет, то в перпективе придется писать свой драйвер или искать варианты)
5. только после положительных ответов, любым доступным способом соединяете всё в общую систему
6. включаете поддержку чипа в файле платы, в опциях ядра, пересборка
7. если всё исправно и правильно, то ядро зарегистрирует новое устройство /dev/rtcN (где N={0,1 и тыпы})

после этого можно спрашивать про ntpdate..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX233