Ник:
Пароль:

Контакты

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
Поисковых ботовПоисковых ботов:4
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
9g45. SPI. Chip select.
lexx666
Добавлено 13.08.2013 06:58 Сообщение: 11
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
Грузите ядро через команду tftpboot в u-boot для проверки.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 13.08.2013 14:07 Сообщение: 12
titan83
3

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

подскажите, пожалуйста, какие модули нужно подменть чтобы CS заработал?
нужно ли подменять ядро?

Извните - не совсем понял вопрос. Модули (что вы подразумеваете под модулями?), вроде, подменять не нужно.
Ядро подменять нужно, ибо вы его пересоберете и оно будет другим.
Вот на всякий случай вырезка из моего board-sam9m10g45ek.c:
// { /* DataFlash chip */
// .modalias = "mtd_dataflash",
// .chip_select = 0,
// .max_speed_hz = 15 * 1000 * 1000,
// .bus_num = 0,
// },
{ /* spidev 0 */
.modalias = "spidev",
.chip_select = 0,
.mode = SPI_MODE_0,
.max_speed_hz = 2 * 1000 * 1000,
.bus_num = 0,
},
{ /* spidev 1 */
.modalias = "spidev",
.chip_select = 0,
.mode = SPI_MODE_0,
.max_speed_hz = 2 * 1000 * 1000,
.bus_num = 1,
},
в результате я имею два файла в /dev - spidev0.0 и spidev1.0 и могу работать с ними, как с любыми другими файлами.
проверить можно так: echo -ne "\xAA" > /dev/spidev0.0
Спуститься к концу Подняться к началу
Персональная информация
max_s
Добавлено 14.08.2013 18:05 Редактировалось 14.08.2013 18:07 Сообщение: 13
max_s
0

Пункты: 172
Регистрация: 13.08.2013
Спасибо за подсказки и за исходник.
Пересобрал ядро в gentoo используя:
make ARCH="arm" CROSS_COMPILER="armv5tej-softfloat-linux-gnueabi-"
загрузился в u-boot

U-Boot> run system_update

NAND erase: device 0 offset 0x80000, size 0x790000
Erasing at 0x800000 -- 100% complete.
OK
macb0: PHY present at 0
macb0: link up, 100Mbps full-duplex (lpa: 0x45e1)
Using macb0 device
TFTP from server 192.168.0.2; our IP address is 192.168.0.136
Filename 'zlinux'.
Load address: 0x70800000
Loading: #######
done
Bytes transferred = 2164728 (2107f8 hex)

NAND write: device 0 offset 0x80000, size 0x790000
7929856 bytes written: OK

NAND read: device 0 offset 0x80000, size 0x790000
7929856 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!


бюсь 2-ой день, подскажите пожалуйста, что ж ему не нравится в формате?

Спасибо за помошь!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.08.2013 21:29 Сообщение: 14
sasamy
4.70

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

Wrong Image Format for bootm command


Как вы получили файл zlinux после сборки ядра ?
Спуститься к концу Подняться к началу
Персональная информация
max_s
Добавлено 14.08.2013 21:50 Редактировалось 14.08.2013 23:54 Сообщение: 15
max_s
0

Пункты: 172
Регистрация: 13.08.2013
я переименовал .../linux-3.2.18/arch/arm/boot/zimage в .../linux-3.2.18/arch/arm/boot/zlinux и перенес в папку tftp сервера.

возможно здесь была моя ошибка... нужно ли его как-то упаковать?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.08.2013 23:34 Редактировалось 14.08.2013 23:45 Сообщение: 16
sasamy
4.70

Пункты: 77331
Регистрация: 14.08.2009
Нужно. Либо вручную

make ARCH=arm CROSS_COMPILE=armv5tej-softfloat-linux-gnueabi-
mkimage -A arm -O linux -C none -T kernel -a 0x70008000 -e 0x70008000 -n linux-2.6 -d arch/arm/boot/zImage uImage
cp uImage /tftpboot/zlinux

Либо через специальное правило make ядра

make ARCH=arm CROSS_COMPILE=armv5tej-softfloat-linux-gnueabi- uImage
cp arch/arm/boot/uImage /tftpboot/zlinux

утилита mkimage из u-boot (u-boot-tools навверно в gentoo если верить http://en.qi-hardware.com/wiki/Gentoo-cross-compilation#prebuild_kernel) должна находиться в путях переменной окружения PATH
Спуститься к концу Подняться к началу
Персональная информация
max_s
Добавлено 15.08.2013 02:42 Редактировалось 15.08.2013 02:43 Сообщение: 17
max_s
0

Пункты: 172
Регистрация: 13.08.2013
sasamy, titan83, lexx666 - большое спасибо за помошь!
ядро обновил благодоря инструкциям от sasamy. упрощённая 2-ая команда
Цитата
make ARCH=arm CROSS_COMPILE=armv5tej-softfloat-linux-gnueabi- uImage
сделала чудо, ядро обновилось и CS на SPI (спасибо titan83) наконец-то стал работать. Одако я заметил теперь изначаяльное сосотяние СS=0, а при передачи данных CS=1, а должно быть наоборот. При передаче данных CS должен быть в 0-ле.

Как SPI работает у вас?

Еще раз огромное спасибо за то что помогаете. Надесь эта информация будет полезна и другим форумчанам.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 15.08.2013 09:28 Сообщение: 18
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
http://elinux.org/BeagleBoard/SPI
раздел Chip Select polarity
Спуститься к концу Подняться к началу
Персональная информация
lexx666
Добавлено 15.08.2013 09:33 Сообщение: 19
lexx666
3.83

Пункты: 11780
Регистрация: 28.07.2011
Пол: Мужчина
Из: Барнаул
При работе с spidev есть же режимы работы...

Цитата
#define SPI_CPHA 0x01
#define SPI_CPOL 0x02
#define SPI_MODE_0 (0|0)
#define SPI_MODE_1 (0|SPI_CPHA)
#define SPI_MODE_2 (SPI_CPOL|0)
#define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)

хотя странно. вообще в сам9г по умолчанию активный 0 для cs...
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 15.08.2013 09:36 Сообщение: 20
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
max_s.
Без нравоучений, просто дружеский совет - если есть желание заниматься микроконтроллерами, то подтягивайте английский и ОЧЕНЬ активно пользуйтесь гуглом, ибо там уже есть 99% процентов на ваши (и мои) вопросы, а идеально - перед гуглом кидать мимолетный взгляд в исходники ядра - там тоже много полезного написано.
P.S. Я сам изучаю ARM7/9 всего полгода - в начале тоже парил тут парней всякой херней, но старался как можно быстрее въехать в фундаментальные основы, чтобы не отвлекать других по пустякам.
Удачи!
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux