реклама на сайте
подробности

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> imx233
sergey sva
сообщение Dec 6 2013, 19:01
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Сегодня в руки попала платка с imx233, посмотрел немного в сети, в основном его используют с линуксом. И не одного примера не нашел без ос. Какие могут быть подводные камни если его использовать без ос?
Компиляторы для него также gcc keil iar ? и не совсем понял как в него загружать hex.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 09:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Все вроде разобрался.) Остался один вопрос нужен файл startup если у кого под рукой есть киньте плз, или где его искать подскажите, сейчас смотрю сборки линукса для imx233, но пока не смог найти он может как-то называется по другому.
Go to the top of the page
 
+Quote Post
Major
сообщение Dec 7 2013, 11:03
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Для кейла подойдет?
Запуск сделан с WinCE BSP (xldr).
В архиве часть файлов из тестовых проектов (все отдать не могу). Работал два года назад на фирменой плате, на стратер-китовой и на своей.
Если будут проблемы, наверное соберу рабочую версию проекта.
233 уже пожилой проц, зачем он вам? (сейчас кортексы рулят).

Прикрепленные файлы
Прикрепленный файл  2.7Z ( 19.46 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 11:12
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Из того что есть под рукой только эта плата. Спасибо сейчас посмотрю.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 7 2013, 11:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(sergey sva @ Dec 7 2013, 15:12) *
Из того что есть под рукой только эта плата. Спасибо сейчас посмотрю.

IAR должен предоставлять, по идее, стартап-файл для этого МК. МК не новый, мягко говоря. Думаю, IAR его поддерживает. Кейл - не факт, но все может быть.
Я когда-то так поднимал AM1707 от TI. Там тоже только Линукс. Из "подводных камней" - очень большая сложность самого МК, неполная и неудачная документация на МК и другие чисто первопроходческие трудности. Есть острая необходимость в подобном монстре ? Тогда осваивайте ...
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 12:26
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



У меня сейчас на компьютере не установлены не iar не keil. Для gcc бы startup. Сейчас переделаю тот что дали выше, если есть под gcc киньте
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 14:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Вроде все ок, получаю bin файл, как теперь зашить в эту плату ссылка ?
Go to the top of the page
 
+Quote Post
Major
сообщение Dec 7 2013, 16:16
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



В мануале написано что еcть JTAG, совмещенный с SD.
Есть еще одноверевочный SJTAG, но для него надо иметь CPLD, которая светит на JTAG.
Есть DUART, но лучше купить сегера или клон.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 17:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Как то неудобно, как максимально просто его прошить?, со временем куплю сегер. Сейчас нужно подручными средствами прошить. duart наверно самое простое. а как утиитка называется?, на сайте у freeskale вечность пройдет пока все пересмотришь.

у этого контроллера очень мало внутренней памяти 64 кб и 32озу.
С этой платой всего 2 дня разбираюсь поэтому возникают простые вопросы, реально сделать такое: в внутреннюю память поместить tcp и что бы после включения питания контроллер получал bin от пк, грузил его в озу и запускал его на выполнение?
Go to the top of the page
 
+Quote Post
Major
сообщение Dec 7 2013, 18:08
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



А DDR память не подходит?
Внутреннюю имеет смысл для тестов использовать, пока систему не поднял.
А потом ее отдать под вектора/кэш кода+данных/быстрая память.
Про загрузку все есть в ref manual (глава 35).
С уарта он не может грузиться, только с USB ил с SD-карты (если внешне).
Про уарт думалось, потому что WinCE его пользует. Но по факту все через УСБ. Весь софт на сайте фрискейла был.
Тут не помогу, программист для WInCE это делал. Я только жтагом пользовался, когда HAL поднимал под свою плату.





Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 18:28
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Хочу пока без системы, ddr подходит на плате 64мб есть но в нее как то нужно записать. Как сделать загрузку бинарника в эту плату без заморочек . Код будет часто менять, хотелось бы попроще сделать загрузить в плату?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 7 2013, 18:38
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Dec 7 2013, 22:28) *
Код будет часто менять, хотелось бы попроще сделать загрузить в плату?

Тогда u-boot и TFTP.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 18:47
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



uboot нужно загрузить в внутреннюю память 64кб а он уже будет грузить в озу?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 7 2013, 18:59
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Нет, в SDRAM. В 64кБ он не влезет.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 19:05
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Что то мне не понятно, как это сделать ( . проводов у меня нет для этого контроллера. Записать на ммску и установить загрузку с нее. Ладно гадать не буду завтра попробую разобраться, если будут советы рекомендации, буду очень благодарен.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 7 2013, 19:09
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Dec 7 2013, 23:05) *
Что то мне не понятно, как это сделать ( . проводов у меня нет для этого контроллера. Записать на ммску и установить загрузку с нее. Ладно гадать не буду завтра попробую разобраться, если будут советы рекомендации, буду очень благодарен.

Для загрузки годится USB-кабель или карта SD/MMC.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 7 2013, 19:25
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Нужно будет прошивку часто менять и после каждой перепрошивки перезагрузить плату. После она должна работать через tcp получать и передавать команды с пк. Это реально сделать без ос ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 7 2013, 19:34
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Без ОС - это без Linux, или совсем без? Но в любом случае реально.
Но под ОС сделать еще реальнее sm.gif И быстрее.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 7 2013, 20:25
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sergey sva @ Dec 7 2013, 23:05) *
Что то мне не понятно, как это сделать ( . проводов у меня нет для этого контроллера.


Все можно загрузить через USB, посмотрите MfgTool для своей платы, отправная точка для написания своего кода - imx-bootlets. Бинарник в формате ELF нужно преобразовать в специальный формат (sb) утилитой elftosb. Возьмите за основу как готовится образ u-boot

uboot.db

CODE

// STMP378x ROM command script to load and run U-Boot

sources {
power_prep="./power_prep";
sdram_prep="./boot_prep";
image="./u-boot";
}

section (0) {

//----------------------------------------------------------
// Power Supply initialization
//----------------------------------------------------------

load power_prep;
call power_prep;

//----------------------------------------------------------
// SDRAM initialization
//----------------------------------------------------------

load sdram_prep;
call sdram_prep;

//----------------------------------------------------------
// Load and call u_boot - ELF ARM image
//----------------------------------------------------------

load image;
call image;
}


вместо image="./u-boot"; подставьте имя своего бинарного файла в формате ELF, power_prep, boot_prep - бинарники получнные после сборки imx-bootlets, подготовка имиджа командой

./elftosb2 -z -c ./uboot.db -o uboot.sb

С заводсики установками процессора образ должен быть зашифрован, по умолчанию ключ - все поля нули, параметр -z elftosb служит для шифрования нулевым ключем
-z/--zero-key Add default key of all zeroes

Если внешнюю память не собираетесь использовать то модно не инициализировать - исключить загрузку sdram_prep из файла .db
Имидж можно загрузить через USB (MfgTool, sbloader), можно с носителя. Например для MMC можно записать этим скриптом

CODE

#!/bin/sh

echo -e "\033[1mUsage: sudo ./part disk_name [image.sb]\033[0m"
echo -e "\033[1mExample: sudo ./part /dev/mmcblk0 uboot.sb\033[0m"
exit
fi

if [ ! -b "$1" ]; then
echo -e "\033[1mError: $1 disk not found\033[0m"
exit
fi

if [[ "$1" =~ mmc ]]; then
p="p"
else
p=""
fi

dd if=/dev/zero of=$1 bs=512 count=1

sfdisk --force -uM $1 << EOF
,16,0x53
,,0x83
EOF

if [ ! -b "${1}${p}1" ]; then
echo -e "\033[1mError: partition ${1}${p}1 not found\033[0m"
exit
fi

if [ -n "$2" ]; then
echo -e "\033[1mWriting image $2 to partition ${1}${p}1 ...\033[0m"
dd if=/dev/zero of=${1}${p}1 bs=512 count=4
dd if=$2 of=${1}${p}1 bs=512 seek=4 conv=sync,notrunc
fi


Это все примеры для Linux, кроме утилит загрузки (MfgTool, sbloader), как сделать в Windows к сожалению не могу подсказать - по сути вам нужно только найти elftosb для Windows, проще наверно виртуалку с Linux поставить. Вы тут пару раз про TCP упоминали, имейте ввиду - встроенного EMAC у этих процессоров нет.

Сообщение отредактировал sasamy - Dec 7 2013, 21:24
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 8 2013, 08:16
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Благодарю за подробный ответ. Теперь вроде бы немного стало понятно. Только не смог найти утилиту под виндовс elftosb2.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 8 2013, 15:11
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



внутри загрузчик мелкий, он грузит с карты памяти остальное. В 64К можно и ТСР стэк уместить в целом и грузиться сразу через езернет, но все таки хочется обычно чтобы железка была хоть чуток самостоятельна, так что грузиться надо с карты памяти.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 8 2013, 18:13
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sergey sva @ Dec 8 2013, 12:16) *
Только не смог найти утилиту под виндовс elftosb2.


Исходники открыты
http://repository.timesys.com/buildsources...10.12.01.tar.gz

Цитата
Building

On Windows, open the .sln file in Microsoft Visual Studio. The solution contains projects
for each of the individual projects, including the old elftosb 1.x and related tools.

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 8 2013, 19:56
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(sasamy @ Dec 8 2013, 00:25) *
Это все примеры для Linux, кроме утилит загрузки (MfgTool, sbloader), как сделать в Windows к сожалению не могу подсказать - по сути вам нужно только найти elftosb для Windows, проще наверно виртуалку с Linux поставить. Вы тут пару раз про TCP упоминали, имейте ввиду - встроенного EMAC у этих процессоров нет.


И что ручками что ли все делается? Вся кухня с физикой на прерываниях и таймерах? А что линукс именно так работает с ethernet-ом? Во как грустно...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 8 2013, 20:11
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Зачем ручками? ENC28 на ките стоит, если не ошибаюсь. Или какой-нибудь USB-LAN можно приспособить. А Линукс - он разнообразно с Ethernet'ом работает, в т.ч. и через такие "костыли".
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 8 2013, 20:14
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(sergey sva @ Dec 8 2013, 12:16) *
Благодарю за подробный ответ. Теперь вроде бы немного стало понятно. Только не смог найти утилиту под виндовс elftosb2.

Вот три утилиты под винду:
[attachment=81506:CFImager....7.3.001.zip]
[attachment=81507:elftosb_2.6.1.zip]
[attachment=81508:sb_loade...g63b47f0.zip]
Софт под imx28, но они по документации работают и с imx23.
CFImager нужен чтобы записать *.sb файл в загрузочном виде на SD карту
elftosb - делает sb из одного или нескольких elf. Виндовой версией я не пользуюсь, создаю sb в линуксе.
sb_loader - заливает sb файл в проц по USB.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 9 2013, 06:36
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а... все же МАК железный. Я просто видел эту платку на ней езернет был, и подумал контроллер без мака, а езернет есть, не руками же...
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 9 2013, 09:03
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Спасибо выручили ).
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 13 2013, 10:49
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Можно после компиляции загружать в sd mmc карту файл test.sb вставленную в плату через сам процессор imx что бы карту не переставлять каждый раз в картридер ?
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 13 2013, 11:02
Сообщение #29


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(sergey sva @ Dec 13 2013, 14:49) *
Можно после компиляции загружать в sd mmc карту файл test.sb вставленную в плату через сам процессор imx что бы карту не переставлять каждый раз в картридер ?

Можно с помощью mfgtool
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 13 2013, 13:17
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Что то или делаю не правильно или может загрузчика в этой плате нет, после того как подключаю usb к пк в диспетчере задач появляется usb устройство с ошибкой
Цитата
Система Windows остановила это устройство, так как оно сообщило о возникновении неполадок. (Код 43)

Сбой запроса дескриптора USB-устройства.

Загрузка джамперами выбрана сsdmmc.

Решил вначале проверить плату с тем что есть. скачал с сайта mfgtool если правильно понял он грузит готовый образ линукса на карту и монтирует ее.
Переключил джамперы загрузка с usb. В диспетчере устройств появилось hid совместимое устройство. в MFGtool тоже появилось.
Нажимаю старт появляется
Цитата
Booting update firmware
прогресс доходит до конца и на этом все останавливается. и появляется ошибка
Цитата
Reason is unknown,failed to run command: type="boot" body="Recovery" file="updater.sb" timeout="10" onError="" text="Booting update firmware" Превышен таймаут семафора.


mmcка (4гига) должна быть отформатирована в fat32 или ее вначале нужно сделать загрузочной а потом можно будет менять через usb ?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 13 2013, 16:49
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Mожет проблема из за карты она 4гб, а адресное пространство контроллера 1гб думал что просто не будет видеть больше 1гбайта?
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 14 2013, 05:22
Сообщение #32


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(sergey sva @ Dec 13 2013, 17:17) *
Что то или делаю не правильно

Для mgftool нужно переключать джамперы на загрузку с usb, появится HID устройство.
updater.sb должен быть собран под вашу плату. Если ваша плата отличается от фрискейловской - работать не будет.
карта 4 гига будет видна. По моему ее можно вообще не форматировать - загрузочный блок пишется в обход ФС командой dd. Rootfs на карте как я понимаю вам не нужна.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 14 2013, 07:53
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Пробовал по всякому mfgtool не получилось загрузить, даже если бы не работало, но загрузиться должно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 14 2013, 08:14
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



защиту от записи на карте случаем не поставили?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 14 2013, 12:35
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Нет проверил.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 14 2013, 16:31
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Не в какую не работает загрузка mfgtools прогресс доходит до install mmcsd и вылетает ошибка.
Решил проверить плату просто помегать светодиодом. загрузил через sb_loader, загрузилось светодиод мигает, значит usb исправен.

Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 14 2013, 19:34
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



сд карты бывают многих форматов, и там при инициализации разные пути и регистры, может он на маленькие карты рассчитан а вы ему повышенной емкости воткнули?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 14 2013, 20:42
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Вот платка которая у меня ссылка Судя по документации адресное пространство 1гб, у меня была на 4 гагабайта. Карда мимни sdmms.
Посоветуйте идею как сделать такое, в внутренней памяти микроконтроллера загрузчик который запускается от перемычки он должен загружать на ммску прошивку по сети, перемычку размыкаем запускается программа с ммски, может уже есть готовое, что бы не заниматься изобретением велосипеда?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 15 2013, 06:35
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну кроме адресного пространства карты бывают разные. Посмотрите процесс инициализации СД карты увидите о чем я.

Вы только что описали стандартный загрузчик. Если стоит сигнал загрузки через него, в вашем случае перемычка, он поднимает ftp сервер, через который данные грузятся на СД карту. После этого снимаете перемычку и ресет (вместо перемычки можно и команду по езернет), перезагрузка и запуск с карты.

Есть ли такой готовый именно для вашей платы не знаю, но в целом это обычная штука...
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 15 2013, 08:02
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Скорее всего она не поддерживает sdhc Изучаю доку но пока не нашел какие карты поддерживает этот процессор.
Буду использовать если получится uboot , другие варианты загрузки не очень удобны(. Не приходилось разбираться с uboot, простой вопрос у меня есть testbin.sb Это простой бинарник который мигает светодиодом, что бы загрузчик передал ему управление нужно в скрипте ld перед сборкой testbin указать определенный адрес, не совсем понимаю как это работает(
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 19 2013, 12:32
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Немного проясняется )) Может есть примеры исходников первичной инициализации после включения питания?Обычно примеры на сайте производителя, но или я плохо смотрю или не то смотрю.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 19 2013, 17:51
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Понятно, не любят этот процессор.sm.gif
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 20 2013, 07:37
Сообщение #43


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(sergey sva @ Dec 19 2013, 16:32) *
Немного проясняется )) Может есть примеры исходников первичной инициализации после включения питания?Обычно примеры на сайте производителя, но или я плохо смотрю или не то смотрю.

Все есть в LTIB. Отступление от предлагаемых производителем инструментов означает что вы делаете все сами на пустом месте.
Первичная инициализация делается с помощью imx-bootlets
Исходники (первая попавшаяся ссылка из гугла) Тынц
Еще можете глянуть IMX_OBDS от imx28.


Цитата(sergey sva @ Dec 19 2013, 16:32) *
Понятно, не любят этот процессор.

Вы не умеете его готовить. Надо брать u-boot/barebox, ltib, yocto и т.п
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 20 2013, 10:33
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Спасибо, видимо у меня поиск еще плохо работает )) это не находил спасибо. Еще вопрос объясните просто ( на пальцах ) Что делать , цель: нужно сделать програмку которая будет работать из ммс карты. Операционная система не нужна, Первичную инициализацию берем к примеру из исходника imx-bootlets по ссылке выше. В том коде где то есть вызов main в конце инициализации правильно?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 21 2013, 11:12
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Помогите разобраться как работает, любые мысли. Проделал так: в линуксе собрал ubot из исходников именно для платы iMX233-OLinuXino-MAXI без ошибок все ок.
Скопировал все исходники на комп с windows и CodeSourcery eclipse. Нашел файл Start.s который вызывает функцию void board_init_ll(void) а она выполняет
Код
void mxs_common_spl_init(const iomux_cfg_t *iomux_setup, const unsigned int iomux_size)
{
    struct mxs_spl_data *data = (struct mxs_spl_data *)    ((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);
    uint8_t bootmode = mxs_get_bootmode_index();

    mxs_iomux_setup_multiple_pads(iomux_setup, iomux_size);

    mxs_power_init();

    mxs_mem_init();
    data->mem_dram_size = mxs_mem_get_size();

    data->boot_mode_idx = bootmode;

    mxs_power_wait_pswitch();

//если сюда добавлю вызов main из maincod там код мигания светодиодом то он после загрузки мигает.
//загружаю командой sb_loader.exe -f MovGen.sb загрузка происходит только в озу ,если выключить и включить питание сетодиод уже не мигает.
}

Все что связано с этими кодом нашел и добавил в проект.
Скомпилировал ошибок нет
Цитата
**** Build of configuration Release for project MovGen ****

cs-make all
mkdir .\output
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -D__ASSEMBLY__ -o .\src\Start.o .\src\Start.S
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Boot.o .\src\Spl_Boot.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Mem_Init.o .\src\Spl_Mem_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Misc.o .\src\Misc.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Timer.o .\src\Timer.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Memsize.o .\src\Memsize.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Iomux.o .\src\Iomux.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Mxs_gpio.o .\src\Mxs_gpio.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Power_Init.o .\src\Spl_Power_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Hang.o .\src\Hang.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\Spl_Lradc_Init.o .\src\Spl_Lradc_Init.c
arm-none-eabi-gcc -c -Wvolatile-register-var -mcpu=arm926ej-s -O0 -Wall -I.\include -I\include -o .\src\MainCod.o .\src\MainCod.c
arm-none-eabi-cpp -P -DBASE_ADDR=0x00002000 -o .\output\MovGen.ld .\src\MovGen.ld.in
arm-none-eabi-ld -o .\output\MovGen.elf .\src\Start.o .\src\Spl_Boot.o .\src\Spl_Mem_Init.o .\src\Misc.o .\src\Timer.o .\src\Memsize.o .\src\Iomux.o .\src\Mxs_gpio.o .\src\Spl_Power_Init.o .\src\Hang.o .\src\Spl_Lradc_Init.o .\src\MainCod.o --allow-multiple-definition -static -T .\output\MovGen.ld -Lc:/bin/../lib/gcc/arm-none-eabi/4.8.1/ -u,vfprintf -lgcc
arm-none-eabi-nm -n .\output\MovGen.elf > .\output\MovGen.elf.map
arm-none-eabi-objcopy -R -S -O binary -R .note -R .note.gnu.build-id -R .comment .\output\MovGen.elf .\output\MovGen.bin
./elftosb -V -z -c MovGen.db -o .\output\MovGen.sb
Boot Section 0x00000000:
LOAD | adr=0x00000000 | len=0x00003860 | crc=0x774c1b06 | flg=0x00000000
LOAD | adr=0x00003860 | len=0x000003f8 | crc=0x4b86a49c | flg=0x00000000
LOAD | adr=0x00003c58 | len=0x000000a4 | crc=0xfe426c8f | flg=0x00000000
FILL | adr=0x00003cfc | len=0x00000004 | ptn=0x00000000
JUMP | adr=0x000000c0 | arg=0x00000000 | flg=0x00000000

**** Build Finished ****

Появилось два предупреждения об не используемых функциях
Description Resource Path Location Type
Unused static function 'time_to_tick' Timer.c /MovGen/MovGen/src line 61 Code Analysis Problem
Unused static function 'us_to_tick' Timer.c /MovGen/MovGen/src line 67 Code Analysis Problem

Если кто понимает как это работает объясните пожалуйста.
Где то должна быть точка входа для маин, или как то переход на адресс на какой то с которого начнется выолнение кода?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 21 2013, 14:06
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



То что с ммски не запускалась нашел причину, видимо когда пояли плату тута попал припой, промыл все заработало.
Буду дальше разбираться, если есть советы давайте все быстрее разберусь с вашей помощью. ))
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 21 2013, 18:42
Сообщение #47


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(sergey sva @ Dec 21 2013, 15:12) *
Помогите разобраться как работает, любые мысли. Проделал так: в линуксе собрал ubot из исходников именно для платы iMX233-OLinuXino-MAXI без ошибок все ок.
...
Если кто понимает как это работает объясните пожалуйста.
Где то должна быть точка входа для маин, или как то переход на адресс на какой то с которого начнется выолнение кода?

SPL по моим представлениям не используется для imx23 / 28. SPL дублирует функциональность imx bootlets. По моему это связано с какими-то лицензионными заморочками. Я бы взял за основу linux_ivt.bd и вместо linux_prep вставил свою программу.
HAB Loader обрабатывает программы по порядку как это описано в .bd файле: сначала выполняется power_prep - инициализация источников питания, после чего управление передается HAB, затем HAB выполняет boot_prep - инициализация SDRAM, после чего выполняется linux_prep. Вот вместо linux_prep вам и нужно вставить вашу программу.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 21 2013, 20:29
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(_3m @ Dec 21 2013, 22:42) *
SPL по моим представлениям не используется для imx23 / 28. SPL дублирует функциональность imx bootlets. По моему это связано с какими-то лицензионными заморочками.


SPL для процессоров i.mx23/28/53/6x в майнстримном u-boot исключительно дань единообразию этого убута - не нужна для них никакая релокация внешним кодом, это все выполняет bootrom

Цитата
HAB Loader обрабатывает программы по порядку как это описано в .bd файле


в i.mx233 нет HAB, в i.mx28 есть

Цитата
Вот вместо linux_prep вам и нужно вставить вашу программу.


и чем это отличается от того как сделано в uboot.db ?
ТС - вы пока оставьте в покое майнстримный u-boot, все что вам надо я уже описал - imx-bootlets от своей платы (если там DDR не отличается от референса EVK то не обязательно от своей платы) и elftosb, возьмите утилиту readelf (думаю должна быть под Windows) - и исследуйте свои прошивки в формате ELF, посмотрите какие ключи есть у утилиты elftosb, там можно получить дополнительную и отладочную информацию при создании образа, посмотрите ./elftosb2 --help или как он там под windows называется. Как же вы беспомощны без окон и мышей sm.gif

Сообщение отредактировал sasamy - Dec 21 2013, 20:44
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 21 2013, 21:48
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Немного понятно сейчас посмотрю. Еще вопросик -bootlets выполняет первичную инициализацию, а где происходит настройка усб ,потом наверно нужно проинициализировать lan9512. Думаю гдето в ядре?
Может вообще зря хочу запустить все без линукса, причина одна мне нужны прерывания с частой 1мкс.

Еще не очень понятно как работают прерывания от таймера с ос линукс. После выполнения кода bootlets, таймер настраивается на прерывания с частотой 1милисек а в kernel где то лижит обработчик вектор которого записан в контроллер прерываний от таймера, правильно ?
Go to the top of the page
 
+Quote Post
sasamy
сообщение Dec 21 2013, 22:17
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sergey sva @ Dec 22 2013, 01:48) *
Немного понятно сейчас посмотрю. Еще вопросик -bootlets выполняет первичную инициализацию, а где происходит настройка усб ,потом наверно нужно проинициализировать lan9512. Думаю гдето в ядре?
Может вообще зря хочу запустить все без линукса, причина одна мне нужны прерывания с частой 1мкс.


У вас сплошные взаимоисключения - я лично не понимаю зачем вы выбрали i.mx23: нужна сеть а встроенного emac нет и выбираете изначально тухлый вариант с usb, собирались уместить все в IRAM (судя по всему код небольшой) - зачем-то взяли процессор с внешней памятью и MMU, нужен реалтайм который раком поставит любую GPOS и раздумываете насчет Linux. Это процессор для нетребовательных портативных мультимедийных приложений (встроенная система питания с драйвером заряда Li-Ion, встроенный пиксельный процессор и контроллер LCD, встроенный аудикодек) - вам нужно как раз то чего там нет, а то что там есть судя по всему не нужно совсем.

Сообщение отредактировал sasamy - Dec 21 2013, 22:49
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 22 2013, 06:37
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Я не выбирал этот процессор, у меня была эта плата решил ее немного помочить в образовательных целях )
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 22 2013, 19:29
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Возник такой вопрос скрипты одинаковые и для power_prep и для boot_prep
Код
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
    . = 0x00000000;
    . = ALIGN(4);
    .text : { *(.text) }
    .data : { *(.data) }
    .bss  : { *(.bss) }
}

Если к примеру добавлю файл с одной функцией и тоже проленкую с таким же скриптом, не пойму как запуститься на выполнение именно эта функция ?

Понял там есть файл на ассемблере, entry он передает управление.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Dec 23 2013, 11:49
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



В каком файле происходит инициализация usb, плохо ориентируюсь пока в исходниках ядра?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 18 2014, 20:06
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Что то у меня никак линукс не хочет работать, решил запустить готовое, скачал и сделал все как тут написано http://archlinuxarm.org/platforms/armv5/olinuxino но все равно не работает.
Там я так понимаю файловая система загрузчик и сам линукс ядро именно для платы olinuxino? sd чистая записал в нее ff
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 6 2014, 17:30
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Все работает )). Помогите настроить интернет на этой плате,подключил ее пк с интернетом, думаю нужно настроить netctl может есть готовые скрипты ? на самом пк настроил iptable и порты 53 и прочее это все работает, пробовал к этому пк подключать другой пк интернет есть. Теперь подключил эту плату и нужно в ней настроить интернет.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 7 2014, 17:07
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



интернет тоже заработал, в /etc/nectl есть примеры профилей настройки.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 10 2014, 18:31
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще проблема поставил lighttpd и fast_sgi, все сделал по этой инструкции вебсервер работает, а скрипты php открываются как обычной текст. в var/log/httpd пусто. Может такая проблема была у кого?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 11 2014, 13:33
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще вопрос по этому процессору и плате, Как долго проживет mmc у нее ведь есть ресурс на количество циклов записи, система по любому пишет логи?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 11 2014, 18:36
Сообщение #59


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



потому на компьютерах с твердотельными накопителями отключают и свапы и логи и все что можно отключить.


Но вообще эти карты живучие. Там и алгоритм равномерного износа, и алгоритм обхода испорченных секторов, и для места файловых таблиц увеличен ресурс. должна годы продержаться...
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 11 2014, 22:17
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Понятно,попробую все лишнее отключить. php тоже заработал я не раскоментировал строчку где загружается модуль mod_fastcgi.
Еще вопрос как работать с gpio через modfs экспорт пинов сделал, появились /sys/class/gpio/gpioxx как к ним обращаться на с++?
Как работать через память нашел пример вроде понял.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 12 2014, 01:23
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Разобрался через open write.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 12 2014, 13:48
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Какой программкой лучше снять образ sdmmc в windows, Что бы полностью все, MBR снять ..?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 12 2014, 17:54
Сообщение #63


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Когда делал поддержку SD кард, очень помогало WinHex, у него есть опция открыть диск, просто дает доступ к данным в посекторном режиме, и какие то асисты оказывает в разборе таблиц.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 12 2014, 19:43
Сообщение #64


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Сейчас скопировал Winhex с одной карты на другую все получилось. Только у меня не было карты на 2гб была на 4.
После копирования все работает ,но только на четырех гиговой карте видно только два утилитой df. Можно как то перемонтировать ее что бы остальное пространство прибавилось?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 12 2014, 19:48
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



конечно,
почитайте про файловые системы. В любой таблице есть разметка, на число секторов, размер кластеров и так далее... Копирую все данные, вы скопировали и эту разметку, потому и получилось 2.

Правда, там есть тонкость. Если у вас число кластеров в максимум, и надо менять их размер, то у вас все данные уедут. А если только число кластеров, то увеличите и дальше понеслось.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 12 2014, 20:41
Сообщение #66


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Не вручную же исправлять наверно утилитой какой нибудь?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 12 2014, 21:01
Сообщение #67


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(sergey sva @ Feb 13 2014, 00:41) *
Не вручную же исправлять наверно утилитой какой нибудь?

ну строго говоря процедура посекторного переноса данных не совсем нормальная, потому ручками, ручкамиsm.gif... да там 1 число поправил и готово....

можно попробовать через управление дисками, в новых виндусах не размеченную часть можно присоединить
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 13 2014, 08:00
Сообщение #68


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



А как правильнее ?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 13 2014, 10:34
Сообщение #69


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



скорее как безопаснее, безопаснее через утилиту управления дисками, расширить диск на не размеченную область. Но это может не сработать, тогда ручками....
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 14 2014, 18:58
Сообщение #70


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



С этим теперь тоже все понятно, нужно отформатировать как нужно а потом все перекопировать.
Не понятно как в линукс работать с pwm adc dac нужно вначале драйвер делать или они уже есть в ядре?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 19 2014, 11:44
Сообщение #71


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Попробовал управлять пинами через sysfs export >> gpio32 потом вывожу 1 в gpio32 а у меня устанавливается gpio35 и все пины со смещение работают, может у кого было такое?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 19 2014, 12:03
Сообщение #72


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



похоже на смещение шины адреса при 32 (4 байтном) режиме обращения.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 19 2014, 12:07
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Как это можно победить ? )
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 19 2014, 13:51
Сообщение #74


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ну для начала надо убедиться что это так.
ну потом попробовать указатели разной битности...
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 19 2014, 18:08
Сообщение #75


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Линукс мне этим и нравится ,что надо сделать то незнаю что, а потом убиться что сделал именно то не знаю что и после должно все заработать sm.gif
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 20 2014, 15:30
Сообщение #76


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Никак не пойму почему так выходит.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 20 2014, 17:47
Сообщение #77


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Попробовал через память тоже все смещено так же.
Код
    gpio_map();
    gpio_output(0,4);
    
    while(1)
    {
    GPIO_WRITE_PIN(4,1);
    sleep(1);
    GPIO_WRITE_PIN(4,0);
    sleep(1);
    
    }

Вместо PIN4 вывод на PIN13/LCD_D12. Не знаю что уже смотреть.

или
Код
    gpio_map();
    gpio_output(1,32);
    
    while(1)
    {
    GPIO_WRITE_PIN(32,1);
    sleep(1);
    GPIO_WRITE_PIN(32,0);
    sleep(1);
    
    }

Этот код выводит на PIN1/LCD_D00.
Неправильный доступ и через прямой доступ и через sysfs. У меня уже нет ума где смотреть
Разъем
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 22 2014, 10:16
Сообщение #78


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Разобрался после долгих экспирементов, gpio нумеруются 0 gpio -> это банк 0 пин 0; 32 gpio -> это банк 1 пин 0 и тд.
Если ядро поддерживает gpio ио к ним можно и лучше обращаться через sysfs. Набросал немного кода, работает может кому сгодится.
h
Код
#define     SIZENAM                  255

enum pinstatus {PIN_OFF,PIN_ON};
enum pindirection{PIN_IN,PIN_OUT};

int gpioexp(int pin_num,pindirection pd,pinstatus st);
int gpioini();
int gpioset(int pin_num,pinstatus ps);
pinstatus gpioget(int pin_num);

cpp
CODE
#include <stdio.h> /* For printf() */
#include <string.h> /* For strerror() */
#include <unistd.h> /* For read(), close() */
#include <fcntl.h> /* For open() */
#include <errno.h> /* For errno */
#include <sys/poll.h> /* For poll() */
#include <time.h>
#include <stdlib.h>
#include "gpio.h"


/*-------------------------------------------------------------------------------------------------------*/
int gpioexp(int pin_num,pindirection pd,pinstatus st){
FILE * fp = NULL;
char gpio_file_name[SIZENAM];
if ((fp = fopen("/sys/class/gpio/export", "ab")) != NULL)
{
rewind(fp);
fprintf(fp,"%d",pin_num);
fclose(fp);

}else{
printf("Cannot open GPIO value for %s\n","/sys/class/gpio/export");
return -1;
}

memset(gpio_file_name,0,SIZENAM);
sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/direction",pin_num);
if ((fp = fopen(gpio_file_name, "rb+")) != NULL)
{
rewind(fp);
switch(pd){
case PIN_IN:{
fprintf(fp,"in");
break;
}//case
case PIN_OUT:{
fprintf(fp,"out");
break;
}//case
default:break;
}//switch
fclose(fp);
if(pd!= PIN_IN){

memset(gpio_file_name,0,SIZENAM);
sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num);
if ((fp = fopen(gpio_file_name, "rb+")) != NULL)
{
switch(st){
case PIN_ON:{
fprintf(fp,"1");
break;
}//case
case PIN_OFF:{
fprintf(fp,"0");
break;
}//case
default:break;
}//switch
fclose(fp);
}
}

}
return 0;
}
/*-------------------------------------------------------------------------------------------------------*/
int gpioini(){
/* pin out */
gpioexp(32,PIN_OUT,PIN_OFF);
gpioexp(39,PIN_OUT,PIN_OFF);

/* pin in */
gpioexp(23,PIN_IN,PIN_OFF);

return 0;
}
/*-------------------------------------------------------------------------------------------------------*/
int gpioset(int pin_num,pinstatus ps){
FILE * fp = NULL;
char gpio_file_name[SIZENAM];

memset(gpio_file_name,0,SIZENAM);
sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num);
if ((fp = fopen(gpio_file_name, "rb+")) != NULL)
{
switch(ps){
case PIN_ON:{
fprintf(fp,"1");
break;
}//case
case PIN_OFF:{
fprintf(fp,"0");
break;
}//case
default:break;
}//switch

fclose(fp);
}
return 0;
}
/*-------------------------------------------------------------------------------------------------------*/
pinstatus gpioget(int pin_num){
FILE * fp = NULL;
char gpio_file_name[SIZENAM];
long lSize;
char * buffer;
size_t result;
int temm =0;
pinstatus ret = PIN_OFF;

memset(gpio_file_name,0,SIZENAM);
sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num);
if ((fp = fopen(gpio_file_name, "rb+")) != NULL)
{
fseek (fp , 0 , SEEK_END);
lSize = ftell (fp);
rewind (fp);

buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {
printf("Memory error");
}else{

result = fread (buffer,1,lSize,fp);
temm = atoi(buffer);

switch(temm){
case 0:{
ret = PIN_OFF;;
break;
}//case
case 1:{
ret = PIN_ON;
break;
}//case
default:break;
}//switch


}
free (buffer);
fclose(fp);
}
return ret;
}
/*-------------------------------------------------------------------------------------------------------*/

Есть еще одна проблема, после перезагрузки часы слетают, даже если есть батарея. Может у кого была похожая проблема?

Сообщение отредактировал IgorKossak - Feb 22 2014, 22:59
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 22 2014, 15:14
Сообщение #79


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Из чего могут часы сбрасываться после перезагрузки ? на аккумуляторе напряжение 3,6.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 23 2014, 09:27
Сообщение #80


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



В этом микроконтроллере нет часов есть Real-time clock который считает милисекунды, от него скорее всего считает время ос. Поэтому после перезагрузки нужно синхронизировать время каждый раз.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 23 2014, 11:46
Сообщение #81


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще заметил такое, если отверткой коснуться корпуса(общего провода) ,мост usb ethernet теряется, не всегда но бывает.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 24 2014, 17:58
Сообщение #82


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Что можно придумать что бы часы не сбрасывались каждый раз после перезагрузки?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 25 2014, 07:11
Сообщение #83


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



поставить внешние часы с батарейкой и с них брать данные после загрузки.
ну или не выключатся, а засыпать, и каждые час просыпаться корректировать часы. 32 битный счетчик таймера в микросекундах может насчитать 71 минуту
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Mar 1 2014, 12:25
Сообщение #84


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Сделал как вы посоветовали вроде все работает. У меня еще один вопрос у imx233 есть два аналоговых входа LRADC0 - 1 Мне нужно измерять 4 аналоговых сигнала (4 потенциометра), думал поставить мультиплесор типа4051 и переключать каналы на какой ни будь вход LRAD. Но проверил если я его замыкаю на землю то значение ацп 5-7 если на 3,3в то 3500. В документации написано что эти каналы низкого разрешениея12 бит
Какая точность будет, какой точности источник опорного напряжения, может все будет плавать в документации написано много но ничего не понятно. Как подсчитать какую точность даст этот ацп, или лучше поставить внешний ацп?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 1 2014, 18:41
Сообщение #85


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



12 битное АЦП дает 4096 значений, на весь свой диапазон работы обычно от 0 до 2 Vref, ну или -VRef до +Vref.
дальше выбираете сигнал какой хотите мерить подбираете рефернс и получаете разрешение.


С тем что у вас сейчас мы получаем на 3.3 вольта диапазон кодов 3500-7 = 3493.
и того у вас разрешение АЦП порядка 1 мВольт на код.
Усредняя значения и ставя хорошие буферы на входе можно получить точность в одной температуре +- 1 - 2 кода, то есть +- 2 мВольта.
общая дельта 4 мВольта от вашего сигнала 3.3 вольта - это примерно 0.1% приведенной погрешности

Дальше надо понять уход в температуре, и прочее, это надо читать в даташите на АЦП и опорник, какую погрешность оно дает на градус, умножаете на температурный диапазон и плюсуете, думаю для медленно меняющихся сигналов в ваших условиях вы получите где то 0.5% на приведенной погрешности.

Это что касается ацп, дальше у вас будет мультиплексор, который наверное тоже что-то внесет, или нет, я в них не особо понимаюsm.gif...

Вот и оценивайте хватает вам этого или нет
Go to the top of the page
 
+Quote Post

6 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 13:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.02402 секунд с 7
ELECTRONIX ©2004-2016