Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: nboot для s3c2410
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
TrueCyrix
Здравствуйте!
Я уже не знаю куда мне обратиться за помощью, толи никто ничего не понимает, толи просто не хотят помочь.

Вобщем есть некое устройство, собранное на процессоре типа ARM9 от Samsung (SC32410) на плате ядра, кроме кристала есть встроенная flash память 64 МБ. Так же у этого устройства есть не большой LCD дисплей, по моему 8 дюймов. Мне нужно переписать два загрузчика, nboot и eboot, а затем загрузить WinCE 4.2 Net или 5-ю. Для этого процессора есть такой SMDK2410 который включает в себя исходники nboot и eboot НО!!! Я никак не могу найти способ получить из этих исходников nboot.bin (4кб) и eboot.bin (96кб) - облазил весь интернет, пробовал всякие там keil и прочее - одни компиляторы кричат, что им вечно чего-то не хватает, другие орут что диалект написания кода давно устарел и что в Makefile вместо -cpu ARM920T надо писать --cpu ARM920T и ещё куча матов в этом роде. У меня уже мозг клинит, не знаю что и делать.
Пробовал Platform Builder - но это вообще жесть! Там даже один nboot собрать не смог - оказывается его там просто нет!

кто может помочь, откликнитесь пожалуйста!
Fedor
Цитата(TrueCyrix @ Aug 6 2013, 14:02) *
Здравствуйте!
Я уже не знаю куда мне обратиться за помощью, толи никто ничего не понимает, толи просто не хотят помочь.

Вобщем есть некое устройство, собранное на процессоре типа ARM9 от Samsung (SC32410) на плате ядра, кроме кристала есть встроенная flash память 64 МБ. Так же у этого устройства есть не большой LCD дисплей, по моему 8


Так выложте исходники nboot и eboot
TrueCyrix
Цитата(Fedor @ Aug 6 2013, 21:04) *
Так выложте исходники nboot и eboot


исходники во вложении.

а вот то самое устройство, для котрого я пытаюсь собрать эти загрузчики
http://www.shtrih-m.ru/production/produce_663.html

это не отладочная плата, а рабочее устройство. Сами производители не хотят идти со мной на контакт, потому, что считают, что я хочу похитить их продукт - а мне просто надо использовать это устройство для других целей без их логотипов и прочего. Там при загрузке из eboot на экран вылезает полосатый конь - логотип ЗАО "ШТРИХ-М" - мне это не интересно, в самой WinCE - так же на рабочем столе логотип ШТРИХ-М - который не убирается, короче мне нужно переписать загрузчики и саму WinCE без всяких логотипов.

На сайте samsung вообще ничего найти не могу не про nboot не про eboot - зато сколько непристойных ссылок находит поисковик при вводе eboot - специально будешь искать - не найдёшь, а тут вот нате пожалуйста.
Jury093
Цитата(TrueCyrix @ Aug 7 2013, 09:12) *
На сайте samsung вообще ничего найти не могу не про nboot не про eboot - зато сколько непристойных ссылок находит поисковик при вводе eboot - специально будешь искать - не найдёшь, а тут вот нате пожалуйста.

а в ваших исходниках не смотрели? например там есть такая строчка:
Код
In stead, we used ARM Development Suite v1.2 to build NAND bootloader.

http://nitroroms.com/show/file-info/L40353...1.2-ELA.7z.html
TrueCyrix
Спасибо за ссылку, я пробовал эту программу, только другой версии - вот она то и ругалась на устаревший диалект. В версии 1.2 которая по ссылке при сборке не видит компилятор "Couldn't find compiler "ARM Compiler"" - хотя он там есть. Может быть надо пути где-то прописать?


во время make по кнопке F7 из Metrowerks CodeWarrior for ARM Deverloper Suite v1.2 ругается всё на тот же диалект - вот пример:

Error : (Serious) C2947E: Illegal types for operands: '.' 2410loader.c line 224

а вот сама строка:

*pbUUID = toc.udid[i];

ему точка не нравится - а почему??? ведь даже версия сборщика и компилятора совпадают!
Golikov A.
а структура toc то где то описана? а тип ее совпадает?
ему не точка не нравится а несовпадение операндов. А Вы вообще программист?

еще есть настройки компилятора и среды, какие типа можно переводить неявно какие нет и прочее...
Fedor
Судя по грепу в исходниках не объявлена структура ТОС?
Код
Binary file 2410loader.axf matches
Binary file 2410loader.bin matches
2410loader.c:80:    // Hardcoded to fetch TOC descriptor dwEntry
2410loader.c:99:TOC toc; // made global because it's too big for our tiny stack
2410loader.c:108:    if ( !FMD_ReadSector(TOC_SECTOR,
2410loader.c:116:    if ( !VALID_TOC(&toc) ) {
2410loader.c:117:        Uart_SendString("ERR_INVALID_TOC: ");
2410loader.c:119:        return ERR_INVALID_TOC;
2410loader.c:124:    // Search through the TOC to match the signature
Binary file 2410loader.elf matches
Binary file bin/nboot.bin matches
Binary file bin/nboot.axf matches
boot.txt:6:    Block 1 is the TOC block which specifies the layout on the NAND
boot.txt:37:    The layout on the first sector of TOC block is:
boot.txt:39:    typedef struct _TOC_SECTOR {
boot.txt:43:    } TOC_SECTOR, *PTOC_SECTOR;
boot.txt:52:        For development, we can write our own TOC sector so that id[0] points to
nand.h:77:#define ERR_INVALID_TOC           8
nand.h:113:    ULONG   nummods;                // number of TOCentry's
Binary file obj/2410loader.o matches



И скорее всего она определна в файле
..\inc\loader.h которого нет в исходниках
TrueCyrix
вобще я программист, но не С и С++ - я люблю и пишу на Visual Basic-е
до этого писал программы для MCS-51 но тоже не на C++ а на специализированном интерпритатотре - получалось и получается не плохо. А вот не давно решил попробовать этот ужас под названием ARM9 и естественно все исходники на С++.

ладно... это всё лирика...

файла loader.h действительно нет в исходниках и я его где-то нашёл и засунул в каталог с проектом, проект собрался и скомпилировался без ошибок! Я получил на выходе долгожданный nboot.bin - но вот беда, он получился больше 4-х килобайт (4197 байт) и он не влезет в NAND! там нужен размер 4096. Где и как подгоняется размер я пока не разобрался. Может быть кто нибудь в курсе как вобще можно повлиять на размер?
Fedor
Цитата(TrueCyrix @ Aug 7 2013, 22:42) *
больше 4-х килобайт (4197 байт) и он не влезет в NAND! там нужен размер 4096. Где и как подгоняется размер я пока не разобрался. Может быть кто нибудь в курсе как вобще можно повлиять на размер?

как такое может быть вообще NAND<4096 ??
Jury093
Цитата(TrueCyrix @ Aug 7 2013, 20:42) *
Может быть кто нибудь в курсе как вобще можно повлиять на размер?

есть три пути:
- поискать у компилятора ключ оптимизации (по размеру или быстродействию) возможно он выключен..
- поискать в исходниках "ненужные" ветки подпрограмм, например для заведомо отсутствующей периферии..
- закомментарить вывод всей консольной информации - буквы съедают драгоценные байты.. оставить только последнее "мяу" перед загрузкой очередного бинарника..
TrueCyrix
Цитата(Fedor @ Aug 7 2013, 21:29) *
как такое может быть вообще NAND<4096 ??



при попытке засунуть туда 4097 байт возникает ошибка при загрузке в устройство.
Jury093
Цитата(Fedor @ Aug 7 2013, 21:29) *
как такое может быть вообще NAND<4096 ??

вероятно ТС имел ввиду размер страницы в нанде, а не физический размер флеша..
TrueCyrix
Цитата(Jury093 @ Aug 7 2013, 21:36) *
есть три пути:
- поискать у компилятора ключ оптимизации (по размеру или быстродействию) возможно он выключен..
- поискать в исходниках "ненужные" ветки подпрограмм, например для заведомо отсутствующей периферии..
- закомментарить вывод всей консольной информации - буквы съедают драгоценные байты.. оставить только последнее "мяу" перед загрузкой очередного бинарника..



спасибо, сейчас попробую.

Цитата(Jury093 @ Aug 7 2013, 21:37) *
вероятно ТС имел ввиду размер страницы в нанде, а не физический размер флеша..


да! всё верно! я не так выразился!

Получилось уменьшить размер!!! Спасибо Jury093! Завтра попробую залить в устройство и по мигать отладочными светодиодами на плате ядра! Далеко не уходите, не бросайте меня, а то мало ли чего... Fedor, спасибо за подсказку по поводу loader.h!
TrueCyrix
Залил nboot в устройство и оно мне плюнуло в uart следующее:

WinCE NAND Boot v1.00
Aug 08 2013 11:21:39

dwEntry is 0x00000001

Boot ERROR:0x00000008

теперь надо как-то грамотно собрать eboot, чтобы nboot проглотил его и передал ему управление... понятия не имею как это сделать.

всё пропало!
у меня исходник nboot-а который даже рядом не стоял с родным nboot.bin для этого устройства.

Во первых в родном nboot-е исключены любые выводы в uart чтобы уложиться в 4096, во вторых в оригинальном nboot при старте происходит инициализация дисплея LCD, включается подсветка и белый фон, через секунду он тухнет, да и на доп.дисплее (алфавитно-цифровом, однорядном) отображается версия лоадера. А в моём варианте при подаче питания он сразу же стртует без кнопки страта и со звуковым сигналом ошибки. На доп.дисплее "PROGRAMMING MODE". Вобщем засада. Значит мне надо как-то не позволить ему включаться при подаче питания - только по кнопке и проинициализировать LCD дисплей. Какой ужас! Рано я обрадовался. sad.gif Геморрой только начался.
Dron_Gus
Цитата(TrueCyrix @ Aug 8 2013, 12:08) *
sad.gif Геморрой только начался.

У вас хоть схема на устройство то есть? Без этого дальнейшее копание не имеет смысла, имхо.
Проше расковырять родные загрузчик и образ wince и подправить там необходимые ресурсы.
TrueCyrix
Цитата(Dron_Gus @ Aug 9 2013, 13:05) *
У вас хоть схема на устройство то есть? Без этого дальнейшее копание не имеет смысла, имхо.
Проше расковырять родные загрузчик и образ wince и подправить там необходимые ресурсы.


Как может помочь схема на устройство? Схема есть. Расковырять родные nboot.bin и eboot.nb0 не получилось. Смог только удалить картинку полосатого коня из eboot-а но индикатор загрузки всё равно остался. Ковырять nk.bin вобще не имеет никакого смысла, потому что при распаковке уже внутри устройства происходит какой-то сбой CRC и всё подвисает.

Сам по себе nboot.bin не большой, но вот как его грамотно декомпилировать - понятия не имею, у меня не получилось.
Dron_Gus
Цитата(TrueCyrix @ Aug 12 2013, 14:32) *
Как может помочь схема на устройство? Схема есть. Расковырять родные nboot.bin и eboot.nb0 не получилось. Смог только удалить картинку полосатого коня из eboot-а но индикатор загрузки всё равно остался. Ковырять nk.bin вобще не имеет никакого смысла, потому что при распаковке уже внутри устройства происходит какой-то сбой CRC и всё подвисает.

Сам по себе nboot.bin не большой, но вот как его грамотно декомпилировать - понятия не имею, у меня не получилось.

Ну раз схема есть, значит теоретически Вы сможете настроить все перриферию как надо.
nboot.bin можно попробовать поковырять IDA.
TrueCyrix
на плате ядра имеются отладочные светодиоды 4 штуки, которые сидят на порте GPF4...GPF7 как погасить/засветить биты этого порта?
Jury093
Цитата(TrueCyrix @ Dec 9 2013, 12:02) *
на плате ядра имеются отладочные светодиоды 4 штуки, которые сидят на порте GPF4...GPF7 как погасить/засветить биты этого порта?

право, с такими вопросами пора в раздел для начинающих..
1. ищете мануал на свой процессор
2. в мануале ищете раздел с описанием GPIO
3. изучаете список регистров и возможные семплы в этом разделе
в общем случае чтобы "помигать" светодиодом надо настроить нужный пин на режим "выход" и вывести в него 0/1..
в зависимости от паранойи может потребоваться - включение тактирования узла GPIO, разблокировка доступа к узлу GPIO, перестроить режим с MFD на GPIO

короче, ищите и читайте ман..
TrueCyrix
Спасибо за ответ, наверное Вы правы, мне надо сходить в раздел для начинающих.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.