пилите лучше, меньше отвлекайтесь, может чего и лучше напилите --- лучше самоутвердитесь, меньше засирать в другие ветки будетеМне это не мешает. Незя без перерывов корпеть над SDK и т.д. Сообщения не только для вас - не впечатляйтесь
пилите лучше, меньше отвлекайтесь, может чего и лучше напилите --- лучше самоутвердитесь, меньше засирать в другие ветки будетеМне это не мешает. Незя без перерывов корпеть над SDK и т.д. Сообщения не только для вас - не впечатляйтесь
Мне уж скоро на пенсию - какое самоутверждение - куда его?пилите лучше, меньше отвлекайтесь, может чего и лучше напилите --- лучше самоутвердитесь, меньше засирать в другие ветки будете
Да вот начал ваше обновление изучать. ram_1 из sdk вы безжалостко выкинули, дергаете его самостоятельно из elf по секциям .bootloader .boot.head .loader.head так упоминания о них не нахожу. Подозреваю что все ваше чудо это должно быть в rtl_boot.c, так его компилирую, приставку .boot добавляю и ничего.Мне уж скоро на пенсию - какое самоутверждение - куда его?
Помалеху допилю, но оно и счас работает, пофиксено на каком-то этапе, надо чистить хидеры и выкидывать больной Hal Spic, да вырезать текстовый интерфейс работы с WiFi (много места занимает, а функциональность нулевая - обслуживает не более 10-ки команд всего, а тянет линковку за собой кучи часто ненужных кусков...) Улучшать можно вечно - на всех хватит
Вы уже прощаетесь? Работа то не закончена - нема работающего waf и программатора на Питоне...
Да, проверку нужно добавить.Решил попробовать данный сборщик, собрался проект быстро, а вот прошить не получается. Ошибка на картинке:
Чип подключен, связь через JLink устанавливается. Куда копать?
У Вас дар вчитываться в такоеЕсли вчитаться в ошибку, то причина в разрядности Windows. Прописал путь к JLink_x64.dll и прошилось успешно.
P.S. Еще бы инструкцию в картинках как это дело в Eclipce прицепить, тогда глядишь и желающих протестировать будет больше
И цель configure, зачем она? Хотелось бы отдельную папку с SDK и waf, где всё настроено, чтобы эту папку цеплять к каждому проекту. Не копипастить ж SDK в каждый проектC Eclipse, как и с любой IDE все просто, добавляйте исходники, прописывайте либы, include, на build
boot - это последняя добавленная часть из десяток на данный момент. Стандартный, от SDK, не подходит - он имеет ошибки, не имеет исходников, и не совместим с разными вариантами прошивок, к примеру от Admeba Arduino, т.к. он от старого SDK 2015 года. Ну и пришлось вписывать спец. сборку для него, т.к. стандартный не может собираться в GCC в том-же проекте, даже если к нему были-бы исходники. Не нравиться - пользуйтесь стандартным SDK с бинарным кодом boot, без возможности его изменения и ловите его глюки, что вы и сделали в своем сборщике, пока вам сто раз не уточнили. Со стандартным boot startup оф. SDK виснет, если не верны прописанные установки в 9-ом секторе, а он их сам туда пишет неправильныеДа вот начал ваше обновление изучать. ram_1 из sdk вы безжалостко выкинули, дергаете его самостоятельно из elf по секциям .bootloader .boot.head .loader.head так упоминания о них не нахожу. Подозреваю что все ваше чудо это должно быть в rtl_boot.c, так его компилирую, приставку .boot добавляю и ничего.
Где вопрос про секции? Опять тупите? Все секции описаны в rlx8195A-symbol-v04-img2.ld. В sdkbuild.mk для rlt_boot.c секции переименовываются - добавляетсяУ вас талант отвечать много да не то. Я не порицал вас за самописный ram_1, даже наоборот восторгаюсь вашими способностями в этом. Я спросил где в исходниках прячутся секции для него? Вроде скомпилировал все, а секций нет.
Именно так и делал.Где вопрос про секции? Опять тупите? Все секции описаны в rlx8195A-symbol-v04-img2.ld. В sdkbuild.mk для rlt_boot.c секции переименовываются - добавляется
[inline]@$(OBJCOPY) --prefix-alloc-sections .boot $(OBJ_DIR)/$@[/inline]
C:\projects\wafmeba-RTL00MP3\build\RTL00_SDKV35a\component\soc\realtek\8195a\fwlib\ram_lib\rtl_boot.o: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .boot.text 00000000 00000000 00000000 00000034 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .boot.data 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .boot.bss 00000000 00000000 00000000 00000034 2**0
ALLOC
3 .boot.text.flashcpy 0000009e 00000000 00000000 00000034 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
4 .boot.text.get_seg_id 00000034 00000000 00000000 000000d4 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
5 .boot.text.RtlConsolRam 00000024 00000000 00000000 00000108 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
6 .boot.text.InitSpicFlashType 00000040 00000000 00000000 0000012c 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
7 .boot.text.EnterImage15 000005cc 00000000 00000000 0000016c 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
8 .boot.text.RtlBoot4ToSram 00000006 00000000 00000000 00000738 2**1
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
9 .boot.text.RtlBoot3ToSram 00000006 00000000 00000000 0000073e 2**1
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
10 .boot.text.RtlBoot2ToSram 00000006 00000000 00000000 00000744 2**1
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
11 .boot.text.RtlBoot1ToSram 00000006 00000000 00000000 0000074a 2**1
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
12 .boot.text.RtlBootToFlash 00000006 00000000 00000000 00000750 2**1
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
13 .boot.rodata.txt_tab_seg 00000020 00000000 00000000 00000758 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
14 .boot.rodata.tab_seg_def 00000038 00000000 00000000 00000778 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
15 .boot.start.ram.data 00000014 00000000 00000000 000007b0 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA
16 .boot.data.spic_table_flash 0000001c 00000000 00000000 000007c4 2**2
CONTENTS, ALLOC, LOAD, DATA
17 .boot.rodata.str1.1 00000186 00000000 00000000 000007e0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
18 .boot.bss.SEG_ID 00000004 00000000 00000000 00000968 2**2
ALLOC
19 .boot.data.InitTabParaAllClk 00000048 00000000 00000000 00000968 2**2
CONTENTS, ALLOC, LOAD, DATA
20 .debug_info 00001a04 00000000 00000000 000009b0 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
21 .debug_abbrev 00000468 00000000 00000000 000023b4 2**0
CONTENTS, READONLY, DEBUGGING
22 .debug_loc 00000620 00000000 00000000 0000281c 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
23 .debug_aranges 00000068 00000000 00000000 00002e3c 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
24 .debug_ranges 00000180 00000000 00000000 00002ea4 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
25 .debug_line 0000072f 00000000 00000000 00003024 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
26 .debug_str 000012f6 00000000 00000000 00003753 2**0
CONTENTS, READONLY, DEBUGGING
27 .comment 0000006f 00000000 00000000 00004a49 2**0
CONTENTS, READONLY
28 .debug_frame 000000fc 00000000 00000000 00004ab8 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
29 .ARM.attributes 00000033 00000000 00000000 00004bb4 2**0
CONTENTS, READONLY
C:\projects\wafmeba-RTL00MP3\build\app.axf: file format elf32-littlearm
Sections:
Idx Name Size VMA LMA File off Algn
0 .rom_ram 00000bc8 10000000 10000000 00010000 2**4
CONTENTS, ALLOC, LOAD, DATA
1 .ram_image1.text 0000201c 10000bc8 10000bc8 00010bc8 2**3
CONTENTS, ALLOC, LOAD, CODE
2 .romheap 00000c00 10002400 10002400 00022400 2**0
ALLOC
3 .tcm 0000a800 1fff0000 1fff0000 00070000 2**2
CONTENTS, ALLOC, LOAD, DATA
4 .image2.start.table 00000038 10006000 10006000 00016000 2**2
CONTENTS, ALLOC, LOAD, DATA
5 .ram_image2.text 00036310 10006038 10006038 00016038 2**3
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .ram_image2.rodata 00010dd8 1003c348 1003c348 0004c348 2**2
CONTENTS, ALLOC, LOAD, DATA
7 .ram.data 000019a8 1004d120 1004d120 0005d120 2**2
CONTENTS, ALLOC, LOAD, DATA
8 .ram.bss 00006e72 1004eac8 1004eac8 0005eac8 2**2
CONTENTS, ALLOC, LOAD, DATA
9 .ram_heap2 00000006 1005593a 1005593a 0006593a 2**0
ALLOC
10 .sdr_bss 00000000 30000000 30000000 0007a800 2**0
CONTENTS
11 .debug_info 002146e0 00000000 00000000 0007a800 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_abbrev 0001f38f 00000000 00000000 0028eee0 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_loc 00078249 00000000 00000000 002ae26f 2**0
CONTENTS, READONLY, DEBUGGING
14 .debug_aranges 00005dd8 00000000 00000000 003264b8 2**0
CONTENTS, READONLY, DEBUGGING
15 .debug_ranges 000086e8 00000000 00000000 0032c290 2**0
CONTENTS, READONLY, DEBUGGING
16 .debug_line 00045d38 00000000 00000000 00334978 2**0
CONTENTS, READONLY, DEBUGGING
17 .debug_str 0002b658 00000000 00000000 0037a6b0 2**0
CONTENTS, READONLY, DEBUGGING
18 .comment 000000de 00000000 00000000 003a5d08 2**0
CONTENTS, READONLY
19 .ARM.attributes 00000033 00000000 00000000 003a5de6 2**0
CONTENTS, READONLY
20 .debug_frame 000113cc 00000000 00000000 003a5e1c 2**2
CONTENTS, READONLY, DEBUGGING
И ? Что не так и в чем вопрос?Именно так и делал.
Вот что имеем для rtl_boot.o
Обновил: теперь собирает mp3, прошивает, работает. Подтянутся ещё проекты, вот над своим подумываюИ ? Что не так и в чем вопрос?
Большинство используемых секций в SDK описано в RTL00MP3/section_config.h at master · pvvx/RTL00MP3 · GitHub
Дополнительно используется приставка [inline].sdram[/inline] для секций к процам с SDRAM и размещения туда каких-то компонентов. Имеющиеся, так называемые оф. SDK не поддерживают нормальную работу RTLxxxAM. Для этого там много недоделано. Запуска в RAM с загрузкой кода в SDRAM для RTLxxxAM пока нет и в моем SDK.
В вашем скрипте нет обработки блоков image в SDRAM для программирования. Блоков у прошивки может быть с десяток и грузиться не только в SRAM, SDRAM, но и в TCM память. Так-же загрузчики из оф. версии SDK не могут обрабатывать блоки Image с невыровненными для них смещениями начал, но предоставленные с ними сборщики этого не учитывают...
Компоновщик в IAR использует не *.ld и фиксированный список процедур и данных в ROM. Он использует библиотеку [inline]rom.a[/inline], в которой объявленные секции переплетаются с SDK Библиотека [inline]rom.a[/inline] - это странслированные исходники ROM для первой версии чипов - альфа версии ROM. Оно содержит старый код от ROM первых образцов чипов и описание данных в RAM там тоже не полные и не совпадают с реальными чипами, поступившими в продажу, имеющими версию кода ROM уже V02. От этого возникают ошибки в SDK для IAR...
Какой-то китаец или ещё кто слепил версию export-rom_v02.txt для GCC, но она невалидна. Имеет неправильные адреса переменных ROM используемых в RAM.
Ameba Arduino до этого бир-бар. Они рассчитывают на RTL8195AM и дублируют код ROM в RAM в виде патчей большинства процедур ROM. В ROM - 30% процедур имеют ошибки
Инициализации данных в RAM используемых процедурами ROM сама ROM не имеет. По этому линковка усложняется - необходимо по определенным адресам RAM закатать данные инициализации для ROM.
Существует несколько путей - залить эти данные в теле бинарника boot-loader-а, как это делается в Ameba и прилепить невалидный список в export-rom_vxx.txt, не используя и половины переменных, а дублировать их в своем коде и загружаемых процедурах. Другой метод - описать каждую переменную и странслировать её инициализацию в свою секцию, для возможности использования в SDK и исключения дублирования, чтобы сократить размеры используемой RAM - так сделано у меня.
ram.bin выплевывался для проверки и не нужен.
Данные в теле boot-loader-а я перелопатил, но хидеры SDK ещё не корректировал. Описания полей данных ROM в RAM разбросаны по куче хидеров в SDK и могут быть конфликты - двойное описание. Чистить это всё ещё рано в моей версии SDK - не сделаны следующие шаги...
Ну а т.к. моя версия SDK ещё не сварилась - нужды в стороннем сборщике нет, будет ещё сотня изменений... Для ускорения процесса требуются не сборщики, а разные готовые проекты, чтобы выработать концепцию как что чаше используется и как. В этом основной тормоз. А пока проектов для теста SDK и выработки какой-то концепции по использованию ресурсов той-же Flash и RAM у нас всего 3 шт: "AT", "MP3" и "HTTPD".
Если не знакомы с "линковкой" то, наверно надо начинать с более простых примеров. Тутошние проекты собираются из нескольких десятков файлов и имеют много специфики - с наскоку там не разобраться, по этому автор и пытается сделать сборщик на альтернативном варианте, не с помощью стандартных средств. Arduino тоже использует свой сборщик, который описывать достаточно сложно - имеет свою специфику и ограниченные рамки самой среды по описанию скрипта линковки...Для меня линковка пока еще темный лес. а хотелось бы разобраться)
В принципе все уже зарисовано: распакуйте все в одну папку, туда же скопируйте нужный wscript и __* файлы. ДалееУважаемый топикстартер, может вы бы видео зарисовали с процессом настройки\сборки\прошивки\заливки, чего там еще нужно. А то раз уж вы заикнулись об альтернативе ардуины, преподнесли бы и информацию как для ардуинщиков, чтобы понятно было не только , как сделать, но и последовательность действий и что вообще нужно делать. Для меня линковка пока еще темный лес. а хотелось бы разобраться)
python waf configure
python waf build
python waf flash
"Продвинутый вариант" мешает работать стандартному. Линковщик ищет файлы *.ld в текущем каталоге, а инклуды к ним в указанных ему путях инклудов либ. Копии *.ld при создании обязательной свалки для работы "продвинутого варианта" в основном каталоге проекта мешают - сбивают относительные пути инклудов в них. Уберите весь мусор "продвинутого варианта" хоть в одну директорию. Зачем ему столько мусора в основной, в папках сборки, да ещё ещё кучу папок плодит в проекте - выходит "продвинутый мусорник". Eclipse обижается - среди этого хлама становиться сложно найти сами исходники проекта... Работать с красными глазками, ковыряясь в куче создаваемого хлама данным "продвинутым вариантом" для поиска нужных файлов многие не привыкли, как вы Для файлов, необходимых для работы "продвинутого варианта", в системе существует папочка tmp или temp - пусть туда валит и там содержит свои "продвинутые" файлы и папки.Это более продвинутый вариант.
Это уже несколько дней назад исправлено, смело используется ld из sdk и иклудится него все отличноЛинковщик ищет файлы *.ld в текущем каталоге, а инклуды к ним в указанных ему путях инклудов либ. Копии *.ld при создании обязательной свалки для работы "продвинутого варианта" в основном каталоге проекта мешают - сбивают относительные пути инклудов в них. Уберите весь мусор "продвинутого варианта" хоть в одну директорию. Зачем ему столько мусора в основной, в папках сборки, да ещё ещё кучу папок плодит в проекте - выходит "продвинутый мусорник".
Давно у вас такие романтические отношения с Eclipse?Eclipse обижается - среди этого хлама становиться сложно найти сами исходники проекта...
Без комментариев. Высосанные из пальца страхи и предрассудки.Работать с красными глазками, ковыряясь в куче создаваемого хлама данным "продвинутым вариантом" для поиска нужных файлов многие не привыкли, как вы Для файлов, необходимых для работы "продвинутого варианта", в системе существует папочка tmp или temp - пусть туда валит и там содержит свои "продвинутые" файлы и папки.
Ну вот - вся продвинутось в куче хлама "без комментариев" и красных глазках у пользователей, откапывающих исходники среди кучи файлов выплюнутых "продвинутой версией"Без комментариев. Высосанные из пальца страхи и предрассудки.
Как попробовал вашу версию сборки. Панель с файлами проекта теперь скачет и прыгает от радости отображения накеканных продвинутой версией файлов... Надо вводить новые кнопки в другие панели - ублажать продвинутую версию - без них она не шарит как странслировать проект, а при изменениях в проекте - не шарит, что что-то сменилось. Надо каждый раз запускать терминал и как вы, с красными глазками набивать магические строчки ублажения "провинутому варианту"Давно у вас такие романтические отношения с Eclipse?