Jump to content

    

Linux на TMS320dm6437

Необходимо создать фаловую систему JFFS2 для NAND/NOR Flash, ядро есть и работает, MTD, JFFS2 включены в ядро, драйверы NAND Flash т.ж., но проблема в том что Linux не видит этот самый Nand Flash, какие могут быть соображения по этому поводу.

 

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

Я пищу Bin2Mot /On=42000000 /3 vmlinux, но выходной файл все равно без смещения.

 

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

Share this post


Link to post
Share on other sites
перевести бинарный образ ядра в Мотороловский S-Record

попробуйте objcopy

Share this post


Link to post
Share on other sites
Необходимо создать фаловую систему 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 в том месте, где выводится бинарник.

Share this post


Link to post
Share on other sites

Проблема в том, что ядро не видит NAND, наверное придется все делать для NOR Flash, но я не видел где можно включить драйверы в ядро (при конфигурации).

Если образ ядра - ELF файл, то, по идее, в начале должно быть записано ELF, но этой записи там нет, возможно что формат - COFF.

Тогда вопрос, как перевести COFF в обычный бинарник, чтобы можно было загрузить во флеш и из нее включить ядро.

Сама плата - EVM набор от TI. Linux от VirtualLogix.

Share this post


Link to post
Share on other sites
Проблема в том, что ядро не видит NAND, наверное придется все делать для NOR Flash, но я не видел где можно включить драйверы в ядро (при конфигурации).

Если образ ядра - ELF файл, то, по идее, в начале должно быть записано ELF, но этой записи там нет, возможно что формат - COFF.

Тогда вопрос, как перевести COFF в обычный бинарник, чтобы можно было загрузить во флеш и из нее включить ядро.

Сама плата - EVM набор от TI. Linux от VirtualLogix.

Запустите objcopy без параметров и посмотрите в самом конце список поддерживаемых форматов.

objcopy: supported targets: бла, бла, бла, бла, бла, бла, бла, бла.

И заодно изучите параметры и функции objcopy.

 

Вроде как COFF должен начинаться с COFF :).

Видимо Вы не тот файл смотрите.

Share this post


Link to post
Share on other sites
возможно что формат

попробуйте objdump

 

драйверы в ядро - в разделе MTD

Edited by Idle

Share this post


Link to post
Share on other sites
Необходимо создать фаловую систему JFFS2 для NAND/NOR Flash, ядро есть и работает, MTD, JFFS2 включены в ядро, драйверы NAND Flash т.ж., но проблема в том что Linux не видит этот самый Nand Flash, какие могут быть соображения по этому поводу.

 

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

Я пищу Bin2Mot /On=42000000 /3 vmlinux, но выходной файл все равно без смещения.

 

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

 

Ti изменил формат загрузчика для этого проца.

Может поможет вложенный файл:

spraag0c_bootloader.pdf

Share this post


Link to post
Share on other sites

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 ....

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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???

Share this post


Link to post
Share on other sites
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 настройками для загрузчика + исправленный скрипт.

bin.zip

Share this post


Link to post
Share on other sites
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.

 

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???

Share this post


Link to post
Share on other sites
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

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

 

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 - А он точно для Линукс?

Share this post


Link to post
Share on other sites
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 файл важен :). Он отвечает за начальную конфигурацию загрузчика. Настройки DDR, PLL и т.д. смотри spraag0c (пункт 8.6). Первая строка это код функции, дальше тип команды и число аргументов.

 

Попробуйте сначала добиться работы самого простого своего проекта. Так чтобы он грузился из памяти.

Процессор точно стартует из NOR? Чем зашиваете программу? Может быть ошибка в программе прошивки?

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

 

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???

Насчет Линукса ничем помочь не могу.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this