Димон Безпарольный 2 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба Keil5. Копнул дебуггером насколько хватило знаний. И дело не в обращении к функции - дело даже в том, что если в коде присутствует хоть один printf, при старте процессор вообще не переходит в __main. Выполняется код: LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 И на выполнении BX R0 система улетает куда - то вкачель. Хотя сам R0 содержит тот же адрес 0x08000189. Закипел. Готов уже по всему коду заменить на sprintf. Вот он то работает. Может кто знает в чем грабли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 4 minutes ago, Димон Безпарольный said: Может кто знает в чем грабли? Куча настроена ? Как альтернатива, использовать xprintf от Чена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 1 minute ago, dimka76 said: Куча настроена ? Да. И стек увеличен. Heap_Size EQU 0xA000 Stack_Size EQU 0x400 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба Semihosting? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 25 января, 2022 Опубликовано 25 января, 2022 (изменено) · Жалоба 9 minutes ago, Arlleex said: Semihosting? Помнится добавлял #pragma import(__use_no_semihosting_swi) Но здесь ругается Quote ..\BIN\Vagon.axf: Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _sys_exit was referenced ..\BIN\Vagon.axf: Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _sys_open was referenced ..\BIN\Vagon.axf: Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _ttywrch was referenced Semihosting is not supported by µVision. Thus, you cannot use semihosting SWI operations. In case you have to write your own retarget code, ensure that no semihosting functions of the C library get linked into your application. This is done by importing the symbol __use_no_semihosting_swi. This can be done in any C or assembler source file in your project. In a C module, use the #pragma directive: Semihosting is not supported by µVision. Thus, you cannot use semihosting SWI operations. In case you have to write your own retarget code, ensure that no semihosting functions of the C library get linked into your application. This is done by importing the symbol __use_no_semihosting_swi. This can be done in any C or assembler source file in your project. In a C module, use the #pragma directive: Изменено 25 января, 2022 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 1. Посмотреть map 2. Пройти __main в пошаговом режиме Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 47 minutes ago, Димон Безпарольный said: И на выполнении BX R0 система улетает куда - то вкачель. Хотя сам R0 содержит тот же адрес 0x08000189. Сравните код, в который уходит по BX R0 при наличии printf и без него. Возможно, printf тянет за собой какую-то библиотеку с выводом на консоль, а эта библиотека не под Вашу систему. Или просто надо определить какую-то функцию вывода байта в консоль самостоятельно, вот и падает на заглушке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 2 minutes ago, aaarrr said: 1. Посмотреть map 2. Пройти __main в пошаговом режиме В том то и дело что в пошаговом режиме после команды BX R0 как я выше писал дебуггер вылетает вкачель - запускается сам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 1 minute ago, Димон Безпарольный said: В том то и дело что в пошаговом режиме после команды BX R0 как я выше писал дебуггер вылетает вкачель - запускается сам. а что записано по адресу 0x08000188? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 7 minutes ago, Димон Безпарольный said: В том то и дело что в пошаговом режиме после команды BX R0 как я выше писал дебуггер вылетает вкачель - запускается сам. Окошко с дизассемблером попробуйте открыть вместо исходника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 18 minutes ago, novikovfb said: а что записано по адресу 0x08000188? Адреса 189 нет в обоих вариантах - рабочем(когда код printf не компилируется) и не рабочем. По адресу 0x08000188 записано 0x08000188 F000F802 BL.W __scatterload (0x08000190)F1C4)(0x08001522). Но в R0 грузится 189 адрес. 22 minutes ago, aaarrr said: Окошко с дизассемблером попробуйте открыть вместо исходника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 16 minutes ago, Димон Безпарольный said: Но в R0 грузится 189 адрес Так мы в thumb'е, что ему еще грузить? 1 hour ago, Димон Безпарольный said: система улетает куда - то вкачель А конкретнее? Левый адрес, HF? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба наверняка с памятью проблемы (не хватает стека), принтф может и десяток кил RAM съесть. Или вообще просто совпадение и printf() не виноват. Я бы так сделал: 1) на место printf() поставить функцию-заглушку и убедится что оно работает 2) добавить минимальный printf(" "); Если не работает- то проверять опять выделение памяти и настройки компилятора и линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба 1 минуту назад, Ruslan1 сказал: принтф может и десяток кил RAM съесть. Да ну?! Пруфы привести можете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 25 января, 2022 Опубликовано 25 января, 2022 · Жалоба Just now, jcxz said: Да ну?! Пруфы привести можете? прямо сейчас нет. А вообще да, смогу, когда буду компилить чего-нить- с printf() и без него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться