Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
C чего начать. (Сильно только не бейте новичка) - Embedded Linux - Форум - starterkit.ru
Ник:
Пароль:

Контакты

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 » Embedded Linux
C чего начать. (Сильно только не бейте новичка)
bde (Guest)
Добавлено 30.11.1999 00:00 Редактировалось 16.04.2009 22:47
0
Сообщение: 1
bde (Guest)

Оригинал темы находится здесь http://www.starterkit.ru/new/index.php?name=Forums&op=showtopic&id=152
Спуститься к концу Подняться к началу
bde (Guest)
Добавлено 07.10.2008 20:12 Редактировалось 07.10.2008 20:12 Сообщение: 2
bde (Guest)

Помогите начать работу с платой c Linux-ом раньше не работал и вообще это первый мой опыт работы с АРМ-ми. До этого работал на 51-процах (в Keil-е ) и AVR на IAR. Что хочу сделать?
1. Приспособить платку для опроса датчиков .
2. Вести архивы по каждому из датчиков.
3. Сбрасывать эти архивы на флешку или MMC/SD карту.
4. Подключить 4х5 клавиатуру.
5. ЖКИ планирую подключить пока символьный но потом графику.
Вот в кратце задача которую хотелось бы решить. НО для начала стою перед выбором то ли Linux заливать то ли в Keil-e все делать. Выложите или дайте ссылку где скачать пример как ногой порта хотя бы подергать. По поводу Linux установил и запустил с диска RedHat. Попытался сделать простенькую прогу типа Hello World по примеру, откомпилить не получилось кучу ошибок выдал :(.
Спуститься к концу Подняться к началу
Lexey (Guest)
Добавлено 07.10.2008 22:13 Редактировалось 07.10.2008 22:13 Сообщение: 3
Lexey (Guest)

Меня тоже не бейте, я новичек, но пару слов скажу. :)

Для Keil-a, запускается и дрыгает ногой пример ...KeilARMBoardsAtmelAT91SAM9260-EKBlinkylinky.Uv2
Выполнил для Target SAM9260 Int RAM, для выполнения в Ext RAM поправлял SAM9260.s на другой кварц и SDRAM 16bit.
Запускал в DEBUG, пользуя MT-Link, включенный в Keil как J-Link. Без дебага пускал через командную строку JLink.exe со скриптом
Код

r
w1 0xffffef00, 0x03
loadbin mybin.bin, 0x0000
g
qc

Для получения .bin из .axf пользовал утилиту Кейла
fromelf --bin -o <mybin.bin> <axf-файл>


Почти простой HelloWorld, но и ещё пишет на карточку файл и измеряет скорость записи.
hello.cpp
Код

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <sys/time.h>
#define FILEBIN "/mnt/mmc/test.bin"
#define SIZEBUFF 1000000
unsigned long GetTickCount()
{
timeval tval;
struct timezone tzon;
gettimeofday(&tval,&tzon);
unsigned long t;
t=(unsigned long)tval.tv_sec * 1000 + tval.tv_usec/1000;
return t;
}

int main (int argc,char *argv[])//,char *envp[])
{
unsigned char *obuf;
obuf=(unsigned char *)malloc(SIZEBUFF);
for (int i=0;i<2048;i++)
{
obuf[i]=(unsigned char)i;
}
printf("ARM CPU work!
");
remove(FILEBIN);
FILE *fd=fopen(FILEBIN,"wb");
if(fd<0)
printf("error open file
");
unsigned long tic=GetTickCount();
for(int i=0;i<20000;i++)
{
size_t sizw=fwrite(obuf,1,512,fd);
};
fseek(fd,0,SEEK_END);
size_t lenf=ftell(fd);
fclose(fd);
free(obuf);
char txt[40];
unsigned long tti=GetTickCount()-tic;
sprintf(txt,"file size %d time %d %f
",lenf,tti,(float)lenf * 1000/(float)tti);
printf(txt);
printf("FIN prog!
");
return 0;
}


И Makefile
Код

CC=arm-none-linux-gnueabi-gcc
CXX=arm-none-linux-gnueabi-g++
LD=arm-linux-ld

LDFLAGS=-L/usr/local/arm-linux/arm-linux/lib -static -s
LIBS=-L/usr/local/arm-none-linux-gnueabi/lib -static -s

export CC
export CXX
export LD
export LDFLAGS

EXEC = hello
OBJS = hello.o

all: $(EXEC)

$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) $(LIBS) -o $@ ./$(OBJS) $(LDLIBS$(LDLIBS_$@))
cp $(EXEC) /tftpboot/vidarm
romfs:
$(ROMFSINST) ./$(EXEC)

clean:
-rm -f $(EXEC) *.elf *.gdb *.o


Для удобства писанины включил на плате telnetd и из VisualStudio одной кнопкой компилю и выполняю удаленно на платке, с выводом всего в студию.

PS. Если где не прав, поправьте меня, пжалста.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно Lexey 07.10.2008 г. в 22:19:11
Спуститься к концу Подняться к началу
Strijar (Guest)
Добавлено 07.10.2008 22:16 Редактировалось 07.10.2008 22:16 Сообщение: 4
Strijar (Guest)

Если проблемы с большим "Линуксом" - то начинать надо с него. На плате будет то-же самое. В сети очень много материала по Unix системам - мой любимый ресурс www.opennet.ru Что-бы работать с GPIO скорей всего нужно будет написать свой простенький драйвер - если разберетесь с самим процессором и с Линукс, то это не сложно. Спрашивайте конкретно, поможем - все начинали когда-то ;)
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 08.10.2008 11:09 Редактировалось 08.10.2008 11:09 Сообщение: 5
starterkit (Guest)

Ребята, спасибо за участие!
Присоединяюсь к предыдущему совету, начните с Linux, проще потом будет свое решение на другие архитектуры переносить (если на них Linux будет работать).
В Linux нельзя из приложений пользователя обращаться напрямую к регистрам железа, по началу это кажется очень неудобно, но ко всему привыкаете (со временем создадите свой "проектный драйвер" через который будете обращаться ко всему на свете). Общаться с железом можно через системные вызовы или драйвера, я предпочитаю второй вариант.
В качестве "затравки" прилагаю к тексту драйвер (правда от платы SK-AT91SAM9XE512-S3E) для управления питанием модема SIM508 ...

2 Lexey
А Вы не гмогли бы поподробнее расписать манипуляции по настройке Ваших "удобств" (и как юзеров создавали чтоб телнетом заходить)?
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 08.10.2008 13:19 Редактировалось 08.10.2008 13:19 Сообщение: 6
sasamy (Guest)

>В Linux нельзя из приложений пользователя обращаться напрямую к регистрам железа

Это не совсем так :) например для gpio
http://forum.sparkfun.com/viewtopic.php?p=52483&sid=7e96cab25f81c8a55946e881bd905b03
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 08.10.2008 13:22 Редактировалось 08.10.2008 13:22 Сообщение: 7
sasamy (Guest)

Для gpio в 2.6.27 похоже будет возможность управлять из пространства пользователя через sysfs (посути просто запись в файл)
http://www.linuxhq.com/kernel/v2.6/27-rc9/Documentation/gpio.txt
Спуститься к концу Подняться к началу
Strijar (Guest)
Добавлено 08.10.2008 14:14 Редактировалось 08.10.2008 14:14 Сообщение: 8
Strijar (Guest)

Я на SK-LPC2478-S3E тоже захожу телнетом. Тот что идет в комплекте вообще не делает авторизацию - молча запускает "рутом" ;) Так дополнительные пользователи не нужны.

Все телодвижения - это включить inetd и telnetd в Network Application. Его автоматом прописывает в /etc/inetd.conf
Спуститься к концу Подняться к началу
starterkit (Guest)
Добавлено 08.10.2008 14:28 Редактировалось 08.10.2008 14:28 Сообщение: 9
starterkit (Guest)

Это потому как для uClinux "все" автоматом прикручивается, для плат SK-XA91 все настройки только руками ...
Спуститься к концу Подняться к началу
Lexey (Guest)
Добавлено 08.10.2008 14:52 Редактировалось 08.10.2008 14:52 Сообщение: 10
Lexey (Guest)

Юзеров на плате я не создавал. Добавил в busybox-1.1.2 telnetd, на плате в etc/rc.d запускаю: "/usr/sbin/telnetd -l /bin/ash". И телнетом на плату заходит без юзеров.

Далее про удобства. Я пользуюсь VisualStudio.NET, начинал с ней работать для виндовых приложений, потом для FreeBSD в ней демонов писал, теперь и для ARM-а её заточил. Не спорю, что Eclips или Slickedit может и удобнее (в слике писал для МК Fujitsu), но привычка сильная штука. :)
Прикладываю архив работающего проекта для VS.NET.
vs.net.arm.ZIP
По архиву:

file_onEK_bin.zip - скрипт goarm, который выполняется на платке (его надо добавить в rootfs и обновить во флешке). Он копирует с tftp сервера и запускает прогу.

hello_vm_files.zip - файлы, которые лежат в виртуальной машине, в /home/projects/helloarm

proj_vs.zip - файлы проекта для VisualStudio.NET, лежат на виндовой машине в c:projectslinuxarm

kslink.zip - kslink.exe , самописная утилитка, некая прослойка для VS.NET, она всего лишь пускает другое приложение, в даннном случае plink и telnet, захватывает вывод, редактирует его и возвращает в окно студии. Это чтоб сообщения компилятора об ошибках обрабатывались по двойному клику в студии и "прыгало" на нужную строку. А также для запуска телнета с выполнением команд после подключения к платке. Можно без этой утилиты все настроить, но было проще написать её.

Ко всему этому мои локальные IP адреса:
Пришлось изменить и на плате, т.к. моя локалка другой подсети, а проводов и так много на столе.
192.168.1.8 - Моя рабочая машина с w2kPro и VisualStudio.NET
192.168.1.2 - Виртуальная машина с RedHat (с диска), потом перенесу на отдельное железо, ибо неудобно. Включена SAMBA, в рабочей машине и проекте выглядит как диск O.
192.168.1.136 - SK-MAT91SAM9XE512, соотвественно и адрес TFTP сервера на плате заменил на 192.168.1.2.

Как это все функционирует:
На VM лежат исходники, в студии я их редактирую, по F7 выполняется через SSH на виртуальной машине Makefile, все сообщения компилятора возвращаются в окно студии. После компиляции и копирования на VM в tftpboot, запускается телнет, но цепляется с платкой и выполняет скрипт, который в свою очередь копирует с tftp и запускает бинарник, опять же с выводом всего в окно VisualStudio.
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Embedded Linux