Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Linux на TMS320dm6437
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Erv&Sed
Необходимо создать фаловую систему JFFS2 для NAND/NOR Flash, ядро есть и работает, MTD, JFFS2 включены в ядро, драйверы NAND Flash т.ж., но проблема в том что Linux не видит этот самый Nand Flash, какие могут быть соображения по этому поводу.

Есть еще один вопрос, как можно перевести бинарный образ ядра в Мотороловский S-Record, это необходимо для того чтобы зашить образ ядра прямо во флэш, специальная утиллита понмает только этот форма. Я знаю что есть Bin2Mot, но она не принимает информацию об смещении, а мне нужно смещение 0x42000000.
Я пищу Bin2Mot /On=42000000 /3 vmlinux, но выходной файл все равно без смещения.

У кого какие соображения по этим вопросам?
Idle
Цитата(Erv&Sed @ May 16 2008, 11:16) *
перевести бинарный образ ядра в Мотороловский S-Record

попробуйте objcopy
amw
Цитата(Erv&Sed @ May 16 2008, 10:16) *
Необходимо создать фаловую систему JFFS2 для NAND/NOR Flash, ядро есть и работает, MTD, JFFS2 включены в ядро, драйверы NAND Flash т.ж., но проблема в том что Linux не видит этот самый Nand Flash, какие могут быть соображения по этому поводу.

Не понятно в чем собственно проблема.
Если нужно создать JFFS2 образ для прошивки его в NAND то нужно использовать mkfs.jffs2.
Если же Линукс не видит микросхему, то либо что-то не так со схемой, либо с конфигурацией шины, либо с драйвером собственно NAND.
Цитата
Есть еще один вопрос, как можно перевести бинарный образ ядра в Мотороловский S-Record, это необходимо для того чтобы зашить образ ядра прямо во флэш, специальная утиллита понмает только этот форма. Я знаю что есть Bin2Mot, но она не принимает информацию об смещении, а мне нужно смещение 0x42000000.
Я пищу Bin2Mot /On=42000000 /3 vmlinux, но выходной файл все равно без смещения.

У кого какие соображения по этим вопросам?

Мммм.... А objcopy этого не может? Только выводить нужно не из бинарика а из elf-образа. Его имя vmlinux и он лежит в корневике дерева исходников ядра после компиляции.
Или подправить Makefile в том месте, где выводится бинарник.
Erv&Sed
Проблема в том, что ядро не видит NAND, наверное придется все делать для NOR Flash, но я не видел где можно включить драйверы в ядро (при конфигурации).
Если образ ядра - ELF файл, то, по идее, в начале должно быть записано ELF, но этой записи там нет, возможно что формат - COFF.
Тогда вопрос, как перевести COFF в обычный бинарник, чтобы можно было загрузить во флеш и из нее включить ядро.
Сама плата - EVM набор от TI. Linux от VirtualLogix.
amw
Цитата(Erv&Sed @ May 18 2008, 16:09) *
Проблема в том, что ядро не видит NAND, наверное придется все делать для NOR Flash, но я не видел где можно включить драйверы в ядро (при конфигурации).
Если образ ядра - ELF файл, то, по идее, в начале должно быть записано ELF, но этой записи там нет, возможно что формат - COFF.
Тогда вопрос, как перевести COFF в обычный бинарник, чтобы можно было загрузить во флеш и из нее включить ядро.
Сама плата - EVM набор от TI. Linux от VirtualLogix.

Запустите objcopy без параметров и посмотрите в самом конце список поддерживаемых форматов.
objcopy: supported targets: бла, бла, бла, бла, бла, бла, бла, бла.
И заодно изучите параметры и функции objcopy.

Вроде как COFF должен начинаться с COFF smile.gif.
Видимо Вы не тот файл смотрите.
Idle
Цитата(Erv&Sed @ May 18 2008, 17:09) *
возможно что формат

попробуйте objdump

драйверы в ядро - в разделе MTD
owl
Цитата(Erv&Sed @ May 16 2008, 11:16) *
Необходимо создать фаловую систему JFFS2 для NAND/NOR Flash, ядро есть и работает, MTD, JFFS2 включены в ядро, драйверы NAND Flash т.ж., но проблема в том что Linux не видит этот самый Nand Flash, какие могут быть соображения по этому поводу.

Есть еще один вопрос, как можно перевести бинарный образ ядра в Мотороловский S-Record, это необходимо для того чтобы зашить образ ядра прямо во флэш, специальная утиллита понмает только этот форма. Я знаю что есть Bin2Mot, но она не принимает информацию об смещении, а мне нужно смещение 0x42000000.
Я пищу Bin2Mot /On=42000000 /3 vmlinux, но выходной файл все равно без смещения.

У кого какие соображения по этим вопросам?


Ti изменил формат загрузчика для этого проца.
Может поможет вложенный файл:
Erv&Sed
objcopy ne ponimaet, vse delo v tom chto architektura ne ta.
A na schet zagruzchika - ia videl eto, daje novuyu versiu etogo dokummmenta, no ix script genais - rabotaet ne korrektno! videlyaet ogromnor kolichestvo pamyanti i strashno tormozit.

Vse delo v tom chto est primer led.out, ya ego kormlu im script hexais.exe (.NET), on vivodit led.hex, format u nego - AIS v S-RECORD`e, pri zapisi ego na NOR, ona rabotaet normalno, pri perezagruzke on migaet svetodiodami. A te je manitulyacii s vmlinux ne srabativaet.

Zadacha v tom, chtobi zapustit linux s failovoi sistemoi imenno s FLASH (NOR/NAND), seichas prixoditsya zapuskat vmlinux cherez CC Studio, a failovaya sistema cherez NFS iportiruetsya iz Mandrivi.

Ya dumau chto vmlinux COFF formata, t.k. v nem napisano chto-to tipa: TMS320C6x COFF Linker UNIX v6.0.8 ....
owl
Цитата(Erv&Sed @ May 19 2008, 13:28) *
objcopy ne ponimaet, vse delo v tom chto architektura ne ta.
A na schet zagruzchika - ia videl eto, daje novuyu versiu etogo dokummmenta, no ix script genais - rabotaet ne korrektno! videlyaet ogromnor kolichestvo pamyanti i strashno tormozit.

Vse delo v tom chto est primer led.out, ya ego kormlu im script hexais.exe (.NET), on vivodit led.hex, format u nego - AIS v S-RECORD`e, pri zapisi ego na NOR, ona rabotaet normalno, pri perezagruzke on migaet svetodiodami. A te je manitulyacii s vmlinux ne srabativaet.

Zadacha v tom, chtobi zapustit linux s failovoi sistemoi imenno s FLASH (NOR/NAND), seichas prixoditsya zapuskat vmlinux cherez CC Studio, a failovaya sistema cherez NFS iportiruetsya iz Mandrivi.

Ya dumau chto vmlinux COFF formata, t.k. v nem napisano chto-to tipa: TMS320C6x COFF Linker UNIX v6.0.8 ....


Скрипт переписал. Насколько помню, там была ошибка с созданием временных файлов.
Когда ковырялся с загрузчиком, проект тоже по началу не запускался. Дело было в начальной конфигурации памяти DDR и задании умножителя. Это оказалось важно. Тоже светодиоды мигали а более серьезные примеры, требовавшие внешней памяти .... Пользовался ais_utility.
У меня проект под DSP BIOS. Для того чтобы его запустить в стартапе потребовалась настройка кэша и pinmux.
Erv&Sed
A mojno po podrobney, vi probovali zapustit linux na nem, u vas TMS320DM6437 EVM???
Mojno u vas poprosit ispravlenniy script, ya v Perl`e ne sharu. I chto za AIS_Utility?



Po idee mozno vedj skopirovat obraz yadra posle zagruzki v CC Studio, ona vedj kopiruetsia v operativku po adres 0x80000400? Tolko kak eto sdelat, mojet sdelat dump pamiati pri rabote yadra???
owl
Цитата(Erv&Sed @ May 19 2008, 15:17) *
A mojno po podrobney, vi probovali zapustit linux na nem, u vas TMS320DM6437 EVM???
Mojno u vas poprosit ispravlenniy script, ya v Perl`e ne sharu. I chto za AIS_Utility?
Po idee mozno vedj skopirovat obraz yadra posle zagruzki v CC Studio, ona vedj kopiruetsia v operativku po adres 0x80000400? Tolko kak eto sdelat, mojet sdelat dump pamiati pri rabote yadra???

К сожалению в Linux не разбираюсь совершенно. В этом не могу помочь, наоборот самому интересно о возможности нормально поставить гео.
Попробовали поставить на board linux - Virtual Logic (т.е. ту демку которая идет с платой). Да он пошел Среда комозера + удаленная загрузка из сети. А что толку, если Dm6437 держит, насколько я знаю, только Virtual logic и если я не ошибаюсь, купить в минимальной конфигурации будет начиная от 7 к$. Не говоря уже о фирменных кодеках, которые должны под него стать.
AIS_Utility - это набор с тем скриптом, который должен генерить bin файл для прошивки.
В приложении архив с примером bat файла для создания бинарника для заливки в Spi флешь + Cfg c настройками для загрузчика + исправленный скрипт.
Erv&Sed
owl spasibo, seichas budu probovat.
Erv&Sed
Цитата(Erv&Sed @ May 19 2008, 16:05) *
owl spasibo, seichas budu probovat.

Poproboval - toje samoe, pravdo bez configurazionnogo faila, u menja zagruzka s NOR, esli ne sekret chto imenno delaet etot konfiguracionniy fail dlja zagruzchika. Pervie stroki eto funkcia, no chto ona delaet ya ne razobralsya.

Цитата(Erv&Sed @ May 19 2008, 16:05) *
owl spasibo, seichas budu probovat.

Poproboval - toje samoe, pravdo bez configurazionnogo faila, u menja zagruzka s NOR, esli ne sekret chto imenno delaet etot konfiguracionniy fail dlja zagruzchika. Pervie stroki eto funkcia, no chto ona delaet ya ne razobralsya.

I eshe vopros, kak mne nado scompelirovat programmi chtobi ix mojno bilo vkluchat iz linuxa na plate. Ya pereopredelil gcc kak c64xplus-jaluna-gcc, i includniki k /cg6x_0_8_eval/include, kogda zapuskay pishet "applet not found", chto eto znachit???
amw
Цитата(Erv&Sed @ May 19 2008, 12:28) *
objcopy ne ponimaet, vse delo v tom chto architektura ne ta.

Так, давайте по порядку.
objcopy - название программы, выполняющей копирование (частей)объектных файлов.
Собственно objcopy - это нативная тулса, как и gcc, например.
Для того чтобы выполнить какое либо действие с объектником для Вашего TI процессора нужно использовать не нативную тулсу, а из комплекта кросскомпилера. В таком случае к имени файла программы добавляется префикс.
Например если у меня в плате ARM AT91SAM9xxx с линукс то я использую arm-linux-gcc, arm-linux-objcopy и пр.
Если у меня LPC23xx то я использую arm-elf-gcc, arm-elf-objcopy и тп. Если dsPIC - то pic30-gcc, pic30-objcopy......
Какой уВас кросскомпилер? Вот его <target-arch-os>-objcopy и нужно использовать.
По идее преобразование форматов выглядит так
Код
<target-arch-os>-objcopy -I binary -O srec zImage zImage.srec

МОжно поиграться параметрами
Код
<target-arch-os>-objcopy -I binary -O srec --change-section-lma 0x12345678 --change-section-vma 0x87654321 zImage zImage.srec

Или что-то в этом роде.

Цитата(Erv&Sed @ May 19 2008, 18:09) *
I eshe vopros, kak mne nado scompelirovat programmi chtobi ix mojno bilo vkluchat iz linuxa na plate. Ya pereopredelil gcc kak c64xplus-jaluna-gcc, i includniki k /cg6x_0_8_eval/include, kogda zapuskay pishet "applet not found", chto eto znachit???

c64xplus-jaluna-gcc - это и есть Ваш кросскомпилер? Тогда
main.c:
Код
#include <stdio.h>
int main(int argc, char * argv[])
{
printf("Hello World\n");
return 0;
}

Компилим для начала статически (не используем динамические либы, их может не быть или не хватать или еще чего)
Код
c64xplus-jaluna-gcc -static -o tst main.c

Копируем tst на плату, запускаем.

Ошибку "applet not found" дает скорее всего busybox потому как не находит библиотек. Скомпилируйте сначала статически свою программу. Сам busybox, на сколько я догадываюсь, запускается?
PS: c64xplus-jaluna-gcc - А он точно для Линукс?
owl
Цитата(Erv&Sed @ May 19 2008, 19:09) *
Poproboval - toje samoe, pravdo bez configurazionnogo faila, u menja zagruzka s NOR, esli ne sekret chto imenno delaet etot konfiguracionniy fail dlja zagruzchika. Pervie stroki eto funkcia, no chto ona delaet ya ne razobralsya.
Poproboval - toje samoe, pravdo bez configurazionnogo faila, u menja zagruzka s NOR, esli ne sekret chto imenno delaet etot konfiguracionniy fail dlja zagruzchika. Pervie stroki eto funkcia, no chto ona delaet ya ne razobralsya.

Cfg файл важен smile.gif. Он отвечает за начальную конфигурацию загрузчика. Настройки DDR, PLL и т.д. смотри spraag0c (пункт 8.6). Первая строка это код функции, дальше тип команды и число аргументов.

Попробуйте сначала добиться работы самого простого своего проекта. Так чтобы он грузился из памяти.
Процессор точно стартует из NOR? Чем зашиваете программу? Может быть ошибка в программе прошивки?
Еще одно но, когда вы работаете в симуляторе, часть работы по инициализации процессора выполняет GEL файл. Т.о. та программа, которая грузится, должна выполнить теже действия (необходимые для работы) Настройка кэша, мультиплексирование выводов и т.д.

Цитата(Erv&Sed @ May 19 2008, 19:09) *
I eshe vopros, kak mne nado scompelirovat programmi chtobi ix mojno bilo vkluchat iz linuxa na plate. Ya pereopredelil gcc kak c64xplus-jaluna-gcc, i includniki k /cg6x_0_8_eval/include, kogda zapuskay pishet "applet not found", chto eto znachit???

Насчет Линукса ничем помочь не могу.
RCray
Цитата(Erv&Sed @ May 19 2008, 19:09) *
I eshe vopros, kak mne nado scompelirovat programmi chtobi ix mojno bilo vkluchat iz linuxa na plate. Ya pereopredelil gcc kak c64xplus-jaluna-gcc, i includniki k /cg6x_0_8_eval/include, kogda zapuskay pishet "applet not found", chto eto znachit???


"applet not found" - значит, что файл для данной системы не является исполняемым, проще говоря, ваш компилятор создал объектный файл не того формата.
Erv&Sed
Цитата(owl @ May 20 2008, 10:31) *
Cfg файл важен smile.gif. Он отвечает за начальную конфигурацию загрузчика. Настройки DDR, PLL и т.д. смотри spraag0c (пункт 8.6). Первая строка это код функции, дальше тип команды и число аргументов.

Попробуйте сначала добиться работы самого простого своего проекта. Так чтобы он грузился из памяти.
Процессор точно стартует из NOR? Чем зашиваете программу? Может быть ошибка в программе прошивки?
Еще одно но, когда вы работаете в симуляторе, часть работы по инициализации процессора выполняет GEL файл. Т.о. та программа, которая грузится, должна выполнить теже действия (необходимые для работы) Настройка кэша, мультиплексирование выводов и т.д.
Насчет Линукса ничем помочь не могу.

Poxoje mne pridetsa napisat svoi cfg fail, samiy prostoi primer - rabotaet, no ya ego preobrazuu s pomoshu hesAIS, proshivau utilitoi FlashBurn DSK, posle perezagruzki vse primer vkluchaetsa. Sam hexAIS dopisivaet neobxodimie instrukcii AIS formata dlya inicializacii.

Seichas posmotrel - v primere led.out zagrujaeca v cach/RAM pamyat, a vmlinux v DDR, vpolne vozmojno chto problema zdes.

Ogromnoe spasibo za pomosh.

Цитата(amw @ May 19 2008, 20:56) *
Так, давайте по порядку.
objcopy - название программы, выполняющей копирование (частей)объектных файлов.
Собственно objcopy - это нативная тулса, как и gcc, например.
Для того чтобы выполнить какое либо действие с объектником для Вашего TI процессора нужно использовать не нативную тулсу, а из комплекта кросскомпилера. В таком случае к имени файла программы добавляется префикс.
Например если у меня в плате ARM AT91SAM9xxx с линукс то я использую arm-linux-gcc, arm-linux-objcopy и пр.
Если у меня LPC23xx то я использую arm-elf-gcc, arm-elf-objcopy и тп. Если dsPIC - то pic30-gcc, pic30-objcopy......
Какой уВас кросскомпилер? Вот его <target-arch-os>-objcopy и нужно использовать.
По идее преобразование форматов выглядит так
Код
<target-arch-os>-objcopy -I binary -O srec zImage zImage.srec

МОжно поиграться параметрами
Код
<target-arch-os>-objcopy -I binary -O srec --change-section-lma 0x12345678 --change-section-vma 0x87654321 zImage zImage.srec

Или что-то в этом роде.
c64xplus-jaluna-gcc - это и есть Ваш кросскомпилер? Тогда
main.c:
Код
#include <stdio.h>
int main(int argc, char * argv[])
{
printf("Hello World\n");
return 0;
}

Компилим для начала статически (не используем динамические либы, их может не быть или не хватать или еще чего)
Код
c64xplus-jaluna-gcc -static -o tst main.c

Копируем tst на плату, запускаем.

Ошибку "applet not found" дает скорее всего busybox потому как не находит библиотек. Скомпилируйте сначала статически свою программу. Сам busybox, на сколько я догадываюсь, запускается?
PS: c64xplus-jaluna-gcc - А он точно для Линукс?


Da, ya uje ponayl chto mne nujno imenno c64xplus-jaluna-objcopy, seichas probuyu sdelat chto-libo s ee pomoshu, no poxoje mne chistiy binarnik ne podoydet, u neg mnogo neskolko sekcii, i dlya kajdoy mne nujno napisat svoi AIS komandu dlya togo, chtobi zagruzchik zagruzil ee po nujnomu adresu.

A vot na schet primera - kompiliruu, copiruu v nujnuu papku i zapuskau iz vstroennoy linuxi - otvet tot-je. Applet not found.
BusyBox ustanovlen, no, po moemu, ne polniy.

Mojno po podrobney chto za biblioteki ne xvataet i otkudo ee kopirovatj.

Mojet vse delo v #include <stdio.h>, sdio.h ona konecho naxodit, no TI predlagaet svoi stdio.h, kak pravilno zapisat v makfile`e adres k bibliotekam???
Erv&Sed
Цитата(Erv&Sed @ May 20 2008, 11:05) *

Xorosho primer ya otcompiliroval, i teper on vkluchaetsia (nujni bili kluchi -Wl,-ar), no MTD-Utiliti vse ravno ne xochet vkluchatsa (s novimi kluchami), v chem mojet bitj problema?
amw
Цитата(Erv&Sed @ May 20 2008, 17:00) *
nujni bili kluchi -Wl,-ar

Что-то не понял про ключ -a.
man ld
Цитата
-akeyword
This option is supported for HP/UX compatibility. The keyword argument must be one of the strings archive, shared, or default. -aarchive is functionally equivalent to -Bstatic, and the other two keywords are functionally equivalent to -Bdynamic. This option may be used any number of times.

Для просмотра библиотек, с которыми слинкован исполняемый файл можно использовать objdump.
Например если есть программа tst то
Код
objdump -x tst
.....
Dynamic Section:
  NEEDED      librt.so.1
  NEEDED      libc.so.6
.....


или readelf

Код
readelf -d tst

Dynamic section at offset 0x670 contains 22 entries:
  Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
.....


Цитата(Erv&Sed @ May 20 2008, 17:00) *
MTD-Utiliti vse ravno ne xochet vkluchatsa (s novimi kluchami), v chem mojet bitj problema?

Вы пытаетесь работать с MTD изнутри целевой системы? Вроде так можно тоже, но я не проьовал.
Вместо этого я делаю образ JFFS2 и прошиваю его во флеш. Можно сделать пустой образ а файлы потом создавать уже в целевой плате.
Для этого используется mkfs.jffs2. Обратите внимание на опцию -p.
Erv&Sed
Цитата(amw @ May 20 2008, 19:56) *
Что-то не понял про ключ -a.
man ld

Для просмотра библиотек, с которыми слинкован исполняемый файл можно использовать objdump.
Например если есть программа tst то
Код
objdump -x tst
.....
Dynamic Section:
  NEEDED      librt.so.1
  NEEDED      libc.so.6
.....


или readelf

Код
readelf -d tst

Dynamic section at offset 0x670 contains 22 entries:
  Tag        Type                         Name/Value
0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
.....

Вы пытаетесь работать с MTD изнутри целевой системы? Вроде так можно тоже, но я не проьовал.
Вместо этого я делаю образ JFFS2 и прошиваю его во флеш. Можно сделать пустой образ а файлы потом создавать уже в целевой плате.
Для этого используется mkfs.jffs2. Обратите внимание на опцию -p.



A razve ne nujno specialnie polya,flagi i t.d. vedj vo flash pamyatj nujno, krome togo, zapisatj jadro v specialnoy forme, a obraz doljen idti v posleduushix erase_bloack`ax??? razve ne tak.
Krome togo ya nikak ne mogu zastavitj yadro videtj FLASH`ku, pri konfiguracii ya vkluchau neobxodimie polya dlya NAND, no vse ravno on ego ne vidit., ne znau v chem problema, a dlya NOR u nego voobshe nichego netu.

linux_build_dir/bin/c6x-linux-gcc myprog.c -o myprog -Wl,-ar , tak on zapustilsya, a jaluna (sm. vishe) - eto nazvanie porta - jaluna linux.
Erv&Sed
Всем спасибо за помощь, в итоге сейчас я работаю на другой плате и Линукса для нее нету.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.