|
Содержание
QNXQNX представляет собой коммерческую операционную систему для встраиваемых применений. Начиная с версии 6.4.0 часть системы распространяется в исходных текстах. Установка системы программированияСистема программирования называется QNX Momentics. Для установки необходимо скачать образы компакт-дисков: В Линуксе запускаем установщик: cd /media/cdrom0 sudo ./momentics-6.3.2-200709062316-linux.bin Установщик спросит ключ лицензии. Файлы будут размещены в каталогах /opt/qnx632 и /etc/qnx. Потребуется 1210 Мбайт дискового пространства. Чтобы не мучиться с активацией, просто заменяем файл /etc/qnx/licence/licences на аналогичный от прежней установки. Альтернативный вариант установки описан здесь. Установщик добавляет необходимые переменные окружения в /etc/profile. Требуется выйти и заново войти в систему. В качестве ярлыка запуска используем файл qnx_momentics.desktop. При первом запуске введите имя каталога, где будут размещаться разрабатываемые проекты, например “/home/vak/Project/QNX”. Поддержка целевой платформыПакет поддержки целевой платформы (BSP, board support package) для плат ИТМиВТ с процессором Элвис МС-24 разработан фирмой SWD Software. Пакет включает следующие файлы:
Поместим эти файлы в каталоге ~/Project/QNX/bsp-mc24-swd. Простейший проектПо традиции, создадим простейший проект в стиле “Hello, World”. Делаем каталог: cd ~/Project/QNX mkdir hello cd hello Создаём файл hello.c: #include <stdio.h> int main () { printf ("Welcome to QNX\n"); return 0; } Создаём файл hello.use, содержащий текстовую информацию о вызове программы:
Usage:
hello
С помощью утилиты addvariant порождаем стандартные файлы сборки “Makefile”, “common.mk” и “mips-le/Makefile”. Подробнее о файлах сборки можно прочитать в статье "Conventions for Makefiles and Directories". addvariant -i VARIANT mips-le Компилируем утилиту hello: make Протокол компиляции можно посмотреть здесь. Образ для загрузкиСоздадим образ для прошивки в flash-память целевой платы. Добавим в файл “common.mk” требуемые правила сборки: ifndef QCONFIG QCONFIG=qconfig.mk endif include $(QCONFIG) POST_TARGET = $(PROJECT).srec EXTRA_CLEAN = *.ifs *.srec *~ $(PROJECT_ROOT)/*.bin $(PROJECT_ROOT)/*~ include $(MKFILES_ROOT)/qtargets.mk $(PROJECT).srec: $(PROJECT).ifs $(PROJECT_ROOT)/ipl.bin cat $(PROJECT_ROOT)/ipl.bin $(PROJECT).ifs | mkrec -r -oBFC00000 > $@ ls -l $@ $(PROJECT).ifs: $(PROJECT_ROOT)/$(PROJECT).build hello mkifs -v -r$(PROJECT_ROOT)/../bsp-mc24-swd $(PROJECT_ROOT)/$(PROJECT).build $@ $(PROJECT_ROOT)/ipl.bin: $(QNX_HOST)/usr/bin/ntomips-objcopy -Ielf32-littlemips \ -Obinary $(PROJECT_ROOT)/../bsp-mc24-swd/mipsle/boot/sys/ipl-mc24 \ ipl-tmp.bin mkrec -r -ffull -s8k ipl-tmp.bin > $(PROJECT_ROOT)/ipl.bin @rm -f ipl-tmp.bin Создаём файл “hello.build” с заданием для утилиты mkifs. Здесь собран комплект базовых утилит операционной системы, а также наш файл “hello”:
[image=0x80200000]
[virtual=mipsle,binary +compress] .bootstrap = {
startup-mc24 -f 80M,80M
PATH=/bin:/sbin LD_LIBRARY_PATH=/lib procnto-32-mc24 -v
}
[+script] .script = {
display_msg ""
display_msg >>> Welcome to QNX Neutrino running on MC24 ITMVT board <<<
uname -a
SYSNAME=nto
TERM=qansi
[+session] ksh &
}
[type=link] /usr = /
[type=link] /lib/ldqnx.so.2 = libc.so.2
[type=link] /tmp = /dev/shmem
[type=link] /bin/sh = ksh
[type=link] /bin/less = more
/lib/libc.so = libc.so
/lib/libm.so = libm.so
[search=${QNX_TARGET}] /lib/terminfo/q/qansi = usr/lib/terminfo/q/qansi
[data=copy]
/bin/ksh = ksh
/bin/echo = echo
/bin/env = env
/bin/ls = ls
/bin/cat = cat
/bin/more = more
/bin/cp = cp
/bin/ln = ln
/bin/mv = mv
/bin/mkdir = mkdir
/bin/rm = rm
/bin/rmdir = rmdir
/bin/touch = touch
/bin/date = date
/bin/uname = uname
/bin/tty = tty
/bin/du = du
/bin/pidin = pidin
/bin/sin = sin
/bin/hogs = hogs
/bin/slay = slay
/bin/stty = stty
/bin/on = on
/bin/use = use
/bin/hd = hd
/bin/vi = vi
/sbin/pipe = pipe
/bin/hello = ./hello
Запускаем сборку: make Получаем файл “hello.srec”, занимающий 875 килобайт памяти. Протокол можно посмотреть здесь. Образ можно прошить в flash-память платы утилитой mcprog: mcprog hello.srec Стартовая утилитаВ стартовом скрипте первой должна выполняться стартовая утилита startup-mc24. Её аргументы описаны в документе "Image startup programs: handle common options".
For ‘f’ option, all frequencies can be followed by H for hertz, K for kilohertz, or M for megahertz (these suffixes aren’t case-sensitive). If no suffix is given, the library assumes megahertz if the number is less than 1000; otherwise, it assumes hertz. If they’re specified, cpu_freq, cycles_freq, and timer_freq are used to set the corresponding variables in the startup code:
|
||||||||||||||||||||||||||||||||||||||||||||