20:35:17 **** Build of configuration Default for project HelloRamWorld ****
mingw32-make.exe -f E:/ESP8266/workspace/HelloRamWorld/Makefile loadram
C:/Espressif/utils/esptool -p COM6 -b 230400 load_ram TESTRAM-0x00000.bin
Entering bootloader...
Connecting...
RAM boot...
Downloading 48 bytes at 40100000... done!
Downloading 0 bytes at 3ffe8000... done!
Downloading 28 bytes at 3ffe8000... done!
All segments done, executing at 40100010
20:35:19 Build Finished (took 1s.499ms)
Спасибо, код работает. Но есть пара вопросов. Просмотрел весь Makefile, существенных отличий в опциях для линкера не обнаружил, практически тоже что и для записи во flash. Собственно вопрос: где же все-таки магия заставляющая линкер пихать код в RAM (а *.map говорит что код действительно в RAM)? И второй вопрос, а как избавиться от хедера в начале бинарника? В данном случае смысла от этого хедера нет, хотя 16 байт это ерунда, но все же.Приложен проект под UDK, выводит в отладочный канал UART:
Hello RAM World!
user code done
По умолчанию, если не меняете в коде, то скорость вывода UART0/1 = скорости загрузки кода в esptool.py.
Код:20:35:17 **** Build of configuration Default for project HelloRamWorld **** mingw32-make.exe -f E:/ESP8266/workspace/HelloRamWorld/Makefile loadram C:/Espressif/utils/esptool -p COM6 -b 230400 load_ram TESTRAM-0x00000.bin Entering bootloader... Connecting... RAM boot... Downloading 48 bytes at 40100000... done! Downloading 0 bytes at 3ffe8000... done! Downloading 28 bytes at 3ffe8000... done! All segments done, executing at 40100010 20:35:19 Build Finished (took 1s.499ms)
На мой взгляд наоборот - есть волшебный атрибут ICACHE_FLASH_ATTR который помещает код во флэш-память, следовательно его отсутствие помещает код в RAM...Собственно вопрос: где же все-таки магия заставляющая линкер пихать код в RAM...
Эти 16 байт никуда не идут. Они нужны для загрузчика и их не 16, а на каждый сегмент ещё... Часть сегментов грузится в память RAM проинициализированных констант.И второй вопрос, а как избавиться от хедера в начале бинарника? В данном случае смысла от этого хедера нет, хотя 16 байт это ерунда, но все же.
А он отключен в опциях транслятору Тем более что пользоваться *.h от SDK там незя, да и flash и QSPI не проинициализированы при данном методе запуска.На мой взгляд наоборот - есть волшебный атрибут ICACHE_FLASH_ATTR который помещает код во флэш-память, следовательно его отсутствие помещает код в RAM
Всё так. Но инициализировать массу периферии (в том числе и память и прерывания) приходится и при загрузке с flash. Не требуется только начальная инициализация SPIпоправьте если в чем-то не прав.
Микроскопическим? 64 килобайта кода + 64 килобайта ROM+ 96 кб RAM для дохленького одноядерного MCU– это микроскопический кусок?все что я прочел и понял на эту тему - возможна загрузка небольших кусков кода с микроскопическим SDK , включая iramsdk
загрузка идет через esptool.py load_ram, причем только одного куска
Дописываему часть - можно, но надо менять код - делать какую-то линковку...@pvvx у нас тут похоже недопонимание, попробую без полемики более конкретно по своей задаче :
есть прошивка AT060 которую я хочу допиливать под свои задачи
есть ли способ не шить ее 500 раз по дню во флеш (для проверочно-отладочных целей) , а с компа прямо в RAMы на исполнение ?